# In time, hopefully the literals etc. will be
# supplied directly instead.
#
- # const_cnames_used set global index of unique constant identifiers
+ # const_cnames_used dict global counter for unique constant identifiers
#
# parts {string:CCodeWriter}
self.module_node = module_node # because some utility code generation needs it
# (generating backwards-compatible Get/ReleaseBuffer
- self.const_cnames_used = set()
+ self.const_cnames_used = {}
self.string_const_index = {}
self.pyunicode_ptr_const_index = {}
self.int_const_index = {}
def new_const_cname(self, prefix='', value=''):
value = replace_identifier('_', value)[:32].strip('_')
used = self.const_cnames_used
- counter = 1
name_suffix = value
while name_suffix in used:
- counter += 1
+ counter = used[value] = used[value] + 1
name_suffix = '%s_%d' % (value, counter)
- used.add(name_suffix)
+ used[name_suffix] = 1
return "%s%s%s" % (Naming.const_prefix, prefix, name_suffix)
def add_cached_builtin_decl(self, entry):
True
>>> same_cname
- [b'abc\xf0', b'abc\xf1', b'abc\xf2', b'abc\xf3', b'abc_2', b'abc_3']
+ [b'abc\xf0_2', b'abc\xf0', b'abc\xf1', b'abc\xf2', b'abc\xf3', b'abc_2', b'abc_3']
>>> newlines
'Aaa\n'
bytes_uescape = b'\u1234\U12345678\u\u1\u12\uX'
str_uescape = '\u0063\U00012345\N{SNOWMAN}\x42'
-same_cname = [b'abc\xf0', b'abc\xf1', b'abc\xf2', b'abc\xf3', b'abc_2', b'abc_3']
+same_cname = [b'abc\xf0_2', b'abc\xf0', b'abc\xf1', b'abc\xf2', b'abc\xf3', b'abc_2', b'abc_3']
newlines = "Aaa\n"