1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-11 00:23:51 +03:00

r5242: Check that argument is an integer or a long for uint32_t input

typemap.

The uint32_t output typemap must return a Python long as an unsigned
uint32_t cannot be fully represented by a Python int.

Likewise for the NTSTATUS typemap.
This commit is contained in:
Tim Potter
2005-02-06 00:34:44 +00:00
committed by Gerald (Jerry) Carter
parent e65741159d
commit 6dba5d6fb4

View File

@@ -28,11 +28,24 @@
%apply char { int8_t };
%apply unsigned int { uint16_t };
%apply int { int16_t };
%apply unsigned long { uint32_t };
%apply long { int32_t };
%apply unsigned long long { uint64_t };
%apply long long { int64_t };
%typemap(out) NTSTATUS {
$result = PyLong_FromLong(NT_STATUS_V($1));
%typemap(in) uint32_t {
if (PyLong_Check($input))
$1 = PyLong_AsUnsignedLong($input);
else if (PyInt_Check($input))
$1 = PyInt_AsLong($input);
else {
PyErr_SetString(PyExc_TypeError,"Expected a long or an int");
return NULL;
}
}
%typemap(out) uint32_t {
$result = PyLong_FromUnsignedLong($1);
}
%typemap(out) NTSTATUS {
$result = PyLong_FromUnsignedLong(NT_STATUS_V($1));
}