2009-01-26 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / metadata / class-internals.h
index 1632d80a1594b0756cdc7394829a7c5ad7eaa32c..cd927318b3f8ecf5a85ea810867d54e6cdee8e93 100644 (file)
@@ -9,6 +9,8 @@
 
 #define MONO_CLASS_IS_ARRAY(c) ((c)->rank)
 
+#define MONO_CLASS_HAS_STATIC_METADATA(klass) ((klass)->type_token && !(klass)->image->dynamic && !(klass)->generic_class)
+
 #define MONO_DEFAULT_SUPERTABLE_SIZE 6
 
 extern gboolean mono_print_vtable;
@@ -139,7 +141,7 @@ struct _MonoClassField {
 
 /* a field is ignored if it's named "_Deleted" and it has the specialname and rtspecialname flags set */
 #define mono_field_is_deleted(field) (((field)->type->attrs & (FIELD_ATTRIBUTE_SPECIAL_NAME | FIELD_ATTRIBUTE_RT_SPECIAL_NAME)) \
-                                     && (strcmp ((field)->name, "_Deleted") == 0))
+                                     && (strcmp (mono_field_get_name (field), "_Deleted") == 0))
 
 typedef struct {
        MonoClassField *field;
@@ -148,7 +150,7 @@ typedef struct {
 } MonoMarshalField;
 
 typedef struct {
-       guint32 native_size;
+       guint32 native_size, min_align;
        guint32 num_fields;
        MonoMethod *ptr_to_str;
        MonoMethod *str_to_ptr;
@@ -274,8 +276,10 @@ struct _MonoClass {
        guint unicode         : 1; /* class uses unicode char when marshalled */
        guint wastypebuilder  : 1; /* class was created at runtime from a TypeBuilder */
        /* next byte */
-       guint min_align       : 4;
+       guint8 min_align;
+       /* next byte */
        guint packing_size    : 4;
+       /* still 4 bits free */
        /* next byte */
        guint ghcimpl         : 1; /* class has its own GetHashCode impl */ 
        guint has_finalize    : 1; /* class has its own Finalize impl */ 
@@ -634,6 +638,7 @@ typedef struct {
        guint32 exceptions_finallys;
        guint32 exceptions_depth;
        guint32 aspnet_requests_queued;
+       guint32 aspnet_requests;
        /* Memory category */
        guint32 gc_collections0;
        guint32 gc_collections1;
@@ -1127,10 +1132,19 @@ mono_method_can_access_field_full (MonoMethod *method, MonoClassField *field, Mo
 MonoClass *
 mono_class_get_generic_type_definition (MonoClass *klass) MONO_INTERNAL;
 
+gboolean
+mono_class_has_parent_and_ignore_generics (MonoClass *klass, MonoClass *parent) MONO_INTERNAL;
+
 int
 mono_method_get_vtable_slot (MonoMethod *method) MONO_INTERNAL;
 
 int
 mono_method_get_vtable_index (MonoMethod *method) MONO_INTERNAL;
 
+MonoMethod*
+mono_method_search_in_array_class (MonoClass *klass, const char *name, MonoMethodSignature *sig) MONO_INTERNAL;
+
+void
+mono_class_setup_interface_id (MonoClass *class) MONO_INTERNAL;
+
 #endif /* __MONO_METADATA_CLASS_INTERBALS_H__ */