Author: urs
Date: 2005-04-16 02:36:08 -0400 (Sat, 16 Apr 2005)
New Revision: 43088

Modified:
   trunk/objc-sharp/autogen.sh
   trunk/objc-sharp/src/CocoaMono.h
   trunk/objc-sharp/src/MonoHelper.c
Log:
Make MonoHelper.c compile

Modified: trunk/objc-sharp/autogen.sh
===================================================================
--- trunk/objc-sharp/autogen.sh 2005-04-15 23:52:21 UTC (rev 43087)
+++ trunk/objc-sharp/autogen.sh 2005-04-16 06:36:08 UTC (rev 43088)
@@ -1,4 +1,4 @@
-aclocal
+aclocal $ACLOCAL_FLAGS
 libtoolize --force --copy
 automake -a
 autoconf

Modified: trunk/objc-sharp/src/CocoaMono.h
===================================================================
--- trunk/objc-sharp/src/CocoaMono.h    2005-04-15 23:52:21 UTC (rev 43087)
+++ trunk/objc-sharp/src/CocoaMono.h    2005-04-16 06:36:08 UTC (rev 43088)
@@ -13,9 +13,11 @@
 
 #ifdef __OBJC__
 #include <objc/objc.h>
+#else
+typedef int BOOL;
 #endif
 
-#include <crt_externs.h>
+//#include <crt_externs.h>
 #define environ (* _NSGetEnviron())
 
 #ifndef AUTORELEASE

Modified: trunk/objc-sharp/src/MonoHelper.c
===================================================================
--- trunk/objc-sharp/src/MonoHelper.c   2005-04-15 23:52:21 UTC (rev 43087)
+++ trunk/objc-sharp/src/MonoHelper.c   2005-04-16 06:36:08 UTC (rev 43088)
@@ -6,7 +6,21 @@
  *
  *     $Header: 
/home/miguel/third-conversion/public/objc-sharp/src/MonoHelper.c,v 1.3 
2004/06/01 23:28:05 urs Exp $
  */
+#ifndef _WIN32
 #include <crt_externs.h>
+#else
+void exit(int);
+void g_error(const char *, int);
+typedef int gint;
+typedef float gfloat;
+typedef double gdouble;
+typedef __int64 gint64;
+typedef unsigned __int64 guint64;
+typedef void* GModule;
+typedef void* GHashTable;
+#define NO 0
+#define YES 1
+#endif
 #define environ (* _NSGetEnviron())
 
 #define JIT 1
@@ -18,12 +32,232 @@
 #endif
 #include <mono/metadata/environment.h>
 #include <mono/metadata/assembly.h>
-#include <mono/metadata/tabledefs.h>
 #include <mono/metadata/tokentype.h>
 #include <mono/metadata/class.h>
 #include <mono/metadata/object.h>
 #include <mono/metadata/loader.h>
 
