+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.
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)
{
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},