[pypy-svn] r14464 - in pypy/dist/pypy/translator: . c

arigo at codespeak.net arigo at codespeak.net
Sun Jul 10 12:47:26 CEST 2005


Author: arigo
Date: Sun Jul 10 12:47:23 2005
New Revision: 14464

Modified:
   pypy/dist/pypy/translator/c/node.py
   pypy/dist/pypy/translator/gensupp.py
Log:
Generate struct names with always a number at the end.  This is both to avoid
potential conflicts with predefined structures, and because it's less
surprizing to have e.g. array structures called 'array0', 'array1',
'array2'... instead of 'array', 'array_1', 'array_2'.



Modified: pypy/dist/pypy/translator/c/node.py
==============================================================================
--- pypy/dist/pypy/translator/c/node.py	(original)
+++ pypy/dist/pypy/translator/c/node.py	Sun Jul 10 12:47:23 2005
@@ -36,10 +36,12 @@
         varlength = self.varlength
         if varlength == 1:
             basename = STRUCT._name
+            with_number = True
         else:
             basename = db.gettypedefnode(STRUCT).name
             basename = '%s_len%d' % (basename, varlength)
-        self.name = db.namespace.uniquename(basename)
+            with_number = False
+        self.name = db.namespace.uniquename(basename, with_number=with_number)
         self.dependencies = {}
         self.fields = []
         self.prefix = somelettersfrom(STRUCT._name) + '_'
@@ -178,10 +180,12 @@
         varlength = self.varlength
         if varlength == 1:
             basename = 'array'
+            with_number = True
         else:
             basename = db.gettypedefnode(ARRAY).name
             basename = '%s_len%d' % (basename, varlength)
-        self.name = db.namespace.uniquename(basename)
+            with_number = False
+        self.name = db.namespace.uniquename(basename, with_number=with_number)
         self.dependencies = {}
         self.itemtypename = db.gettype(ARRAY.OF, who_asks=self)
 

Modified: pypy/dist/pypy/translator/gensupp.py
==============================================================================
--- pypy/dist/pypy/translator/gensupp.py	(original)
+++ pypy/dist/pypy/translator/gensupp.py	Sun Jul 10 12:47:23 2005
@@ -99,11 +99,13 @@
                 raise NameError, "%s has already been seen!"
             self.seennames[name] = 1
 
-    def uniquename(self, basename):
+    def uniquename(self, basename, with_number=None):
         basename = basename.translate(C_IDENTIFIER)
         n = self.seennames.get(basename, 0)
         self.seennames[basename] = n+1
-        if basename in ('v', 'w_'):
+        if with_number is None:
+            with_number = basename in ('v', 'w_')
+        if with_number:
             if n == 0:
                 return '%s%d' % (basename, n)
             else:



More information about the Pypy-commit mailing list