| |
1 #ifndef _GAIM_MONO_LOADER_MONO_HELPER_H_ |
| |
2 #define _GAIM_MONO_LOADER_MONO_HELPER_H_ |
| |
3 |
| |
4 #include <mono/jit/jit.h> |
| |
5 #include <mono/metadata/object.h> |
| |
6 #include <mono/metadata/environment.h> |
| |
7 #include <mono/metadata/assembly.h> |
| |
8 #include <mono/metadata/debug-helpers.h> |
| |
9 #include <mono/metadata/tokentype.h> |
| |
10 #include "plugin.h" |
| |
11 #include "value.h" |
| |
12 #include "debug.h" |
| |
13 |
| |
14 typedef struct { |
| |
15 GaimPlugin *plugin; |
| |
16 |
| |
17 MonoAssembly *assm; |
| |
18 MonoClass *klass; |
| |
19 MonoObject *obj; |
| |
20 |
| |
21 MonoMethod *init; |
| |
22 MonoMethod *load; |
| |
23 MonoMethod *unload; |
| |
24 MonoMethod *destroy; |
| |
25 |
| |
26 GList *signal_data; |
| |
27 } GaimMonoPlugin; |
| |
28 |
| |
29 gboolean ml_init(void); |
| |
30 |
| |
31 void ml_uninit(void); |
| |
32 |
| |
33 MonoObject* ml_invoke(MonoMethod *method, void *obj, void **params); |
| |
34 |
| |
35 MonoObject* ml_delegate_invoke(MonoObject *method, void **params); |
| |
36 |
| |
37 MonoClass* ml_find_plugin_class(MonoImage *image); |
| |
38 |
| |
39 gchar* ml_get_prop_string(MonoObject *obj, char *field); |
| |
40 |
| |
41 void ml_set_prop_string(MonoObject *obj, char *field, char *data); |
| |
42 |
| |
43 gboolean ml_is_api_dll(MonoImage *image); |
| |
44 |
| |
45 MonoDomain* ml_get_domain(void); |
| |
46 |
| |
47 void ml_set_domain(MonoDomain *d); |
| |
48 |
| |
49 void ml_init_internal_calls(void); |
| |
50 |
| |
51 MonoObject* ml_object_from_gaim_type(GaimType type, gpointer data); |
| |
52 |
| |
53 MonoObject* ml_object_from_gaim_subtype(GaimSubType type, gpointer data); |
| |
54 |
| |
55 MonoObject* ml_create_api_object(char *class_name); |
| |
56 |
| |
57 void ml_set_api_image(MonoImage *image); |
| |
58 |
| |
59 MonoImage* ml_get_api_image(void); |
| |
60 |
| |
61 /* hash table stuff; probably don't need it anymore */ |
| |
62 |
| |
63 void ml_add_plugin(GaimMonoPlugin *plugin); |
| |
64 |
| |
65 gboolean ml_remove_plugin(GaimMonoPlugin *plugin); |
| |
66 |
| |
67 gpointer ml_find_plugin(GaimMonoPlugin *plugin); |
| |
68 |
| |
69 gpointer ml_find_plugin_by_class(MonoClass *klass); |
| |
70 |
| |
71 GHashTable* ml_get_plugin_hash(void); |
| |
72 |
| |
73 #endif |