7 #include <mono/jit/jit.h> 11 #include <mono/metadata/environment.h> 12 #include <mono/metadata/mono-config.h> 13 #include <mono/metadata/assembly.h> 14 #include <mono/metadata/threads.h> 15 #include <INPLScriptingState.h> 17 #include <util/mutex.h> 24 typedef std::map <std::string, AssemblyFile*> Assembly_File_Map_Type;
25 typedef std::map <std::string, ClassObject*> Class_Map_Type;
45 MonoAssembly* m_assembly;
48 Class_Map_Type m_classes;
64 inline MonoDomain* GetMonoDomain() {
return m_mono_domain;};
66 void SetMonoDomain(MonoDomain* domain) {m_mono_domain = domain;};
80 Assembly_File_Map_Type m_assemblies;
83 MonoDomain * m_mono_domain;
100 const char* GetName()
const;
113 virtual void Release();
118 virtual void*
GetState(){
return (
void*)GetMonoDomain();};
121 virtual bool IsValid() {
return s_mono_domain != 0;}
129 virtual bool IsScriptFileLoaded(
const string& filepath);
139 virtual bool LoadFile(
const string& filePath,
bool bReload);
145 virtual int DoString(
const char* sCall,
int nLength = 0);
152 virtual NPL::NPLReturnCode ActivateFile(
const string& filepath,
const char *
code = NULL,
int nLength=0);
164 virtual void DestroyState();
177 void CreateAppDomain();
184 static MonoDomain * s_mono_domain;
the .Net assembly file, which may contain many C# classes
Definition: MonoScriptingState.h:43
virtual bool IsValid()
return true if the runtime state is valid
Definition: MonoScriptingState.h:121
std::string m_class_name
keep a duplicate copy of class file name, like "HelloWorld"
Definition: MonoScriptingState.h:34
MonoMethod * m_activate_function
the static void activate() function inside the mono class.
Definition: MonoScriptingState.h:39
INPLRuntimeState interface for DLL interface.
Definition: INPLRuntimeState.h:27
this represent a class (with the same name as the file name) inside an assembly
Definition: MonoScriptingState.h:28
MonoDomain * GetMonoDomain()
get the mono domain.
Definition: MonoScriptingState.h:103
a singleton class that keeps dynamically loaded meta data.
Definition: MonoScriptingState.h:55
virtual void * GetState()
get the Mono Domain state.
Definition: MonoScriptingState.h:118
MonoClass * m_class
the Mono Class object of the class
Definition: MonoScriptingState.h:37
Definition: inftrees.h:24
This is the NPLMono DLL plugin interface.
Definition: INPLScriptingState.h:90
cross platform mutex
Definition: mutex.h:95
std::string m_namespace_name
name space name of the class
Definition: MonoScriptingState.h:31
Mono scripting state.
Definition: MonoScriptingState.h:90