From: <wsf...@us...> - 2012-08-20 21:20:25
|
Revision: 13713 http://swig.svn.sourceforge.net/swig/?rev=13713&view=rev Author: wsfulton Date: 2012-08-20 21:20:19 +0000 (Mon, 20 Aug 2012) Log Message: ----------- Revert r13601 as it breaks older versions of R Revision Links: -------------- http://swig.svn.sourceforge.net/swig/?rev=13601&view=rev Modified Paths: -------------- trunk/Lib/r/rtype.swg trunk/Source/Modules/r.cxx Modified: trunk/Lib/r/rtype.swg =================================================================== --- trunk/Lib/r/rtype.swg 2012-08-20 21:14:24 UTC (rev 13712) +++ trunk/Lib/r/rtype.swg 2012-08-20 21:20:19 UTC (rev 13713) @@ -12,8 +12,6 @@ %apply int {unsigned int} %apply int {short} %apply int {unsigned short} -%apply int {signed char} -%apply int {unsigned char} %typemap("rtype") long, long *, long & "integer"; %apply long {long long} @@ -38,9 +36,10 @@ %typemap("rtype") SWIGTYPE & "$R_class"; %typemap("rtype") SWIGTYPE "$&R_class"; -%typemap("rtypecheck") int, int &, long, long & +%typemap("rtypecheck") int, int &, long, long &, + unsigned char, unsigned char & %{ (is.integer($arg) || is.numeric($arg)) && length($arg) == 1 %} -%typemap("rtypecheck") int *, long * +%typemap("rtypecheck") int *, long *, unsigned char * %{ is.integer($arg) || is.numeric($arg) %} @@ -108,8 +107,9 @@ %typemap(scoercein) enum SWIGTYPE *const %{ $input = enumToInteger($input, "$R_class"); %} + %typemap(scoercein) SWIGTYPE, SWIGTYPE *, SWIGTYPE *const, SWIGTYPE & - %{ if (.hasSlot($input, "ref")) $input = slot($input,"ref") %} + %{ %} /* %typemap(scoercein) SWIGTYPE *, SWIGTYPE *const @@ -141,7 +141,7 @@ long *, long &, long[ANY] - "$input = as.integer($input);"; + "$input = as.integer($input); "; %typemap(scoercein) char *, string, std::string, string &, std::string & @@ -159,31 +159,19 @@ %typemap(scoerceout) enum SWIGTYPE *const %{ $result = enumToInteger($result, "$R_class"); %} -#%typemap(scoerceout) SWIGTYPE -# %{ class($result) <- "$&R_class"; %} -#%typemap(scoerceout) SWIGTYPE & -# %{ class($result) <- "$R_class"; %} +%typemap(scoerceout) SWIGTYPE + %{ class($result) <- "$&R_class"; %} -#%typemap(scoerceout) SWIGTYPE * -# %{ class($result) <- "$R_class"; %} +%typemap(scoerceout) SWIGTYPE & + %{ class($result) <- "$R_class"; %} -#%typemap(scoerceout) SWIGTYPE *const -# %{ class($result) <- "$R_class"; %} +%typemap(scoerceout) SWIGTYPE * + %{ class($result) <- "$R_class"; %} - %typemap(scoerceout) SWIGTYPE - %{ $result <- new("$&R_class", ref=$result); %} - - %typemap(scoerceout) SWIGTYPE & - %{ $result <- new("$R_class", ref=$result) ; %} - - %typemap(scoerceout) SWIGTYPE * - %{ $result <- new("$R_class", ref=$result) ; %} - - %typemap(scoerceout) SWIGTYPE *const - %{ $result <- new("$R_class", ref=$result) ; %} +%typemap(scoerceout) SWIGTYPE *const + %{ class($result) <- "$R_class"; %} - /* Override the SWIGTYPE * above. */ %typemap(scoerceout) char, char *, @@ -220,10 +208,8 @@ signed long &, unsigned long, unsigned long &, - signed char, - signed char &, - unsigned char, - unsigned char & + unsigned char *, + unsigned char & %{ %} #if 0 Modified: trunk/Source/Modules/r.cxx =================================================================== --- trunk/Source/Modules/r.cxx 2012-08-20 21:14:24 UTC (rev 13712) +++ trunk/Source/Modules/r.cxx 2012-08-20 21:20:19 UTC (rev 13713) @@ -1891,9 +1891,6 @@ if(nargs == -1) nargs = getFunctionPointerNumArgs(p, tt); - Printv(sfun->code, "if (.hasSlot(", name, ", \"ref\")) {\n", - name, " = slot(", name, ", \"ref\");\n", - "}\n", NIL); String *snargs = NewStringf("%d", nargs); Printv(sfun->code, "if(is.function(", name, ")) {", "\n", "assert('...' %in% names(formals(", name, @@ -2115,8 +2112,7 @@ { String *finalizer = NewString(iname); Replace(finalizer, "new_", "", DOH_REPLACE_FIRST); - Printf(sfun->code, "if (.hasSlot(ans, \"ref\")) {\n" - "reg.finalizer(ans@ref, delete_%s); }\n", finalizer); + Printf(sfun->code, "reg.finalizer(ans, delete_%s)\n", finalizer); } Printf(sfun->code, "ans\n"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |