From 00be2c2492c16e614481b87d3bad379d8bcaa12b Mon Sep 17 00:00:00 2001 From: Dave Beazley Date: Tue, 25 Nov 2003 03:51:35 +0000 Subject: [PATCH] Fixed cross module linking of base-classes. Base classes are now located using SWIG_TypeQuery() during module initialization. git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@5386 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Source/Modules/tcl8.cxx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/SWIG/Source/Modules/tcl8.cxx b/SWIG/Source/Modules/tcl8.cxx index 5d774f917..439f1e8b2 100644 --- a/SWIG/Source/Modules/tcl8.cxx +++ b/SWIG/Source/Modules/tcl8.cxx @@ -763,6 +763,7 @@ public: List *baselist = Getattr(n,"bases"); if (baselist && Len(baselist)) { Iterator b; + int index = 0; b = First(baselist); while (b.item) { String *bname = Getattr(b.item, "name"); @@ -776,9 +777,15 @@ public: Printv( base_class_init , " ", bname, "Ptr::constructor $ptr\n", NIL ); } String *bmangle = Swig_name_mangle(bname); - Printv(f_wrappers,"extern swig_class _wrap_class_", bmangle, ";\n", NIL); - Printf(base_class,"&_wrap_class_%s",bmangle); + // Printv(f_wrappers,"extern swig_class _wrap_class_", bmangle, ";\n", NIL); + // Printf(base_class,"&_wrap_class_%s",bmangle); + Printf(base_class,"0"); + /* Put code to register base classes in init function */ + + Printf(f_init,"/* Register base : %s */\n", bmangle); + Printf(f_init,"swig_%s_bases[%d] = (swig_class *) SWIG_TypeQuery(\"%s *\")->clientdata;\n", mangled_classname, index, SwigType_namestr(bname)); b = Next(b); + index++; Putc(',',base_class); Delete(bmangle); }