Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
[mono.git] / mono / metadata / appdomain.h
1 /*
2  * appdomain.h: AppDomain functions
3  *
4  * Author:
5  *      Dietmar Maurer (dietmar@ximian.com)
6  *
7  * (C) 2001 Ximian, Inc.
8  */
9
10 #ifndef _MONO_METADATA_APPDOMAIN_H_
11 #define _MONO_METADATA_APPDOMAIN_H_
12
13 #include <config.h>
14 #include <glib.h>
15
16 #include <mono/metadata/object.h>
17 #include <mono/metadata/reflection.h>
18 #include <mono/metadata/mempool.h>
19
20 /* This is a copy of System.AppDomainSetup */
21 typedef struct {
22         MonoObject object;
23         MonoString *application_base;
24         MonoString *application_name;
25         MonoString *cache_path;
26         MonoString *configuration_file;
27         MonoString *dynamic_base;
28         MonoString *license_file;
29         MonoString *private_bin_path;
30         MonoString *private_bin_path_probe;
31         MonoString *shadow_copy_directories;
32         MonoString *shadow_copy_files;
33         MonoBoolean publisher_policy;
34 } MonoAppDomainSetup;
35
36 typedef struct _MonoAppDomain MonoAppDomain;
37
38 struct _MonoDomain {
39         MonoAppDomain *domain;
40         MonoMemPool   *mp;
41         GHashTable    *env;
42         GHashTable    *assemblies;
43         MonoAppDomainSetup *setup;
44         MonoString    *friendly_name;
45         GHashTable    *ldstr_table;
46         GHashTable    *class_vtable_hash;
47         GHashTable    *jit_code_hash;
48 };
49
50 /* This is a copy of System.AppDomain */
51 struct _MonoAppDomain {
52         MonoObject  object;
53         MonoDomain *data;
54 };
55
56 extern MonoDomain *mono_root_domain;
57
58 MonoDomain *
59 mono_init (const char *filename);
60
61 inline MonoDomain *
62 mono_domain_get (void);
63
64 inline void
65 mono_domain_set (MonoDomain *domain);
66
67 MonoAssembly *
68 mono_domain_assembly_open (MonoDomain *domain, char *name);
69
70 void
71 mono_domain_unload (MonoDomain *domain, gboolean force);
72
73 void
74 ves_icall_System_AppDomainSetup_InitAppDomainSetup (MonoAppDomainSetup *setup);
75
76 MonoAppDomain *
77 ves_icall_System_AppDomain_getCurDomain            (void);
78
79 MonoAppDomain *
80 ves_icall_System_AppDomain_createDomain            (MonoString         *friendly_name,
81                                                     MonoAppDomainSetup *setup);
82
83 MonoObject *
84 ves_icall_System_AppDomain_GetData                 (MonoAppDomain *ad, 
85                                                     MonoString    *name);
86
87 void
88 ves_icall_System_AppDomain_SetData                 (MonoAppDomain *ad, 
89                                                     MonoString    *name, 
90                                                     MonoObject    *data);
91
92 MonoAppDomainSetup *
93 ves_icall_System_AppDomain_getSetup                (MonoAppDomain *ad);
94
95 MonoString *
96 ves_icall_System_AppDomain_getFriendlyName         (MonoAppDomain *ad);
97
98 MonoArray *
99 ves_icall_System_AppDomain_GetAssemblies           (MonoAppDomain *ad);
100
101 MonoReflectionAssembly *
102 ves_icall_System_AppDomain_LoadAssembly            (MonoAppDomain *ad, 
103                                                     MonoReflectionAssemblyName *assRef,
104                                                     MonoObject    *evidence);
105
106 void
107 ves_icall_System_AppDomain_Unload                  (MonoAppDomain *ad);
108
109 gint32
110 ves_icall_System_AppDomain_ExecuteAssembly         (MonoAppDomain *ad, 
111                                                     MonoString    *file, 
112                                                     MonoObject    *evidence,
113                                                     MonoArray     *args);
114
115 #endif /* _MONO_METADATA_APPDOMAIN_H_ */