+enum {
+       FILE_CONTAINS_METADATA      = 0,
+       FILE_CONTAINS_NO_METADATA   = 1
+};
+#define METHOD_ATTRIBUTE_STATIC                    0x0010
+#define FIELD_ATTRIBUTE_STATIC                0x0010
+#define TYPE_ATTRIBUTE_VISIBILITY_MASK       0x00000007
+#define TYPE_ATTRIBUTE_PUBLIC                0x00000001
+#define TYPE_ATTRIBUTE_NESTED_PUBLIC         0x00000002
+#define METHOD_ATTRIBUTE_SPECIAL_NAME              0x0800
+#define PARAM_ATTRIBUTE_IN                 0x0001
+#define PARAM_ATTRIBUTE_OUT                0x0002
+typedef struct _MonoReflectionType {
+       MonoObject object;
+       MonoType  *type;
+} _MonoReflectionType;
+typedef struct _MonoAssembly {
+       int   ref_count;
+       char *basedir;
+       MonoAssemblyName aname;
+       GModule *aot_module;
+       MonoImage *image;
+       guint8 in_gac;
+       guint8 dynamic;
+       guint8 corlib_internal;
+       gboolean ref_only;
+       /* security manager flags (one bit is for lazy initialization) */
+       guint32 ecma:2;         /* Has the ECMA key */
+       guint32 aptc:2;         /* Has the [AllowPartiallyTrustedCallers] 
attributes */
+       guint32 fulltrust:2;    /* Has FullTrust permission */
+       guint32 unmanaged:2;    /* Has SecurityPermissionFlag.UnmanagedCode 
permission */
+} _MonoAssembly;
+typedef struct {
+       const char* data;
+       guint32  size;
+} MonoStreamHeader;
+typedef struct _MonoTableInfo {
+       const char *base;
+       guint       rows     : 24;
+       guint       row_size : 8;
+
+       /*
+        * Tables contain up to 9 columns and the possible sizes of the
+        * fields in the documentation are 1, 2 and 4 bytes.  So we
+        * can encode in 2 bits the size.
+        *
+        * A 32 bit value can encode the resulting size
+        *
+        * The top eight bits encode the number of columns in the table.
+        * we only need 4, but 8 is aligned no shift required. 
+        */
+       guint32   size_bitfield;
+} _MonoTableInfo;
+typedef struct _MonoImage {
+       int   ref_count;
+       FILE *file_descr;
+       /* if file_descr is NULL the image was loaded from raw data */
+       char *raw_data;
+       guint32 raw_data_len;
+       guint8 raw_data_allocated;
+
+       /* Whenever this is a dynamically emitted module */
+       guint8 dynamic;
+
+       char *name;
+       const char *assembly_name;
+       const char *module_name;
+       const char *version;
+       char *guid;
+       void *image_info;
+       MonoMemPool         *mempool;
+
+       char                *raw_metadata;
+                           
+       guint8               idx_string_wide, idx_guid_wide, idx_blob_wide;
+                           
+       MonoStreamHeader     heap_strings;
+       MonoStreamHeader     heap_us;
+       MonoStreamHeader     heap_blob;
+       MonoStreamHeader     heap_guid;
+       MonoStreamHeader     heap_tables;
+                           
+       const char          *tables_base;
+
+       /**/
+       _MonoTableInfo        tables [MONO_TABLE_NUM];
+
+       /*
+        * references is initialized only by using the mono_assembly_open
+        * function, and not by using the lowlevel mono_image_open.
+        *
+        * It is NULL terminated.
+        */
+       MonoAssembly **references;
+
+       MonoImage **modules;
+       guint32 module_count;
+
+       MonoImage **files;
+
+       /*
+        * The Assembly this image was loaded from.
+        */
+       MonoAssembly *assembly;
+
+       /*
+        * Indexed by method tokens and typedef tokens.
+        */
+       GHashTable *method_cache;
+       GHashTable *class_cache;
+       /*
+        * Indexed by fielddef and memberref tokens
+        */
+       GHashTable *field_cache;
+
+       /* indexed by typespec tokens. */
+       GHashTable *typespec_cache;
+       /* indexed by token */
+       GHashTable *memberref_signatures;
+       GHashTable *helper_signatures;
+
+       /*
+        * Indexes namespaces to hash tables that map class name to typedef 
token.
+        */
+       GHashTable *name_cache;
+
+       /*
+        * Indexed by ((rank << 24) | (typedef & 0xffffff)), which limits us to 
a
+        * maximal rank of 255
+        */
+       GHashTable *array_cache;
+
+       /*
+        * indexed by MonoMethodSignature 
+        */
+       GHashTable *delegate_begin_invoke_cache;
+       GHashTable *delegate_end_invoke_cache;
+       GHashTable *delegate_invoke_cache;
+
+       /*
+        * indexed by MonoMethod pointers 
+        */
+       GHashTable *runtime_invoke_cache;
+       GHashTable *managed_wrapper_cache;
+       GHashTable *native_wrapper_cache;
+       GHashTable *remoting_invoke_cache;
+       GHashTable *synchronized_cache;
+       GHashTable *unbox_wrapper_cache;
+
+       void *reflection_info;
+
+       /*
+        * user_info is a public field and is not touched by the
+        * metadata engine
+        */
+       void *user_info;
+
+       /* dll map entries */
+       GHashTable *dll_map;
+} _MonoImage;
+typedef struct _MonoReflectionMethod {
+       MonoObject object;
+       MonoMethod *method;
+       MonoString *name;
+       MonoReflectionType *reftype;
+} _MonoReflectionMethod;
+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 *delegate_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 *threadabortexception_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 *method_info_class;
+       MonoClass *stringbuilder_class;
+       MonoClass *math_class;
+       MonoClass *stack_frame_class;
+       MonoClass *stack_trace_class;
+       MonoClass *marshal_class;
+       MonoClass *iserializeable_class;
+       MonoClass *serializationinfo_class;
+       MonoClass *streamingcontext_class;
+       MonoClass *typed_reference_class;
+       MonoClass *argumenthandle_class;
+       MonoClass *marshalbyrefobject_class;
+       MonoClass *monitor_class;
+       MonoClass *iremotingtypeinfo_class;
+       MonoClass *runtimesecurityframe_class;
+} MonoDefaults;
+extern MonoDefaults mono_defaults;
+
 #include "CocoaMono.h"
 #include <string.h>
 
@@ -114,29 +348,23 @@
        return retval;
 }
 
