2004-09-23 Martin Baulig <martin@ximian.com>
authorMartin Baulig <martin@novell.com>
Thu, 23 Sep 2004 17:10:28 +0000 (17:10 -0000)
committerMartin Baulig <martin@novell.com>
Thu, 23 Sep 2004 17:10:28 +0000 (17:10 -0000)
* icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.

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

mono/metadata/ChangeLog
mono/metadata/icall.c

index 51b402193fa1794aa3cc0441fd4f58c73a8d925e..7f1e9aca082f6c0cd99a1400cd5d455612d5bb74 100644 (file)
@@ -1,3 +1,7 @@
+2004-09-23  Martin Baulig  <martin@ximian.com>
+
+       * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
+
 2004-09-23  Martin Baulig  <martin@ximian.com>
 
        * object-internals.h (GenericParameterAttributes): New enum.
index 66bd2822b6b04c84f6e0204797c680cdbf36f284..fdfd0e612634368719e78ba24ffa4d32d89b3dd0 100644 (file)
@@ -1798,6 +1798,25 @@ ves_icall_Type_GetGenericParameterPosition (MonoReflectionType *type)
        return -1;
 }
 
+static GenericParameterAttributes
+ves_icall_Type_GetGenericParameterAttributes (MonoReflectionType *type)
+{
+       MonoGenericParam *gparam;
+
+       MONO_ARCH_SAVE_REGS;
+
+       if (type->type->byref)
+               return 0;
+
+       gparam = type->type->data.generic_param;
+       if (gparam->flags == 0x18)
+               return GENERIC_PARAMETER_ATTRIBUTE_VALUE_TYPE_CONSTRAINT;
+       else if (gparam->flags == 0x04)
+               return GENERIC_PARAMETER_ATTRIBUTE_REFERENCE_TYPE_CONSTRAINT;
+       else
+               return GENERIC_PARAMETER_ATTRIBUTE_NO_SPECIAL_CONSTRAINT;
+}
+
 static MonoBoolean
 ves_icall_MonoType_get_HasGenericArguments (MonoReflectionType *type)
 {
@@ -6146,6 +6165,7 @@ static const IcallEntry waithandle_icalls [] = {
 static const IcallEntry type_icalls [] = {
        {"BindGenericParameters", ves_icall_Type_BindGenericParameters},
        {"Equals", ves_icall_type_Equals},
+       {"GetGenericParameterAttributes", ves_icall_Type_GetGenericParameterAttributes},
        {"GetGenericParameterPosition", ves_icall_Type_GetGenericParameterPosition},
        {"GetGenericTypeDefinition_impl", ves_icall_Type_GetGenericTypeDefinition_impl},
        {"GetInterfaceMapData", ves_icall_Type_GetInterfaceMapData},