2004-05-25 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mono / metadata / reflection.h
index 9e71585d7956d1f9b0ec7063748de1fa12bda199..d31deae81772b73955842cde8eb6c3a16d97c9d0 100644 (file)
@@ -86,6 +86,7 @@ typedef struct {
 typedef struct {
        MonoObject object;
        MonoAssembly *assembly;
+       MonoObject *resolve_event_holder;
 } MonoReflectionAssembly;
 
 typedef struct {
@@ -111,7 +112,8 @@ typedef struct {
 } MonoPropertyInfo;
 
 typedef struct {
-       MonoReflectionType *parent;
+       MonoReflectionType *declaring_type;
+       MonoReflectionType *reflected_type;
        MonoString *name;
        MonoReflectionMethod *add_method;
        MonoReflectionMethod *remove_method;
@@ -165,6 +167,7 @@ typedef struct {
        MonoObject object;
        MonoReflectionType *type;
        MonoString *name;
+       MonoBoolean is_pinned;
 } MonoReflectionLocalBuilder;
 
 typedef struct {
@@ -247,15 +250,6 @@ typedef struct {
        guint32 call_conv;
 } MonoReflectionArrayMethod;
 
-/* 
- * Information which isn't in the MonoMethod structure is stored here for
- * dynamic methods.
- */
-typedef struct {
-       char **param_names;
-       MonoMarshalSpec **param_marshall;
-} MonoReflectionMethodAux;
-
 enum {
        MONO_SECTION_TEXT,
        MONO_SECTION_RSRC,
@@ -288,6 +282,7 @@ typedef struct {
                guint32 offset;
                guint32 attrs;
        } sections [MONO_SECTION_MAX];
+       GHashTable *typespec;
        GHashTable *typeref;
        GHashTable *handleref;
        MonoGHashTable *tokens;
@@ -437,35 +432,24 @@ typedef struct {
 
 typedef struct {
        MonoReflectionType type;
-       MonoObject *refobj;
-       guint32 index;
+       MonoReflectionTypeBuilder *tbuilder;
+       MonoReflectionMethodBuilder *mbuilder;
        MonoString *name;
-       guint32 flags;
-       MonoArray *constraints;
-       guint32 initialized;
+       guint32 index;
+       MonoReflectionType *base_type;
+       MonoArray *iface_constraints;
+       MonoBoolean has_ctor_constraint;
+       MonoBoolean has_reference_type;
+       MonoBoolean has_value_type;
 } MonoReflectionGenericParam;
 
 typedef struct _MonoReflectionGenericInst MonoReflectionGenericInst;
 struct _MonoReflectionGenericInst {
        MonoReflectionType type;
        MonoReflectionType *generic_type;
-       MonoArray *methods;
-       MonoArray *ctors;
-       MonoArray *fields;
+       guint32 initialized;
 };
 
-typedef struct {
-       MonoReflectionMethod rmethod;
-       MonoGenericMethod *gmethod;
-} MonoReflectionInflatedMethod;
-
-typedef struct {
-       MonoReflectionField rfield;
-       MonoClassField *declaring;
-       MonoReflectionGenericInst *declaring_type;
-       MonoReflectionGenericInst *reflected_type;
-} MonoReflectionInflatedField;
-
 typedef struct {
        MonoObject  obj;
        MonoString *name;
@@ -554,6 +538,16 @@ typedef struct {
        MonoCustomAttrEntry attrs [MONO_ZERO_LEN_ARRAY];
 } MonoCustomAttrInfo;
 
+/* 
+ * Information which isn't in the MonoMethod structure is stored here for
+ * dynamic methods.
+ */
+typedef struct {
+       char **param_names;
+       MonoMarshalSpec **param_marshall;
+       MonoCustomAttrInfo **param_cattr;
+} MonoReflectionMethodAux;
+
 enum {
        RESOURCE_LOCATION_EMBEDDED = 1,
        RESOURCE_LOCATION_ANOTHER_ASSEMBLY = 2,
@@ -613,17 +607,17 @@ MonoReflectionType* mono_reflection_create_runtime_class  (MonoReflectionTypeBui
 
 void mono_reflection_create_dynamic_method (MonoReflectionDynamicMethod *m);
 
-MonoReflectionGenericParam *mono_reflection_define_generic_parameter (MonoReflectionTypeBuilder *tb, MonoReflectionMethodBuilder *mb, MonoString *name, guint32 index);
-void mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam);
+void        mono_reflection_initialize_generic_parameter (MonoReflectionGenericParam *gparam);
 
 MonoType*
-mono_reflection_bind_generic_parameters (MonoType *type, MonoArray *types);
-MonoReflectionInflatedMethod*
+mono_reflection_bind_generic_parameters (MonoReflectionType *type, int type_argc, MonoType **types);
+MonoReflectionMethod*
 mono_reflection_bind_generic_method_parameters (MonoReflectionMethod *method, MonoArray *types);
-MonoReflectionInflatedMethod*
-mono_reflection_inflate_method_or_ctor (MonoReflectionGenericInst *declaring_type, MonoReflectionGenericInst *reflected_type, MonoObject *obj);
-MonoReflectionInflatedField*
-mono_reflection_inflate_field (MonoReflectionGenericInst *declaring_type, MonoReflectionGenericInst *reflected_type, MonoObject *obj);
+void
+mono_reflection_generic_inst_initialize (MonoReflectionGenericInst *type, MonoArray *methods, MonoArray *ctors, MonoArray *fields, MonoArray *properties, MonoArray *events);
+MonoReflectionEvent *
+mono_reflection_event_builder_get_event_info (MonoReflectionTypeBuilder *tb, MonoReflectionEventBuilder *eb);
+
 
 MonoArray  *mono_reflection_sighelper_get_signature_local (MonoReflectionSigHelper *sig);