UGDK  0.5.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
scriptmanager.h
Go to the documentation of this file.
1 #ifndef UGDK_SCRIPT_SCRIPTMANAGER_H_
2 #define UGDK_SCRIPT_SCRIPTMANAGER_H_
3 
4 #include <string>
5 #include <map>
6 
7 #include <ugdk/script.h>
8 
9 #ifdef MODULE_AUTO_LOAD
10 #define FORCE_LOAD_MODULE(x) void force_link_function_##x(void) { extern int x##_MODULES_HEARTBEAT; x##_MODULES_HEARTBEAT = 1; }
11 MODULE_AUTO_LOAD(FORCE_LOAD_MODULE)
12 #endif
13 
14 namespace ugdk {
15 
16 namespace script {
17 
18 #define SCRIPT_MANAGER() (ugdk::script::ScriptManager::ref())
19 
21 public:
22  static ScriptManager* ref() {
23  return ref_ ? ref_ : ref_ = new ScriptManager;
24  }
25  ~ScriptManager() { ref_ = nullptr; }
26 
27  bool Initialize();
28  void Finalize();
29 
30  void Register(LangWrapper* wrapper);
31  LangWrapper* GetWrapper(const std::string& name);
32 
33  void ExecuteCode(const std::string& language, const std::string& code);
34 
35  VirtualObj LoadModule(const std::string& filepath);
36 
37  bool CheckIfFileExists(const std::string& filepath);
38 
40  std::string ConvertPathToDottedNotation(const std::string& path);
42  std::string ConvertDottedNotationToPath(const std::string& dotted);
43 
44 private:
45  static ScriptManager* ref_;
46  ScriptManager();
47 
48  typedef std::map<std::string, LangWrapper*> WrapperMap;
49  WrapperMap wrappers_;
50 };
51 
52 }
53 }
54 
55 #endif /* UGDK_SCRIPT_SCRIPTMANAGER_H_ */
LangWrapper * GetWrapper(const std::string &name)
bool CheckIfFileExists(const std::string &filepath)
Definition: scriptmanager.h:20
static ScriptManager * ref()
Definition: scriptmanager.h:22
Definition: animation.h:11
void ExecuteCode(const std::string &language, const std::string &code)
std::string ConvertDottedNotationToPath(const std::string &dotted)
Converts dotted notation strings ("folder.subfolder.file") to "folder/subfolder/file".
void Register(LangWrapper *wrapper)
Definition: langwrapper.h:17
A proxy class wich represents virtual objects from scripting languages.
Definition: virtualobj.h:30
~ScriptManager()
Definition: scriptmanager.h:25
VirtualObj LoadModule(const std::string &filepath)
std::string ConvertPathToDottedNotation(const std::string &path)
Converts "folder/subfolder/file" (without extension) style paths to "folder.subfolder.file".