[PHP] Add missing INPUT, OUTPUT and INOUT typemaps in the typemaps.i library for primitive reference types as well as signed char * and bool *.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12480 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
630e438c6a
commit
28deca09be
2 changed files with 69 additions and 25 deletions
|
|
@ -5,6 +5,10 @@ See the RELEASENOTES file for a summary of changes in each release.
|
||||||
Version 2.0.2 (in progress)
|
Version 2.0.2 (in progress)
|
||||||
===========================
|
===========================
|
||||||
|
|
||||||
|
2011-02-19: wsfulton
|
||||||
|
[PHP] Add missing INPUT, OUTPUT and INOUT typemaps in the typemaps.i library
|
||||||
|
for primitive reference types as well as signed char * and bool *.
|
||||||
|
|
||||||
2011-02-19: olly
|
2011-02-19: olly
|
||||||
[PHP] Address bug in PHP on some platforms/architectures which
|
[PHP] Address bug in PHP on some platforms/architectures which
|
||||||
results in zend_error_noreturn() not being available using
|
results in zend_error_noreturn() not being available using
|
||||||
|
|
|
||||||
|
|
@ -24,76 +24,108 @@
|
||||||
* its value can be changed by foo().
|
* its value can be changed by foo().
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
%define double_typemap(TYPE)
|
%define BOOL_TYPEMAP(TYPE)
|
||||||
%typemap(in) TYPE *INPUT(TYPE temp)
|
%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp)
|
||||||
|
%{
|
||||||
|
convert_to_boolean_ex($input);
|
||||||
|
temp = Z_LVAL_PP($input) ? true : false;
|
||||||
|
$1 = &temp;
|
||||||
|
%}
|
||||||
|
%typemap(argout) TYPE *INPUT, TYPE &INPUT "";
|
||||||
|
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;";
|
||||||
|
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT
|
||||||
|
{
|
||||||
|
zval *o;
|
||||||
|
MAKE_STD_ZVAL(o);
|
||||||
|
ZVAL_BOOL(o,temp$argnum);
|
||||||
|
t_output_helper( &$result, o );
|
||||||
|
}
|
||||||
|
%typemap(in) TYPE *REFERENCE (TYPE lvalue), TYPE &REFERENCE (TYPE lvalue)
|
||||||
|
%{
|
||||||
|
convert_to_boolean_ex($input);
|
||||||
|
lvalue = (*$input)->value.lval ? true : false;
|
||||||
|
$1 = &lvalue;
|
||||||
|
%}
|
||||||
|
%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE
|
||||||
|
%{
|
||||||
|
(*$arg)->value.lval = lvalue$argnum ? true : false;
|
||||||
|
(*$arg)->type = IS_BOOL;
|
||||||
|
%}
|
||||||
|
%enddef
|
||||||
|
|
||||||
|
%define DOUBLE_TYPEMAP(TYPE)
|
||||||
|
%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp)
|
||||||
%{
|
%{
|
||||||
convert_to_double_ex($input);
|
convert_to_double_ex($input);
|
||||||
temp = (TYPE) Z_DVAL_PP($input);
|
temp = (TYPE) Z_DVAL_PP($input);
|
||||||
$1 = &temp;
|
$1 = &temp;
|
||||||
%}
|
%}
|
||||||
%typemap(argout) TYPE *INPUT "";
|
%typemap(argout) TYPE *INPUT, TYPE &INPUT "";
|
||||||
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp) "$1 = &temp;";
|
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;";
|
||||||
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT
|
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT
|
||||||
{
|
{
|
||||||
zval *o;
|
zval *o;
|
||||||
MAKE_STD_ZVAL(o);
|
MAKE_STD_ZVAL(o);
|
||||||
ZVAL_DOUBLE(o,temp$argnum);
|
ZVAL_DOUBLE(o,temp$argnum);
|
||||||
t_output_helper( &$result, o );
|
t_output_helper( &$result, o );
|
||||||
}
|
}
|
||||||
%typemap(in) TYPE *REFERENCE (TYPE dvalue)
|
%typemap(in) TYPE *REFERENCE (TYPE dvalue), TYPE &REFERENCE (TYPE dvalue)
|
||||||
%{
|
%{
|
||||||
convert_to_double_ex($input);
|
convert_to_double_ex($input);
|
||||||
dvalue = (TYPE) (*$input)->value.dval;
|
dvalue = (TYPE) (*$input)->value.dval;
|
||||||
$1 = &dvalue;
|
$1 = &dvalue;
|
||||||
%}
|
%}
|
||||||
%typemap(argout) TYPE *REFERENCE
|
%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE
|
||||||
%{
|
%{
|
||||||
$1->value.dval = (double)(lvalue$argnum);
|
$1->value.dval = (double)(lvalue$argnum);
|
||||||
$1->type = IS_DOUBLE;
|
$1->type = IS_DOUBLE;
|
||||||
%}
|
%}
|
||||||
%enddef
|
%enddef
|
||||||
|
|
||||||
%define int_typemap(TYPE)
|
%define INT_TYPEMAP(TYPE)
|
||||||
%typemap(in) TYPE *INPUT(TYPE temp)
|
%typemap(in) TYPE *INPUT(TYPE temp), TYPE &INPUT(TYPE temp)
|
||||||
%{
|
%{
|
||||||
convert_to_long_ex($input);
|
convert_to_long_ex($input);
|
||||||
temp = (TYPE) Z_LVAL_PP($input);
|
temp = (TYPE) Z_LVAL_PP($input);
|
||||||
$1 = &temp;
|
$1 = &temp;
|
||||||
%}
|
%}
|
||||||
%typemap(argout) TYPE *INPUT "";
|
%typemap(argout) TYPE *INPUT, TYPE &INPUT "";
|
||||||
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp) "$1 = &temp;";
|
%typemap(in,numinputs=0) TYPE *OUTPUT(TYPE temp), TYPE &OUTPUT(TYPE temp) "$1 = &temp;";
|
||||||
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT
|
%typemap(argout,fragment="t_output_helper") TYPE *OUTPUT, TYPE &OUTPUT
|
||||||
{
|
{
|
||||||
zval *o;
|
zval *o;
|
||||||
MAKE_STD_ZVAL(o);
|
MAKE_STD_ZVAL(o);
|
||||||
ZVAL_LONG(o,temp$argnum);
|
ZVAL_LONG(o,temp$argnum);
|
||||||
t_output_helper( &$result, o );
|
t_output_helper( &$result, o );
|
||||||
}
|
}
|
||||||
%typemap(in) TYPE *REFERENCE (TYPE lvalue)
|
%typemap(in) TYPE *REFERENCE (TYPE lvalue), TYPE &REFERENCE (TYPE lvalue)
|
||||||
%{
|
%{
|
||||||
convert_to_long_ex($input);
|
convert_to_long_ex($input);
|
||||||
lvalue = (TYPE) (*$input)->value.lval;
|
lvalue = (TYPE) (*$input)->value.lval;
|
||||||
$1 = &lvalue;
|
$1 = &lvalue;
|
||||||
%}
|
%}
|
||||||
%typemap(argout) TYPE *REFERENCE
|
%typemap(argout) TYPE *REFERENCE, TYPE &REFERENCE
|
||||||
%{
|
%{
|
||||||
(*$arg)->value.lval = (long)(lvalue$argnum);
|
(*$arg)->value.lval = (long)(lvalue$argnum);
|
||||||
(*$arg)->type = IS_LONG;
|
(*$arg)->type = IS_LONG;
|
||||||
%}
|
%}
|
||||||
%enddef
|
%enddef
|
||||||
|
|
||||||
double_typemap(float);
|
BOOL_TYPEMAP(bool);
|
||||||
double_typemap(double);
|
|
||||||
|
|
||||||
int_typemap(int);
|
DOUBLE_TYPEMAP(float);
|
||||||
int_typemap(short);
|
DOUBLE_TYPEMAP(double);
|
||||||
int_typemap(long);
|
|
||||||
int_typemap(unsigned int);
|
|
||||||
int_typemap(unsigned short);
|
|
||||||
int_typemap(unsigned long);
|
|
||||||
int_typemap(unsigned char);
|
|
||||||
|
|
||||||
int_typemap(long long);
|
INT_TYPEMAP(int);
|
||||||
|
INT_TYPEMAP(short);
|
||||||
|
INT_TYPEMAP(long);
|
||||||
|
INT_TYPEMAP(unsigned int);
|
||||||
|
INT_TYPEMAP(unsigned short);
|
||||||
|
INT_TYPEMAP(unsigned long);
|
||||||
|
INT_TYPEMAP(unsigned char);
|
||||||
|
INT_TYPEMAP(signed char);
|
||||||
|
|
||||||
|
INT_TYPEMAP(long long);
|
||||||
%typemap(argout,fragment="t_output_helper") long long *OUTPUT
|
%typemap(argout,fragment="t_output_helper") long long *OUTPUT
|
||||||
{
|
{
|
||||||
zval *o;
|
zval *o;
|
||||||
|
|
@ -134,7 +166,7 @@ int_typemap(long long);
|
||||||
ZVAL_STRING($result, temp, 1);
|
ZVAL_STRING($result, temp, 1);
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
int_typemap(unsigned long long);
|
INT_TYPEMAP(unsigned long long);
|
||||||
%typemap(argout,fragment="t_output_helper") unsigned long long *OUTPUT
|
%typemap(argout,fragment="t_output_helper") unsigned long long *OUTPUT
|
||||||
{
|
{
|
||||||
zval *o;
|
zval *o;
|
||||||
|
|
@ -176,6 +208,7 @@ int_typemap(unsigned long long);
|
||||||
}
|
}
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
%typemap(in) bool *INOUT = bool *INPUT;
|
||||||
%typemap(in) float *INOUT = float *INPUT;
|
%typemap(in) float *INOUT = float *INPUT;
|
||||||
%typemap(in) double *INOUT = double *INPUT;
|
%typemap(in) double *INOUT = double *INPUT;
|
||||||
|
|
||||||
|
|
@ -188,7 +221,9 @@ int_typemap(unsigned long long);
|
||||||
%typemap(in) unsigned long *INOUT = unsigned long *INPUT;
|
%typemap(in) unsigned long *INOUT = unsigned long *INPUT;
|
||||||
%typemap(in) unsigned char *INOUT = unsigned char *INPUT;
|
%typemap(in) unsigned char *INOUT = unsigned char *INPUT;
|
||||||
%typemap(in) unsigned long long *INOUT = unsigned long long *INPUT;
|
%typemap(in) unsigned long long *INOUT = unsigned long long *INPUT;
|
||||||
|
%typemap(in) signed char *INOUT = signed char *INPUT;
|
||||||
|
|
||||||
|
%typemap(in) bool &INOUT = bool *INPUT;
|
||||||
%typemap(in) float &INOUT = float *INPUT;
|
%typemap(in) float &INOUT = float *INPUT;
|
||||||
%typemap(in) double &INOUT = double *INPUT;
|
%typemap(in) double &INOUT = double *INPUT;
|
||||||
|
|
||||||
|
|
@ -203,7 +238,9 @@ int_typemap(unsigned long long);
|
||||||
%typemap(in) unsigned char &INOUT = unsigned char *INPUT;
|
%typemap(in) unsigned char &INOUT = unsigned char *INPUT;
|
||||||
%typemap(in) unsigned long long &INOUT = unsigned long long *INPUT;
|
%typemap(in) unsigned long long &INOUT = unsigned long long *INPUT;
|
||||||
%typemap(in) unsigned long long &INPUT = unsigned long long *INPUT;
|
%typemap(in) unsigned long long &INPUT = unsigned long long *INPUT;
|
||||||
|
%typemap(in) signed char &INOUT = signed char *INPUT;
|
||||||
|
|
||||||
|
%typemap(argout) bool *INOUT = bool *OUTPUT;
|
||||||
%typemap(argout) float *INOUT = float *OUTPUT;
|
%typemap(argout) float *INOUT = float *OUTPUT;
|
||||||
%typemap(argout) double *INOUT= double *OUTPUT;
|
%typemap(argout) double *INOUT= double *OUTPUT;
|
||||||
|
|
||||||
|
|
@ -215,7 +252,9 @@ int_typemap(unsigned long long);
|
||||||
%typemap(argout) unsigned long *INOUT = unsigned long *OUTPUT;
|
%typemap(argout) unsigned long *INOUT = unsigned long *OUTPUT;
|
||||||
%typemap(argout) unsigned char *INOUT = unsigned char *OUTPUT;
|
%typemap(argout) unsigned char *INOUT = unsigned char *OUTPUT;
|
||||||
%typemap(argout) unsigned long long *INOUT = unsigned long long *OUTPUT;
|
%typemap(argout) unsigned long long *INOUT = unsigned long long *OUTPUT;
|
||||||
|
%typemap(argout) signed char *INOUT = signed char *OUTPUT;
|
||||||
|
|
||||||
|
%typemap(argout) bool &INOUT = bool *OUTPUT;
|
||||||
%typemap(argout) float &INOUT = float *OUTPUT;
|
%typemap(argout) float &INOUT = float *OUTPUT;
|
||||||
%typemap(argout) double &INOUT= double *OUTPUT;
|
%typemap(argout) double &INOUT= double *OUTPUT;
|
||||||
|
|
||||||
|
|
@ -227,6 +266,7 @@ int_typemap(unsigned long long);
|
||||||
%typemap(argout) unsigned long &INOUT = unsigned long *OUTPUT;
|
%typemap(argout) unsigned long &INOUT = unsigned long *OUTPUT;
|
||||||
%typemap(argout) unsigned char &INOUT = unsigned char *OUTPUT;
|
%typemap(argout) unsigned char &INOUT = unsigned char *OUTPUT;
|
||||||
%typemap(argout) unsigned long long &INOUT = unsigned long long *OUTPUT;
|
%typemap(argout) unsigned long long &INOUT = unsigned long long *OUTPUT;
|
||||||
|
%typemap(argout) signed char &INOUT = signed char *OUTPUT;
|
||||||
|
|
||||||
%typemap(in) char INPUT[ANY] ( char temp[$1_dim0] )
|
%typemap(in) char INPUT[ANY] ( char temp[$1_dim0] )
|
||||||
%{
|
%{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue