[PHP] The usage of $input in PHP directorout typemaps has been

changed to be consistent with other languages.  The typemaps
provided by SWIG have been updated accordingly, but if you
have written your own directorout typemaps, you'll need to
update $input to &$input (or make equivalent changes).

*** POTENTIAL INCOMPATIBILITY  ***
This commit is contained in:
Olly Betts 2013-12-12 15:39:10 +13:00
commit cecd89f66f
6 changed files with 17 additions and 27 deletions

View file

@ -13,24 +13,6 @@
// Can't use the %typemap(directorout) MyType & = SWIGTYPE & approach as non-director languages don't define any directorout typemaps
%typemap(directorout) MyType &Class1::foo2, MyType &foo1 %{ /* special start */ $input = 0; /* special end */ %}
#ifdef SWIGPHP
%typemap(directorout, warning="PHP directorout typemaps need fixing") MyType &Class1::foo2, MyType &foo1 %{ /* special start */ /*$input = 0;*/ /* special end */ %}
/* Patch to make $input work same as other languages. Then $input needs changing to &$input in most (maybe all) typemaps.
--- a/Source/Modules/php.cxx
+++ b/Source/Modules/php.cxx
@@ -2631,8 +2631,7 @@ done:
if (!is_void) {
tm = Swig_typemap_lookup("directorout", n, Swig_cresult_name(), w);
if (tm != 0) {
- static const String *amp_result = NewStringf("&%s", Swig_cresult_name());
- Replaceall(tm, "$input", amp_result);
+ Replaceall(tm, "$input", Swig_cresult_name());
char temp[24];
sprintf(temp, "%d", idx);
Replaceall(tm, "$argnum", temp);
*/
#endif
#ifdef SWIGCSHARP
%typemap(csdirectorout) MyType & %{ WILL_NOT_COMPILE %}