XGameLua::XGameLua() { Init(); TCHAR szFullPath[ 1024 ]; #ifdef _SERVER _tcscpy_s( szFullPath, XE::_GetPathPackageRoot() ); _tcscat_s( szFullPath, XE::MakePath( DIR_SCRIPTW, _T("") ) ); SetModulePath( SZ2C( szFullPath ) ); #else _tcscpy_s( szFullPath, XE::GetPathWork() ); _tcscat_s( szFullPath, XE::MakePath( DIR_SCRIPTW, _T("") ) ); SetModulePath( SZ2C( szFullPath ) ); #endif // RegisterGlobal(); }
// Call back Declaration ReturnType HCILab_PowerSTTVoiceRecComp::onInitialize() { // XML에 저장된 프라퍼티를 parameter에 저장 Property parameter; std::map<std::string, std::string> temp = getPropertyMap(); parameter.SetProperty(temp); if(parameter.FindName("WordList") == false) { PrintMessage("ERROR : HCILab_PowerSTTVoiceRecComp::onInitialize() -> Can't find the WordList in property\n"); return OPROS_FIND_PROPERTY_ERROR; } SetModulePath(); int err = power_stt_kor_create(strModulePath); if( err != 1 ) PrintMessage("Error:HCILab_PowerSTTVoiceRecComp::power_stt_kor_create ()\n"); if( LoadList1((char *)parameter.GetValue("WordList").c_str()) ) { PrintMessage("INFO:HCILab_PowerSTTVoiceRecComp::onInitialize() %s -> %s\n", parameter.GetValue("WordList").c_str(), strList1.c_str()); power_stt_kor_set_vocab((char *)strList1.c_str(), ""); } PrintMessage("Success : HCILab_PowerSTTVoiceRecComp::onInitialize()\n"); return OPROS_SUCCESS; }
BOOL CSynergyUIApp::InitInstance() { #ifdef _MERGE_PROXYSTUB if (!PrxDllMain(m_hInstance, DLL_PROCESS_ATTACH, NULL)) return FALSE; #endif AfxEnableControlContainer(); SetModulePath(); return CWinApp::InitInstance(); }
XGameLua::XGameLua( const char *cLua ) { Init(); /* 루아 내부에서 다른루아를 include한다고 해도 어차피 마스터본에는 lua파일은 암호화되어 배포되어 include하지 못한다. 그러므로 사전 컴파일된 루아 바이너리를 쓰는 방법을 찾아봐야 할듯. */ TCHAR szFullPath[ 1024 ]; #ifdef _SERVER _tcscpy_s( szFullPath, XE::_GetPathPackageRoot() ); _tcscat_s( szFullPath, XE::MakePath( DIR_SCRIPTW, _T("") ) ); #else switch( XE::GetLoadType() ) { case XE::xLT_PACKAGE_ONLY: #if defined(WIN32) || defined(_VER_IOS) _tcscpy_s( szFullPath, XE::_GetPathPackageRoot() ); _tcscat_s( szFullPath, XE::MakePath( DIR_SCRIPTW, _T("") ) ); #else XBREAKF(1, "do not use! package only type"); #endif break; case XE::xLT_WORK_FOLDER_ONLY: case XE::xLT_WORK_TO_PACKAGE: case XE::xLT_WORK_TO_PACKAGE_COPY: _tcscpy_s( szFullPath, XE::MakeWorkFullPath( DIR_SCRIPTW, _T("") ) ); break; default: XBREAKF( 1, "unknown loadtype" ); } #endif XLOGXN("lua module path.....%s", szFullPath ); SetModulePath( SZ2C( szFullPath ) ); LoadScript( XE::MakePath( DIR_SCRIPTA, cLua ) ); // RegisterGlobal(); }
RetCode BOSS_CALL ServiceRegistry::Load(IIStream *stream) { if (!stream) return Status::InvalidArgument; std::lock_guard<std::recursive_mutex> Lock(Mtx); try { auto Registry = PropertyBagType::Create(RegistryTag); RetCode Code = Registry->Load(stream); if (Code != Status::Ok) return Code; RefObjPtr<IBase> ServiceEnumProp; if ((Code = Registry->GetProperty(ServicesTag, ServiceEnumProp.GetPPtr())) != Status::Ok) return Code; RefObjQIPtr<IEnum> ServiceEnum(ServiceEnumProp); if (!ServiceEnum.Get()) return Status::Fail; ServicePool NewServices; for (RefObjPtr<IBase> i ; ServiceEnum->Next(i.GetPPtr()) == Status::Ok ; i.Release()) { RefObjQIPtr<IPropertyBag> ServiceItem(i); if (!ServiceItem.Get()) return Status::Fail; RefObjPtr<IBase> EntId; if ((Code = ServiceItem->GetProperty(ServiceIdTag, EntId.GetPPtr())) != Status::Ok) return Code; RefObjQIPtr<IEntityId> EntSrvId(EntId); if (!EntSrvId.Get()) return Status::Fail; ServiceId SrvId = 0; if ((Code = EntSrvId->GetId(&SrvId)) != Status::Ok) return Code; RefObjPtr<IBase> ClassIdsEnumProp; if ((Code = ServiceItem->GetProperty(ClassIdsTag, ClassIdsEnumProp.GetPPtr())) != Status::Ok) return Code; RefObjQIPtr<IEnum> ClassIdsEnum(ClassIdsEnumProp); if (!ClassIdsEnum.Get()) return Status::Fail; RefObjPtr<IBase> ModulePathProp; RefObjPtr<IServiceInfo> ServiceInfo; if (ServiceItem->GetProperty(ModulePathTag, ModulePathProp.GetPPtr()) == Status::Ok) { RefObjQIPtr<IString> ModulePath(ModulePathProp); if (!ModulePath.Get()) return Status::Fail; auto LocalSrvInfo = Base<LocalServiceInfo>::Create(); LocalSrvInfo->SetServiceId(SrvId); LocalSrvInfo->AddCoClassIds(ClassIdsEnum); LocalSrvInfo->SetModulePath(ModulePath); ServiceInfo = LocalSrvInfo; } else { RefObjPtr<IBase> RemotePropertiesProp; if (ServiceItem->GetProperty(RemotePropertiesTag, RemotePropertiesProp.GetPPtr()) == Status::Ok) { RefObjQIPtr<IPropertyBag> RemoteProperties(RemotePropertiesProp); if (!RemoteProperties.Get()) return Status::Fail; auto RemoteSrvInfo = Base<RemoteServiceInfo>::Create(); RemoteSrvInfo->SetServiceId(SrvId); RemoteSrvInfo->AddCoClassIds(ClassIdsEnum); RemoteSrvInfo->SetProps(RemoteProperties); ServiceInfo = RemoteSrvInfo; } else return Status::Fail; } if ((Code = ClassIdsEnum->Reset()) != Status::Ok) return Code; for (RefObjPtr<IBase> j ; ClassIdsEnum->Next(j.GetPPtr()) == Status::Ok ; j.Release()) { RefObjQIPtr<IEntityId> ClsId(j); if (!ClsId.Get()) return Status::Fail; ClassId Id = 0; if ((Code = ClsId->GetId(&Id)) != Status::Ok) return Code; NewServices[Id] = ServiceInfo; } } std::swap(Services, NewServices); return Status::Ok; } catch (...) { return Status::Fail; } return Status::Ok; }