[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_attrs.c,1.26,1.27 cs_cas
From: |
Rhys Weatherley <address@hidden> |
Subject: |
[Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_attrs.c,1.26,1.27 cs_cast.tc,1.8,1.9 |
Date: |
Wed, 04 Jun 2003 21:07:20 -0400 |
Update of /cvsroot/dotgnu-pnet/pnet/cscc/csharp
In directory subversions:/tmp/cvs-serv12221/cscc/csharp
Modified Files:
cs_attrs.c cs_cast.tc
Log Message:
Include the scope information for nested types in "CSTypeToName"; use the
correct type syntax in attribute arguments that use "typeof".
Index: cs_attrs.c
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_attrs.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -r1.26 -r1.27
*** cs_attrs.c 30 May 2003 00:43:15 -0000 1.26
--- cs_attrs.c 5 Jun 2003 01:07:17 -0000 1.27
***************
*** 247,250 ****
--- 247,285 ----
}
+ /*
+ * Convert a type into a name, formatted for use in attribute values.
+ */
+ static const char *CSTypeToAttrName(ILGenInfo *info, ILType *type)
+ {
+ ILClass *classInfo = ILTypeToClass(info, type);
+ const char *name = ILClass_Name(classInfo);
+ const char *namespace = ILClass_Namespace(classInfo);
+ const char *finalName;
+ if(namespace)
+ {
+ finalName = ILInternAppendedString
+ (ILInternAppendedString
+ (ILInternString((char
*)namespace, -1),
+ ILInternString((char *)".",
1)),
+ ILInternString((char *)name,
-1)).string;
+ }
+ else
+ {
+ finalName = name;
+ }
+ if(ILClass_NestedParent(classInfo) != 0)
+ {
+ /* Prepend the name of the enclosing nesting class */
+ const char *parentName = CSTypeToAttrName
+ (info,
ILType_FromClass(ILClass_NestedParent(classInfo)));
+ finalName = ILInternAppendedString
+ (ILInternAppendedString
+ (ILInternString((char
*)parentName, -1),
+ ILInternString((char *)"+",
1)),
+ ILInternString((char *)finalName,
-1)).string;
+ }
+ return finalName;
+ }
+
/*
* write an entry into the serialized stream using the provide paramType and
***************
*** 305,310 ****
case IL_META_SERIALTYPE_TYPE:
{
! const char *name = CSTypeToName
! ((ILType *)(argValue->un.strValue.str));
ILSerializeWriterSetString(writer, name, strlen(name));
}
--- 340,345 ----
case IL_META_SERIALTYPE_TYPE:
{
! const char *name = CSTypeToAttrName
! (info, (ILType *)(argValue->un.strValue.str));
ILSerializeWriterSetString(writer, name, strlen(name));
}
***************
*** 366,370 ****
else if(ILTypeIsEnum(argType))
{
! const char *name = CSTypeToName ((ILType
*)(argType));
ILSerializeWriterSetBoxedPrefix(writer,
IL_META_SERIALTYPE_ENUM);
--- 401,405 ----
else if(ILTypeIsEnum(argType))
{
! const char *name = CSTypeToAttrName(info,
(ILType *)(argType));
ILSerializeWriterSetBoxedPrefix(writer,
IL_META_SERIALTYPE_ENUM);
Index: cs_cast.tc
===================================================================
RCS file: /cvsroot/dotgnu-pnet/pnet/cscc/csharp/cs_cast.tc,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -r1.8 -r1.9
*** cs_cast.tc 16 Nov 2002 02:45:32 -0000 1.8
--- cs_cast.tc 5 Jun 2003 01:07:17 -0000 1.9
***************
*** 133,139 ****
const char *name = ILClass_Name(classInfo);
const char *namespace = ILClass_Namespace(classInfo);
if(namespace)
{
! return ILInternAppendedString
(ILInternAppendedString
(ILInternString((char
*)namespace, -1),
--- 133,140 ----
const char *name = ILClass_Name(classInfo);
const char *namespace = ILClass_Namespace(classInfo);
+ const char *finalName;
if(namespace)
{
! finalName = ILInternAppendedString
(ILInternAppendedString
(ILInternString((char
*)namespace, -1),
***************
*** 143,148 ****
else
{
! return name;
}
}
else if(type != ILType_Invalid)
--- 144,161 ----
else
{
! finalName = name;
}
+ if(ILClass_NestedParent(classInfo) != 0)
+ {
+ /* Prepend the name of the enclosing nesting class */
+ const char *parentName = CSTypeToName
+
(ILType_FromClass(ILClass_NestedParent(classInfo)));
+ finalName = ILInternAppendedString
+ (ILInternAppendedString
+ (ILInternString((char
*)parentName, -1),
+ ILInternString((char
*)".", 1)),
+ ILInternString((char
*)finalName, -1)).string;
+ }
+ return finalName;
}
else if(type != ILType_Invalid)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dotgnu-pnet-commits] CVS: pnet/cscc/csharp cs_attrs.c,1.26,1.27 cs_cast.tc,1.8,1.9,
Rhys Weatherley <address@hidden> <=