From: <wsf...@us...> - 2008-05-21 22:15:54
|
Revision: 10487 http://swig.svn.sourceforge.net/swig/?rev=10487&view=rev Author: wsfulton Date: 2008-05-21 15:15:52 -0700 (Wed, 21 May 2008) Log Message: ----------- Apply patch from Petr Viktorin to fix some recent regressions in CFFI/CLOS Modified Paths: -------------- trunk/Lib/cffi/cffi.swg trunk/Source/Modules/cffi.cxx Modified: trunk/Lib/cffi/cffi.swg =================================================================== --- trunk/Lib/cffi/cffi.swg 2008-05-21 18:11:22 UTC (rev 10486) +++ trunk/Lib/cffi/cffi.swg 2008-05-21 22:15:52 UTC (rev 10487) @@ -86,7 +86,7 @@ short, signed short, unsigned short, int, signed int, unsigned int, long, signed long, unsigned long, - float, double, long double, char *, void * + float, double, long double, char *, void *, enum SWIGTYPE, SWIGTYPE *, SWIGTYPE[ANY], SWIGTYPE & "$result = $1;"; #ifdef __cplusplus @@ -125,8 +125,9 @@ int, signed int, unsigned int, long, signed long, unsigned long, enum SWIGTYPE "cl:integer"; -%typemap(lispclass) float "cl:single-float"; -%typemap(lispclass) double "cl:double-float"; +/* CLOS methods can't be specialized on single-float or double-float */ +%typemap(lispclass) float "cl:number"; +%typemap(lispclass) double "cl:number"; %typemap(lispclass) char * "cl:string"; Modified: trunk/Source/Modules/cffi.cxx =================================================================== --- trunk/Source/Modules/cffi.cxx 2008-05-21 18:11:22 UTC (rev 10486) +++ trunk/Source/Modules/cffi.cxx 2008-05-21 22:15:52 UTC (rev 10487) @@ -444,7 +444,7 @@ String *result_convert = Swig_typemap_lookup_out("out", n, "result", f, actioncode); Replaceall(result_convert, "$result", "lresult"); Printf(f->code, "%s\n", result_convert); - Printf(f->code, " return lresult;\n"); + if(!is_void_return) Printf(f->code, " return lresult;\n"); Delete(result_convert); emit_return_variable(n, Getattr(n, "type"), f); @@ -673,7 +673,7 @@ Printf(supers, ")"); Printf(f_clos, "\n(cl:defclass %s%s", lisp_name, supers); - Printf(f_clos, "\n ((ff :reader ff-pointer)))\n\n"); + Printf(f_clos, "\n ((ff-pointer :reader ff-pointer)))\n\n"); Parm *pattern = NewParm(Getattr(n, "name"), NULL); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |