From: Martin Baulig Date: Thu, 23 Sep 2004 17:10:28 +0000 (-0000) Subject: 2004-09-23 Martin Baulig X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=4e2108dc40047048469d5a94419239f48b12acd2;p=mono.git 2004-09-23 Martin Baulig * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall. svn path=/trunk/mono/; revision=34295 --- diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog index 51b402193fa..7f1e9aca082 100644 --- a/mono/metadata/ChangeLog +++ b/mono/metadata/ChangeLog @@ -1,3 +1,7 @@ +2004-09-23 Martin Baulig + + * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall. + 2004-09-23 Martin Baulig * object-internals.h (GenericParameterAttributes): New enum. diff --git a/mono/metadata/icall.c b/mono/metadata/icall.c index 66bd2822b6b..fdfd0e61263 100644 --- a/mono/metadata/icall.c +++ b/mono/metadata/icall.c @@ -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},