[PHP] Fix handling of OUTPUT typemaps (Patch from Ryan in SF#3058394).
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12208 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
547019e0d4
commit
a25ccbf58b
3 changed files with 20 additions and 13 deletions
|
|
@ -5,6 +5,9 @@ See the RELEASENOTES file for a summary of changes in each release.
|
|||
Version 2.0.1 (in progress)
|
||||
===========================
|
||||
|
||||
2010-09-08: olly
|
||||
[PHP] Fix handling of OUTPUT typemaps (Patch from Ryan in SF#3058394).
|
||||
|
||||
2010-09-03: wsfulton
|
||||
Fix erroneous line numbers in error messages for macro expansions, for example,
|
||||
the error message now points to instantation of the macro, ie the last line here:
|
||||
|
|
|
|||
|
|
@ -6,40 +6,42 @@
|
|||
|
||||
print "Testing the pointer library\n";
|
||||
|
||||
$a = new_intp();
|
||||
$b = new_intp();
|
||||
$c = new_intp();
|
||||
intp_assign($a,37);
|
||||
intp_assign($b,42);
|
||||
$a = example::new_intp();
|
||||
$b = example::new_intp();
|
||||
$c = example::new_intp();
|
||||
example::intp_assign($a,37);
|
||||
example::intp_assign($b,42);
|
||||
|
||||
print " a = $a\n";
|
||||
print " b = $b\n";
|
||||
print " c = $c\n";
|
||||
|
||||
# Call the add() function wuth some pointers
|
||||
add($a,$b,$c);
|
||||
example::add($a,$b,$c);
|
||||
|
||||
# Now get the result
|
||||
$r = intp_value($c);
|
||||
$r = example::intp_value($c);
|
||||
|
||||
print " 37 + 42 = $r\n";
|
||||
|
||||
# Clean up the pointers
|
||||
delete_intp($a);
|
||||
delete_intp($b);
|
||||
delete_intp($c);
|
||||
example::delete_intp($a);
|
||||
example::delete_intp($b);
|
||||
example::delete_intp($c);
|
||||
|
||||
# Now try the typemap library
|
||||
# This should be much easier. Now how it is no longer
|
||||
# necessary to manufacture pointers.
|
||||
|
||||
print "Trying the typemap library\n";
|
||||
$r = sub(37,42);
|
||||
$r = example::sub(37,42);
|
||||
print " 37 - 42 = $r\n";
|
||||
|
||||
# Now try the version with multiple return values
|
||||
# print "Testing multiple return values\n";
|
||||
# ($q,$r) = divide(42,37);
|
||||
# $a = example::divide(42,37);
|
||||
# $q = $a[0]
|
||||
# $r = $a[1]
|
||||
# print " 42/37 = $q remainder $r\n";
|
||||
|
||||
?>
|
||||
|
|
|
|||
|
|
@ -915,8 +915,10 @@ public:
|
|||
}
|
||||
|
||||
/* Insert argument output code */
|
||||
bool hasargout = false;
|
||||
for (i = 0, p = l; p; i++) {
|
||||
if ((tm = Getattr(p, "tmap:argout"))) {
|
||||
hasargout = true;
|
||||
Replaceall(tm, "$source", Getattr(p, "lname"));
|
||||
// Replaceall(tm,"$input",Getattr(p,"lname"));
|
||||
Replaceall(tm, "$target", "return_value");
|
||||
|
|
@ -1663,7 +1665,7 @@ public:
|
|||
}
|
||||
}
|
||||
Printf(output, "%s", prepare);
|
||||
} else if (Cmp(d, "void") == 0) {
|
||||
} else if (Cmp(d, "void") == 0 && !hasargout) {
|
||||
if (Cmp(invoke, "$r") != 0)
|
||||
Printf(output, "\t\t%s;\n", invoke);
|
||||
} else if (is_class(d)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue