mirror of https://github.com/swig/swig
Add SWIGTYPE *& typemaps for PHP
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11556 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
3675a7baf7
commit
45359dc12c
|
@ -0,0 +1,14 @@
|
|||
<?php
|
||||
|
||||
require "tests.php";
|
||||
require "pointer_reference.php";
|
||||
|
||||
$s = get();
|
||||
check::equal(Struct_value_get($s), 10, "pointer_reference.get failed");
|
||||
|
||||
$ss = new_Struct(20);
|
||||
set($ss);
|
||||
check::equal(Struct_value_get(Struct_instance()), 20, "pointer_reference.set failed");
|
||||
|
||||
check::done();
|
||||
?>
|
|
@ -114,6 +114,14 @@
|
|||
}
|
||||
}
|
||||
|
||||
%typemap(in) SWIGTYPE *& ($*ltype temp)
|
||||
{
|
||||
if(SWIG_ConvertPtr(*$input, (void **) &temp, $*1_descriptor, 0) < 0) {
|
||||
SWIG_PHP_Error(E_ERROR, "Type error in argument $argnum of $symname. Expected $*1_descriptor");
|
||||
}
|
||||
$1 = &temp;
|
||||
}
|
||||
|
||||
%typemap(in) SWIGTYPE *DISOWN
|
||||
{
|
||||
if(SWIG_ConvertPtr(*$input, (void **) &$1, $1_descriptor, SWIG_POINTER_DISOWN ) < 0) {
|
||||
|
@ -284,6 +292,11 @@
|
|||
SWIG_SetPointerZval(return_value, (void *)$1, $1_descriptor, $owner);
|
||||
%}
|
||||
|
||||
%typemap(out) SWIGTYPE *&
|
||||
%{
|
||||
SWIG_SetPointerZval(return_value, (void *)*$1, $*1_descriptor, $owner);
|
||||
%}
|
||||
|
||||
%typemap(directorin) SWIGTYPE *,
|
||||
SWIGTYPE [],
|
||||
SWIGTYPE &
|
||||
|
@ -325,6 +338,10 @@
|
|||
}
|
||||
#endif
|
||||
|
||||
/* Array reference typemaps */
|
||||
%apply SWIGTYPE & { SWIGTYPE ((&)[ANY]) }
|
||||
|
||||
|
||||
%typemap(out) void "";
|
||||
|
||||
%typemap(out) char [ANY]
|
||||
|
@ -368,7 +385,8 @@
|
|||
|
||||
%typecheck(SWIG_TYPECHECK_POINTER) SWIGTYPE *,
|
||||
SWIGTYPE [],
|
||||
SWIGTYPE &
|
||||
SWIGTYPE &,
|
||||
SWIGTYPE *&
|
||||
{
|
||||
void *tmp;
|
||||
_v = (SWIG_ConvertPtr(*$input, (void**)&tmp, $1_descriptor, 0) >= 0);
|
||||
|
|
Loading…
Reference in New Issue