2001-08-24 Dietmar Maurer <dietmar@ximian.com>
[mono.git] / mono / metadata / loader.h
1 #ifndef _MONO_METADATA_LOADER_H_
2 #define _MONO_METADATA_LOADER_H_ 1
3
4 #include <ffi.h>
5 #include <mono/metadata/metadata.h>
6 #include <mono/metadata/image.h>
7
8 typedef struct {
9         guint16 flags;  /* method flags */
10         guint16 iflags; /* method implementation flags */
11         MonoClass *klass;
12         MonoMethodSignature *signature;
13         gpointer addr;
14         /* name is useful mostly for debugging */
15         const char *name; 
16 } MonoMethod;
17
18 typedef struct {
19         MonoMethod method;
20         MonoMethodHeader *header;
21 } MonoMethodNormal;
22
23 typedef struct {
24         MonoMethod method;
25         guint16 piflags;  /* pinvoke flags */
26         ffi_cif *cif;
27 } MonoMethodPInvoke;
28
29 typedef struct {
30         MonoImage *corlib;
31         MonoClass *object_class;
32         MonoClass *byte_class;
33         MonoClass *boolean_class;
34         MonoClass *sbyte_class;
35         MonoClass *int16_class;
36         MonoClass *uint16_class;
37         MonoClass *int32_class;
38         MonoClass *uint32_class;
39         MonoClass *int64_class;
40         MonoClass *uint64_class;
41         MonoClass *single_class;
42         MonoClass *double_class;
43         MonoClass *char_class;
44         MonoClass *string_class;
45         MonoClass *enum_class;
46         MonoClass *array_class;
47 } MonoDefaults;
48
49 extern MonoDefaults mono_defaults;
50
51 void
52 mono_init                  (void);
53
54 MonoMethod *
55 mono_get_method            (MonoImage *image, guint32 token, MonoClass *klass);
56
57 void               
58 mono_free_method           (MonoMethod *method);
59
60 MonoImage *
61 mono_load_image            (const char *fname, enum MonoImageOpenStatus *status);
62
63 void
64 mono_add_internal_call     (const char *name, gpointer method);
65
66 gpointer
67 mono_lookup_internal_call  (const char *name);
68
69 #endif