//--------------------------------------- const IEntityClass* CWeaponAlias::GetParentClass( const char* pClassName ) const { const IEntityClassRegistry* pClassRegistry = gEnv->pEntitySystem->GetClassRegistry(); IEntityClass* pClass = pClassRegistry->FindClass(pClassName); if(pClass) { return GetParentClass(pClass); } return NULL; }
void CPipeServer::Start(void) { BYTE command; while (TRUE) { CreatePipeandWaitForconnect(); try { while (TRUE) { command=ReadByte(); switch(command) { case MONOCMD_INITMONO: InitMono(); break; case MONOCMD_OBJECT_GETCLASS: Object_GetClass(); break; case MONOCMD_ENUMDOMAINS: EnumDomains(); break; case MONOCMD_SETCURRENTDOMAIN: SetCurrentDomain(); break; case MONOCMD_ENUMASSEMBLIES: EnumAssemblies(); break; case MONOCMD_GETIMAGEFROMASSEMBLY: GetImageFromAssembly(); break; case MONOCMD_GETIMAGENAME: GetImageName(); break; case MONOCMD_ENUMCLASSESINIMAGE: EnumClassesInImage(); break; case MONOCMD_ENUMFIELDSINCLASS: EnumFieldsInClass(); break; case MONOCMD_ENUMMETHODSINCLASS: EnumMethodsInClass(); break; case MONOCMD_COMPILEMETHOD: CompileMethod(); break; case MONOCMD_GETMETHODHEADER: GetMethodHeader(); break; case MONOCMD_GETMETHODHEADER_CODE: GetILCode(); break; case MONOCMD_LOOKUPRVA: RvaMap(); break; case MONOCMD_GETJITINFO: GetJitInfo(); break; case MONOCMD_FINDCLASS: FindClass(); break; case MONOCMD_FINDMETHOD: FindMethod(); break; case MONOCMD_GETMETHODNAME: GetMethodName(); break; case MONOCMD_GETMETHODCLASS: GetMethodClass(); break; case MONOCMD_GETCLASSNAME: GetKlassName(); break; case MONOCMD_GETCLASSNAMESPACE: GetClassNamespace(); break; case MONOCMD_FREEMETHOD: FreeMethod(); break; case MONOCMD_TERMINATE: return; case MONOCMD_DISASSEMBLE: DisassembleMethod(); break; case MONOCMD_GETMETHODSIGNATURE: GetMethodSignature(); break; case MONOCMD_GETPARENTCLASS: GetParentClass(); break; case MONOCMD_GETSTATICFIELDADDRESSFROMCLASS: GetStaticFieldAddressFromClass(); break; } } } catch (char *e) { //Pipe error, or something else that wasn't caught. Exit the connection and start over OutputDebugStringA("Pipe error:\n"); OutputDebugStringA(e); if (attached) { mono_thread_detach(mono_selfthread); attached=FALSE; } } catch (...) { OutputDebugStringA("Unexpected pipe error\n"); if (attached) { mono_thread_detach(mono_selfthread); attached=FALSE; } } } }