diff -r acd31653e3b4 Tools/clinic/clinic.py --- a/Tools/clinic/clinic.py Thu Jan 16 06:53:54 2014 +0100 +++ b/Tools/clinic/clinic.py Thu Jan 16 01:14:22 2014 -0800 @@ -1485,9 +1485,10 @@ # Only used by format units ending with '#'. length = False - def __init__(self, name, function, default=unspecified, *, doc_default=None, c_default=None, py_default=None, required=False, annotation=unspecified, **kwargs): + def __init__(self, name, function, default=unspecified, *, doc_default=None, c_default=None, py_default=None, required=False, annotation=unspecified, c_name=None, **kwargs): self.function = function self.name = name + self.c_name = ensure_legal_c_identifier(c_name or name) if default is not unspecified: if self.default_type and not isinstance(default, self.default_type): @@ -1522,8 +1523,6 @@ data is a CRenderData instance. """ self.parameter = parameter - original_name = self.name - name = ensure_legal_c_identifier(original_name) # declarations d = self.declaration() @@ -1532,16 +1531,16 @@ # initializers initializers = self.initialize() if initializers: - data.initializers.append('/* initializers for ' + name + ' */\n' + initializers.rstrip()) + data.initializers.append('/* initializers for ' + self.c_name + ' */\n' + initializers.rstrip()) # impl_arguments - s = ("&" if self.impl_by_reference else "") + name + s = ("&" if self.impl_by_reference else "") + self.c_name data.impl_arguments.append(s) if self.length: data.impl_arguments.append(self.length_name()) # keywords - data.keywords.append(original_name) + data.keywords.append(self.name) # format_units if self.is_optional() and '|' not in data.format_units: @@ -1561,13 +1560,13 @@ # cleanup cleanup = self.cleanup() if cleanup: - data.cleanup.append('/* Cleanup for ' + name + ' */\n' + cleanup.rstrip() + "\n") + data.cleanup.append('/* Cleanup for ' + self.c_name + ' */\n' + cleanup.rstrip() + "\n") def length_name(self): """Computes the name of the associated "length" variable.""" if not self.length: return None - return ensure_legal_c_identifier(self.name) + "_length" + return self.c_name + "_length" # Why is this one broken out separately? # For "positional-only" function parsing, @@ -1583,8 +1582,7 @@ elif self.subclass_of: list.append(self.subclass_of) - legal_name = ensure_legal_c_identifier(self.name) - s = ("&" if self.parse_by_reference else "") + legal_name + s = ("&" if self.parse_by_reference else "") + self.c_name list.append(s) if self.length: @@ -1605,7 +1603,7 @@ prototype.append(" ") if by_reference: prototype.append('*') - prototype.append(ensure_legal_c_identifier(self.name)) + prototype.append(self.c_name) return "".join(prototype) def declaration(self): @@ -1932,8 +1930,7 @@ self.format_unit = format_unit def cleanup(self): - name = ensure_legal_c_identifier(self.name) - return "".join(["if (", name, ".obj)\n PyBuffer_Release(&", name, ");\n"]) + return "".join(["if (", self.c_name, ".obj)\n PyBuffer_Release(&", self.c_name, ");\n"]) class self_converter(CConverter):