Add dotnet.debugger into /usr/share/aul
[platform/core/dotnet/launcher.git] / NativeLauncher / launcher / mono / mono_launcher.h
1 #include "launcher.h"
2
3 extern "C"
4 {
5   typedef struct _MonoDomain MonoDomain;
6   typedef struct _NonoAssembly MonoAssembly;
7   typedef struct _MonoImage MonoImage;
8   typedef struct _MonoClass MonoClass;
9   typedef struct _MonoObject MonoObject; 
10   typedef struct _MonoMethod MonoMethod;
11   typedef struct _MonoString MonoString;
12   typedef struct _MonoArray MonoArray;
13
14   typedef void          (*mono_set_dirs_ptr)                   (const char *, const char *);
15   typedef void          (*mono_set_assemblies_path_ptr)        (const char*);
16   typedef MonoDomain*   (*mono_jit_init_ptr)                   (const char *); 
17   typedef void          (*mono_config_parse_ptr)               (const char *);
18   typedef MonoAssembly* (*mono_domain_assembly_open_ptr)       (MonoDomain *, const char *);
19   typedef MonoImage*    (*mono_assembly_get_image_ptr)         (MonoAssembly *);
20   typedef MonoClass*    (*mono_class_from_name_ptr)            (MonoImage *, const char *, const char *);
21   typedef MonoObject*   (*mono_runtime_invoke_ptr)             (MonoMethod *, void *, void **, MonoObject **);
22   typedef MonoMethod*   (*mono_class_get_method_from_name_ptr) (MonoClass *, const char *, int param_count);
23   typedef MonoString*   (*mono_string_new_ptr)                 (MonoDomain *, const char *);
24   typedef MonoString*   (*mono_object_to_string_ptr)           (MonoObject *, MonoObject **);
25   typedef char*         (*mono_string_to_utf8_ptr)             (MonoString *string_obj);
26
27   typedef MonoClass*    (*mono_get_string_class_ptr)           ();
28   typedef MonoArray*    (*mono_array_new_ptr)                  (MonoDomain *, MonoClass *, uintptr_t);
29   typedef char*         (*mono_array_addr_with_size_ptr)       (MonoArray *, int, uintptr_t); 
30   typedef void          (*mono_jit_cleanup_ptr)                (MonoDomain *domain);
31   typedef int           (*mono_jit_exec_ptr)                   (MonoDomain *domain, MonoAssembly *assembly, int argc, char *argv[]);
32 }
33
34 namespace tizen {
35 namespace runtime {
36 namespace mono {
37
38 class MonoRuntime : public tizen::runtime::LauncherInterface
39 {
40   public:
41     MonoRuntime();
42     ~MonoRuntime();
43     int Initialize(bool standalone) override;
44     void Dispose() override;
45     int RunManagedLauncher() override;
46     int Launch(const char* root, const char* path, int argc, char* argv[]) override;
47
48   private:
49     void* monolib;
50     mono_set_dirs_ptr SetDirs;
51     mono_set_assemblies_path_ptr SetAssembliesPath;
52     mono_jit_init_ptr JitInit;
53     mono_domain_assembly_open_ptr DomainAssemblyOpen;
54     mono_assembly_get_image_ptr AssemblyGetImage;
55     mono_class_from_name_ptr ClassFromName;
56     mono_runtime_invoke_ptr RuntimeInvoke;
57     mono_class_get_method_from_name_ptr ClassGetMethodFromName;
58     mono_object_to_string_ptr ObjectToString;
59     mono_string_to_utf8_ptr StringToUtf8;
60     mono_string_new_ptr NewString;
61     mono_get_string_class_ptr GetStringClass;
62     mono_array_new_ptr ArrayNew;
63     mono_array_addr_with_size_ptr ArrayAddrWithSize;
64     mono_jit_cleanup_ptr DomainCleanup;
65     mono_jit_exec_ptr AssemblyExec;
66
67     MonoDomain* domain;
68     MonoAssembly* launcherAssembly;
69     MonoImage* monoImage;
70     MonoClass* assemblyManagerClass;
71     MonoMethod* prepareLaunch;
72     MonoMethod* launch;
73
74     std::string launcherAssemblyPath;
75     std::string deviceAPIDirectory;
76     std::string runtimeDirectory;
77 };
78
79
80 }  // namespace mono
81 }  // namespace runtime
82 }  // namespace tizen