2004-05-25 Atsushi Enomoto <atsushi@ximian.com>
[mono.git] / mono / metadata / reflection.h
index cf7ae49e532805d331eab245b8623e8ca511c865..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 {
@@ -279,6 +282,7 @@ typedef struct {
                guint32 offset;
                guint32 attrs;
        } sections [MONO_SECTION_MAX];
+       GHashTable *typespec;
        GHashTable *typeref;
        GHashTable *handleref;
        MonoGHashTable *tokens;
@@ -428,30 +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 {
-       MonoReflectionField rfield;
-       MonoClassField *declaring;
-       MonoReflectionGenericInst *declaring_type;
-       MonoReflectionGenericInst *reflected_type;
-} MonoReflectionInflatedField;
-
 typedef struct {
        MonoObject  obj;
        MonoString *name;
@@ -609,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);
+mono_reflection_bind_generic_parameters (MonoReflectionType *type, int type_argc, MonoType **types);
 MonoReflectionMethod*
 mono_reflection_bind_generic_method_parameters (MonoReflectionMethod *method, MonoArray *types);
-MonoReflectionMethod*
-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);