fix for #1247477, sorting tables properly
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@7403 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
d18e6de5e5
commit
a8054943ef
1 changed files with 14 additions and 5 deletions
|
|
@ -1773,7 +1773,7 @@ void SwigType_inherit_equiv(File *out) {
|
|||
|
||||
/* Helper function to sort the mangled list */
|
||||
static int SwigType_compare_mangled(const DOH *a, const DOH *b) {
|
||||
return Cmp(a, b);
|
||||
return strcmp(Data(a), Data(b));
|
||||
}
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
|
@ -1801,6 +1801,7 @@ SwigType_emit_type_table(File *f_forward, File *f_table) {
|
|||
String *types, *table, *cast, *cast_init, *cast_temp;
|
||||
Hash *imported_types;
|
||||
List *mangled_list;
|
||||
List *table_list = NewList();
|
||||
int i = 0;
|
||||
|
||||
if (!r_mangled) {
|
||||
|
|
@ -1859,9 +1860,8 @@ SwigType_emit_type_table(File *f_forward, File *f_table) {
|
|||
|
||||
Printf(f_forward,"#define SWIGTYPE%s swig_types[%d]\n", ki.item, i);
|
||||
Printv(types,"static swig_type_info _swigt_", ki.item, " = {", NIL);
|
||||
Printf(table, " &_swigt_%s,\n", ki.item);
|
||||
Append(table_list, ki.item);
|
||||
Printf(cast_temp, "static swig_cast_info _swigc_%s[] = {", ki.item);
|
||||
Printf(cast_init, " _swigc_%s,\n", ki.item);
|
||||
i++;
|
||||
|
||||
cd = SwigType_clientdata_collect(ki.item);
|
||||
|
|
@ -1895,10 +1895,10 @@ SwigType_emit_type_table(File *f_forward, File *f_table) {
|
|||
if (!Getattr(r_mangled, ei.item) && !Getattr(imported_types, ei.item)) {
|
||||
Printf(f_forward, "#define SWIGTYPE%s swig_types[%i]\n", ei.item, i);
|
||||
Printf(types, "static swig_type_info _swigt_%s = {\"%s\", 0, 0, 0, 0};\n", ei.item, ei.item);
|
||||
Printf(table, " &_swigt_%s,\n", ei.item);
|
||||
Append(table_list, ei.item);
|
||||
|
||||
Printf(cast, "static swig_cast_info _swigc_%s[] = {{&_swigt_%s, 0, 0, 0},{0, 0, 0, 0}};\n",
|
||||
ei.item, ei.item);
|
||||
Printf(cast_init, " _swigc_%s,\n", ei.item);
|
||||
i++;
|
||||
|
||||
Setattr(imported_types, ei.item, "1");
|
||||
|
|
@ -1910,6 +1910,15 @@ SwigType_emit_type_table(File *f_forward, File *f_table) {
|
|||
Delete(nt);
|
||||
Delete(rt);
|
||||
}
|
||||
/* print the tables in the proper order */
|
||||
SortList(table_list, SwigType_compare_mangled);
|
||||
for (ki = First(table_list); ki.item; ki = Next(ki)) {
|
||||
Printf(table, " &_swigt_%s,\n", ki.item);
|
||||
Printf(cast_init, " _swigc_%s,\n", ki.item);
|
||||
}
|
||||
|
||||
Delete(table_list);
|
||||
|
||||
Delete(mangled_list);
|
||||
|
||||
Printf(table, "};\n");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue