#ifndef SAPPHIRE_SCRIPTLOADER_H #define SAPPHIRE_SCRIPTLOADER_H #include #include "NativeScriptApi.h" #include "ScriptInfo.h" #include #ifdef _WIN32 #include typedef HMODULE ModuleHandle; #else #include typedef void* ModuleHandle; #endif namespace Core { namespace Scripting { class ScriptLoader { protected: std::unordered_map< std::string, ScriptInfo* > m_scriptMap; bool unloadModule( ModuleHandle ); public: ScriptLoader(); const std::string getModuleExtension(); ScriptInfo* loadModule( std::string ); bool unloadScript( std::string ); bool unloadScript( ModuleHandle ); const std::string& getModuleNameFromHandle( ModuleHandle handle ) const; ScriptObject* getScriptObjectExport( ModuleHandle handle, std::string name ); template< typename T > T* getScriptObject( ModuleHandle handle, std::string name ) { return static_cast< T* >( getScriptObjectExport( handle, name ) ); } }; } } #endif //SAPPHIRE_SCRIPTLOADER_H