Add input typemaps for long long and unsigned long long for PHP.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11765 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
09a801dd9e
commit
52bdfa3097
2 changed files with 40 additions and 0 deletions
|
|
@ -55,6 +55,10 @@
|
|||
%pass_by_val(long, CONVERT_INT_IN);
|
||||
%pass_by_val(unsigned long, CONVERT_INT_IN);
|
||||
|
||||
%pass_by_val(signed long long, CONVERT_LONG_LONG_IN);
|
||||
%pass_by_val(long long, CONVERT_LONG_LONG_IN);
|
||||
%pass_by_val(unsigned long long, CONVERT_UNSIGNED_LONG_LONG_IN);
|
||||
|
||||
%pass_by_val(signed char, CONVERT_INT_IN);
|
||||
%pass_by_val(char, CONVERT_CHAR_IN);
|
||||
%pass_by_val(unsigned char, CONVERT_INT_IN);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,42 @@
|
|||
lvar = (t) Z_LVAL_PP(invar);
|
||||
%enddef
|
||||
|
||||
%define CONVERT_LONG_LONG_IN(lvar,t,invar)
|
||||
switch ((*(invar))->type) {
|
||||
case IS_DOUBLE:
|
||||
lvar = (t) (*(invar))->value.dval;
|
||||
break;
|
||||
case IS_STRING: {
|
||||
char * endptr;
|
||||
errno = 0;
|
||||
lvar = (t) strtoll((*(invar))->value.str.val, &endptr, 10);
|
||||
if (*endptr && !errno) break;
|
||||
/* FALL THRU */
|
||||
}
|
||||
default:
|
||||
convert_to_long_ex(invar);
|
||||
lvar = (t) (*(invar))->value.lval;
|
||||
}
|
||||
%enddef
|
||||
|
||||
%define CONVERT_UNSIGNED_LONG_LONG_IN(lvar,t,invar)
|
||||
switch ((*(invar))->type) {
|
||||
case IS_DOUBLE:
|
||||
lvar = (t) (*(invar))->value.dval;
|
||||
break;
|
||||
case IS_STRING: {
|
||||
char * endptr;
|
||||
errno = 0;
|
||||
lvar = (t) strtoull((*(invar))->value.str.val, &endptr, 10);
|
||||
if (*endptr && !errno) break;
|
||||
/* FALL THRU */
|
||||
}
|
||||
default:
|
||||
convert_to_long_ex(invar);
|
||||
lvar = (t) (*(invar))->value.lval;
|
||||
}
|
||||
%enddef
|
||||
|
||||
%define CONVERT_INT_OUT(lvar,invar)
|
||||
lvar = (t) Z_LVAL_PP(invar);
|
||||
%enddef
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue