dotgnu-pnet-commits
[Top][All Lists]
Advanced

[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)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]