534,535c534,537
< code = ''
< base = obj.get_base()
---
> class_path = obj.cxx_class.split('::')
> class_path.reverse()
> classname = class_path[0]
> namespaces = class_path[1:]
536a539
> code = ''
538,541c541,544
< code += '%%nodefault %s;\n' % obj.cxx_class
< code += 'class %s ' % obj.cxx_class
< if base:
< code += ': public %s' % base
---
> code += '%%nodefault %s;\n' % classname
> code += 'class %s ' % classname
> if obj._base:
> code += ': public %s' % obj._base.cxx_class
544,546c547,548
< klass = obj.cxx_class;
< if hasattr(obj, 'cxx_namespace'):
< new_code = 'namespace %s {\n' % obj.cxx_namespace
---
> for ns in namespaces:
> new_code = 'namespace %s {\n' % ns
550d551
< klass = '%s::%s' % (obj.cxx_namespace, klass)