swig: Add in a %rename to allow the same name to appear in multiple namespaces.
authorNathan Binkert <nate@binkert.org>
Sat, 11 Oct 2008 04:45:34 +0000 (21:45 -0700)
committerNathan Binkert <nate@binkert.org>
Sat, 11 Oct 2008 04:45:34 +0000 (21:45 -0700)
src/SConscript

index be721d57eaa118f851ddbacd91a612728dc2d9c3..2ea35b778282410400772dd7d689fd5f0b90d5c5 100644 (file)
@@ -532,11 +532,18 @@ def buildParams(target, source, env):
             continue
 
         class_path = obj.cxx_class.split('::')
-        class_path.reverse()
-        classname = class_path[0]
-        namespaces = class_path[1:]
+        classname = class_path[-1]
+        namespaces = class_path[:-1]
+        namespaces.reverse()
 
         code = ''
+
+        if namespaces:
+            code += '// avoid name conflicts\n'
+            sep_string = '_COLONS_'
+            flat_name = sep_string.join(class_path)
+            code += '%%rename(%s) %s;\n' % (flat_name, classname)
+
         code += '// stop swig from creating/wrapping default ctor/dtor\n'
         code += '%%nodefault %s;\n' % classname
         code += 'class %s ' % classname