#ifndef __GDAM_FACTORY_H_
#define __GDAM_FACTORY_H_

/* Build a new instance of a type. */
typedef GtkObject*    (*GdamFactoryBuildFunc)(const char* type_name,
                                              const char* options);


/* Must be 1, b/c we just force it to be the first dynamic allocation. */
#define GDAM_FACTORY_FAMILY_MODEL	(1)
#define GDAM_FACTORY_FAMILY_SKIN	(2)

gint       gdam_factory_make_family     (const char*           family,
                                         GdamFactoryBuildFunc  default_builder);
gint       gdam_factory_get_family      (const char*           family);

void       gdam_factory_register_type   (int                   family_id,
                                         const char*           type,
					 GdamFactoryBuildFunc  builder);

GtkObject* gdam_factory_make_type       (int                   family_id,
                                         const char*           type_name,
				         const char*           options);

#endif
