NBaseObj* NReflect::Create(LPCTSTR szNamespace, LPCTSTR szClassName, LPCSTR filePath, int line) { NBaseObj* result = NULL; ClassData* pClassData; if(GetClassData(szNamespace, szClassName, pClassData)) { if(pClassData->flag == None) { result = pClassData->creator(filePath, line); } else if(pClassData->flag == Singleton) { if(pClassData->existObj == NULL) { pClassData->existObj = pClassData->creator(filePath, line); if(pClassData->existObj != NULL) { pClassData->existObj->AddRef(); } } result = pClassData->existObj; } } if(result != NULL) result->AddRef(); NAssertError(result != NULL, _T("Invalid data in NReflect::Create")); return result; }
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // inline RegisteredClass::ClassID RegisteredClass::GetClassID(void) const { Check_Object(this); RegisteredClass__ClassData* data = GetClassData(); Check_Object(data); return data->GetClassID(); }
bool NReflect::IsClassExists(LPCTSTR szNamespace, LPCTSTR szClassName) { ClassData* pClassData; return GetClassData(szNamespace, szClassName, pClassData); }