Files
envi-code/SourceCode/Code2026/tg_shs/inc/subgeo/TWClassInfo.h
T
2026-09-28 15:28:50 +08:00

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