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:
committed by
Gerald (Jerry) Carter
parent
e65741159d
commit
6dba5d6fb4
@@ -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));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user