From: <xav...@us...> - 2011-08-31 20:54:17
|
Revision: 12794 http://swig.svn.sourceforge.net/swig/?rev=12794&view=rev Author: xavier98 Date: 2011-08-31 20:54:11 +0000 (Wed, 31 Aug 2011) Log Message: ----------- Added example of friend operator use to Examples/octave/operator, fixed minor bug that causes a panic in octave 3.0.5. Tested examples work for octave 3.0.5, 3.2.4, and 3.4.0. (thanks to Karl Wette) Modified Paths: -------------- trunk/Examples/octave/operator/example.h trunk/Examples/octave/operator/example.i trunk/Examples/octave/operator/runme.m trunk/Lib/octave/octrun.swg Modified: trunk/Examples/octave/operator/example.h =================================================================== --- trunk/Examples/octave/operator/example.h 2011-08-31 20:50:59 UTC (rev 12793) +++ trunk/Examples/octave/operator/example.h 2011-08-31 20:54:11 UTC (rev 12794) @@ -30,7 +30,6 @@ double im() const { return ipart; } }; - - - - +ComplexVal operator*(const double &s, const ComplexVal &c) { + return ComplexVal(s*c.re(), s*c.im()); +} Modified: trunk/Examples/octave/operator/example.i =================================================================== --- trunk/Examples/octave/operator/example.i 2011-08-31 20:50:59 UTC (rev 12793) +++ trunk/Examples/octave/operator/example.i 2011-08-31 20:54:11 UTC (rev 12794) @@ -5,6 +5,9 @@ #include "example.h" %} +/* Rename friend operator */ +%rename(op_scalar_mul_ComplexVal) operator*(const double&, const ComplexVal&); + /* Now grab the original header file */ %include "example.h" @@ -20,5 +23,3 @@ return ComplexVal($self->re()*j,$self->im()*j); } }; - - Modified: trunk/Examples/octave/operator/runme.m =================================================================== --- trunk/Examples/octave/operator/runme.m 2011-08-31 20:50:59 UTC (rev 12793) +++ trunk/Examples/octave/operator/runme.m 2011-08-31 20:54:11 UTC (rev 12794) @@ -22,3 +22,5 @@ # paren overloading printf("a(3)= %s\n",disp(a(3))); +# friend operator +printf("2*a = %s\n",disp(2*a)); Modified: trunk/Lib/octave/octrun.swg =================================================================== --- trunk/Lib/octave/octrun.swg 2011-08-31 20:50:59 UTC (rev 12793) +++ trunk/Lib/octave/octrun.swg 2011-08-31 20:54:11 UTC (rev 12794) @@ -789,7 +789,7 @@ octave_value fcn = get_global_value(symbol, true); if (!fcn.is_function() && !fcn.is_function_handle()) return false; - ret = fcn.subsref("(", std::list < octave_value_list > (1, args)); + ret = fcn.subsref("(", std::list < octave_value_list > (1, args), 1); return true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |