//-----------------------------------------------------------------------------+ // Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd. // = FileName : TWClassInfo.h // = Version : ver2.0 // = Author : xlc // = CreateDate : 2002-09-09 // = Description: 类的声明 // = Maintainers: // //-----------------------------------------------------------------------------+ #ifndef _TWCLASSINFO_H_ #define _TWCLASSINFO_H_ #ifndef _TSQPTABLE_H_ #include "TSqPTable.h" #endif class TWDyCreateClass; //运行时类型信息类 //提供三种类型识别机制,类ID,类名,类型信息指针 class GEOAPI TWClassInfo { public: TWClassInfo(const char *sName, TWDyCreateClass* (*fNewOjbect)(), TWClassInfo *baseClass0 = NULL, TWClassInfo *baseClass1 = NULL, TWClassInfo *baseClass2 = NULL, TWClassInfo *baseClass3 = NULL,TWClassInfo *baseClass4 = NULL); virtual ~TWClassInfo(); void SetClassID(long id); long GetClassID()const; bool IsTypeOf(const char *sName)const; bool IsTypeOf(const TWClassInfo *pClassInfo)const; bool IsClassOf(const char *sName)const; bool IsClassOf(const TWClassInfo *pClassInfo)const; TWDyCreateClass* NewObject()const; const char * GetClassName()const; const TWClassInfo* GetBaseClassInfo(int i)const; public: static TWDyCreateClass* DyCreate(long cid); static void RegisterClassInfo(long cid, TWClassInfo*); protected: TWClassInfo(const TWClassInfo &cInfo); TWClassInfo& operator = (const TWClassInfo &cInfo); protected: long classID; const char *name; const TWClassInfo* baseClass[MAX_BASE_CLASS_NUM]; TWDyCreateClass* (*m_fNewObject)(); static TSqTable allClassInfo; }; #endif