From: <je...@us...> - 2008-08-06 22:28:38
|
Revision: 10737 http://swig.svn.sourceforge.net/swig/?rev=10737&view=rev Author: jezabek Date: 2008-08-06 22:28:36 +0000 (Wed, 06 Aug 2008) Log Message: ----------- Fixed bug when a base class was ignored; the code generating the proxy's QueryInterface just moved to the ignored classes parent instead of its first non-ignored sibling. Modified Paths: -------------- branches/gsoc2008-jezabek/Source/Modules/com.cxx Modified: branches/gsoc2008-jezabek/Source/Modules/com.cxx =================================================================== --- branches/gsoc2008-jezabek/Source/Modules/com.cxx 2008-08-06 17:46:59 UTC (rev 10736) +++ branches/gsoc2008-jezabek/Source/Modules/com.cxx 2008-08-06 22:28:36 UTC (rev 10737) @@ -1455,11 +1455,16 @@ while (bases) { Iterator base = First(bases); - if (!Getattr(base.item, "feature:ignore")) + while (base.item && Getattr(base.item, "feature:ignore")) + base = Next(base); + + if (base.item) { Printf(proxy_class_vtable_code, " ||\n SWIGIsEqual(iid, &IID_%s)", Getattr(base.item, "sym:name")); - - /* Get next base */ - bases = Getattr(base.item, "bases"); + /* Get next base */ + bases = Getattr(base.item, "bases"); + } else { + bases = NULL; + } } Printf(proxy_class_vtable_code, ") {\n" @@ -1520,11 +1525,16 @@ while (bases) { Iterator base = First(bases); - if (!Getattr(base.item, "feature:ignore")) - Printf(proxy_class_vtable_code, " ||\n SWIGIsEqual(iid, &IID_%s)", Getattr(base.item, "sym:name")); + while (base.item && Getattr(base.item, "feature:ignore")) + base = Next(base); - /* Get next base */ - bases = Getattr(base.item, "bases"); + if (base.item) { + Printf(proxy_class_vtable_code, " ||\n SWIGIsEqual(iid, &IID_%s)", Getattr(base.item, "sym:name")); + /* Get next base */ + bases = Getattr(base.item, "bases"); + } else { + bases = NULL; + } } Printf(proxy_class_vtable_code, ") {\n" @@ -1820,7 +1830,6 @@ emit_mark_varargs(l); - // FIXME: int gencomma = !static_flag; int gencomma = 1; /* Output each parameter */ @@ -1879,7 +1888,6 @@ Printf(function_code, ")"); - // FIXME: generateThrowsClause(n, function_code); Printv(function_code, ";\n", NIL); if (!Getattr(n, "override")) { @@ -2390,5 +2398,5 @@ -norcfile - Do not generate RC (resource definition) file\n\ -nodeffile - Do not generate DEF file\n\ -nodllexports - Do not generate DllGetClassObject and DllCanUnloadNow\n\ - (implicates -nodeffile)\n\ + (implies -nodeffile)\n\ \n"; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |