Add long long and unsigned long long const reference typemaps.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@11767 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
d6984c5253
commit
d277354167
2 changed files with 49 additions and 3 deletions
|
|
@ -17,9 +17,9 @@ check::equal(ref_bool(true), true, "ref_bool failed");
|
||||||
check::equal(ref_float(3.5), 3.5, "ref_float failed");
|
check::equal(ref_float(3.5), 3.5, "ref_float failed");
|
||||||
check::equal(ref_double(3.5), 3.5, "ref_double failed");
|
check::equal(ref_double(3.5), 3.5, "ref_double failed");
|
||||||
check::equal(ref_char('x'), 'x', "ref_char failed");
|
check::equal(ref_char('x'), 'x', "ref_char failed");
|
||||||
//check::equal(ref_longlong(0x123456789ABCDEF0), 0x123456789ABCDEF0, "ref_longlong failed");
|
check::equal(ref_longlong(0x123456789ABCDEF0), 0x123456789ABCDEF0, "ref_longlong failed");
|
||||||
//check::equal(ref_ulonglong(0xF23456789ABCDEF0), 0xF23456789ABCDEF0, "ref_ulonglong failed");
|
# 0xF23456789ABCDEF0 won't fit in a long, so PHP makes it a double, but SWIG opts to return it as a string.
|
||||||
printf("TODO: long long and unsigned long long const reference typemaps\n");
|
check::equal((double)ref_ulonglong(0xF23456789ABCDEF0), 0xF23456789ABCDEF0, "ref_ulonglong failed");
|
||||||
|
|
||||||
check::done();
|
check::done();
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -198,6 +198,29 @@
|
||||||
ZVAL_LONG(return_value,$1);
|
ZVAL_LONG(return_value,$1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%typemap(out) long long
|
||||||
|
%{
|
||||||
|
if ((long long)LONG_MIN <= $1 && $1 <= (long long)LONG_MAX) {
|
||||||
|
return_value->value.lval = (long)($1);
|
||||||
|
return_value->type = IS_LONG;
|
||||||
|
} else {
|
||||||
|
char temp[256];
|
||||||
|
sprintf(temp, "%lld", $1);
|
||||||
|
ZVAL_STRING(return_value, temp, 1);
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
%typemap(out) unsigned long long
|
||||||
|
%{
|
||||||
|
if ($1 <= (unsigned long long)LONG_MAX) {
|
||||||
|
return_value->value.lval = (long)($1);
|
||||||
|
return_value->type = IS_LONG;
|
||||||
|
} else {
|
||||||
|
char temp[256];
|
||||||
|
sprintf(temp, "%llu", $1);
|
||||||
|
ZVAL_STRING(return_value, temp, 1);
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
%typemap(out) const int &,
|
%typemap(out) const int &,
|
||||||
const unsigned int &,
|
const unsigned int &,
|
||||||
const short &,
|
const short &,
|
||||||
|
|
@ -213,6 +236,29 @@
|
||||||
ZVAL_LONG(return_value,*$1);
|
ZVAL_LONG(return_value,*$1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%typemap(out) const long long &
|
||||||
|
%{
|
||||||
|
if ((long long)LONG_MIN <= *$1 && *$1 <= (long long)LONG_MAX) {
|
||||||
|
return_value->value.lval = (long)(*$1);
|
||||||
|
return_value->type = IS_LONG;
|
||||||
|
} else {
|
||||||
|
char temp[256];
|
||||||
|
sprintf(temp, "%lld", *$1);
|
||||||
|
ZVAL_STRING(return_value, temp, 1);
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
%typemap(out) const unsigned long long &
|
||||||
|
%{
|
||||||
|
if (*$1 <= (unsigned long long)LONG_MAX) {
|
||||||
|
return_value->value.lval = (long)(*$1);
|
||||||
|
return_value->type = IS_LONG;
|
||||||
|
} else {
|
||||||
|
char temp[256];
|
||||||
|
sprintf(temp, "%llu", *$1);
|
||||||
|
ZVAL_STRING(return_value, temp, 1);
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
%typemap(directorin) int,
|
%typemap(directorin) int,
|
||||||
unsigned int,
|
unsigned int,
|
||||||
short,
|
short,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue