You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.2 KiB
59 lines
1.2 KiB
|
|
%define CONVERT_BOOL_IN(lvar,t,invar) |
|
convert_to_boolean_ex(invar); |
|
lvar = (t) Z_LVAL_PP(invar); |
|
%enddef |
|
|
|
%define CONVERT_INT_IN(lvar,t,invar) |
|
convert_to_long_ex(invar); |
|
lvar = (t) Z_LVAL_PP(invar); |
|
%enddef |
|
|
|
%define CONVERT_INT_OUT(lvar,invar) |
|
lvar = (t) Z_LVAL_PP(invar); |
|
%enddef |
|
|
|
%define CONVERT_FLOAT_IN(lvar,t,invar) |
|
convert_to_double_ex(invar); |
|
lvar = (t) Z_DVAL_PP(invar); |
|
%enddef |
|
|
|
%define CONVERT_CHAR_IN(lvar,t,invar) |
|
convert_to_string_ex(invar); |
|
lvar = (t) *Z_STRVAL_PP(invar); |
|
%enddef |
|
|
|
%define CONVERT_STRING_IN(lvar,t,invar) |
|
convert_to_string_ex(invar); |
|
lvar = (t) Z_STRVAL_PP(invar); |
|
%enddef |
|
|
|
%define %pass_by_val( TYPE, CONVERT_IN ) |
|
%typemap(in) TYPE |
|
%{ |
|
CONVERT_IN($1,$1_ltype,$input); |
|
%} |
|
%enddef |
|
|
|
%fragment("t_output_helper","header") %{ |
|
void |
|
t_output_helper( zval **target, zval *o) { |
|
if ( (*target)->type == IS_ARRAY ) { |
|
/* it's already an array, just append */ |
|
add_next_index_zval( *target, o ); |
|
return; |
|
} |
|
if ( (*target)->type == IS_NULL ) { |
|
REPLACE_ZVAL_VALUE(target,o,1); |
|
return; |
|
} |
|
zval *tmp; |
|
ALLOC_INIT_ZVAL(tmp); |
|
*tmp = **target; |
|
zval_copy_ctor(tmp); |
|
array_init(*target); |
|
add_next_index_zval( *target, tmp); |
|
add_next_index_zval( *target, o); |
|
|
|
} |
|
%}
|
|
|