register a class using any name

This commit is contained in:
Chris Danford
2005-03-01 02:49:57 +00:00
parent fefcfa04f1
commit 8cf70ce1d0
+4 -2
View File
@@ -11,17 +11,19 @@ struct XNode;
typedef Actor* (*CreateActorFn)(const CString& sDir, const XNode* pNode);
// Each Actor class should have a REGISTER_ACTOR_CLASS in its CPP file.
#define REGISTER_ACTOR_CLASS( className ) \
#define REGISTER_ACTOR_CLASS_WITH_NAME( className, externalClassName ) \
Actor* Create##className(const CString& sDir, const XNode* pNode) { \
className *pRet = new className; \
pRet->LoadFromNode(sDir, pNode); \
return pRet; } \
class Register##className { \
public: \
Register##className() { ActorUtil::Register(#className,Create##className); } \
Register##className() { ActorUtil::Register(#externalClassName,Create##className); } \
}; \
static Register##className register##className;
#define REGISTER_ACTOR_CLASS( className ) REGISTER_ACTOR_CLASS_WITH_NAME( className, className )
namespace ActorUtil
{
// Every screen should register its class at program initialization.