1 /*
2 Boost Software License - Version 1.0 - August 17th, 2003
3 Permission is hereby granted,free of charge,to any person or organization
4 obtaining a copy of the software and accompanying documentation covered by
5 this license (the "Software") to use,reproduce,display,distribute,
6 execute,and transmit the Software,and to prepare derivative works of the
7 Software,and to permit third-parties to whom the Software is furnished to
8 do so,all subject to the following:
9 
10 The copyright notices in the Software and this entire statement,including
11 the above license grant,this restriction and the following disclaimer,
12 must be included in all copies of the Software,in whole or in part,and
13 all derivative works of the Software,unless such copies or derivative
14 works are solely in the form of machine-executable object code generated by
15 a source language processor.
16 
17 THE SOFTWARE IS PROVIDED "AS IS",WITHOUT WARRANTY OF ANY KIND,EXPRESS OR
18 IMPLIED,INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 FITNESS FOR A PARTICULAR PURPOSE,TITLE AND NON-INFRINGEMENT. IN NO EVENT
20 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
21 FOR ANY DAMAGES OR OTHER LIABILITY,WHETHER IN CONTRACT,TORT OR OTHERWISE,
22 ARISING FROM,OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
23 DEALINGS IN THE SOFTWARE.
24 */
25 module derelict.mono.mono;
26 
27 public import derelict.mono.types;
28 version(DerelictMono_Static)
29 	public import derelict.mono.stafunctions;
30 else:
31 public import derelict.mono.dynfunctions;
32 public import derelict.util.loader;
33 
34 private
35 {
36 	import derelict.util.exception;
37 	import derelict.util.system;
38 
39 	static if (Derelict_OS_Windows)
40 		enum libNames = "mono-2.0.dll, mono-2.dll, mono.dll";
41 	else static if (Derelict_OS_Mac)
42 		enum libNames = "/usr/local/lib/libmono-2.0.dylib, /usr/local/lib/libmono-2.0/libmono-2.0.dylib, ../Frameworks/Mono.framework/Libraries/libmono-2.0.dylib, /Library/Frameworks/Mono.framework/Libraries/libmono-2.0.dylib, /System/Library/Frameworks/Mono.framework/Libraries/libmono-2.0.dylib, /Volumes/System/Library/Frameworks/Mono.framework/Libraries/libmono-2.0.dylib";
43 	else static if (Derelict_OS_Posix)
44 		enum libNames = "/usr/local/lib/libmono-2.0.so, /usr/lib/libmono-2.0.so, /usr/lib/libmono-2.0.so.1.0.0";
45 	else
46 		static assert(0, "Need to implement Mono libNames for this operating system.");
47 }
48 
49 class DerelictMonoLoader : SharedLibLoader
50 {
51 	public this()
52 	{
53 		super(libNames);
54 	}
55 
56 	protected override void loadSymbols()
57 	{
58 		// utils/mono-publib.h
59 		bindFunc(cast(void**)&mono_free, "mono_free");
60 		bindFunc(cast(void**)&mono_set_allocator_vtable, "mono_set_allocator_vtable");
61 		// utils/mono-logger.h
62 		bindFunc(cast(void**)&mono_trace_set_level_string, "mono_trace_set_level_string");
63 		bindFunc(cast(void**)&mono_trace_set_mask_string, "mono_trace_set_mask_string");
64 		bindFunc(cast(void**)&mono_trace_set_log_handler, "mono_trace_set_log_handler");
65 		bindFunc(cast(void**)&mono_trace_set_print_handler, "mono_trace_set_print_handler");
66 		bindFunc(cast(void**)&mono_trace_set_printerr_handler, "mono_trace_set_printerr_handler");
67 		// utils/mono-error.h
68 		bindFunc(cast(void**)&mono_error_init, "mono_error_init");
69 		bindFunc(cast(void**)&mono_error_init_flags, "mono_error_init_flags");
70 		bindFunc(cast(void**)&mono_error_cleanup, "mono_error_cleanup");
71 		bindFunc(cast(void**)&mono_error_ok, "mono_error_ok");
72 		bindFunc(cast(void**)&mono_error_get_error_code, "mono_error_get_error_code");
73 		bindFunc(cast(void**)&mono_error_get_message, "mono_error_get_message");
74 		// utils/mono-dl-fallback.h
75 		bindFunc(cast(void**)&mono_dl_fallback_register, "mono_dl_fallback_register");
76 		bindFunc(cast(void**)&mono_dl_fallback_unregister, "mono_dl_fallback_unregister");
77 		// utils/mono-counters.h
78 		bindFunc(cast(void**)&mono_counters_enable, "mono_counters_enable");
79 		bindFunc(cast(void**)&mono_counters_init, "mono_counters_init");
80 		bindFunc(cast(void**)&mono_counters_register, "mono_counters_register");
81 		bindFunc(cast(void**)&mono_counters_register_with_size,
82 				"mono_counters_register_with_size");
83 		bindFunc(cast(void**)&mono_counters_on_register, "mono_counters_on_register");
84 		bindFunc(cast(void**)&mono_counters_dump, "mono_counters_dump");
85 		bindFunc(cast(void**)&mono_counters_cleanup, "mono_counters_cleanup");
86 		bindFunc(cast(void**)&mono_counters_foreach, "mono_counters_foreach");
87 		bindFunc(cast(void**)&mono_counters_sample, "mono_counters_sample");
88 		bindFunc(cast(void**)&mono_counter_get_name, "mono_counter_get_name");
89 		bindFunc(cast(void**)&mono_counter_get_type, "mono_counter_get_type");
90 		bindFunc(cast(void**)&mono_counter_get_section, "mono_counter_get_section");
91 		bindFunc(cast(void**)&mono_counter_get_unit, "mono_counter_get_unit");
92 		bindFunc(cast(void**)&mono_counter_get_variance, "mono_counter_get_variance");
93 		bindFunc(cast(void**)&mono_counter_get_size, "mono_counter_get_size");
94 		bindFunc(cast(void**)&mono_runtime_resource_limit, "mono_runtime_resource_limit");
95 		bindFunc(cast(void**)&mono_runtime_resource_set_callback,
96 				"mono_runtime_resource_set_callback");
97 		bindFunc(cast(void**)&mono_runtime_resource_check_limit,
98 				"mono_runtime_resource_check_limit");
99 		// metadata/appdomain.h
100 		bindFunc(cast(void**)&mono_init, "mono_init");
101 		bindFunc(cast(void**)&mono_init_from_assembly, "mono_init_from_assembly");
102 		bindFunc(cast(void**)&mono_init_version, "mono_init_version");
103 		bindFunc(cast(void**)&mono_get_root_domain, "mono_get_root_domain");
104 		bindFunc(cast(void**)&mono_runtime_init, "mono_runtime_init");
105 		bindFunc(cast(void**)&mono_runtime_cleanup, "mono_runtime_cleanup");
106 		bindFunc(cast(void**)&mono_install_runtime_cleanup, "mono_install_runtime_cleanup");
107 		bindFunc(cast(void**)&mono_runtime_quit, "mono_runtime_quit");
108 		bindFunc(cast(void**)&mono_runtime_set_shutting_down, "mono_runtime_set_shutting_down");
109 		bindFunc(cast(void**)&mono_runtime_is_shutting_down, "mono_runtime_is_shutting_down");
110 		bindFunc(cast(void**)&mono_check_corlib_version, "mono_check_corlib_version");
111 		bindFunc(cast(void**)&mono_domain_create, "mono_domain_create");
112 		bindFunc(cast(void**)&mono_domain_create_appdomain, "mono_domain_create_appdomain");
113 		bindFunc(cast(void**)&mono_domain_set_config, "mono_domain_set_config");
114 		bindFunc(cast(void**)&mono_domain_get, "mono_domain_get");
115 		bindFunc(cast(void**)&mono_domain_get_by_id, "mono_domain_get_by_id");
116 		bindFunc(cast(void**)&mono_domain_get_id, "mono_domain_get_id");
117 		bindFunc(cast(void**)&mono_domain_get_friendly_name, "mono_domain_get_friendly_name");
118 		bindFunc(cast(void**)&mono_domain_set, "mono_domain_set");
119 		bindFunc(cast(void**)&mono_domain_set_internal, "mono_domain_set_internal");
120 		bindFunc(cast(void**)&mono_domain_unload, "mono_domain_unload");
121 		bindFunc(cast(void**)&mono_domain_try_unload, "mono_domain_try_unload");
122 		bindFunc(cast(void**)&mono_domain_is_unloading, "mono_domain_is_unloading");
123 		bindFunc(cast(void**)&mono_domain_from_appdomain, "mono_domain_from_appdomain");
124 		bindFunc(cast(void**)&mono_domain_foreach, "mono_domain_foreach");
125 		bindFunc(cast(void**)&mono_domain_assembly_open, "mono_domain_assembly_open");
126 		bindFunc(cast(void**)&mono_domain_finalize, "mono_domain_finalize");
127 		bindFunc(cast(void**)&mono_domain_free, "mono_domain_free");
128 		bindFunc(cast(void**)&mono_domain_has_type_resolve, "mono_domain_has_type_resolve");
129 		bindFunc(cast(void**)&mono_domain_try_type_resolve, "mono_domain_try_type_resolve");
130 		bindFunc(cast(void**)&mono_domain_owns_vtable_slot, "mono_domain_owns_vtable_slot");
131 		bindFunc(cast(void**)&mono_context_init, "mono_context_init");
132 		bindFunc(cast(void**)&mono_context_set, "mono_context_set");
133 		bindFunc(cast(void**)&mono_context_get, "mono_context_get");
134 		bindFunc(cast(void**)&mono_context_get_id, "mono_context_get_id");
135 		bindFunc(cast(void**)&mono_context_get_domain_id, "mono_context_get_domain_id");
136 		bindFunc(cast(void**)&mono_jit_info_table_find, "mono_jit_info_table_find");
137 		bindFunc(cast(void**)&mono_jit_info_get_code_start, "mono_jit_info_get_code_start");
138 		bindFunc(cast(void**)&mono_jit_info_get_code_size, "mono_jit_info_get_code_size");
139 		bindFunc(cast(void**)&mono_jit_info_get_method, "mono_jit_info_get_method");
140 		bindFunc(cast(void**)&mono_get_corlib, "mono_get_corlib");
141 		bindFunc(cast(void**)&mono_get_object_class, "mono_get_object_class");
142 		bindFunc(cast(void**)&mono_get_byte_class, "mono_get_byte_class");
143 		bindFunc(cast(void**)&mono_get_void_class, "mono_get_void_class");
144 		bindFunc(cast(void**)&mono_get_boolean_class, "mono_get_boolean_class");
145 		bindFunc(cast(void**)&mono_get_sbyte_class, "mono_get_sbyte_class");
146 		bindFunc(cast(void**)&mono_get_int16_class, "mono_get_int16_class");
147 		bindFunc(cast(void**)&mono_get_uint16_class, "mono_get_uint16_class");
148 		bindFunc(cast(void**)&mono_get_int32_class, "mono_get_int32_class");
149 		bindFunc(cast(void**)&mono_get_uint32_class, "mono_get_uint32_class");
150 		bindFunc(cast(void**)&mono_get_intptr_class, "mono_get_intptr_class");
151 		bindFunc(cast(void**)&mono_get_uintptr_class, "mono_get_uintptr_class");
152 		bindFunc(cast(void**)&mono_get_int64_class, "mono_get_int64_class");
153 		bindFunc(cast(void**)&mono_get_uint64_class, "mono_get_uint64_class");
154 		bindFunc(cast(void**)&mono_get_single_class, "mono_get_single_class");
155 		bindFunc(cast(void**)&mono_get_double_class, "mono_get_double_class");
156 		bindFunc(cast(void**)&mono_get_char_class, "mono_get_char_class");
157 		bindFunc(cast(void**)&mono_get_string_class, "mono_get_string_class");
158 		bindFunc(cast(void**)&mono_get_enum_class, "mono_get_enum_class");
159 		bindFunc(cast(void**)&mono_get_array_class, "mono_get_array_class");
160 		bindFunc(cast(void**)&mono_get_thread_class, "mono_get_thread_class");
161 		bindFunc(cast(void**)&mono_get_exception_class, "mono_get_exception_class");
162 		bindFunc(cast(void**)&mono_security_enable_core_clr, "mono_security_enable_core_clr");
163 		bindFunc(cast(void**)&mono_security_set_core_clr_platform_callback,
164 				"mono_security_set_core_clr_platform_callback");
165 		// metadata/assembly.h
166 		bindFunc(cast(void**)&mono_assemblies_init, "mono_assemblies_init");
167 		bindFunc(cast(void**)&mono_assemblies_cleanup, "mono_assemblies_cleanup");
168 		bindFunc(cast(void**)&mono_assembly_open, "mono_assembly_open");
169 		bindFunc(cast(void**)&mono_assembly_open_full, "mono_assembly_open_full");
170 		bindFunc(cast(void**)&mono_assembly_load, "mono_assembly_load");
171 		bindFunc(cast(void**)&mono_assembly_load_full, "mono_assembly_load_full");
172 		bindFunc(cast(void**)&mono_assembly_load_from, "mono_assembly_load_from");
173 		bindFunc(cast(void**)&mono_assembly_load_from_full, "mono_assembly_load_from_full");
174 		bindFunc(cast(void**)&mono_assembly_load_with_partial_name,
175 				"mono_assembly_load_with_partial_name");
176 		bindFunc(cast(void**)&mono_assembly_loaded, "mono_assembly_loaded");
177 		bindFunc(cast(void**)&mono_assembly_loaded_full, "mono_assembly_loaded_full");
178 		bindFunc(cast(void**)&mono_assembly_get_assemblyref, "mono_assembly_get_assemblyref");
179 		bindFunc(cast(void**)&mono_assembly_load_reference, "mono_assembly_load_reference");
180 		bindFunc(cast(void**)&mono_assembly_load_references, "mono_assembly_load_references");
181 		bindFunc(cast(void**)&mono_assembly_load_module, "mono_assembly_load_module");
182 		bindFunc(cast(void**)&mono_assembly_close, "mono_assembly_close");
183 		bindFunc(cast(void**)&mono_assembly_setrootdir, "mono_assembly_setrootdir");
184 		bindFunc(cast(void**)&mono_assembly_getrootdir, "mono_assembly_getrootdir");
185 		bindFunc(cast(void**)&mono_native_getrootdir, "mono_native_getrootdir");
186 		bindFunc(cast(void**)&mono_assembly_foreach, "mono_assembly_foreach");
187 		bindFunc(cast(void**)&mono_assembly_set_main, "mono_assembly_set_main");
188 		bindFunc(cast(void**)&mono_assembly_get_main, "mono_assembly_get_main");
189 		bindFunc(cast(void**)&mono_assembly_get_image, "mono_assembly_get_image");
190 		bindFunc(cast(void**)&mono_assembly_get_name, "mono_assembly_get_name");
191 		bindFunc(cast(void**)&mono_assembly_fill_assembly_name,
192 				"mono_assembly_fill_assembly_name");
193 		bindFunc(cast(void**)&mono_assembly_names_equal, "mono_assembly_names_equal");
194 		bindFunc(cast(void**)&mono_stringify_assembly_name, "mono_stringify_assembly_name");
195 		bindFunc(cast(void**)&mono_install_assembly_load_hook, "mono_install_assembly_load_hook");
196 		bindFunc(cast(void**)&mono_install_assembly_search_hook,
197 				"mono_install_assembly_search_hook");
198 		bindFunc(cast(void**)&mono_install_assembly_refonly_search_hook,
199 				"mono_install_assembly_refonly_search_hook");
200 		bindFunc(cast(void**)&mono_assembly_invoke_search_hook,
201 				"mono_assembly_invoke_search_hook");
202 		bindFunc(cast(void**)&mono_install_assembly_postload_search_hook,
203 				"mono_install_assembly_postload_search_hook");
204 		bindFunc(cast(void**)&mono_install_assembly_postload_refonly_search_hook,
205 				"mono_install_assembly_postload_refonly_search_hook");
206 		bindFunc(cast(void**)&mono_install_assembly_preload_hook,
207 				"mono_install_assembly_preload_hook");
208 		bindFunc(cast(void**)&mono_install_assembly_refonly_preload_hook,
209 				"mono_install_assembly_refonly_preload_hook");
210 		bindFunc(cast(void**)&mono_assembly_invoke_load_hook, "mono_assembly_invoke_load_hook");
211 		bindFunc(cast(void**)&mono_assembly_name_new, "mono_assembly_name_new");
212 		bindFunc(cast(void**)&mono_assembly_name_get_name, "mono_assembly_name_get_name");
213 		bindFunc(cast(void**)&mono_assembly_name_get_culture, "mono_assembly_name_get_culture");
214 		bindFunc(cast(void**)&mono_assembly_name_get_version, "mono_assembly_name_get_version");
215 		bindFunc(cast(void**)&mono_assembly_name_get_pubkeytoken,
216 				"mono_assembly_name_get_pubkeytoken");
217 		bindFunc(cast(void**)&mono_assembly_name_free, "mono_assembly_name_free");
218 		bindFunc(cast(void**)&mono_register_bundled_assemblies,
219 				"mono_register_bundled_assemblies");
220 		bindFunc(cast(void**)&mono_register_config_for_assembly,
221 				"mono_register_config_for_assembly");
222 		bindFunc(cast(void**)&mono_register_symfile_for_assembly,
223 				"mono_register_symfile_for_assembly");
224 		bindFunc(cast(void**)&mono_register_machine_config, "mono_register_machine_config");
225 		bindFunc(cast(void**)&mono_set_rootdir, "mono_set_rootdir");
226 		bindFunc(cast(void**)&mono_set_dirs, "mono_set_dirs");
227 		bindFunc(cast(void**)&mono_set_assemblies_path, "mono_set_assemblies_path");
228 		// metadata/attrdefs.h
229 		// metadata/blob.h
230 		// metadata/class.h
231 		bindFunc(cast(void**)&mono_class_get, "mono_class_get");
232 		bindFunc(cast(void**)&mono_class_get_full, "mono_class_get_full");
233 		bindFunc(cast(void**)&mono_class_init, "mono_class_init");
234 		bindFunc(cast(void**)&mono_class_vtable, "mono_class_vtable");
235 		bindFunc(cast(void**)&mono_class_from_name, "mono_class_from_name");
236 		bindFunc(cast(void**)&mono_class_from_name_case, "mono_class_from_name_case");
237 		bindFunc(cast(void**)&mono_class_get_method_from_name_flags,
238 				"mono_class_get_method_from_name_flags");
239 		bindFunc(cast(void**)&mono_class_from_typeref, "mono_class_from_typeref");
240 		bindFunc(cast(void**)&mono_class_from_typeref_checked, "mono_class_from_typeref_checked");
241 		bindFunc(cast(void**)&mono_class_from_generic_parameter,
242 				"mono_class_from_generic_parameter");
243 		bindFunc(cast(void**)&mono_class_inflate_generic_type, "mono_class_inflate_generic_type");
244 		bindFunc(cast(void**)&mono_class_inflate_generic_method,
245 				"mono_class_inflate_generic_method");
246 		bindFunc(cast(void**)&mono_get_inflated_method, "mono_get_inflated_method");
247 		bindFunc(cast(void**)&mono_field_from_token, "mono_field_from_token");
248 		bindFunc(cast(void**)&mono_bounded_array_class_get, "mono_bounded_array_class_get");
249 		bindFunc(cast(void**)&mono_array_class_get, "mono_array_class_get");
250 		bindFunc(cast(void**)&mono_ptr_class_get, "mono_ptr_class_get");
251 		bindFunc(cast(void**)&mono_class_get_field, "mono_class_get_field");
252 		bindFunc(cast(void**)&mono_class_get_field_from_name, "mono_class_get_field_from_name");
253 		bindFunc(cast(void**)&mono_class_get_field_token, "mono_class_get_field_token");
254 		bindFunc(cast(void**)&mono_class_get_event_token, "mono_class_get_event_token");
255 		bindFunc(cast(void**)&mono_class_get_property_from_name,
256 				"mono_class_get_property_from_name");
257 		bindFunc(cast(void**)&mono_class_get_property_token, "mono_class_get_property_token");
258 		bindFunc(cast(void**)&mono_array_element_size, "mono_array_element_size");
259 		bindFunc(cast(void**)&mono_class_instance_size, "mono_class_instance_size");
260 		bindFunc(cast(void**)&mono_class_array_element_size, "mono_class_array_element_size");
261 		bindFunc(cast(void**)&mono_class_data_size, "mono_class_data_size");
262 		bindFunc(cast(void**)&mono_class_value_size, "mono_class_value_size");
263 		bindFunc(cast(void**)&mono_class_min_align, "mono_class_min_align");
264 		bindFunc(cast(void**)&mono_class_from_mono_type, "mono_class_from_mono_type");
265 		bindFunc(cast(void**)&mono_class_is_subclass_of, "mono_class_is_subclass_of");
266 		bindFunc(cast(void**)&mono_class_is_assignable_from, "mono_class_is_assignable_from");
267 		bindFunc(cast(void**)&mono_ldtoken, "mono_ldtoken");
268 		bindFunc(cast(void**)&mono_type_get_name, "mono_type_get_name");
269 		bindFunc(cast(void**)&mono_type_get_underlying_type, "mono_type_get_underlying_type");
270 		bindFunc(cast(void**)&mono_class_get_image, "mono_class_get_image");
271 		bindFunc(cast(void**)&mono_class_get_element_class, "mono_class_get_element_class");
272 		bindFunc(cast(void**)&mono_class_is_valuetype, "mono_class_is_valuetype");
273 		bindFunc(cast(void**)&mono_class_is_enum, "mono_class_is_enum");
274 		bindFunc(cast(void**)&mono_class_enum_basetype, "mono_class_enum_basetype");
275 		bindFunc(cast(void**)&mono_class_get_parent, "mono_class_get_parent");
276 		bindFunc(cast(void**)&mono_class_get_nesting_type, "mono_class_get_nesting_type");
277 		bindFunc(cast(void**)&mono_class_get_rank, "mono_class_get_rank");
278 		bindFunc(cast(void**)&mono_class_get_flags, "mono_class_get_flags");
279 		bindFunc(cast(void**)&mono_class_get_name, "mono_class_get_name");
280 		bindFunc(cast(void**)&mono_class_get_namespace, "mono_class_get_namespace");
281 		bindFunc(cast(void**)&mono_class_get_type, "mono_class_get_type");
282 		bindFunc(cast(void**)&mono_class_get_type_token, "mono_class_get_type_token");
283 		bindFunc(cast(void**)&mono_class_get_byref_type, "mono_class_get_byref_type");
284 		bindFunc(cast(void**)&mono_class_num_fields, "mono_class_num_fields");
285 		bindFunc(cast(void**)&mono_class_num_methods, "mono_class_num_methods");
286 		bindFunc(cast(void**)&mono_class_num_properties, "mono_class_num_properties");
287 		bindFunc(cast(void**)&mono_class_num_events, "mono_class_num_events");
288 		bindFunc(cast(void**)&mono_class_get_fields, "mono_class_get_fields");
289 		bindFunc(cast(void**)&mono_class_get_methods, "mono_class_get_methods");
290 		bindFunc(cast(void**)&mono_class_get_properties, "mono_class_get_properties");
291 		bindFunc(cast(void**)&mono_class_get_events, "mono_class_get_events");
292 		bindFunc(cast(void**)&mono_class_get_interfaces, "mono_class_get_interfaces");
293 		bindFunc(cast(void**)&mono_class_get_nested_types, "mono_class_get_nested_types");
294 		bindFunc(cast(void**)&mono_class_is_delegate, "mono_class_is_delegate");
295 		bindFunc(cast(void**)&mono_class_implements_interface, "mono_class_implements_interface");
296 		bindFunc(cast(void**)&mono_field_get_name, "mono_field_get_name");
297 		bindFunc(cast(void**)&mono_field_get_type, "mono_field_get_type");
298 		bindFunc(cast(void**)&mono_field_get_parent, "mono_field_get_parent");
299 		bindFunc(cast(void**)&mono_field_get_flags, "mono_field_get_flags");
300 		bindFunc(cast(void**)&mono_field_get_offset, "mono_field_get_offset");
301 		bindFunc(cast(void**)&mono_field_get_data, "mono_field_get_data");
302 		bindFunc(cast(void**)&mono_property_get_name, "mono_property_get_name");
303 		bindFunc(cast(void**)&mono_property_get_set_method, "mono_property_get_set_method");
304 		bindFunc(cast(void**)&mono_property_get_get_method, "mono_property_get_get_method");
305 		bindFunc(cast(void**)&mono_property_get_parent, "mono_property_get_parent");
306 		bindFunc(cast(void**)&mono_property_get_flags, "mono_property_get_flags");
307 		bindFunc(cast(void**)&mono_event_get_name, "mono_event_get_name");
308 		bindFunc(cast(void**)&mono_event_get_add_method, "mono_event_get_add_method");
309 		bindFunc(cast(void**)&mono_event_get_remove_method, "mono_event_get_remove_method");
310 		bindFunc(cast(void**)&mono_event_get_remove_method, "mono_event_get_remove_method");
311 		bindFunc(cast(void**)&mono_event_get_raise_method, "mono_event_get_raise_method");
312 		bindFunc(cast(void**)&mono_event_get_parent, "mono_event_get_parent");
313 		bindFunc(cast(void**)&mono_event_get_flags, "mono_event_get_flags");
314 		bindFunc(cast(void**)&mono_class_get_method_from_name, "mono_class_get_method_from_name");
315 		bindFunc(cast(void**)&mono_class_name_from_token, "mono_class_name_from_token");
316 		bindFunc(cast(void**)&mono_method_can_access_field, "mono_method_can_access_field");
317 		bindFunc(cast(void**)&mono_method_can_access_method, "mono_method_can_access_method");
318 		// metadata/debug-helpers.h
319 		bindFunc(cast(void**)&mono_disasm_code_one, "mono_disasm_code_one");
320 		bindFunc(cast(void**)&mono_disasm_code, "mono_disasm_code");
321 		bindFunc(cast(void**)&mono_type_full_name, "mono_type_full_name");
322 		bindFunc(cast(void**)&mono_signature_get_desc, "mono_signature_get_desc");
323 		bindFunc(cast(void**)&mono_context_get_desc, "mono_context_get_desc");
324 		bindFunc(cast(void**)&mono_method_desc_new, "mono_method_desc_new");
325 		bindFunc(cast(void**)&mono_method_desc_from_method, "mono_method_desc_from_method");
326 		bindFunc(cast(void**)&mono_method_desc_free, "mono_method_desc_free");
327 		bindFunc(cast(void**)&mono_method_desc_match, "mono_method_desc_match");
328 		bindFunc(cast(void**)&mono_method_desc_full_match, "mono_method_desc_full_match");
329 		bindFunc(cast(void**)&mono_method_desc_search_in_class,
330 				"mono_method_desc_search_in_class");
331 		bindFunc(cast(void**)&mono_method_desc_search_in_image,
332 				"mono_method_desc_search_in_image");
333 		bindFunc(cast(void**)&mono_method_full_name, "mono_method_full_name");
334 		bindFunc(cast(void**)&mono_field_full_name, "mono_field_full_name");
335 		// metadata/debug-mono-symfile.h
336 		bindFunc(cast(void**)&mono_debug_open_mono_symbols, "mono_debug_open_mono_symbols");
337 		bindFunc(cast(void**)&mono_debug_close_mono_symbol_file,
338 				"mono_debug_close_mono_symbol_file");
339 		bindFunc(cast(void**)&mono_debug_symfile_is_loaded, "mono_debug_symfile_is_loaded");
340 		bindFunc(cast(void**)&mono_debug_symfile_lookup_location,
341 				"mono_debug_symfile_lookup_location");
342 		bindFunc(cast(void**)&mono_debug_symfile_free_location,
343 				"mono_debug_symfile_free_location");
344 		bindFunc(cast(void**)&mono_debug_symfile_lookup_method,
345 				"mono_debug_symfile_lookup_method");
346 		bindFunc(cast(void**)&mono_debug_symfile_lookup_locals,
347 				"mono_debug_symfile_lookup_locals");
348 		//?bindFunc(cast(void**)&mono_debug_image_has_debug_info, "mono_debug_image_has_debug_info");
349 		// metadata/environment.h
350 		bindFunc(cast(void**)&mono_environment_exitcode_get, "mono_environment_exitcode_get");
351 		bindFunc(cast(void**)&mono_environment_exitcode_set, "mono_environment_exitcode_set");
352 		// metadata/exception.h
353 		bindFunc(cast(void**)&mono_exception_from_name, "mono_exception_from_name");
354 		bindFunc(cast(void**)&mono_exception_from_token, "mono_exception_from_token");
355 		bindFunc(cast(void**)&mono_exception_from_name_two_strings,
356 				"mono_exception_from_name_two_strings");
357 		bindFunc(cast(void**)&mono_exception_from_name_msg, "mono_exception_from_name_msg");
358 		bindFunc(cast(void**)&mono_exception_from_token_two_strings,
359 				"mono_exception_from_token_two_strings");
360 		bindFunc(cast(void**)&mono_exception_from_name_domain, "mono_exception_from_name_domain");
361 		bindFunc(cast(void**)&mono_get_exception_divide_by_zero,
362 				"mono_get_exception_divide_by_zero");
363 		bindFunc(cast(void**)&mono_get_exception_security, "mono_get_exception_security");
364 		bindFunc(cast(void**)&mono_get_exception_arithmetic, "mono_get_exception_arithmetic");
365 		bindFunc(cast(void**)&mono_get_exception_overflow, "mono_get_exception_overflow");
366 		bindFunc(cast(void**)&mono_get_exception_null_reference,
367 				"mono_get_exception_null_reference");
368 		bindFunc(cast(void**)&mono_get_exception_execution_engine,
369 				"mono_get_exception_execution_engine");
370 		bindFunc(cast(void**)&mono_get_exception_thread_abort, "mono_get_exception_thread_abort");
371 		bindFunc(cast(void**)&mono_get_exception_thread_state, "mono_get_exception_thread_state");
372 		bindFunc(cast(void**)&mono_get_exception_thread_interrupted,
373 				"mono_get_exception_thread_interrupted");
374 		bindFunc(cast(void**)&mono_get_exception_serialization,
375 				"mono_get_exception_serialization");
376 		bindFunc(cast(void**)&mono_get_exception_invalid_cast, "mono_get_exception_invalid_cast");
377 		bindFunc(cast(void**)&mono_get_exception_invalid_operation,
378 				"mono_get_exception_invalid_operation");
379 		bindFunc(cast(void**)&mono_get_exception_index_out_of_range,
380 				"mono_get_exception_index_out_of_range");
381 		bindFunc(cast(void**)&mono_get_exception_array_type_mismatch,
382 				"mono_get_exception_array_type_mismatch");
383 		bindFunc(cast(void**)&mono_get_exception_type_load, "mono_get_exception_type_load");
384 		bindFunc(cast(void**)&mono_get_exception_missing_method,
385 				"mono_get_exception_missing_method");
386 		bindFunc(cast(void**)&mono_get_exception_missing_field,
387 				"mono_get_exception_missing_field");
388 		bindFunc(cast(void**)&mono_get_exception_not_implemented,
389 				"mono_get_exception_not_implemented");
390 		bindFunc(cast(void**)&mono_get_exception_not_supported,
391 				"mono_get_exception_not_supported");
392 		bindFunc(cast(void**)&mono_get_exception_argument_null,
393 				"mono_get_exception_argument_null");
394 		bindFunc(cast(void**)&mono_get_exception_argument, "mono_get_exception_argument");
395 		bindFunc(cast(void**)&mono_get_exception_argument_out_of_range,
396 				"mono_get_exception_argument_out_of_range");
397 		bindFunc(cast(void**)&mono_get_exception_io, "mono_get_exception_io");
398 		bindFunc(cast(void**)&mono_get_exception_file_not_found,
399 				"mono_get_exception_file_not_found");
400 		bindFunc(cast(void**)&mono_get_exception_file_not_found2,
401 				"mono_get_exception_file_not_found2");
402 		bindFunc(cast(void**)&mono_get_exception_type_initialization,
403 				"mono_get_exception_type_initialization");
404 		bindFunc(cast(void**)&mono_get_exception_synchronization_lock,
405 				"mono_get_exception_synchronization_lock");
406 		bindFunc(cast(void**)&mono_get_exception_cannot_unload_appdomain,
407 				"mono_get_exception_cannot_unload_appdomain");
408 		bindFunc(cast(void**)&mono_get_exception_appdomain_unloaded,
409 				"mono_get_exception_appdomain_unloaded");
410 		bindFunc(cast(void**)&mono_get_exception_bad_image_format,
411 				"mono_get_exception_bad_image_format");
412 		bindFunc(cast(void**)&mono_get_exception_bad_image_format2,
413 				"mono_get_exception_bad_image_format2");
414 		bindFunc(cast(void**)&mono_get_exception_stack_overflow,
415 				"mono_get_exception_stack_overflow");
416 		bindFunc(cast(void**)&mono_get_exception_out_of_memory,
417 				"mono_get_exception_out_of_memory");
418 		bindFunc(cast(void**)&mono_get_exception_field_access, "mono_get_exception_field_access");
419 		bindFunc(cast(void**)&mono_get_exception_method_access,
420 				"mono_get_exception_method_access");
421 		bindFunc(cast(void**)&mono_get_exception_reflection_type_load,
422 				"mono_get_exception_reflection_type_load");
423 		bindFunc(cast(void**)&mono_get_exception_runtime_wrapped,
424 				"mono_get_exception_runtime_wrapped");
425 		/*?bindFunc(cast(void**)&mono_install_unhandled_exception_hook,
426 				"mono_install_unhandled_exception_hook");*/
427 		/*?bindFunc(cast(void**)&mono_invoke_unhandled_exception_hook,
428 				"mono_invoke_unhandled_exception_hook");*/
429 		// metadata/image.h
430 		bindFunc(cast(void**)&mono_images_init, "mono_images_init");
431 		bindFunc(cast(void**)&mono_images_cleanup, "mono_images_cleanup");
432 		bindFunc(cast(void**)&mono_image_open, "mono_image_open");
433 		bindFunc(cast(void**)&mono_image_open_full, "mono_image_open_full");
434 		bindFunc(cast(void**)&mono_pe_file_open, "mono_pe_file_open");
435 		bindFunc(cast(void**)&mono_image_open_from_data, "mono_image_open_from_data");
436 		bindFunc(cast(void**)&mono_image_open_from_data_full, "mono_image_open_from_data_full");
437 		bindFunc(cast(void**)&mono_image_open_from_data_with_name,
438 				"mono_image_open_from_data_with_name");
439 		bindFunc(cast(void**)&mono_image_fixup_vtable, "mono_image_fixup_vtable");
440 		bindFunc(cast(void**)&mono_image_loaded, "mono_image_loaded");
441 		bindFunc(cast(void**)&mono_image_loaded_full, "mono_image_loaded_full");
442 		bindFunc(cast(void**)&mono_image_loaded_by_guid, "mono_image_loaded_by_guid");
443 		bindFunc(cast(void**)&mono_image_loaded_by_guid_full, "mono_image_loaded_by_guid_full");
444 		bindFunc(cast(void**)&mono_image_init, "mono_image_init");
445 		bindFunc(cast(void**)&mono_image_close, "mono_image_close");
446 		bindFunc(cast(void**)&mono_image_addref, "mono_image_addref");
447 		bindFunc(cast(void**)&mono_image_strerror, "mono_image_strerror");
448 		bindFunc(cast(void**)&mono_image_ensure_section, "mono_image_ensure_section");
449 		bindFunc(cast(void**)&mono_image_ensure_section_idx, "mono_image_ensure_section_idx");
450 		bindFunc(cast(void**)&mono_image_get_entry_point, "mono_image_get_entry_point");
451 		bindFunc(cast(void**)&mono_image_get_resource, "mono_image_get_resource");
452 		bindFunc(cast(void**)&mono_image_load_file_for_image, "mono_image_load_file_for_image");
453 		bindFunc(cast(void**)&mono_image_load_module, "mono_image_load_module");
454 		bindFunc(cast(void**)&mono_image_get_name, "mono_image_get_name");
455 		bindFunc(cast(void**)&mono_image_get_filename, "mono_image_get_filename");
456 		bindFunc(cast(void**)&mono_image_get_guid, "mono_image_get_guid");
457 		bindFunc(cast(void**)&mono_image_get_assembly, "mono_image_get_assembly");
458 		bindFunc(cast(void**)&mono_image_is_dynamic, "mono_image_is_dynamic");
459 		bindFunc(cast(void**)&mono_image_rva_map, "mono_image_rva_map");
460 		bindFunc(cast(void**)&mono_image_get_table_info, "mono_image_get_table_info");
461 		bindFunc(cast(void**)&mono_image_get_table_rows, "mono_image_get_table_rows");
462 		bindFunc(cast(void**)&mono_table_info_get_rows, "mono_table_info_get_rows");
463 		bindFunc(cast(void**)&mono_image_lookup_resource, "mono_image_lookup_resource");
464 		bindFunc(cast(void**)&mono_image_get_public_key, "mono_image_get_public_key");
465 		bindFunc(cast(void**)&mono_image_get_strong_name, "mono_image_get_strong_name");
466 		bindFunc(cast(void**)&mono_image_strong_name_position, "mono_image_strong_name_position");
467 		bindFunc(cast(void**)&mono_image_add_to_name_cache, "mono_image_add_to_name_cache");
468 		bindFunc(cast(void**)&mono_image_has_authenticode_entry,
469 				"mono_image_has_authenticode_entry");
470 		// metadata/loader.h
471 		bindFunc(cast(void**)&mono_get_method, "mono_get_method");
472 		bindFunc(cast(void**)&mono_get_method_full, "mono_get_method_full");
473 		bindFunc(cast(void**)&mono_get_method_constrained, "mono_get_method_constrained");
474 		bindFunc(cast(void**)&mono_free_method, "mono_free_method");
475 		bindFunc(cast(void**)&mono_method_get_signature_full, "mono_method_get_signature_full");
476 		bindFunc(cast(void**)&mono_method_get_signature, "mono_method_get_signature");
477 		bindFunc(cast(void**)&mono_method_signature, "mono_method_signature");
478 		bindFunc(cast(void**)&mono_method_get_header, "mono_method_get_header");
479 		bindFunc(cast(void**)&mono_method_get_name, "mono_method_get_name");
480 		bindFunc(cast(void**)&mono_method_get_class, "mono_method_get_class");
481 		bindFunc(cast(void**)&mono_method_get_token, "mono_method_get_token");
482 		bindFunc(cast(void**)&mono_method_get_flags, "mono_method_get_flags");
483 		bindFunc(cast(void**)&mono_method_get_index, "mono_method_get_index");
484 		//?bindFunc(cast(void**)&mono_load_image, "mono_load_image");
485 		bindFunc(cast(void**)&mono_add_internal_call, "mono_add_internal_call");
486 		bindFunc(cast(void**)&mono_lookup_internal_call, "mono_lookup_internal_call");
487 		//?bindFunc(cast(void**)&mono_lookup_internal_call_full, "mono_lookup_internal_call_full");
488 		bindFunc(cast(void**)&mono_lookup_icall_symbol, "mono_lookup_icall_symbol");
489 		bindFunc(cast(void**)&mono_dllmap_insert, "mono_dllmap_insert");
490 		bindFunc(cast(void**)&mono_lookup_pinvoke_call, "mono_lookup_pinvoke_call");
491 		bindFunc(cast(void**)&mono_method_get_param_names, "mono_method_get_param_names");
492 		bindFunc(cast(void**)&mono_method_get_param_token, "mono_method_get_param_token");
493 		bindFunc(cast(void**)&mono_method_get_marshal_info, "mono_method_get_marshal_info");
494 		bindFunc(cast(void**)&mono_method_has_marshal_info, "mono_method_has_marshal_info");
495 		bindFunc(cast(void**)&mono_method_get_last_managed, "mono_method_get_last_managed");
496 		bindFunc(cast(void**)&mono_stack_walk, "mono_stack_walk");
497 		bindFunc(cast(void**)&mono_stack_walk_no_il, "mono_stack_walk_no_il");
498 		bindFunc(cast(void**)&mono_stack_walk_async_safe, "mono_stack_walk_async_safe");
499 		bindFunc(cast(void**)&mono_method_get_header_checked, "mono_method_get_header_checked");
500 		// metadata/metadata.h
501 		bindFunc(cast(void**)&mono_metadata_init, "mono_metadata_init");
502 		bindFunc(cast(void**)&mono_metadata_decode_row, "mono_metadata_decode_row");
503 		bindFunc(cast(void**)&mono_metadata_decode_row_col, "mono_metadata_decode_row_col");
504 		bindFunc(cast(void**)&mono_metadata_compute_size, "mono_metadata_compute_size");
505 		bindFunc(cast(void**)&mono_metadata_locate, "mono_metadata_locate");
506 		bindFunc(cast(void**)&mono_metadata_locate_token, "mono_metadata_locate_token");
507 		bindFunc(cast(void**)&mono_metadata_string_heap, "mono_metadata_string_heap");
508 		bindFunc(cast(void**)&mono_metadata_blob_heap, "mono_metadata_blob_heap");
509 		bindFunc(cast(void**)&mono_metadata_user_string, "mono_metadata_user_string");
510 		bindFunc(cast(void**)&mono_metadata_guid_heap, "mono_metadata_guid_heap");
511 		bindFunc(cast(void**)&mono_metadata_typedef_from_field,
512 				"mono_metadata_typedef_from_field");
513 		bindFunc(cast(void**)&mono_metadata_typedef_from_method,
514 				"mono_metadata_typedef_from_method");
515 		bindFunc(cast(void**)&mono_metadata_nested_in_typedef, "mono_metadata_nested_in_typedef");
516 		bindFunc(cast(void**)&mono_metadata_nesting_typedef, "mono_metadata_nesting_typedef");
517 		bindFunc(cast(void**)&mono_metadata_interfaces_from_typedef,
518 				"mono_metadata_interfaces_from_typedef");
519 		bindFunc(cast(void**)&mono_metadata_events_from_typedef,
520 				"mono_metadata_events_from_typedef");
521 		bindFunc(cast(void**)&mono_metadata_methods_from_event,
522 				"mono_metadata_methods_from_event");
523 		bindFunc(cast(void**)&mono_metadata_properties_from_typedef,
524 				"mono_metadata_properties_from_typedef");
525 		bindFunc(cast(void**)&mono_metadata_methods_from_property,
526 				"mono_metadata_methods_from_property");
527 		bindFunc(cast(void**)&mono_metadata_packing_from_typedef,
528 				"mono_metadata_packing_from_typedef");
529 		bindFunc(cast(void**)&mono_metadata_get_marshal_info, "mono_metadata_get_marshal_info");
530 		bindFunc(cast(void**)&mono_metadata_custom_attrs_from_index,
531 				"mono_metadata_custom_attrs_from_index");
532 		bindFunc(cast(void**)&mono_metadata_parse_marshal_spec,
533 				"mono_metadata_parse_marshal_spec");
534 		bindFunc(cast(void**)&mono_metadata_free_marshal_spec, "mono_metadata_free_marshal_spec");
535 		bindFunc(cast(void**)&mono_metadata_implmap_from_method,
536 				"mono_metadata_implmap_from_method");
537 		bindFunc(cast(void**)&mono_metadata_field_info, "mono_metadata_field_info");
538 		bindFunc(cast(void**)&mono_metadata_get_constant_index,
539 				"mono_metadata_get_constant_index");
540 		bindFunc(cast(void**)&mono_metadata_decode_value, "mono_metadata_decode_value");
541 		bindFunc(cast(void**)&mono_metadata_decode_signed_value,
542 				"mono_metadata_decode_signed_value");
543 		bindFunc(cast(void**)&mono_metadata_decode_blob_size, "mono_metadata_decode_blob_size");
544 		bindFunc(cast(void**)&mono_metadata_encode_value, "mono_metadata_encode_value");
545 		bindFunc(cast(void**)&mono_type_is_byref, "mono_type_is_byref");
546 		bindFunc(cast(void**)&mono_type_get_type, "mono_type_get_type");
547 		bindFunc(cast(void**)&mono_type_get_signature, "mono_type_get_signature");
548 		bindFunc(cast(void**)&mono_type_get_class, "mono_type_get_class");
549 		bindFunc(cast(void**)&mono_type_get_array_type, "mono_type_get_array_type");
550 		bindFunc(cast(void**)&mono_type_get_ptr_type, "mono_type_get_ptr_type");
551 		bindFunc(cast(void**)&mono_type_get_modifiers, "mono_type_get_modifiers");
552 		bindFunc(cast(void**)&mono_type_is_struct, "mono_type_is_struct");
553 		bindFunc(cast(void**)&mono_type_is_void, "mono_type_is_void");
554 		bindFunc(cast(void**)&mono_type_is_pointer, "mono_type_is_pointer");
555 		bindFunc(cast(void**)&mono_type_is_reference, "mono_type_is_reference");
556 		//?bindFunc(cast(void**)&mono_type_is_generic_parameter, "mono_type_is_generic_parameter");
557 		bindFunc(cast(void**)&mono_signature_get_return_type, "mono_signature_get_return_type");
558 		bindFunc(cast(void**)&mono_signature_get_params, "mono_signature_get_params");
559 		bindFunc(cast(void**)&mono_signature_get_param_count, "mono_signature_get_param_count");
560 		bindFunc(cast(void**)&mono_signature_get_call_conv, "mono_signature_get_call_conv");
561 		bindFunc(cast(void**)&mono_signature_vararg_start, "mono_signature_vararg_start");
562 		bindFunc(cast(void**)&mono_signature_is_instance, "mono_signature_is_instance");
563 		bindFunc(cast(void**)&mono_signature_explicit_this, "mono_signature_explicit_this");
564 		bindFunc(cast(void**)&mono_signature_param_is_out, "mono_signature_param_is_out");
565 		bindFunc(cast(void**)&mono_metadata_parse_typedef_or_ref,
566 				"mono_metadata_parse_typedef_or_ref");
567 		bindFunc(cast(void**)&mono_metadata_parse_custom_mod, "mono_metadata_parse_custom_mod");
568 		bindFunc(cast(void**)&mono_metadata_parse_array, "mono_metadata_parse_array");
569 		bindFunc(cast(void**)&mono_metadata_free_array, "mono_metadata_free_array");
570 		bindFunc(cast(void**)&mono_metadata_parse_type, "mono_metadata_parse_type");
571 		bindFunc(cast(void**)&mono_metadata_parse_param, "mono_metadata_parse_param");
572 		//?bindFunc(cast(void**)&mono_metadata_parse_ret_type, "mono_metadata_parse_ret_type");
573 		bindFunc(cast(void**)&mono_metadata_parse_field_type, "mono_metadata_parse_field_type");
574 		bindFunc(cast(void**)&mono_type_create_from_typespec, "mono_type_create_from_typespec");
575 		bindFunc(cast(void**)&mono_metadata_free_type, "mono_metadata_free_type");
576 		bindFunc(cast(void**)&mono_type_size, "mono_type_size");
577 		bindFunc(cast(void**)&mono_type_stack_size, "mono_type_stack_size");
578 		bindFunc(cast(void**)&mono_type_generic_inst_is_valuetype,
579 				"mono_type_generic_inst_is_valuetype");
580 		bindFunc(cast(void**)&mono_metadata_generic_class_is_valuetype,
581 				"mono_metadata_generic_class_is_valuetype");
582 		/*?bindFunc(cast(void**)&mono_metadata_generic_class_hash,
583 				"mono_metadata_generic_class_hash");*/
584 		/*?bindFunc(cast(void**)&mono_metadata_generic_class_equal,
585 				"mono_metadata_generic_class_equal");*/
586 		bindFunc(cast(void**)&mono_metadata_type_hash, "mono_metadata_type_hash");
587 		bindFunc(cast(void**)&mono_metadata_type_equal, "mono_metadata_type_equal");
588 		bindFunc(cast(void**)&mono_metadata_signature_alloc, "mono_metadata_signature_alloc");
589 		bindFunc(cast(void**)&mono_metadata_signature_dup, "mono_metadata_signature_dup");
590 		bindFunc(cast(void**)&mono_metadata_parse_signature, "mono_metadata_parse_signature");
591 		bindFunc(cast(void**)&mono_metadata_parse_method_signature,
592 				"mono_metadata_parse_method_signature");
593 		bindFunc(cast(void**)&mono_metadata_free_method_signature,
594 				"mono_metadata_free_method_signature");
595 		bindFunc(cast(void**)&mono_metadata_signature_equal, "mono_metadata_signature_equal");
596 		bindFunc(cast(void**)&mono_signature_hash, "mono_signature_hash");
597 		bindFunc(cast(void**)&mono_metadata_parse_mh, "mono_metadata_parse_mh");
598 		bindFunc(cast(void**)&mono_metadata_free_mh, "mono_metadata_free_mh");
599 		bindFunc(cast(void**)&mono_method_header_get_code, "mono_method_header_get_code");
600 		bindFunc(cast(void**)&mono_method_header_get_locals, "mono_method_header_get_locals");
601 		bindFunc(cast(void**)&mono_method_header_get_num_clauses,
602 				"mono_method_header_get_num_clauses");
603 		bindFunc(cast(void**)&mono_method_header_get_clauses, "mono_method_header_get_clauses");
604 		bindFunc(cast(void**)&mono_type_to_unmanaged, "mono_type_to_unmanaged");
605 		bindFunc(cast(void**)&mono_metadata_token_from_dor, "mono_metadata_token_from_dor");
606 		bindFunc(cast(void**)&mono_guid_to_string, "mono_guid_to_string");
607 		bindFunc(cast(void**)&mono_guid_to_string_minimal, "mono_guid_to_string_minimal");
608 		bindFunc(cast(void**)&mono_metadata_declsec_from_index,
609 				"mono_metadata_declsec_from_index");
610 		bindFunc(cast(void**)&mono_metadata_translate_token_index,
611 				"mono_metadata_translate_token_index");
612 		bindFunc(cast(void**)&mono_metadata_decode_table_row, "mono_metadata_decode_table_row");
613 		bindFunc(cast(void**)&mono_metadata_decode_table_row_col,
614 				"mono_metadata_decode_table_row_col");
615 		// metadata/mono-config.h
616 		bindFunc(cast(void**)&mono_config_get_os, "mono_config_get_os");
617 		bindFunc(cast(void**)&mono_config_get_cpu, "mono_config_get_cpu");
618 		bindFunc(cast(void**)&mono_config_get_wordsize, "mono_config_get_wordsize");
619 		bindFunc(cast(void**)&mono_get_config_dir, "mono_get_config_dir");
620 		bindFunc(cast(void**)&mono_set_config_dir, "mono_set_config_dir");
621 		bindFunc(cast(void**)&mono_get_machine_config, "mono_get_machine_config");
622 		bindFunc(cast(void**)&mono_config_cleanup, "mono_config_cleanup");
623 		bindFunc(cast(void**)&mono_config_parse, "mono_config_parse");
624 		bindFunc(cast(void**)&mono_config_for_assembly, "mono_config_for_assembly");
625 		bindFunc(cast(void**)&mono_config_parse_memory, "mono_config_parse_memory");
626 		bindFunc(cast(void**)&mono_config_string_for_assembly_file,
627 				"mono_config_string_for_assembly_file");
628 		bindFunc(cast(void**)&mono_config_set_server_mode, "mono_config_set_server_mode");
629 		bindFunc(cast(void**)&mono_config_is_server_mode, "mono_config_is_server_mode");
630 		// metadata/mono-debug.h
631 		bindFunc(cast(void**)&mono_debug_init, "mono_debug_init");
632 		bindFunc(cast(void**)&mono_debug_open_image_from_memory,
633 				"mono_debug_open_image_from_memory");
634 		bindFunc(cast(void**)&mono_debug_cleanup, "mono_debug_cleanup");
635 		bindFunc(cast(void**)&mono_debug_close_image, "mono_debug_close_image");
636 		bindFunc(cast(void**)&mono_debug_domain_unload, "mono_debug_domain_unload");
637 		bindFunc(cast(void**)&mono_debug_domain_create, "mono_debug_domain_create");
638 		bindFunc(cast(void**)&mono_debug_add_method, "mono_debug_add_method");
639 		bindFunc(cast(void**)&mono_debug_remove_method, "mono_debug_remove_method");
640 		bindFunc(cast(void**)&mono_debug_lookup_method, "mono_debug_lookup_method");
641 		bindFunc(cast(void**)&mono_debug_lookup_method_addresses,
642 				"mono_debug_lookup_method_addresses");
643 		bindFunc(cast(void**)&mono_debug_find_method, "mono_debug_find_method");
644 		bindFunc(cast(void**)&mono_debug_free_method_jit_info, "mono_debug_free_method_jit_info");
645 		bindFunc(cast(void**)&mono_debug_add_delegate_trampoline,
646 				"mono_debug_add_delegate_trampoline");
647 		bindFunc(cast(void**)&mono_debug_lookup_locals, "mono_debug_lookup_locals");
648 		/*?bindFunc(cast(void**)&mono_debug_lookup_method_async_debug_info,
649 				"mono_debug_lookup_method_async_debug_info");
650 		bindFunc(cast(void**)&mono_debug_method_lookup_location,
651 				"mono_debug_method_lookup_location");
652 		bindFunc(cast(void**)&mono_debug_lookup_source_location,
653 				"mono_debug_lookup_source_location");
654 		bindFunc(cast(void**)&mono_debug_il_offset_from_address,
655 				"mono_debug_il_offset_from_address");
656 		bindFunc(cast(void**)&mono_debug_free_source_location, "mono_debug_free_source_location");*/
657 		bindFunc(cast(void**)&mono_debug_print_stack_frame, "mono_debug_print_stack_frame");
658 		bindFunc(cast(void**)&mono_debugger_method_has_breakpoint,
659 				"mono_debugger_method_has_breakpoint");
660 		bindFunc(cast(void**)&mono_debugger_insert_breakpoint, "mono_debugger_insert_breakpoint");
661 		bindFunc(cast(void**)&mono_set_is_debugger_attached, "mono_set_is_debugger_attached");
662 		bindFunc(cast(void**)&mono_is_debugger_attached, "mono_is_debugger_attached");
663 		// metadata/mono-gc.h
664 		bindFunc(cast(void**)&mono_gc_collect, "mono_gc_collect");
665 		bindFunc(cast(void**)&mono_gc_max_generation, "mono_gc_max_generation");
666 		bindFunc(cast(void**)&mono_gc_get_generation, "mono_gc_get_generation");
667 		bindFunc(cast(void**)&mono_gc_collection_count, "mono_gc_collection_count");
668 		bindFunc(cast(void**)&mono_gc_get_used_size, "mono_gc_get_used_size");
669 		bindFunc(cast(void**)&mono_gc_get_heap_size, "mono_gc_get_heap_size");
670 		bindFunc(cast(void**)&mono_gc_pending_finalizers, "mono_gc_pending_finalizers");
671 		bindFunc(cast(void**)&mono_gc_finalize_notify, "mono_gc_finalize_notify");
672 		bindFunc(cast(void**)&mono_gc_invoke_finalizers, "mono_gc_invoke_finalizers");
673 		bindFunc(cast(void**)&mono_gc_walk_heap, "mono_gc_walk_heap");
674 		// metadata/object.h
675 		bindFunc(cast(void**)&mono_string_chars, "mono_string_chars");
676 		bindFunc(cast(void**)&mono_string_length, "mono_string_length");
677 		bindFunc(cast(void**)&mono_object_new, "mono_object_new");
678 		bindFunc(cast(void**)&mono_object_new_specific, "mono_object_new_specific");
679 		bindFunc(cast(void**)&mono_object_new_fast, "mono_object_new_fast");
680 		bindFunc(cast(void**)&mono_object_new_alloc_specific, "mono_object_new_alloc_specific");
681 		bindFunc(cast(void**)&mono_object_new_from_token, "mono_object_new_from_token");
682 		bindFunc(cast(void**)&mono_array_new, "mono_array_new");
683 		bindFunc(cast(void**)&mono_array_new_full, "mono_array_new_full");
684 		bindFunc(cast(void**)&mono_array_new_specific, "mono_array_new_specific");
685 		bindFunc(cast(void**)&mono_array_clone, "mono_array_clone");
686 		bindFunc(cast(void**)&mono_array_addr_with_size, "mono_array_addr_with_size");
687 		bindFunc(cast(void**)&mono_array_length, "mono_array_length");
688 		bindFunc(cast(void**)&mono_string_empty, "mono_string_empty");
689 		bindFunc(cast(void**)&mono_string_empty_wrapper, "mono_string_empty_wrapper");
690 		bindFunc(cast(void**)&mono_string_new_utf16, "mono_string_new_utf16");
691 		bindFunc(cast(void**)&mono_string_new_size, "mono_string_new_size");
692 		bindFunc(cast(void**)&mono_ldstr, "mono_ldstr");
693 		bindFunc(cast(void**)&mono_string_is_interned, "mono_string_is_interned");
694 		bindFunc(cast(void**)&mono_string_intern, "mono_string_intern");
695 		bindFunc(cast(void**)&mono_string_new, "mono_string_new");
696 		bindFunc(cast(void**)&mono_string_new_wrapper, "mono_string_new_wrapper");
697 		bindFunc(cast(void**)&mono_string_new_len, "mono_string_new_len");
698 		bindFunc(cast(void**)&mono_string_new_utf32, "mono_string_new_utf32");
699 		bindFunc(cast(void**)&mono_string_to_utf8, "mono_string_to_utf8");
700 		bindFunc(cast(void**)&mono_string_to_utf8_checked, "mono_string_to_utf8_checked");
701 		bindFunc(cast(void**)&mono_string_to_utf16, "mono_string_to_utf16");
702 		bindFunc(cast(void**)&mono_string_to_utf32, "mono_string_to_utf32");
703 		bindFunc(cast(void**)&mono_string_from_utf16, "mono_string_from_utf16");
704 		bindFunc(cast(void**)&mono_string_from_utf32, "mono_string_from_utf32");
705 		bindFunc(cast(void**)&mono_string_equal, "mono_string_equal");
706 		bindFunc(cast(void**)&mono_string_hash, "mono_string_hash");
707 		bindFunc(cast(void**)&mono_object_hash, "mono_object_hash");
708 		bindFunc(cast(void**)&mono_object_to_string, "mono_object_to_string");
709 		bindFunc(cast(void**)&mono_value_box, "mono_value_box");
710 		bindFunc(cast(void**)&mono_value_copy, "mono_value_copy");
711 		bindFunc(cast(void**)&mono_value_copy_array, "mono_value_copy_array");
712 		bindFunc(cast(void**)&mono_object_get_domain, "mono_object_get_domain");
713 		bindFunc(cast(void**)&mono_object_get_class, "mono_object_get_class");
714 		bindFunc(cast(void**)&mono_object_unbox, "mono_object_unbox");
715 		bindFunc(cast(void**)&mono_object_clone, "mono_object_clone");
716 		bindFunc(cast(void**)&mono_object_isinst, "mono_object_isinst");
717 		bindFunc(cast(void**)&mono_object_isinst_mbyref, "mono_object_isinst_mbyref");
718 		bindFunc(cast(void**)&mono_object_castclass_mbyref, "mono_object_castclass_mbyref");
719 		bindFunc(cast(void**)&mono_monitor_try_enter, "mono_monitor_try_enter");
720 		bindFunc(cast(void**)&mono_monitor_enter, "mono_monitor_enter");
721 		bindFunc(cast(void**)&mono_monitor_enter_v4, "mono_monitor_enter_v4");
722 		bindFunc(cast(void**)&mono_object_get_size, "mono_object_get_size");
723 		bindFunc(cast(void**)&mono_monitor_exit, "mono_monitor_exit");
724 		bindFunc(cast(void**)&mono_raise_exception, "mono_raise_exception");
725 		bindFunc(cast(void**)&mono_runtime_object_init, "mono_runtime_object_init");
726 		bindFunc(cast(void**)&mono_runtime_class_init, "mono_runtime_class_init");
727 		bindFunc(cast(void**)&mono_object_get_virtual_method, "mono_object_get_virtual_method");
728 		bindFunc(cast(void**)&mono_runtime_invoke, "mono_runtime_invoke");
729 		bindFunc(cast(void**)&mono_get_delegate_invoke, "mono_get_delegate_invoke");
730 		bindFunc(cast(void**)&mono_get_delegate_begin_invoke, "mono_get_delegate_begin_invoke");
731 		bindFunc(cast(void**)&mono_get_delegate_end_invoke, "mono_get_delegate_end_invoke");
732 		bindFunc(cast(void**)&mono_runtime_delegate_invoke, "mono_runtime_delegate_invoke");
733 		bindFunc(cast(void**)&mono_runtime_invoke_array, "mono_runtime_invoke_array");
734 		bindFunc(cast(void**)&mono_method_get_unmanaged_thunk, "mono_method_get_unmanaged_thunk");
735 		bindFunc(cast(void**)&mono_runtime_get_main_args, "mono_runtime_get_main_args");
736 		bindFunc(cast(void**)&mono_runtime_exec_managed_code, "mono_runtime_exec_managed_code");
737 		bindFunc(cast(void**)&mono_runtime_run_main, "mono_runtime_run_main");
738 		bindFunc(cast(void**)&mono_runtime_exec_main, "mono_runtime_exec_main");
739 		bindFunc(cast(void**)&mono_runtime_set_main_args, "mono_runtime_set_main_args");
740 		bindFunc(cast(void**)&mono_load_remote_field, "mono_load_remote_field");
741 		bindFunc(cast(void**)&mono_load_remote_field_new, "mono_load_remote_field_new");
742 		bindFunc(cast(void**)&mono_store_remote_field, "mono_store_remote_field");
743 		bindFunc(cast(void**)&mono_store_remote_field_new, "mono_store_remote_field_new");
744 		bindFunc(cast(void**)&mono_unhandled_exception, "mono_unhandled_exception");
745 		bindFunc(cast(void**)&mono_print_unhandled_exception, "mono_print_unhandled_exception");
746 		bindFunc(cast(void**)&mono_compile_method, "mono_compile_method");
747 		bindFunc(cast(void**)&mono_field_set_value, "mono_field_set_value");
748 		bindFunc(cast(void**)&mono_field_static_set_value, "mono_field_static_set_value");
749 		bindFunc(cast(void**)&mono_field_get_value, "mono_field_get_value");
750 		bindFunc(cast(void**)&mono_field_static_get_value, "mono_field_static_get_value");
751 		bindFunc(cast(void**)&mono_field_get_value_object, "mono_field_get_value_object");
752 		bindFunc(cast(void**)&mono_property_set_value, "mono_property_set_value");
753 		bindFunc(cast(void**)&mono_property_get_value, "mono_property_get_value");
754 		bindFunc(cast(void**)&mono_gchandle_new, "mono_gchandle_new");
755 		bindFunc(cast(void**)&mono_gchandle_new_weakref, "mono_gchandle_new_weakref");
756 		bindFunc(cast(void**)&mono_gchandle_get_target, "mono_gchandle_get_target");
757 		bindFunc(cast(void**)&mono_gchandle_free, "mono_gchandle_free");
758 		bindFunc(cast(void**)&mono_gc_reference_queue_new, "mono_gc_reference_queue_new");
759 		bindFunc(cast(void**)&mono_gc_reference_queue_free, "mono_gc_reference_queue_free");
760 		bindFunc(cast(void**)&mono_gc_reference_queue_add, "mono_gc_reference_queue_add");
761 		bindFunc(cast(void**)&mono_gc_wbarrier_set_field, "mono_gc_wbarrier_set_field");
762 		bindFunc(cast(void**)&mono_gc_wbarrier_set_arrayref, "mono_gc_wbarrier_set_arrayref");
763 		bindFunc(cast(void**)&mono_gc_wbarrier_arrayref_copy, "mono_gc_wbarrier_arrayref_copy");
764 		bindFunc(cast(void**)&mono_gc_wbarrier_generic_store, "mono_gc_wbarrier_generic_store");
765 		bindFunc(cast(void**)&mono_gc_wbarrier_generic_store_atomic,
766 				"mono_gc_wbarrier_generic_store_atomic");
767 		bindFunc(cast(void**)&mono_gc_wbarrier_generic_nostore,
768 				"mono_gc_wbarrier_generic_nostore");
769 		bindFunc(cast(void**)&mono_gc_wbarrier_value_copy, "mono_gc_wbarrier_value_copy");
770 		bindFunc(cast(void**)&mono_gc_wbarrier_object_copy, "mono_gc_wbarrier_object_copy");
771 		// metadata/opcodes.h
772 		bindFunc(cast(void**)&mono_opcode_name, "mono_opcode_name");
773 		bindFunc(cast(void**)&mono_opcode_value, "mono_opcode_value");
774 		// metadata/profiler.h
775 		bindFunc(cast(void**)&mono_profiler_install, "mono_profiler_install");
776 		bindFunc(cast(void**)&mono_profiler_set_events, "mono_profiler_set_events");
777 		bindFunc(cast(void**)&mono_profiler_get_events, "mono_profiler_get_events");
778 		bindFunc(cast(void**)&mono_profiler_install_appdomain, "mono_profiler_install_appdomain");
779 		bindFunc(cast(void**)&mono_profiler_install_appdomain_name,
780 				"mono_profiler_install_appdomain_name");
781 		bindFunc(cast(void**)&mono_profiler_install_context, "mono_profiler_install_context");
782 		bindFunc(cast(void**)&mono_profiler_install_assembly, "mono_profiler_install_assembly");
783 		bindFunc(cast(void**)&mono_profiler_install_module, "mono_profiler_install_module");
784 		bindFunc(cast(void**)&mono_profiler_install_class, "mono_profiler_install_class");
785 		bindFunc(cast(void**)&mono_profiler_install_jit_compile,
786 				"mono_profiler_install_jit_compile");
787 		bindFunc(cast(void**)&mono_profiler_install_jit_end, "mono_profiler_install_jit_end");
788 		bindFunc(cast(void**)&mono_profiler_install_method_free,
789 				"mono_profiler_install_method_free");
790 		bindFunc(cast(void**)&mono_profiler_install_method_invoke,
791 				"mono_profiler_install_method_invoke");
792 		bindFunc(cast(void**)&mono_profiler_install_enter_leave,
793 				"mono_profiler_install_enter_leave");
794 		bindFunc(cast(void**)&mono_profiler_install_thread, "mono_profiler_install_thread");
795 		bindFunc(cast(void**)&mono_profiler_install_thread_name,
796 				"mono_profiler_install_thread_name");
797 		bindFunc(cast(void**)&mono_profiler_install_transition,
798 				"mono_profiler_install_transition");
799 		bindFunc(cast(void**)&mono_profiler_install_allocation,
800 				"mono_profiler_install_allocation");
801 		bindFunc(cast(void**)&mono_profiler_install_monitor, "mono_profiler_install_monitor");
802 		bindFunc(cast(void**)&mono_profiler_install_statistical,
803 				"mono_profiler_install_statistical");
804 		bindFunc(cast(void**)&mono_profiler_install_statistical_call_chain,
805 				"mono_profiler_install_statistical_call_chain");
806 		bindFunc(cast(void**)&mono_profiler_install_exception, "mono_profiler_install_exception");
807 		bindFunc(cast(void**)&mono_profiler_install_coverage_filter,
808 				"mono_profiler_install_coverage_filter");
809 		bindFunc(cast(void**)&mono_profiler_coverage_get, "mono_profiler_coverage_get");
810 		bindFunc(cast(void**)&mono_profiler_install_gc, "mono_profiler_install_gc");
811 		bindFunc(cast(void**)&mono_profiler_install_gc_moves, "mono_profiler_install_gc_moves");
812 		bindFunc(cast(void**)&mono_profiler_install_gc_roots, "mono_profiler_install_gc_roots");
813 		bindFunc(cast(void**)&mono_profiler_install_gc_finalize,
814 				"mono_profiler_install_gc_finalize");
815 		bindFunc(cast(void**)&mono_profiler_install_runtime_initialized,
816 				"mono_profiler_install_runtime_initialized");
817 		bindFunc(cast(void**)&mono_profiler_install_code_chunk_new,
818 				"mono_profiler_install_code_chunk_new");
819 		bindFunc(cast(void**)&mono_profiler_install_code_chunk_destroy,
820 				"mono_profiler_install_code_chunk_destroy");
821 		bindFunc(cast(void**)&mono_profiler_install_code_buffer_new,
822 				"mono_profiler_install_code_buffer_new");
823 		bindFunc(cast(void**)&mono_profiler_install_iomap, "mono_profiler_install_iomap");
824 		bindFunc(cast(void**)&mono_profiler_load, "mono_profiler_load");
825 		bindFunc(cast(void**)&mono_profiler_set_statistical_mode,
826 				"mono_profiler_set_statistical_mode");
827 		// metadata/reflection.h
828 		bindFunc(cast(void**)&mono_reflection_parse_type, "mono_reflection_parse_type");
829 		bindFunc(cast(void**)&mono_reflection_get_type, "mono_reflection_get_type");
830 		bindFunc(cast(void**)&mono_reflection_free_type_info, "mono_reflection_free_type_info");
831 		bindFunc(cast(void**)&mono_reflection_type_from_name, "mono_reflection_type_from_name");
832 		bindFunc(cast(void**)&mono_reflection_get_token, "mono_reflection_get_token");
833 		bindFunc(cast(void**)&mono_assembly_get_object, "mono_assembly_get_object");
834 		bindFunc(cast(void**)&mono_module_get_object, "mono_module_get_object");
835 		bindFunc(cast(void**)&mono_module_file_get_object, "mono_module_file_get_object");
836 		bindFunc(cast(void**)&mono_type_get_object, "mono_type_get_object");
837 		bindFunc(cast(void**)&mono_method_get_object, "mono_method_get_object");
838 		bindFunc(cast(void**)&mono_field_get_object, "mono_field_get_object");
839 		bindFunc(cast(void**)&mono_property_get_object, "mono_property_get_object");
840 		bindFunc(cast(void**)&mono_event_get_object, "mono_event_get_object");
841 		bindFunc(cast(void**)&mono_param_get_objects, "mono_param_get_objects");
842 		bindFunc(cast(void**)&mono_method_body_get_object, "mono_method_body_get_object");
843 		bindFunc(cast(void**)&mono_get_dbnull_object, "mono_get_dbnull_object");
844 		bindFunc(cast(void**)&mono_reflection_get_custom_attrs_by_type,
845 				"mono_reflection_get_custom_attrs_by_type");
846 		bindFunc(cast(void**)&mono_reflection_get_custom_attrs,
847 				"mono_reflection_get_custom_attrs");
848 		bindFunc(cast(void**)&mono_reflection_get_custom_attrs_data,
849 				"mono_reflection_get_custom_attrs_data");
850 		bindFunc(cast(void**)&mono_reflection_get_custom_attrs_blob,
851 				"mono_reflection_get_custom_attrs_blob");
852 		bindFunc(cast(void**)&mono_reflection_get_custom_attrs_info,
853 				"mono_reflection_get_custom_attrs_info");
854 		bindFunc(cast(void**)&mono_custom_attrs_construct, "mono_custom_attrs_construct");
855 		bindFunc(cast(void**)&mono_custom_attrs_from_index, "mono_custom_attrs_from_index");
856 		bindFunc(cast(void**)&mono_custom_attrs_from_method, "mono_custom_attrs_from_method");
857 		bindFunc(cast(void**)&mono_custom_attrs_from_class, "mono_custom_attrs_from_class");
858 		bindFunc(cast(void**)&mono_custom_attrs_from_assembly, "mono_custom_attrs_from_assembly");
859 		bindFunc(cast(void**)&mono_custom_attrs_from_property, "mono_custom_attrs_from_property");
860 		bindFunc(cast(void**)&mono_custom_attrs_from_event, "mono_custom_attrs_from_event");
861 		bindFunc(cast(void**)&mono_custom_attrs_from_field, "mono_custom_attrs_from_field");
862 		bindFunc(cast(void**)&mono_custom_attrs_from_param, "mono_custom_attrs_from_param");
863 		bindFunc(cast(void**)&mono_custom_attrs_has_attr, "mono_custom_attrs_has_attr");
864 		bindFunc(cast(void**)&mono_custom_attrs_get_attr, "mono_custom_attrs_get_attr");
865 		bindFunc(cast(void**)&mono_custom_attrs_free, "mono_custom_attrs_free");
866 		bindFunc(cast(void**)&mono_declsec_flags_from_method, "mono_declsec_flags_from_method");
867 		bindFunc(cast(void**)&mono_declsec_flags_from_class, "mono_declsec_flags_from_class");
868 		bindFunc(cast(void**)&mono_declsec_flags_from_assembly,
869 				"mono_declsec_flags_from_assembly");
870 		bindFunc(cast(void**)&mono_declsec_get_demands, "mono_declsec_get_demands");
871 		bindFunc(cast(void**)&mono_declsec_get_linkdemands, "mono_declsec_get_linkdemands");
872 		bindFunc(cast(void**)&mono_declsec_get_inheritdemands_class,
873 				"mono_declsec_get_inheritdemands_class");
874 		bindFunc(cast(void**)&mono_declsec_get_inheritdemands_method,
875 				"mono_declsec_get_inheritdemands_method");
876 		bindFunc(cast(void**)&mono_declsec_get_method_action, "mono_declsec_get_method_action");
877 		bindFunc(cast(void**)&mono_declsec_get_class_action, "mono_declsec_get_class_action");
878 		bindFunc(cast(void**)&mono_declsec_get_assembly_action,
879 				"mono_declsec_get_assembly_action");
880 		bindFunc(cast(void**)&mono_reflection_type_get_type, "mono_reflection_type_get_type");
881 		bindFunc(cast(void**)&mono_reflection_assembly_get_assembly,
882 				"mono_reflection_assembly_get_assembly");
883 		// metadata/row-indexes.h
884 		// metadata/sgen-bridge.h
885 		bindFunc(cast(void**)&mono_gc_register_bridge_callbacks,
886 				"mono_gc_register_bridge_callbacks");
887 		bindFunc(cast(void**)&mono_gc_wait_for_bridge_processing,
888 				"mono_gc_wait_for_bridge_processing");
889 		// metadata/threads.h
890 		bindFunc(cast(void**)&mono_thread_init, "mono_thread_init");
891 		bindFunc(cast(void**)&mono_thread_cleanup, "mono_thread_cleanup");
892 		bindFunc(cast(void**)&mono_thread_manage, "mono_thread_manage");
893 		bindFunc(cast(void**)&mono_thread_current, "mono_thread_current");
894 		bindFunc(cast(void**)&mono_thread_set_main, "mono_thread_set_main");
895 		bindFunc(cast(void**)&mono_thread_get_main, "mono_thread_get_main");
896 		bindFunc(cast(void**)&mono_thread_stop, "mono_thread_stop");
897 		bindFunc(cast(void**)&mono_thread_new_init, "mono_thread_new_init");
898 		bindFunc(cast(void**)&mono_thread_create, "mono_thread_create");
899 		bindFunc(cast(void**)&mono_thread_attach, "mono_thread_attach");
900 		bindFunc(cast(void**)&mono_thread_detach, "mono_thread_detach");
901 		bindFunc(cast(void**)&mono_thread_exit, "mono_thread_exit");
902 		bindFunc(cast(void**)&mono_thread_get_name_utf8, "mono_thread_get_name_utf8");
903 		bindFunc(cast(void**)&mono_thread_get_managed_id, "mono_thread_get_managed_id");
904 		bindFunc(cast(void**)&mono_thread_set_manage_callback, "mono_thread_set_manage_callback");
905 		bindFunc(cast(void**)&mono_threads_set_default_stacksize,
906 				"mono_threads_set_default_stacksize");
907 		bindFunc(cast(void**)&mono_threads_get_default_stacksize,
908 				"mono_threads_get_default_stacksize");
909 		bindFunc(cast(void**)&mono_threads_request_thread_dump,
910 				"mono_threads_request_thread_dump");
911 		bindFunc(cast(void**)&mono_thread_is_foreign, "mono_thread_is_foreign");
912 		bindFunc(cast(void**)&mono_thread_detach_if_exiting, "mono_thread_detach_if_exiting");
913 		// metadata/tokentype.h
914 		// metadata/verify.h
915 		bindFunc(cast(void**)&mono_method_verify, "mono_method_verify");
916 		bindFunc(cast(void**)&mono_free_verify_list, "mono_free_verify_list");
917 		bindFunc(cast(void**)&mono_verify_corlib, "mono_verify_corlib");
918 		// jit/jit.h
919 		bindFunc(cast(void**)&mono_jit_init, "mono_jit_init");
920 		bindFunc(cast(void**)&mono_jit_init_version, "mono_jit_init_version");
921 		bindFunc(cast(void**)&mono_jit_exec, "mono_jit_exec");
922 		bindFunc(cast(void**)&mono_jit_cleanup, "mono_jit_cleanup");
923 		bindFunc(cast(void**)&mono_jit_set_trace_options, "mono_jit_set_trace_options");
924 		bindFunc(cast(void**)&mono_set_signal_chaining, "mono_set_signal_chaining");
925 		bindFunc(cast(void**)&mono_set_crash_chaining, "mono_set_crash_chaining");
926 		bindFunc(cast(void**)&mono_jit_set_aot_only, "mono_jit_set_aot_only");
927 		bindFunc(cast(void**)&mono_jit_set_aot_mode, "mono_jit_set_aot_mode");
928 		bindFunc(cast(void**)&mono_set_break_policy, "mono_set_break_policy");
929 		bindFunc(cast(void**)&mono_jit_parse_options, "mono_jit_parse_options");
930 		bindFunc(cast(void**)&mono_get_runtime_build_info, "mono_get_runtime_build_info");
931 		bindFunc(cast(void**)&mono_get_jit_info_from_method, "mono_get_jit_info_from_method");
932 		bindFunc(cast(void**)&mono_aot_get_method, "mono_aot_get_method");
933 	}
934 }
935 
936 __gshared DerelictMonoLoader DerelictMono;
937 
938 shared static this()
939 {
940 	DerelictMono = new DerelictMonoLoader();
941 }
942 
943 // metadata/metadata.h
944 bool MONO_CLASS_IS_INTERFACE()(in MonoClass* c)
945 {
946 	return ((mono_class_get_flags(c) & TYPE_ATTRIBUTE_INTERFACE)
947 			|| (c.byval_arg.type == MONO_TYPE_VAR) || (c.byval_arg.type == MONO_TYPE_MVAR));
948 }
949 
950 bool MONO_CLASS_IS_IMPORT()(in MonoClass* c)
951 {
952 	return ((mono_class_get_flags(c) & TYPE_ATTRIBUTE_IMPORT));
953 }
954 
955 int mono_metadata_table_size()(int bitfield, int table)
956 {
957 	return ((((bitfield) >> ((table) * 2)) & 0x3) + 1);
958 }
959 
960 int mono_metadata_table_count()(int bitfield)
961 {
962 	return ((bitfield) >> 24);
963 }
964 
965 int MONO_OFFSET_IN_CLAUSE(T)(in T* clause, int offset)
966 {
967 	return ((clause).try_offset <= (offset) && (offset) < ((clause).try_offset + (clause).try_len));
968 }
969 
970 int MONO_OFFSET_IN_HANDLER(T)(in T* clause, int offset)
971 {
972 	return ((clause).handler_offset <= (offset) && (offset) < ((clause)
973 			.handler_offset + (clause).handler_len));
974 }
975 
976 int MONO_OFFSET_IN_FILTER(T)(in T* clause, int offset)
977 {
978 	return ((clause).flags == MONO_EXCEPTION_CLAUSE_FILTER && (clause)
979 			.data.filter_offset <= (offset) && (offset) < ((clause).handler_offset));
980 }
981 
982 int mono_metadata_make_token()(int table, int idx)
983 {
984 	return (((table) << 24) | (idx));
985 }
986 
987 int mono_metadata_token_table()(int token)
988 {
989 	return ((token) >> 24);
990 }
991 
992 int mono_metadata_token_index()(int token)
993 {
994 	return ((token & 0xffffff));
995 }
996 
997 int mono_metadata_token_code()(int token)
998 {
999 	return ((token & 0xff000000));
1000 }
1001 
1002 void MONO_OBJECT_SETREF(T, alias field, U)(T obj, U value)
1003 {
1004 	mono_gc_wbarrier_set_field(cast(MonoObject*) obj, &field, cast(MonoObject*) value);
1005 }
1006 
1007 void MONO_STRUCT_SETREF(alias field, U)(T obj, U value)
1008 {
1009 	mono_gc_wbarrier_generic_store(&field, cast(MonoObject*) value);
1010 }
1011 
1012 T* mono_array_addr(T)(MonoArray* array, size_t index)
1013 {
1014 	return cast(T*) cast(void*) mono_array_addr_with_size(array, T.sizeof, index);
1015 }
1016 
1017 ref T mono_array_get(T)(MonoArray* array, size_t index)
1018 {
1019 	return *mono_array_addr!T(array, index);
1020 }
1021 
1022 void mono_array_setref(T)(MonoArray* array, size_t index, T value)
1023 {
1024 	void** p = mono_array_addr!(void*)(array, index);
1025 	mono_gc_wbarrier_set_arrayref(array, p, cast(MonoObject*) value);
1026 }
1027 
1028 void mono_array_memcpy_refs(MonoArray* dest, size_t destidx, MonoArray* src,
1029 		size_t srcidx, int count)
1030 {
1031 	void** p = mono_array_addr!(void*)(dest, destidx);
1032 	void** s = mono_array_addr!(void*)(src, srcidx);
1033 	mono_gc_wbarrier_arrayref_copy(cast(void*) p, cast(void*) s, count);
1034 }
1035 
1036 alias MONO_TYPE_ISSTRUCT = mono_type_is_struct;
1037 alias MONO_TYPE_IS_VOID = mono_type_is_void;
1038 alias MONO_TYPE_IS_POINTER = mono_type_is_pointer;
1039 alias MONO_TYPE_IS_REFERENCE = mono_type_is_reference;