From: SourceForge.net <no...@so...> - 2010-09-03 19:53:47
|
Bugs item #3058394, was opened at 2010-09-02 21:28 Message generated for change (Comment added) made by You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=3058394&group_id=1645 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: php Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Ryan () Assigned to: Olly Betts (olly) Summary: OUTPUT typemap lacks return keyword in PHP class wrappers Initial Comment: In the "Pointers and References" documentation for PHP, this example is used to demonstrate the OUTPUT typemap in typemaps.i: %module example %include "typemaps.i" void add( int *INPUT, int *INPUT, int *OUTPUT); In PHP, the output parameter becomes the return value: $result = add($in1,$in2); However, SWIG generates this PHP class wrapper: abstract class example { static function add($INPUT,$INPUT_) { add($INPUT,$INPUT_); } } The return value of add is lost, so it is not possible to get the OUTPUT argument through the wrapper class function. For example, this will not work: $result = example.add($in1,$in2); The problem seems to be that an argout typemap does not have any effect on the oowrapper generated by PHP::functionWrapper() in php.cxx. The attached patch accounts for this by checking that a function is both void and has no argout parameters before omitting the return statement. Note: Cmp(d, "void") shows up in a few other places in php.cxx, but I'm not sure if they are also effected by this issue, so I have not changed them. ---------------------------------------------------------------------- >Comment By: Ryan () Date: 2010-09-03 19:53 Message: To check for this in the tests, in Examples/php/cpointer/runme.php change: $r = sub(37,42); to $r = example::sub(37,42); ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=101645&aid=3058394&group_id=1645 |