From: <ol...@us...> - 2008-07-04 01:22:13
|
Revision: 10650 http://swig.svn.sourceforge.net/swig/?rev=10650&view=rev Author: olly Date: 2008-07-03 18:22:11 -0700 (Thu, 03 Jul 2008) Log Message: ----------- [PHP] For std_vector.i and std_map.i, rename empty() to is_empty() since "empty" is a PHP reserved word. Based of patch from Mark Klein in SF#1943417. Modified Paths: -------------- trunk/CHANGES.current trunk/Lib/php/std_map.i trunk/Lib/php/std_vector.i Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2008-07-04 01:02:22 UTC (rev 10649) +++ trunk/CHANGES.current 2008-07-04 01:22:11 UTC (rev 10650) @@ -1,7 +1,12 @@ Version 1.3.37 (in progress) ============================= -2008-07-03: olly +2008-07-04: olly + [PHP] For std_vector.i and std_map.i, rename empty() to is_empty() + since "empty" is a PHP reserved word. Based of patch from Mark Klein + in SF#1943417. + +2008-07-04: olly [PHP] The deprecated command line option "-make" has been removed. Searches on Google codesearch suggest that nobody is using it now anyway. Modified: trunk/Lib/php/std_map.i =================================================================== --- trunk/Lib/php/std_map.i 2008-07-04 01:02:22 UTC (rev 10649) +++ trunk/Lib/php/std_map.i 2008-07-04 01:22:11 UTC (rev 10650) @@ -30,6 +30,7 @@ map(const map<K,T> &); unsigned int size() const; + %rename(is_empty) empty; bool empty() const; void clear(); %extend { @@ -69,6 +70,7 @@ map(const map<K,T> &); unsigned int size() const; + %rename(is_empty) empty; bool empty() const; void clear(); %extend { @@ -105,6 +107,7 @@ map(const map<K,T> &); unsigned int size() const; + %rename(is_empty) empty; bool empty() const; void clear(); %extend { @@ -142,6 +145,7 @@ map(const map<K,T> &); unsigned int size() const; + %rename(is_empty) empty; bool empty() const; void clear(); %extend { Modified: trunk/Lib/php/std_vector.i =================================================================== --- trunk/Lib/php/std_vector.i 2008-07-04 01:02:22 UTC (rev 10649) +++ trunk/Lib/php/std_vector.i 2008-07-04 01:22:11 UTC (rev 10650) @@ -48,6 +48,7 @@ public: vector(unsigned int size = 0); unsigned int size() const; + %rename(is_empty) empty; bool empty() const; void clear(); %rename(push) push_back; @@ -86,6 +87,7 @@ public: vector(unsigned int size = 0); unsigned int size() const; + %rename(is_empty) empty; bool empty() const; void clear(); %rename(push) push_back; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <wsf...@us...> - 2008-07-14 21:09:26
|
Revision: 10662 http://swig.svn.sourceforge.net/swig/?rev=10662&view=rev Author: wsfulton Date: 2008-07-14 14:09:23 -0700 (Mon, 14 Jul 2008) Log Message: ----------- Fix director typemaps for pointers so that NULL pointers are correctly marshalled to C#/Java null in director methods Modified Paths: -------------- trunk/CHANGES.current trunk/Examples/test-suite/director_basic.i trunk/Examples/test-suite/java/director_basic_runme.java trunk/Lib/csharp/csharp.swg trunk/Lib/java/java.swg Added Paths: ----------- trunk/Examples/test-suite/csharp/director_basic_runme.cs Modified: trunk/CHANGES.current =================================================================== --- trunk/CHANGES.current 2008-07-14 19:38:10 UTC (rev 10661) +++ trunk/CHANGES.current 2008-07-14 21:09:23 UTC (rev 10662) @@ -1,6 +1,10 @@ Version 1.3.37 (in progress) ============================= +2008-07-14: wsfultonn + [Java, C#] Fix director typemaps for pointers so that NULL pointers are correctly + marshalled to C#/Java null in director methods. + 2008-07-04: olly [PHP] For std_vector.i and std_map.i, rename empty() to is_empty() since "empty" is a PHP reserved word. Based of patch from Mark Klein Added: trunk/Examples/test-suite/csharp/director_basic_runme.cs =================================================================== --- trunk/Examples/test-suite/csharp/director_basic_runme.cs (rev 0) +++ trunk/Examples/test-suite/csharp/director_basic_runme.cs 2008-07-14 21:09:23 UTC (rev 10662) @@ -0,0 +1,74 @@ +using System; + +namespace director_basicNamespace { + +public class runme +{ + static void Main() + { + runme r = new runme(); + r.run(); + } + + void run() + { + director_basic_MyFoo a = new director_basic_MyFoo(); + + if (a.ping() != "director_basic_MyFoo::ping()") { + throw new Exception ( "a.ping()" ); + } + + if (a.pong() != "Foo::pong();director_basic_MyFoo::ping()") { + throw new Exception ( "a.pong()" ); + } + + Foo b = new Foo(); + + if (b.ping() != "Foo::ping()") { + throw new Exception ( "b.ping()" ); + } + + if (b.pong() != "Foo::pong();Foo::ping()") { + throw new Exception ( "b.pong()" ); + } + + A1 a1 = new A1(1, false); + a1.Dispose(); + + { + MyOverriddenClass my = new MyOverriddenClass(); + + my.expectNull = true; + if (MyClass.call_pmethod(my, null) != null) + throw new Exception("null pointer marshalling problem"); + + Bar myBar = new Bar(); + my.expectNull = false; + Bar myNewBar = MyClass.call_pmethod(my, myBar); + if (myNewBar == null) + throw new Exception("non-null pointer marshalling problem"); + myNewBar.x = 10; + } + } +} + +class director_basic_MyFoo : Foo { + public director_basic_MyFoo() : base() { + } + + public override string ping() { + return "director_basic_MyFoo::ping()"; + } +} + +class MyOverriddenClass : MyClass { + public bool expectNull = false; + public bool nonNullReceived = false; + public override Bar pmethod(Bar b) { + if ( expectNull && (b != null) ) + throw new Exception("null not received as expected"); + return b; + } +} + +} Modified: trunk/Examples/test-suite/director_basic.i =================================================================== --- trunk/Examples/test-suite/director_basic.i 2008-07-14 19:38:10 UTC (rev 10661) +++ trunk/Examples/test-suite/director_basic.i 2008-07-14 21:09:23 UTC (rev 10662) @@ -112,12 +112,14 @@ return vmethod(b); } - static MyClass *get_self(MyClass *c) { return c; } - + + static Bar * call_pmethod(MyClass *myclass, Bar *b) { + return myclass->pmethod(b); + } }; template<class T> Modified: trunk/Examples/test-suite/java/director_basic_runme.java =================================================================== --- trunk/Examples/test-suite/java/director_basic_runme.java 2008-07-14 19:38:10 UTC (rev 10661) +++ trunk/Examples/test-suite/java/director_basic_runme.java 2008-07-14 21:09:23 UTC (rev 10662) @@ -14,28 +14,43 @@ public static void main(String argv[]) { - director_basic_MyFoo a = new director_basic_MyFoo(); + director_basic_MyFoo a = new director_basic_MyFoo(); - if (!a.ping().equals("director_basic_MyFoo::ping()")) { - throw new RuntimeException ( "a.ping()" ); - } + if (!a.ping().equals("director_basic_MyFoo::ping()")) { + throw new RuntimeException ( "a.ping()" ); + } - if (!a.pong().equals("Foo::pong();director_basic_MyFoo::ping()")) { - throw new RuntimeException ( "a.pong()" ); - } + if (!a.pong().equals("Foo::pong();director_basic_MyFoo::ping()")) { + throw new RuntimeException ( "a.pong()" ); + } - Foo b = new Foo(); + Foo b = new Foo(); - if (!b.ping().equals("Foo::ping()")) { - throw new RuntimeException ( "b.ping()" ); - } + if (!b.ping().equals("Foo::ping()")) { + throw new RuntimeException ( "b.ping()" ); + } - if (!b.pong().equals("Foo::pong();Foo::ping()")) { - throw new RuntimeException ( "b.pong()" ); - } + if (!b.pong().equals("Foo::pong();Foo::ping()")) { + throw new RuntimeException ( "b.pong()" ); + } - A1 a1 = new A1(1, false); - a1.delete(); + A1 a1 = new A1(1, false); + a1.delete(); + + { + MyOverriddenClass my = new MyOverriddenClass(); + + my.expectNull = true; + if (MyClass.call_pmethod(my, null) != null) + throw new RuntimeException("null pointer marshalling problem"); + + Bar myBar = new Bar(); + my.expectNull = false; + Bar myNewBar = MyClass.call_pmethod(my, myBar); + if (myNewBar == null) + throw new RuntimeException("non-null pointer marshalling problem"); + myNewBar.setX(10); + } } } @@ -45,3 +60,13 @@ } } +class MyOverriddenClass extends MyClass { + public boolean expectNull = false; + public boolean nonNullReceived = false; + public Bar pmethod(Bar b) { + if ( expectNull && (b != null) ) + throw new RuntimeException("null not received as expected"); + return b; + } +} + Modified: trunk/Lib/csharp/csharp.swg =================================================================== --- trunk/Lib/csharp/csharp.swg 2008-07-14 19:38:10 UTC (rev 10661) +++ trunk/Lib/csharp/csharp.swg 2008-07-14 21:09:23 UTC (rev 10662) @@ -428,7 +428,8 @@ %typemap(directorin) SWIGTYPE & %{ $input = ($1_ltype) &$1; %} -%typemap(csdirectorin) SWIGTYPE *, SWIGTYPE (CLASS::*), SWIGTYPE & "new $csclassname($iminput, false)" +%typemap(csdirectorin) SWIGTYPE *, SWIGTYPE (CLASS::*) "($iminput == IntPtr.Zero) ? null : new $csclassname($iminput, false)" +%typemap(csdirectorin) SWIGTYPE & "new $csclassname($iminput, false)" %typemap(csdirectorout) SWIGTYPE *, SWIGTYPE (CLASS::*), SWIGTYPE & "$csclassname.getCPtr($cscall).Handle" /* Default array handling */ Modified: trunk/Lib/java/java.swg =================================================================== --- trunk/Lib/java/java.swg 2008-07-14 19:38:10 UTC (rev 10661) +++ trunk/Lib/java/java.swg 2008-07-14 21:09:23 UTC (rev 10662) @@ -620,7 +620,8 @@ %typemap(directorin,descriptor="L$packagepath/$javaclassname;") SWIGTYPE & %{ *($&1_ltype)&$input = ($1_ltype) &$1; %} -%typemap(javadirectorin) SWIGTYPE *, SWIGTYPE (CLASS::*), SWIGTYPE & "new $javaclassname($jniinput, false)" +%typemap(javadirectorin) SWIGTYPE *, SWIGTYPE (CLASS::*) "($jniinput == 0) ? null : new $javaclassname($jniinput, false)" +%typemap(javadirectorin) SWIGTYPE & "new $javaclassname($jniinput, false)" %typemap(javadirectorout) SWIGTYPE *, SWIGTYPE (CLASS::*), SWIGTYPE & "$javaclassname.getCPtr($javacall)" /* Default array handling */ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |