Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Tue, 18 Sep 2001 07:20:30 +0000 (07:20 -0000)
committerPaolo Molaro <lupus@oddwiz.org>
Tue, 18 Sep 2001 07:20:30 +0000 (07:20 -0000)
* class.h, class.c: add mono_class_get_field_from_name ().
* *: Fix C comments and other ANSI C issues.

svn path=/trunk/mono/; revision=862

mono/metadata/ChangeLog
mono/metadata/blob.h
mono/metadata/class.c
mono/metadata/class.h
mono/metadata/image.c
mono/metadata/image.h
mono/metadata/loader.c
mono/metadata/metadata.c
mono/metadata/metadata.h

index 0ebc725700ede5889f3c6e028a10980c64236b4a..4136b8e312699a4beb4ff100638b5c4ece893143 100644 (file)
@@ -1,4 +1,9 @@
 
+Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
+
+       * class.h, class.c: add mono_class_get_field_from_name ().
+       * *: Fix C comments and other ANSI C issues.
+
 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
 
        * endian.h, assembly.c: fix some endianness issues.
index e5cb42b361619ecd5f88855ab86980ff9cc92976..41243d76c4bb6fcc71d8fbf4c02e304a06eab8b5 100644 (file)
@@ -45,7 +45,7 @@ typedef enum {
 
        MONO_TYPE_MODIFIER   = 0x40,       /* Or with the following types */
        MONO_TYPE_SENTINEL   = 0x41,       /* Sentinel for varargs method signature */
-       MONO_TYPE_PINNED     = 0x45,       /* Local var that points to pinned object */
+       MONO_TYPE_PINNED     = 0x45       /* Local var that points to pinned object */
 } MonoTypeEnum;
 
 #endif
index 77e71898b5a8a15988ca05a2ec52e80426dbf70b..7ba5aadc8cf4f70d8a6d11b48874fda621332168 100644 (file)
@@ -455,7 +455,7 @@ mono_class_value_size      (MonoClass *klass, guint32 *align)
        /* fixme: check disable, because we still have external revereces to
         * mscorlib and Dummy Objects 
         */
-       //g_assert (klass->valuetype);
+       /*g_assert (klass->valuetype);*/
 
        size = mono_class_instance_size (klass) - sizeof (MonoObject);
 
@@ -527,6 +527,21 @@ mono_class_get_field (MonoClass *class, guint32 field_token)
        return mono_class_get_field_idx (class, idx - 1);
 }
 
+MonoClassField *
+mono_class_get_field_from_name (MonoClass *klass, const char *name)
+{
+       int i;
+       guint32 token;
+       MonoTableInfo *t = &klass->image->tables [MONO_TABLE_FIELD];
+
+       for (i = 0; i < klass->field.count; ++i) {
+               token = mono_metadata_decode_row_col (t, klass->field.first + i, MONO_FIELD_NAME);
+               if (strcmp (name, mono_metadata_string_heap (klass->image, token)) == 0)
+                       return &klass->fields [i];
+       }
+       return NULL;
+}
+
 /**
  * mono_class_get:
  * @image: the image where the class resides
index d4570e8709eeb9696c6db2e92087f50cecd624d6..9449ff315fb9a03d1895dd443f86c34649540639 100644 (file)
@@ -82,6 +82,9 @@ mono_array_class_get       (MonoClass *eclass, guint32 rank);
 MonoClassField *
 mono_class_get_field       (MonoClass *klass, guint32 field_token);
 
+MonoClassField *
+mono_class_get_field_from_name (MonoClass *klass, const char *name);
+
 gint32
 mono_array_element_size    (MonoArrayClass *ac);
 
index 7508512c1372146ad11efab380e339751b0a98ec..c39489b8d3fd3ea1085901b1a189bfd64aab132d 100644 (file)
@@ -55,7 +55,7 @@ mono_cli_rva_map (MonoCLIImageInfo *iinfo, guint32 addr)
        for (i = 0; i < top; i++){
                if ((addr >= tables->st_virtual_address) &&
                    (addr < tables->st_virtual_address + tables->st_raw_data_size)){
-                       return iinfo->cli_sections [i] +
+                       return (char*)iinfo->cli_sections [i] +
                                (addr - tables->st_virtual_address);
                }
                tables++;
index 6fcb83296227a36f5007e33b0edfeee084823c0f..b22f65ac90808ba1de4cb4120bdf9f18fb43f3cc 100644 (file)
@@ -38,7 +38,7 @@ struct _MonoImage {
        int   ref_count;
        FILE *f;
        char *name;
-       char *assembly_name;
+       const char *assembly_name;
        void *image_info;
 
        char                *raw_metadata;
index 3a819796436ce5b9e1eeb71dbb091ed4ccd03562..5aae9ccd545d91d34d53cdcaf74f328585035b1e 100644 (file)
@@ -367,7 +367,8 @@ fill_pinvoke_info (MonoImage *image, MonoMethodPInvoke *piinfo, int index)
 
        g_module_symbol (gmodule, import, &mh->addr); 
 
-       g_assert (mh->addr);
+       if (!mh->addr)
+               g_error ("Failed to load function %s from %s", import, scope);
 
        mh->flags |= METHOD_ATTRIBUTE_PINVOKE_IMPL;
 }
index a21a255ffe5e8d1d42864aaf120388606872a673..ef84a031fdbad4a2c43a4b2cc452273d2b348c7a 100644 (file)
@@ -848,7 +848,7 @@ mono_metadata_decode_row_col (MonoTableInfo *t, int idx, guint col)
 guint32
 mono_metadata_decode_blob_size (const char *xptr, const char **rptr)
 {
-       const unsigned char *ptr = xptr;
+       const unsigned char *ptr = (const unsigned char *)xptr;
        guint32 size;
        
        if ((*ptr & 0x80) == 0){
@@ -1415,10 +1415,10 @@ mono_metadata_parse_mh (MonoMetadata *m, const char *ptr)
                mh->max_stack = 8;
                local_var_sig_tok = 0;
 
-               //
-               // The spec claims 3 bits, but the Beta2 is
-               // incorrect
-               //
+               /*
+                * The spec claims 3 bits, but the Beta2 is
+                * incorrect
+                */
                mh->code_size = flags >> 2;
                mh->code = ptr;
                return mh;
index 42981245e5bc40c28a30729b8d507a238125f869..a0bd341238679152d6876a8a1c3ba843623e08bc 100644 (file)
@@ -58,7 +58,7 @@ typedef enum {
        MONO_TABLE_FILE,
        MONO_TABLE_EXPORTEDTYPE,
        MONO_TABLE_MANIFESTRESOURCE,
-       MONO_TABLE_NESTEDCLASS,
+       MONO_TABLE_NESTEDCLASS
 
 #define MONO_TABLE_LAST MONO_TABLE_NESTEDCLASS
 } MonoMetaTableEnum;