#include <mono/metadata/metadata.h>
#include <mono/metadata/image.h>
-typedef struct {
- guint16 flags; /* method flags */
- guint16 iflags; /* method implementation flags */
- MonoClass *klass;
- MonoMethodSignature *signature;
- gpointer addr;
- gpointer info; /* runtime info */
- gpointer remoting_tramp;
- gint slot;
- /* name is useful mostly for debugging */
- const char *name;
- /* this is used by the inlining algorithm */
- unsigned int inline_info:1;
- unsigned int uses_this:1;
- unsigned int is_wrapper:1;
- unsigned int string_ctor:1;
- unsigned int save_lmf:1;
- gint16 inline_count;
-} MonoMethod;
-
-typedef struct {
- MonoMethod method;
- MonoMethodHeader *header;
-} MonoMethodNormal;
-
-typedef struct {
- MonoMethodNormal method;
- GList *data;
-} MonoMethodWrapper;
-
-typedef struct {
- MonoMethod method;
- void (*code) (void);
- /* add marshal info */
- guint16 piflags; /* pinvoke flags */
- guint16 implmap_idx; /* index into IMPLMAP */
-} MonoMethodPInvoke;
-
-typedef struct {
- MonoImage *corlib;
- MonoClass *object_class;
- MonoClass *byte_class;
- MonoClass *void_class;
- MonoClass *boolean_class;
- MonoClass *sbyte_class;
- MonoClass *int16_class;
- MonoClass *uint16_class;
- MonoClass *int32_class;
- MonoClass *uint32_class;
- MonoClass *int_class;
- MonoClass *uint_class;
- MonoClass *int64_class;
- MonoClass *uint64_class;
- MonoClass *single_class;
- MonoClass *double_class;
- MonoClass *char_class;
- MonoClass *string_class;
- MonoClass *enum_class;
- MonoClass *array_class;
- MonoClass *multicastdelegate_class;
- MonoClass *asyncresult_class;
- MonoClass *waithandle_class;
- MonoClass *typehandle_class;
- MonoClass *fieldhandle_class;
- MonoClass *methodhandle_class;
- MonoClass *monotype_class;
- MonoClass *exception_class;
- MonoClass *thread_class;
- MonoClass *transparent_proxy_class;
- MonoClass *real_proxy_class;
- MonoClass *mono_method_message_class;
- MonoClass *appdomain_class;
- MonoClass *field_info_class;
- MonoClass *stringbuilder_class;
- MonoClass *math_class;
- MonoClass *stack_frame_class;
- MonoClass *stack_trace_class;
- MonoClass *marshal_class;
-} MonoDefaults;
-
-extern MonoDefaults mono_defaults;
-
-void
-mono_init_icall (void);
+G_BEGIN_DECLS
+
+typedef gboolean (*MonoStackWalk) (MonoMethod *method, gint32 native_offset, gint32 il_offset, gboolean managed, gpointer data);
+
+MonoMethod *
+mono_get_method (MonoImage *image, guint32 token, MonoClass *klass);
MonoMethod *
-mono_get_method (MonoImage *image, guint32 token, MonoClass *klass);
+mono_get_method_full (MonoImage *image, guint32 token, MonoClass *klass,
+ MonoGenericContext *context);
+
+MonoMethod *
+mono_get_method_constrained (MonoImage *image, guint32 token, MonoClass *constrained_class,
+ MonoGenericContext *context, MonoMethod **cil_method);
void
mono_free_method (MonoMethod *method);
+MonoMethodSignature*
+mono_method_get_signature_full (MonoMethod *method, MonoImage *image, guint32 token,
+ MonoGenericContext *context);
+
+MonoMethodSignature*
+mono_method_get_signature (MonoMethod *method, MonoImage *image, guint32 token);
+
+MonoMethodSignature*
+mono_method_signature (MonoMethod *method);
+
+MonoMethodHeader*
+mono_method_get_header (MonoMethod *method);
+
+const char*
+mono_method_get_name (MonoMethod *method);
+
+MonoClass*
+mono_method_get_class (MonoMethod *method);
+
+guint32
+mono_method_get_token (MonoMethod *method);
+
+guint32
+mono_method_get_flags (MonoMethod *method, guint32 *iflags);
+
+guint32
+mono_method_get_index (MonoMethod *method);
+
MonoImage *
mono_load_image (const char *fname, MonoImageOpenStatus *status);
gpointer
mono_lookup_internal_call (MonoMethod *method);
-int
-mono_dllmap_lookup (const char *dll, const char* func, const char **rdll, const char **rfunc);
-
void
-mono_dllmap_insert (const char *dll, const char *func, const char *tdll, const char *tfunc);
+mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, const char *tdll, const char *tfunc);
gpointer
-mono_lookup_pinvoke_call (MonoMethod *method);
+mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char **exc_arg);
void
mono_method_get_param_names (MonoMethod *method, const char **names);
-gpointer
-mono_method_get_wrapper_data (MonoMethod *method, guint32 id);
+guint32
+mono_method_get_param_token (MonoMethod *method, int idx);
+
+void
+mono_method_get_marshal_info (MonoMethod *method, MonoMarshalSpec **mspecs);
+
+gboolean
+mono_method_has_marshal_info (MonoMethod *method);
+
+MonoMethod*
+mono_method_get_last_managed (void);
+
+void
+mono_stack_walk (MonoStackWalk func, gpointer user_data);
+
+/* Use this if the IL offset is not needed: it's faster */
+void
+mono_stack_walk_no_il (MonoStackWalk func, gpointer user_data);
+
+G_END_DECLS
#endif
+