Files
envi-code/SourceCode/Code2026/tg_shs/shs_subgeLib/TWClassInfo.cpp
T
gjm 164968b62e chore
把非utf8-bom编码的cpp/h文件改为 utf8 bom 编码, msvc识别utf8编码时,如果不是bom格式的,会使用当前cp_oem来解码.
2026-10-04 00:04:20 +08:00

116 lines
2.2 KiB
C++

//-----------------------------------------------------------------------------+
// Copyright (C), 1998-2007, Beijing Tangent Software Co. Ltd.
// = FileName : TWClassInfo.cpp
// = Version : ver2.0
// = Author : xlc
// = CreateDate : 2002-09-09
// = Description: 类的定义
// = Maintainers:
//
//-----------------------------------------------------------------------------+
#include "StdAfx.h"
#include "TWClassInfo.h"
TSqTable<TWClassInfo*> TWClassInfo::allClassInfo;
void TWClassInfo::RegisterClassInfo(long cid, TWClassInfo *pInfo)
{
pInfo->SetClassID(cid);
TWClassInfo::allClassInfo[cid] = pInfo;
}
TWDyCreateClass* TWClassInfo::DyCreate(long cid)
{
return TWClassInfo::allClassInfo.GetAt(cid)->NewObject();
}
TWClassInfo::TWClassInfo(const char *cName,TWDyCreateClass *(*fNewObject)(),
TWClassInfo *baseClass0,
TWClassInfo *baseClass1,
TWClassInfo *baseClass2,
TWClassInfo *baseClass3,
TWClassInfo *baseClass4)
{
name = cName;
baseClass[0] = baseClass0;
baseClass[1] = baseClass1;
baseClass[2] = baseClass2;
baseClass[3] = baseClass3;
baseClass[4] = baseClass4;
m_fNewObject = fNewObject;
}
TWClassInfo::~TWClassInfo()
{
}
long TWClassInfo::GetClassID()const
{
return classID;
}
void TWClassInfo::SetClassID(long id)
{
classID = id;
}
const char * TWClassInfo::GetClassName()const
{
return name;
}
const TWClassInfo* TWClassInfo::GetBaseClassInfo(int i)const
{
return baseClass[i];
}
bool TWClassInfo::IsTypeOf(const char *sName)const
{
return strcmp(name,sName) == 0;
}
bool TWClassInfo::IsTypeOf(const TWClassInfo *pClassInfo)const
{
return this == pClassInfo;
}
TWDyCreateClass* TWClassInfo::NewObject()const
{
return m_fNewObject == NULL ? NULL : m_fNewObject();
}
bool TWClassInfo::IsClassOf(const TWClassInfo *pClassInfo)const
{
for (int i = 0; i < MAX_BASE_CLASS_NUM; i++)
{
if (baseClass[i] == NULL)
{
break;
}
else if (baseClass[i]->IsClassOf(pClassInfo))
{
return true;
}
}
return IsTypeOf(pClassInfo);
}
bool TWClassInfo::IsClassOf(const char *sName)const
{
for (int i = 0; i < MAX_BASE_CLASS_NUM; i++)
{
if (baseClass[i] == NULL)
{
break;
}
else if (baseClass[i]->IsClassOf(sName))
{
return true;
}
}
return IsTypeOf(sName);
}