+static MonoMethodSignature* _mono_method_get_signature(MonoMethod* method_) {
+       typedef struct _MonoMethod {
+               guint16 flags;  /* method flags */
+               guint16 iflags; /* method implementation flags */
+               guint32 token;
+               MonoClass *klass;
+               MonoMethodSignature *signature;
+       } _MonoMethod;
+
+       _MonoMethod* method = (_MonoMethod*)method_;
+       return method->signature;
+}
+
 static MonoMethod *
 mono_find_method_by_name (MonoClass *klass, const char *name, int param_count)
 {
-       MonoMethod *res = NULL;
-       int i;
-
-       while (klass != NULL)
-       {
-               for (i = 0; i < klass->method.count; ++i) {
-                       if (klass->methods[i]->name[0] == name[0] &&
-                               strcmp(name, klass->methods[i]->name) == 0 &&
-                               klass->methods[i]->signature->param_count == 
param_count)
-                       {
-                               res = klass->methods[i];
-                               break;
-                       }
-               }
-               if (res != NULL)
-                       break;
-               klass = klass->parent;
-       }
-       
-       return res;
+       return mono_class_get_method_from_name_flags(klass, name, param_count, 
0);
 }
 
 static gboolean
@@ -144,20 +372,21 @@
 {
        MonoMethod *method;
        
-       method = prop->get;
+       method = mono_property_get_get_method(prop);
        if (!method)
-               method = prop->set;
+               method = mono_property_get_set_method(prop);
        
-       return method->flags & METHOD_ATTRIBUTE_STATIC;
+       return mono_method_get_flags(method, NULL) & METHOD_ATTRIBUTE_STATIC;
 }
 
 static void
 mono_field_set_value_object(MonoClass *klass,MonoClassField *field, MonoObject 
*obj, MonoObject *value)
 {
     gchar *v = (gchar *) value;
-       
-    if (!field->type->byref) {
-        switch (field->type->type) {
+       MonoType* type = mono_field_get_type(field);
+
+       if (!type->byref) {
+        switch (type->type) {
                        case MONO_TYPE_U1:
                        case MONO_TYPE_I1:
                        case MONO_TYPE_BOOLEAN:
@@ -184,16 +413,18 @@
                                break;
                        default:
                                g_error ("type 0x%x not handled in "
-                                                
"ves_icall_FieldInfo_SetValueInternal", field->type->type);
+                                                
"ves_icall_FieldInfo_SetValueInternal", type->type);
                                return;
         }
     }
        
-    if (field->type->attrs & FIELD_ATTRIBUTE_STATIC) {
+    if (type->attrs & FIELD_ATTRIBUTE_STATIC) {
         MonoVTable *vtable = mono_class_vtable (mono_domain_get(), klass);
 
+#if false
         if (!vtable->initialized)
             mono_runtime_class_init(vtable);
+#endif
         mono_field_static_set_value(vtable, field, v);
     } else {
         mono_field_set_value(obj, field, v);
@@ -201,11 +432,12 @@
 }
 
 static MonoArray*
-mono_module_get_types (MonoDomain *domain, MonoImage *image, 
+mono_module_get_types (MonoDomain *domain, MonoImage *image_, 
                        MonoBoolean exportedOnly)
 {
     MonoArray *res;
     MonoClass *klass;
+       _MonoImage *image = (_MonoImage*)image_;
     MonoTableInfo *tdef = &image->tables[MONO_TABLE_TYPEDEF];
     int i, count;
     guint32 attrs, visibility;
@@ -229,7 +461,7 @@
         visibility = attrs & TYPE_ATTRIBUTE_VISIBILITY_MASK;
         if (!exportedOnly || (visibility == TYPE_ATTRIBUTE_PUBLIC || 
visibility == TYPE_ATTRIBUTE_NESTED_PUBLIC)) {
             klass = mono_class_get(image, (i + 1) | MONO_TOKEN_TYPE_DEF);
-            mono_array_set(res, gpointer, count, mono_type_get_object(domain, 
&klass->byval_arg));
+            mono_array_set(res, gpointer, count, mono_type_get_object(domain, 
mono_class_get_type(klass)));
             count++;
         }
     }
@@ -237,11 +469,13 @@
     return res;
 }
 
+
 // Helper functions
 void NSArrayAddRange(NSArrayRef array,MonoArray* monoArray)
 {
        guint32 i, length = mono_array_length(monoArray);
-       MonoClass *klass = mono_object_class(monoArray)->element_class;
+       MonoClass *klass = mono_object_get_class((MonoObject*)monoArray);
+       klass = mono_class_get_element_class(klass);
        
        for (i = 0; i < length; ++i)
        {
@@ -311,12 +545,14 @@
 
 NSObjectRef Mono2ObjC(MonoObjectRef _arg)
 {
+       MonoObject *arg = (MonoObject*)_arg;
+       MonoClass *klass;
+
        if (_arg == NULL)
                return NULL;
        
-       MonoObject *arg = (MonoObject*)_arg;
-       MonoClass *klass = mono_object_class(arg);
-
+       klass = mono_object_get_class(arg);
+       
        if (klass == mono_defaults.void_class)
                return NULL;
        else if (klass == mono_defaults.byte_class)
@@ -352,7 +588,7 @@
        else if (klass == mono_defaults.enum_class)
                return NSNumberFromInt(*(gint*)mono_object_unbox(arg));
        else if (klass == mono_defaults.array_class
-               || (klass->rank != 0)
+               || (mono_class_get_rank(klass) != 0)
        )
        {
                NSArrayRef array = NSArrayNew();
@@ -362,8 +598,9 @@
        }
        else if (klass == mono_defaults.monotype_class)
        {
-               MonoReflectionType *typeArg = (MonoReflectionType*)arg;
-               MonoClass *klassArg = mono_class_from_mono_type(typeArg->type);
+               _MonoReflectionType *typeArg = (_MonoReflectionType*)arg;
+               MonoType *type = typeArg->type;
+               MonoClass *klassArg = mono_class_from_mono_type(type);
                return MonoKlass2ObjC(klassArg);
        }
                
@@ -383,16 +620,19 @@
 
 MonoClassRef MonoAssemblyFindClass(MonoAssemblyRef _assembly,const char*name)
 {
+       MonoAssembly *assembly = (MonoAssembly*)_assembly;
+       char *tmpName;
+       MonoType *type;
+       MonoClass *klass;
+
        if (_assembly == NULL)
                return NULL;
        
-       MonoAssembly *assembly = (MonoAssembly*)_assembly;
-
-       char *tmpName = (char*)malloc(strlen(name)+1);
+       tmpName = (char*)malloc(strlen(name)+1);
        strcpy(tmpName,name);
 
-       MonoType *type = mono_reflection_type_from_name(tmpName, 
assembly->image);
-       MonoClass *klass = type != NULL ? mono_class_from_mono_type(type) : 
NULL;
+       type = mono_reflection_type_from_name(tmpName, assembly->image);
+       klass = type != NULL ? mono_class_from_mono_type(type) : NULL;
 
        free(tmpName);
        return (MonoClassRef)klass;
@@ -401,15 +641,18 @@
 NSArrayRef MonoGetClassNames(MonoAssemblyRef _assembly)
 {
        NSArrayRef res = NSArrayNew();
+       _MonoAssembly* assembly = (_MonoAssembly*)_assembly;
+       MonoImage *image;
+       MonoTableInfo *table;
+       MonoDomain *domain;
+       int i;
        
        if (_assembly == NULL)
                return res;
 
-       MonoAssembly* assembly = (MonoAssembly*)_assembly;
-       MonoImage *image = assembly->image;
-       MonoTableInfo *table = &image->tables [MONO_TABLE_FILE];
-       MonoDomain *domain = mono_domain_get();
-       int i;
+       image = assembly->image;
+       table = &image->tables [MONO_TABLE_FILE];
+       domain = mono_domain_get();
 
        NSArrayAddRange(res, mono_module_get_types(domain, image, FALSE));
 
@@ -435,16 +678,15 @@
        if (_klass != NULL)
        {
                MonoClass *klass = (MonoClass*)_klass;
-               int i;
-               
-               for (i = 0; i < klass->field.count; ++i)
-               {
-                       MonoClassField *field = klass->fields+i;
+               gpointer iter = NULL;
+               MonoClassField *field;
+               while ((field = mono_class_get_fields (klass, &iter))) {
+                       MonoType *type = mono_field_get_type(field);
                        
-                       if (((field->type->attrs & FIELD_ATTRIBUTE_STATIC) != 
0) != (useStatic != 0))
+                       if (((type->attrs & FIELD_ATTRIBUTE_STATIC) != 0) != 
(useStatic != 0))
                                continue;
                        
-                       NSArrayAddObject(ret,ToNSString(field->name));
+                       
NSArrayAddObject(ret,ToNSString(mono_field_get_name(field)));
                }
        }
        return ret;
@@ -457,16 +699,13 @@
        if (_klass != NULL)
        {
                MonoClass *klass = (MonoClass*)_klass;
-               int i;
-               
-               for (i = 0; i < klass->property.count; ++i)
-               {
-                       MonoProperty *property = klass->properties+i;
-                       
+               gpointer iter = NULL;
+               MonoProperty *property;
+               while ((property = mono_class_get_properties (klass, &iter))) {
                        if ((property_is_static(property) != 0) != (useStatic 
!= 0))
                                continue;
                        
-                       NSArrayAddObject(ret,ToNSString(property->name));
+                       
NSArrayAddObject(ret,ToNSString(mono_property_get_name(property)));
                }
        }
        return ret;
@@ -479,22 +718,20 @@
        if (_klass != NULL)
        {
                MonoClass *klass = (MonoClass*)_klass;
-               int i;
-       
-               for (i = 0; i < klass->method.count; ++i)
-               {
-                       MonoMethod *method = klass->methods[i];
-                       printf("\nMonoHelper MonoGetMethodNames:  %s", 
method->name);
-                       if (strcmp(method->name, ".cctor") == 0)
+               gpointer iter = NULL;
+               MonoMethod *method;
+               while ((method = mono_class_get_methods (klass, &iter))) {
+                       printf("\nMonoHelper MonoGetMethodNames:  %s", 
mono_method_get_name(method));
+                       if (strcmp(mono_method_get_name(method), ".cctor") == 0)
                                continue;
                        
-                       if (method->flags & METHOD_ATTRIBUTE_SPECIAL_NAME)
+                       if (mono_method_get_flags(method, NULL) & 
METHOD_ATTRIBUTE_SPECIAL_NAME)
                                continue;
 
-                       if (((method->flags & METHOD_ATTRIBUTE_STATIC) != 0) != 
(useStatic != 0))
+                       if (((mono_method_get_flags(method, NULL) & 
METHOD_ATTRIBUTE_STATIC) != 0) != (useStatic != 0))
                                continue;
                        
-                       NSArrayAddObject(ret,ToNSString(method->name));
+                       
NSArrayAddObject(ret,ToNSString(mono_method_get_name(method)));
                }
        }
        return ret;
@@ -503,7 +740,7 @@
 MonoClassRef MonoGetParentClass(MonoClassRef _klass)
 {
        MonoClass *klass = (MonoClass*)_klass;
-       return (MonoClassRef)klass->parent;
+       return (MonoClassRef)mono_class_get_parent(klass);
 }
 
 NSArrayRef MonoClassGetInterfaces(MonoClassRef klass)
@@ -518,23 +755,21 @@
        if (_klass != NULL)
        {
                MonoClass *klass = (MonoClass*)_klass;
-               int i;
-       
-               for (i = 0; i < klass->method.count; ++i)
-               {
-                       MonoMethod *method = klass->methods[i];
-                       
-                       if (strcmp(method->name, ".cctor") == 0)
+               gpointer iter = NULL;
+               MonoMethod *method;
+               while ((method = mono_class_get_methods (klass, &iter))) {
+                       MonoReflectionMethod* refMethod;
+
+                       if (strcmp(mono_method_get_name(method), ".cctor") == 0)
                                continue;
                        
-                       if (method->flags & METHOD_ATTRIBUTE_SPECIAL_NAME)
+                       if (mono_method_get_flags(method, NULL) & 
METHOD_ATTRIBUTE_SPECIAL_NAME)
                                continue;
 
-                       if (((method->flags & METHOD_ATTRIBUTE_STATIC) != 0) != 
(useStatic != 0))
+                       if (((mono_method_get_flags(method, NULL) & 
METHOD_ATTRIBUTE_STATIC) != 0) != (useStatic != 0))
                                continue;
                        
-                       MonoReflectionMethod* refMethod = 
mono_method_get_object(
-                               mono_domain_get(), method, klass);
+                       refMethod = mono_method_get_object(mono_domain_get(), 
method, klass);
                        
NSArrayAddObject(ret,Mono2ObjC((MonoObjectRef)refMethod));
                }
        }
@@ -548,16 +783,14 @@
        if (_klass != NULL)
        {
                MonoClass *klass = (MonoClass*)_klass;
-               int i;
-               
-               for (i = 0; i < klass->property.count; ++i)
-               {
-                       MonoProperty *property = klass->properties+i;
-                       
+               gpointer iter = NULL;
+               MonoProperty *property;
+               while ((property = mono_class_get_properties (klass, &iter))) {
+                       MonoReflectionProperty* refProp;
                        if ((property_is_static(property) != 0) != (useStatic 
!= 0))
                                continue;
                        
-                       MonoReflectionProperty* refProp = 
mono_property_get_object(
+                       refProp = mono_property_get_object(
                                mono_domain_get(), klass, property);
                        NSArrayAddObject(ret,Mono2ObjC((MonoObjectRef)refProp));
                }
@@ -572,17 +805,14 @@
        if (_klass != NULL)
        {
                MonoClass *klass = (MonoClass*)_klass;
-               int i;
-               
-               for (i = 0; i < klass->field.count; ++i)
-               {
-                       MonoClassField *field = klass->fields+i;
-                       
-                       if (((field->type->attrs & FIELD_ATTRIBUTE_STATIC) != 
0) != (useStatic != 0))
+               gpointer iter = NULL;
+               MonoClassField *field;
+               while ((field = mono_class_get_fields (klass, &iter))) {
+                       MonoReflectionField* refField;
+                       if (((mono_field_get_type(field)->attrs & 
FIELD_ATTRIBUTE_STATIC) != 0) != (useStatic != 0))
                                continue;
                        
-                       MonoReflectionField* refField = mono_field_get_object(
-                               mono_domain_get(), klass, field);
+                       refField = mono_field_get_object(mono_domain_get(), 
klass, field);
                        
NSArrayAddObject(ret,Mono2ObjC((MonoObjectRef)refField));
                }
        }
@@ -592,13 +822,13 @@
 BOOL MonoClassIsValueType(MonoClassRef _klass)
 {
        MonoClass *klass = (MonoClass*)_klass;
-       return klass->valuetype != 0;
+       return mono_class_is_valuetype(klass) != 0;
 }
 
 BOOL MonoClassIsArray(MonoClassRef _klass)
 {
        MonoClass *klass = (MonoClass*)_klass;
-       return klass->rank != 0;
+       return mono_class_get_rank(klass) != 0;
 }
 
 BOOL MonoClassIsPrimitive(MonoClassRef _klass)
@@ -632,12 +862,13 @@
 
 NSObjectRef MonoGetFieldValue(MonoClassRef _klass,const char 
*name,MonoObjectRef base)
 {
+       MonoClass *klass = (MonoClass*)_klass;
+       MonoClassField *field;
+
        if (_klass == NULL)
                return NULL;
 
-       MonoClass *klass = (MonoClass*)_klass;
-       MonoClassField *field = mono_class_get_field_from_name(klass,name);
-       
+       field = mono_class_get_field_from_name(klass,name);
        if (field == NULL)
                return NULL;
        
@@ -646,17 +877,19 @@
 
 void MonoSetFieldValue(MonoClassRef _klass,const char * name,NSObjectRef 
value,MonoObjectRef base)
 {
+       MonoClass *klass = (MonoClass*)_klass;
+       MonoClassField *field;
+       MonoType *fieldType;
+       MonoClass * fieldKlass;
+
        if (_klass == NULL)
                return;
-       
-       MonoClass *klass = (MonoClass*)_klass;
-       MonoClassField *field = mono_class_get_field_from_name(klass,name);
-       
+       field = mono_class_get_field_from_name(klass,name);     
        if (field == NULL)
                return;
        
-       MonoType *fieldType = field->type;
-       MonoClass * fieldKlass = mono_class_from_mono_type(fieldType);
+       fieldType = mono_field_get_type(field);
+       fieldKlass = mono_class_from_mono_type(fieldType);
 
        mono_field_set_value_object(klass,field, (MonoObject*) base, 
(MonoObject*) ObjC2Mono(value, (MonoClassRef) fieldKlass, FALSE));
 }
@@ -664,13 +897,14 @@
 
 NSObjectRef MonoGetPropertyValue(MonoClassRef _klass, const char * name, 
MonoObjectRef base)
 {
+       MonoClass *klass = (MonoClass*)_klass;
+       MonoProperty *prop;
+       MonoObject *res, *ex;
        if (_klass == NULL)
                return NULL;
        
-       MonoClass *klass = (MonoClass*)_klass;
-       MonoProperty *prop = mono_class_get_property_from_name(klass,name);
-       MonoObject *res, *ex = NULL;
-       
+       prop = mono_class_get_property_from_name(klass,name);
+       ex = NULL;
        res = mono_property_get_value(prop, (MonoObject*) base, NULL, &ex);
        if (ex != NULL)
        {
@@ -682,58 +916,68 @@
 
 void MonoSetPropertyValue(MonoClassRef _klass, const char * name, NSObjectRef 
value, MonoObjectRef base)
 {
+       MonoClass *klass = (MonoClass*)_klass;
+       MonoObject *ex;
+       MonoProperty *prop;
+       MonoType *argType;
+       MonoClass *argKlass;
+       BOOL byVal;
+
        if (_klass == NULL)
                return;
        
-       MonoClass *klass = (MonoClass*)_klass;
-       MonoObject *ex = NULL;
-       MonoProperty *prop = mono_class_get_property_from_name(klass,name);
-       MonoType *argType = prop->set->signature->params[0];
-       MonoClass *argKlass = mono_class_from_mono_type(argType);
-       BOOL byVal = MonoTypeIsValueType(argType);
-       gpointer* args = { (gpointer)ObjC2Mono(value, (MonoClassRef) argKlass, 
byVal ) };
+       ex = NULL;
+       prop = mono_class_get_property_from_name(klass,name);
+       argType = 
_mono_method_get_signature(mono_property_get_set_method(prop))->params[0];
+       argKlass = mono_class_from_mono_type(argType);
+       byVal = MonoTypeIsValueType(argType);
+       {
+               gpointer* args = { (gpointer)ObjC2Mono(value, (MonoClassRef) 
argKlass, byVal ) };
 
-       mono_property_set_value(prop, (MonoObject*) base, args, &ex);
-       
-       if (byVal && args[0] != NULL)
-               free(args[0]);
-       
-       if (ex != NULL)
-               mono_print_unhandled_exception(ex);
+               mono_property_set_value(prop, (MonoObject*) base, args, &ex);
+               
+               if (byVal && args[0] != NULL)
+                       free(args[0]);
+               
+               if (ex != NULL)
+                       mono_print_unhandled_exception(ex);
+       }
 }
 
 NSObjectRef MonoInvoke(MonoClassRef _klass, const char * methodName, 
MonoObjectRef base, NSArrayRef args)
 {
+       MonoClass *klass = (MonoClass*)_klass;
+       unsigned count;
+       MonoMethod * method;
+
        if (_klass == NULL)
                return NULL;
        
-       MonoClass *klass = (MonoClass*)_klass;
        // this is a simplication that does not deal with paramarray, out, and 
ref parameters
-       unsigned count = NSArrayGetLength(args);
-       MonoMethod * method = mono_find_method_by_name(klass,methodName,count);
+       count = NSArrayGetLength(args);
+       method = mono_find_method_by_name(klass,methodName,count);
 
        if (method != NULL)
        {
                gpointer *monoArgs= (gpointer*)malloc(count * sizeof(gpointer));
                int i;
+               MonoObject *res = NULL;
+               MonoObject *ex = NULL;
                
                for (i = 0; i < count; ++i)
                {
                        NSObjectRef arg = NSArrayGetItem(args,i);
-                       MonoType *type = method->signature->params[i];
+                       MonoType *type = 
_mono_method_get_signature(method)->params[i];
                        MonoClass *klass = mono_class_from_mono_type(type);
                        
                        monoArgs[i] = (gpointer)ObjC2Mono(arg, 
(MonoClassRef)klass, MonoTypeIsValueType(type));
                }
                
-               MonoObject *res = NULL;
-               MonoObject *ex = NULL;
-               
                res = mono_runtime_invoke(method, (MonoObject*)base, monoArgs, 
&ex);
 
                for (i = 0; i < count; ++i)
                {
-                       MonoType *type = method->signature->params[i];
+                       MonoType *type = 
_mono_method_get_signature(method)->params[i];
                        
                        if (MonoTypeIsValueType(type) && monoArgs[i] != NULL)
                                free(monoArgs[i]);
@@ -758,39 +1002,37 @@
        if (obj == NULL)
                return ToNSString("nil");
        
-       return MonoClassGetName((MonoClassRef)mono_object_class(obj));
+       return MonoClassGetName((MonoClassRef)mono_object_get_class(obj));
 }
 
 NSObjectRef MonoClassGetName(MonoClassRef _klass)
 {
+       MonoClass *klass = (MonoClass*)_klass;
+
        if (_klass == NULL)
                return ToNSString("nil");
-       
-       MonoClass *klass = (MonoClass*)_klass;
-
-       if (klass->name_space == NULL
-               || strlen(klass->name_space) == 0)
-               return ToNSString(klass->name);
-       return FormatToNSString("%s.%s",klass->name_space,klass->name);
+       if (mono_class_get_namespace(klass) == NULL
+               || strlen(mono_class_get_namespace(klass)) == 0)
+               return ToNSString(mono_class_get_name(klass));
+       return 
FormatToNSString("%s.%s",mono_class_get_namespace(klass),mono_class_get_name(klass));
 }
 
 NSObjectRef MonoClassGetAssemblyName(MonoClassRef _klass)
 {
+       MonoClass *klass = (MonoClass*)_klass;
+
        if (_klass == NULL)
                return ToNSString("nil");
-       
-       MonoClass *klass = (MonoClass*)_klass;
-       return ToNSString(klass->image->assembly_name);
+       return ToNSString(mono_class_get_image(klass)->assembly_name);
 }
 
 MonoClassRef MonoClassGetElementClass(MonoClassRef _klass)
 {
+       MonoClass *klass = (MonoClass*)_klass;
+       
        if (_klass == NULL)
                return NULL;
-       
-       MonoClass *klass = (MonoClass*)_klass;
-       
-       return (MonoClassRef)klass->element_class;
+       return (MonoClassRef)mono_class_get_element_class(klass);
 }
 
 MonoObjectRef MonoStringNew(const char * str)
@@ -846,20 +1088,20 @@
 // MonoMethodInfo
 MonoClassRef MonoMethodGetOwnerKlass(MonoObjectRef _methodInfo)
 {
-       MonoReflectionMethod *methodInfo = (MonoReflectionMethod *)_methodInfo;
-       return (MonoClassRef)methodInfo->method->klass;
+       _MonoReflectionMethod *methodInfo = (_MonoReflectionMethod 
*)_methodInfo;
+       return (MonoClassRef)mono_method_get_class(methodInfo->method);
 }
 
 const char * MonoMethodGetName(MonoObjectRef _methodInfo)
 {
-       MonoReflectionMethod *methodInfo = (MonoReflectionMethod *)_methodInfo;
-       return methodInfo->method->name;
+       _MonoReflectionMethod *methodInfo = (_MonoReflectionMethod 
*)_methodInfo;
+       return mono_method_get_name(methodInfo->method);
 }
 
 MonoClassRef MonoMethodGetReturnKlass(MonoObjectRef _methodInfo)
 {
-       MonoReflectionMethod *methodInfo = (MonoReflectionMethod *)_methodInfo;
-       return 
(MonoClassRef)mono_class_from_mono_type(methodInfo->method->signature->ret);
+       _MonoReflectionMethod *methodInfo = (_MonoReflectionMethod 
*)_methodInfo;
+       return 
(MonoClassRef)mono_class_from_mono_type(_mono_method_get_signature(methodInfo->method)->ret);
 }
 
 NSArrayRef/*MonoParameterInfo[]*/ MonoMethodGetParameters(MonoObjectRef 
_methodInfo)
@@ -878,6 +1120,16 @@
 }
 
 
+typedef struct {
+       MonoObject object;
+       MonoReflectionType *ClassImpl;
+       MonoObject *DefaultValueImpl;
+       MonoObject *MemberImpl;
+       MonoString *NameImpl;
+       gint32 PositionImpl;
+       guint32 AttrsImpl;
+       MonoObject *MarshalAsImpl;
+} MonoReflectionParameter;
 // MonoParameterInfo
 MonoClassRef MonoParameterGetOwnerKlass(MonoObjectRef _parameterInfo)
 {
@@ -917,6 +1169,11 @@
 
 
 // MonoPropertyInfo
+struct _MonoReflectionProperty {
+       MonoObject object;
+       MonoClass *klass;
+       MonoProperty *property;
+};
 MonoClassRef MonoPropertyGetOwnerKlass(MonoObjectRef _propertyInfo)
 {
        MonoReflectionProperty* propertyInfo = 
(MonoReflectionProperty*)_propertyInfo;
@@ -926,13 +1183,13 @@
 MonoClassRef MonoPropertyGetKlass(MonoObjectRef _propertyInfo)
 {
        MonoReflectionProperty* propertyInfo = 
(MonoReflectionProperty*)_propertyInfo;
-       return 
(MonoClassRef)mono_class_from_mono_type(propertyInfo->property->get->signature->ret);
+       return 
(MonoClassRef)mono_class_from_mono_type(_mono_method_get_signature(mono_property_get_get_method(propertyInfo->property))->ret);
 }
 
 const char * MonoPropertyGetName(MonoObjectRef _propertyInfo)
 {
        MonoReflectionProperty* propertyInfo = 
(MonoReflectionProperty*)_propertyInfo;
-       return propertyInfo->property->name;
+       return mono_property_get_name(propertyInfo->property);
 }
 
 NSObjectRef MonoPropertyGetValue(MonoObjectRef _propertyInfo, MonoObjectRef 
base)
@@ -948,6 +1205,14 @@
 
 
 // MonoFieldInfo
+struct _MonoReflectionField {
+       MonoObject object;
+       MonoClass *klass;
+       MonoClassField *field;
+       MonoString *name;
+       MonoReflectionType *type;
+       guint32 attrs;
+};
 MonoClassRef MonoFieldGetOwnerKlass(MonoObjectRef _fieldInfo)
 {
        MonoReflectionField* fieldInfo = (MonoReflectionField*)_fieldInfo;
@@ -957,13 +1222,13 @@
 MonoClassRef MonoFieldGetKlass(MonoObjectRef _fieldInfo)
 {
        MonoReflectionField* fieldInfo = (MonoReflectionField*)_fieldInfo;
-       return (MonoClassRef)mono_class_from_mono_type(fieldInfo->field->type);
+       return 
(MonoClassRef)mono_class_from_mono_type(mono_field_get_type(fieldInfo->field));
 }
 
 const char * MonoFieldGetName(MonoObjectRef _fieldInfo)
 {
        MonoReflectionField* fieldInfo = (MonoReflectionField*)_fieldInfo;
-       return fieldInfo->field->name;
+       return mono_field_get_name(fieldInfo->field);
 }
 
 NSObjectRef MonoFieldGetValue(MonoObjectRef _fieldInfo, MonoObjectRef base)

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to