From: Surendra S. <efu...@us...> - 2006-01-12 05:42:32
|
Update of /cvsroot/swig/SWIG/Source/Modules In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15746 Modified Files: cffi.cxx Log Message: Fixed a struct related bug. Reported by Frank Buss and Kilian. Index: cffi.cxx =================================================================== RCS file: /cvsroot/swig/SWIG/Source/Modules/cffi.cxx,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** cffi.cxx 24 Dec 2005 23:15:15 -0000 1.3 --- cffi.cxx 12 Jan 2006 05:42:24 -0000 1.4 *************** *** 441,444 **** --- 441,450 ---- // Includes structs void CFFI :: emit_struct_union(Node *n, bool un=false) { + #ifdef CFFI_DEBUG + Printf(stderr, "struct/union %s\n", Getattr(n, "name")); + Printf(stderr, "struct/union %s\n and %s", + Getattr(n,"kind"),Getattr(n,"sym:name")); + #endif + String *name=Getattr(n, "sym:name"); String *kind = Getattr(n,"kind"); *************** *** 455,471 **** else Printf(f_cl,"\n(defcstruct %s",name); - for (Node *c=firstChild(n); c; c=nextSibling(c)) { ! if (Strcmp(nodeType(c), "cdecl")) { ! Printf(stderr, "Structure %s has a slot that we can't deal with.\n", ! name); ! Printf(stderr, "nodeType: %s, name: %s, type: %s\n", ! nodeType(c), ! Getattr(c, "name"), ! Getattr(c, "type")); ! SWIG_exit(EXIT_FAILURE); ! } ! String *temp=Copy(Getattr(c,"decl")); Append(temp,Getattr(c,"type")); //appending type to the end, otherwise wrong type --- 461,482 ---- else Printf(f_cl,"\n(defcstruct %s",name); for (Node *c=firstChild(n); c; c=nextSibling(c)) { + #ifdef CFFI_DEBUG + Printf(stderr, "%d struct/union %s\n", Getattr(c, "name")); + Printf(stderr, "%d struct/union %s and %s \n", + Getattr(c,"kind"),Getattr(c,"sym:name")); + #endif ! if (Strcmp(nodeType(c), "cdecl")) { ! //C declaration ignore ! // Printf(stderr, "Structure %s has a slot that we can't deal with.\n", ! // name); ! // Printf(stderr, "nodeType: %s, name: %s, type: %s\n", ! // nodeType(c), ! // Getattr(c, "name"), ! // Getattr(c, "type")); ! // SWIG_exit(EXIT_FAILURE); ! } ! else{ String *temp=Copy(Getattr(c,"decl")); Append(temp,Getattr(c,"type")); //appending type to the end, otherwise wrong type *************** *** 480,483 **** --- 491,495 ---- Delete(lisp_type); + } } |