#ifndef SAPPHIRE_SCRIPTLOADER_H #define SAPPHIRE_SCRIPTLOADER_H #include #include "NativeScriptApi.h" #ifdef _WIN32 #include #include typedef HMODULE ModuleHandle; #else #include typedef void* ModuleHandle; #endif namespace Core { namespace Scripting { class ScriptLoader { protected: std::unordered_map< std::string, ModuleHandle > m_moduleMap; bool unloadModule( ModuleHandle ); public: ScriptLoader() = default; const std::string getModuleExtension(); ModuleHandle loadModule( std::string ); bool unloadScript( std::string ); bool unloadScript( ModuleHandle ); template< typename T > T* getScriptObject( ModuleHandle ); }; } } #endif //SAPPHIRE_SCRIPTLOADER_H