From 870201445c7514144d64236a11ad2de641596aec Mon Sep 17 00:00:00 2001 From: "Gustavo J. A. M. Carneiro" Date: Fri, 4 Jan 2008 19:08:47 +0000 Subject: [PATCH] Fix issue with templated classes being registered with invalid name. --- pybindgen/cppclass.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pybindgen/cppclass.py b/pybindgen/cppclass.py index 2b19de2..c26b0bc 100644 --- a/pybindgen/cppclass.py +++ b/pybindgen/cppclass.py @@ -291,6 +291,7 @@ class CppClass(object): self.outer_class = outer_class self._module = None self.name = name + self.mangled_name = None self.template_parameters = template_parameters self.custom_template_class_name = custom_template_class_name self.is_singleton = is_singleton @@ -492,10 +493,12 @@ class CppClass(object): return ''.join([make_upper(mangle(s)) for s in name.split('::')]) flat_name = flatten(self.full_name) + self.mangled_name = flatten(self.name) if self.template_parameters: self.full_name += "< %s >" % (', '.join(self.template_parameters)) flat_name += '__' + '_'.join([flatten(s) for s in self.template_parameters]) + self.mangled_name += '__' + '_'.join([flatten(s) for s in self.template_parameters]) self._pystruct = "Py%s%s" % (prefix, flat_name) self.metaclass_name = "%sMeta" % flat_name @@ -838,7 +841,7 @@ typedef struct { if self.template_parameters: if self.custom_template_class_name is None: - class_python_name = utils.get_mangled_name(self.name, self.template_parameters) + class_python_name = self.mangled_name else: class_python_name = self.custom_template_class_name else: @@ -899,7 +902,7 @@ typedef struct { if self.outer_class is None: mod_path = self._module.get_module_path() - mod_path.append(self.name) + mod_path.append(self.mangled_name) dict_.setdefault("tp_name", '.'.join(mod_path)) else: dict_.setdefault("tp_name", '%s.%s' % (self.outer_class.slots['tp_name'], self.name))