Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
[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         gint slot;
15         /* name is useful mostly for debugging */
16         const char *name; 
17 } MonoMethod;
18
19 typedef struct {
20         MonoMethod method;
21         MonoMethodHeader *header;
22 } MonoMethodNormal;
23
24 typedef struct {
25         MonoMethod method;
26         guint16 piflags;  /* pinvoke flags */
27         void  (*code) ();
28 } MonoMethodPInvoke;
29
30 typedef struct {
31         MonoImage *corlib;
32         MonoClass *object_class;
33         MonoClass *byte_class;
34         MonoClass *void_class;
35         MonoClass *boolean_class;
36         MonoClass *sbyte_class;
37         MonoClass *int16_class;
38         MonoClass *uint16_class;
39         MonoClass *int32_class;
40         MonoClass *uint32_class;
41         MonoClass *int_class;
42         MonoClass *uint_class;
43         MonoClass *int64_class;
44         MonoClass *uint64_class;
45         MonoClass *single_class;
46         MonoClass *double_class;
47         MonoClass *char_class;
48         MonoClass *string_class;
49         MonoClass *enum_class;
50         MonoClass *array_class;
51         MonoClass *multicastdelegate_class;
52         MonoClass *asyncresult_class;
53         MonoClass *waithandle_class;
54         MonoClass *typehandle_class;
55         MonoClass *fieldhandle_class;
56         MonoClass *methodhandle_class;
57         MonoClass *monotype_class;
58         MonoClass *exception_class;
59         MonoClass *thread_class;
60 } MonoDefaults;
61
62 extern MonoDefaults mono_defaults;
63
64 void 
65 mono_init_icall            (void);
66
67 MonoMethod *
68 mono_get_method            (MonoImage *image, guint32 token, MonoClass *klass);
69
70 void               
71 mono_free_method           (MonoMethod *method);
72
73 MonoImage *
74 mono_load_image            (const char *fname, enum MonoImageOpenStatus *status);
75
76 void
77 mono_add_internal_call     (const char *name, gpointer method);
78
79 gpointer
80 mono_lookup_internal_call  (const char *name);
81
82 void
83 mono_method_get_param_names (MonoMethod *method, const char **names);
84
85 #endif