本文整理汇总了C++中Loader::IsSupported方法的典型用法代码示例。如果您正苦于以下问题:C++ Loader::IsSupported方法的具体用法?C++ Loader::IsSupported怎么用?C++ Loader::IsSupported使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Loader
的用法示例。
在下文中一共展示了Loader::IsSupported方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LoadModules
void Medusa::LoadModules(std::wstring const& rModulesPath)
{
try
{
const boost::filesystem::path CurDir = rModulesPath;
Module Module;
Log::Write("core") << "Module directory: " << boost::filesystem::system_complete(CurDir) << LogEnd;
boost::filesystem::directory_iterator End;
for (boost::filesystem::directory_iterator It(CurDir);
It != End; ++It)
{
std::wstring const& rFilename = It->path().wstring();
if (rFilename.substr(rFilename.find_last_of(L".") + 1) != Module::GetExtension())
continue;
std::wstring FullPath = boost::filesystem::system_complete(*It).wstring();
Log::Write("core") << "Module: \"" << rFilename << "\" ";
void* pMod = Module.Load(FullPath);
if (pMod == nullptr)
continue;
TGetLoader pGetLoader = Module.Load<TGetLoader>(pMod, "GetLoader");
if (pGetLoader != nullptr)
{
Log::Write("core") << "is a loader ";
Loader* pLoader = pGetLoader(m_Database);
if (pLoader->IsSupported())
{
Loader::SharedPtr LoaderPtr(pLoader);
m_Loaders.push_back(LoaderPtr);
Log::Write("core") << "(loaded)" << LogEnd;
}
else
{
Log::Write("core") << "(unloaded)" << LogEnd;
delete pLoader;
}
continue;
}
TGetArchitecture pGetArchitecture = Module.Load<TGetArchitecture>(pMod, "GetArchitecture");
if (pGetArchitecture != nullptr)
{
Log::Write("core") << "is an Architecture" << LogEnd;
Architecture* pArchitecture = pGetArchitecture();
Architecture::SharedPtr ArchitecturePtr(pArchitecture);
m_AvailableArchitectures.push_back(ArchitecturePtr);
continue;
}
TGetOperatingSystem pGetOperatingSystem = Module.Load<TGetOperatingSystem>(pMod, "GetOperatingSystem");
if (pGetOperatingSystem != nullptr)
{
Log::Write("core") << "is an operating system" << LogEnd;
OperatingSystem* pOperatingSystem = pGetOperatingSystem(m_Database);
OperatingSystem::SharedPtr spOperatingSystem(pOperatingSystem);
m_CompatibleOperatingSystems.push_back(spOperatingSystem);
continue;
}
TGetEmulator pGetEmulator = Module.Load<TGetEmulator>(pMod, "GetEmulator");
if (pGetEmulator != nullptr)
{
Log::Write("core") << "is an Emulator" << LogEnd;
Emulator* pEmulator = pGetEmulator(nullptr, nullptr, nullptr);
m_Emulators[pEmulator->GetName()] = pGetEmulator;
continue;
}
Log::Write("core") << "is unknown (ignored)" << LogEnd;
}
}
catch (std::exception &e)
{
Log::Write("core") << e.what() << LogEnd;
}
}