30 #ifndef M_ABSTRACT_FACTORY_H
31 #define M_ABSTRACT_FACTORY_H
38 #define REGISTER_CLASS(class_name) addNamedClass( new class_name() )
48 std::map<std::string, laNamedClass* > _classes;
55 ASSERT( _classes.find(pc->
name()) == _classes.end(),
"Named class already registered", pc->
name().c_str());
56 _classes[ pc->
name() ] = pc;
61 ASSERT( _classes.find(strClassName) != _classes.end(),
"Named class is unknown", strClassName.c_str() );
62 return (_classes[ strClassName ])->instantiate();
void addNamedClass(laNamedClass *pc)
Register a named class.
laNamedClass * instantiate(std::string strClassName)
Instantiate class by name.
virtual std::string name()=0
Abstract naming method.