75 lines
1.6 KiB
C++
75 lines
1.6 KiB
C++
//-----------------------------------------------------------------------------+
|
|
// 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<TWClassInfo*> allClassInfo;
|
|
};
|
|
|
|
#endif |