Merge pull request #1508 from slluis/fix-20966
[mono.git] / mono / metadata / loader.h
1 #ifndef _MONO_METADATA_LOADER_H_
2 #define _MONO_METADATA_LOADER_H_ 1
3
4 #include <mono/metadata/metadata.h>
5 #include <mono/metadata/image.h>
6
7 MONO_BEGIN_DECLS
8
9 typedef mono_bool (*MonoStackWalk)     (MonoMethod *method, int32_t native_offset, int32_t il_offset, mono_bool managed, void* data);
10
11 MONO_API MonoMethod *
12 mono_get_method             (MonoImage *image, uint32_t token, MonoClass *klass);
13
14 MONO_API MonoMethod *
15 mono_get_method_full        (MonoImage *image, uint32_t token, MonoClass *klass,
16                              MonoGenericContext *context);
17
18 MONO_API MonoMethod *
19 mono_get_method_constrained (MonoImage *image, uint32_t token, MonoClass *constrained_class,
20                              MonoGenericContext *context, MonoMethod **cil_method);
21
22 MONO_API void               
23 mono_free_method           (MonoMethod *method);
24
25 MONO_API MonoMethodSignature*
26 mono_method_get_signature_full (MonoMethod *method, MonoImage *image, uint32_t token,
27                                 MonoGenericContext *context);
28
29 MONO_API MonoMethodSignature* 
30 mono_method_get_signature  (MonoMethod *method, MonoImage *image, uint32_t token);
31
32 MONO_API MonoMethodSignature* 
33 mono_method_signature      (MonoMethod *method);
34
35 MONO_API MonoMethodHeader* 
36 mono_method_get_header     (MonoMethod *method);
37
38 MONO_API const char*
39 mono_method_get_name       (MonoMethod *method);
40
41 MONO_API MonoClass*
42 mono_method_get_class      (MonoMethod *method);
43
44 MONO_API uint32_t
45 mono_method_get_token      (MonoMethod *method);
46
47 MONO_API uint32_t
48 mono_method_get_flags      (MonoMethod *method, uint32_t *iflags);
49
50 MONO_API uint32_t
51 mono_method_get_index      (MonoMethod *method);
52
53 MONO_API MonoImage *
54 mono_load_image            (const char *fname, MonoImageOpenStatus *status);
55
56 MONO_API void
57 mono_add_internal_call     (const char *name, const void* method);
58
59 MONO_API void*
60 mono_lookup_internal_call (MonoMethod *method);
61
62 MONO_API const char*
63 mono_lookup_icall_symbol (MonoMethod *m);
64
65 MONO_API void
66 mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, const char *tdll, const char *tfunc);
67
68 MONO_API void*
69 mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char **exc_arg);
70
71 MONO_API void
72 mono_method_get_param_names (MonoMethod *method, const char **names);
73
74 MONO_API uint32_t
75 mono_method_get_param_token (MonoMethod *method, int idx);
76
77 MONO_API void
78 mono_method_get_marshal_info (MonoMethod *method, MonoMarshalSpec **mspecs);
79
80 MONO_API mono_bool
81 mono_method_has_marshal_info (MonoMethod *method);
82
83 MONO_API MonoMethod*
84 mono_method_get_last_managed  (void);
85
86 MONO_API void
87 mono_stack_walk         (MonoStackWalk func, void* user_data);
88
89 /* Use this if the IL offset is not needed: it's faster */
90 MONO_API void
91 mono_stack_walk_no_il   (MonoStackWalk func, void* user_data);
92
93 typedef mono_bool (*MonoStackWalkAsyncSafe)     (MonoMethod *method, MonoDomain *domain, void *base_address, int offset, void* data);
94 MONO_API void
95 mono_stack_walk_async_safe   (MonoStackWalkAsyncSafe func, void *initial_sig_context, void* user_data);
96
97 MONO_END_DECLS
98
99 #endif
100