| 165 } |
165 } |
| 166 |
166 |
| 167 return obj; |
167 return obj; |
| 168 } |
168 } |
| 169 |
169 |
| |
170 MonoObject* ml_create_api_object(char *class_name) |
| |
171 { |
| |
172 MonoObject *obj = NULL; |
| |
173 MonoClass *klass = NULL; |
| |
174 |
| |
175 klass = mono_class_from_name(ml_get_api_image(), "Gaim", class_name); |
| |
176 if (!klass) { |
| |
177 gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't find the '%s' class\n", class_name); |
| |
178 return NULL; |
| |
179 } |
| |
180 |
| |
181 obj = mono_object_new(ml_get_domain(), klass); |
| |
182 if (!obj) { |
| |
183 gaim_debug(GAIM_DEBUG_FATAL, "mono", "couldn't create the object from class '%s'\n", class_name); |
| |
184 return NULL; |
| |
185 } |
| |
186 |
| |
187 mono_runtime_object_init(obj); |
| |
188 |
| |
189 return obj; |
| |
190 } |
| |
191 |
| 170 static MonoDomain *_domain = NULL; |
192 static MonoDomain *_domain = NULL; |
| 171 |
193 |
| 172 MonoDomain* ml_get_domain(void) |
194 MonoDomain* ml_get_domain(void) |
| 173 { |
195 { |
| 174 return _domain; |
196 return _domain; |
| 194 void ml_init_internal_calls(void) |
216 void ml_init_internal_calls(void) |
| 195 { |
217 { |
| 196 mono_add_internal_call("Gaim.Debug::_debug", gaim_debug_glue); |
218 mono_add_internal_call("Gaim.Debug::_debug", gaim_debug_glue); |
| 197 mono_add_internal_call("Gaim.Signal::_connect", gaim_signal_connect_glue); |
219 mono_add_internal_call("Gaim.Signal::_connect", gaim_signal_connect_glue); |
| 198 mono_add_internal_call("Gaim.BuddyList::_get_handle", gaim_blist_get_handle_glue); |
220 mono_add_internal_call("Gaim.BuddyList::_get_handle", gaim_blist_get_handle_glue); |
| 199 } |
|
| 200 |
|
| 201 void ml_destroy_signal_data(gpointer data, gpointer user_data) |
|
| 202 { |
|
| 203 g_free(data); |
|
| 204 } |
221 } |
| 205 |
222 |
| 206 static GHashTable *plugins_hash = NULL; |
223 static GHashTable *plugins_hash = NULL; |
| 207 |
224 |
| 208 void ml_add_plugin(GaimMonoPlugin *plugin) |
225 void ml_add_plugin(GaimMonoPlugin *plugin) |