f3cc072f5d923352c340a1d18aa0675e237b1774
[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 typedef struct {
8         guint16 flags;  /* method flags */
9         guint16 iflags; /* method implementation flags */
10         MonoClass *klass;
11         MonoMethodSignature *signature;
12         gpointer addr;
13         gpointer info; /* runtime info */
14         gpointer remoting_tramp; 
15         gint slot;
16         /* name is useful mostly for debugging */
17         const char *name;
18         /* this is used by the inlining algorithm */
19         unsigned int inline_info:1;
20         unsigned int uses_this:1;
21         gint16 inline_count;
22 } MonoMethod;
23
24 typedef struct {
25         MonoMethod method;
26         MonoMethodHeader *header;
27 } MonoMethodNormal;
28
29 typedef struct {
30         MonoMethod method;
31         guint16 piflags;  /* pinvoke flags */
32         void  (*code) (void);
33 } MonoMethodPInvoke;
34
35 typedef struct {
36         MonoImage *corlib;
37         MonoClass *object_class;
38         MonoClass *byte_class;
39         MonoClass *void_class;
40         MonoClass *boolean_class;
41         MonoClass *sbyte_class;
42         MonoClass *int16_class;
43         MonoClass *uint16_class;
44         MonoClass *int32_class;
45         MonoClass *uint32_class;
46         MonoClass *int_class;
47         MonoClass *uint_class;
48         MonoClass *int64_class;
49         MonoClass *uint64_class;
50         MonoClass *single_class;
51         MonoClass *double_class;
52         MonoClass *char_class;
53         MonoClass *string_class;
54         MonoClass *enum_class;
55         MonoClass *array_class;
56         MonoClass *multicastdelegate_class;
57         MonoClass *asyncresult_class;
58         MonoClass *waithandle_class;
59         MonoClass *typehandle_class;
60         MonoClass *fieldhandle_class;
61         MonoClass *methodhandle_class;
62         MonoClass *monotype_class;
63         MonoClass *exception_class;
64         MonoClass *thread_class;
65         MonoClass *transparent_proxy_class;
66         MonoClass *real_proxy_class;
67         MonoClass *mono_method_message_class;
68         MonoClass *appdomain_class;
69 } MonoDefaults;
70
71 extern MonoDefaults mono_defaults;
72
73 void 
74 mono_init_icall            (void);
75
76 MonoMethod *
77 mono_get_method            (MonoImage *image, guint32 token, MonoClass *klass);
78
79 void               
80 mono_free_method           (MonoMethod *method);
81
82 MonoImage *
83 mono_load_image            (const char *fname, MonoImageOpenStatus *status);
84
85 void
86 mono_add_internal_call     (const char *name, gconstpointer method);
87
88 gpointer
89 mono_lookup_internal_call (MonoMethod *method);
90
91 void
92 mono_method_get_param_names (MonoMethod *method, const char **names);
93
94 #endif