[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