From fa2d9369fa0cdef2999379793b4be04bd7bf155d Mon Sep 17 00:00:00 2001 From: "Gustavo J. A. M. Carneiro" Date: Tue, 3 Jun 2008 23:32:49 +0100 Subject: [PATCH] Finish support for int16_t / short int --- pybindgen/typehandlers/inttype.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/pybindgen/typehandlers/inttype.py b/pybindgen/typehandlers/inttype.py index 89861b4..2b097ea 100644 --- a/pybindgen/typehandlers/inttype.py +++ b/pybindgen/typehandlers/inttype.py @@ -146,6 +146,25 @@ class UInt16Return(ReturnValue): wrapper.build_params.add_parameter("i", [self.value], prepend=True) +class Int16Return(ReturnValue): + + CTYPES = ['int16_t', 'short', 'short int'] + + def get_c_error_return(self): + return "return 0;" + + def convert_python_to_c(self, wrapper): + tmp_var = wrapper.declarations.declare_variable("int", "tmp") + wrapper.parse_params.add_parameter("i", ["&"+tmp_var], prepend=True) + wrapper.after_call.write_error_check('%s > 32767 || %s < -32768' % (tmp_var, tmp_var), + 'PyErr_SetString(PyExc_ValueError, "Out of range");') + wrapper.after_call.write_code( + "%s = %s;" % (self.value, tmp_var)) + + def convert_c_to_python(self, wrapper): + wrapper.build_params.add_parameter("i", [self.value], prepend=True) + + class UInt16Param(Parameter): DIRECTIONS = [Parameter.DIRECTION_IN] @@ -166,7 +185,7 @@ class UInt16Param(Parameter): class Int16Param(Parameter): DIRECTIONS = [Parameter.DIRECTION_IN] - CTYPES = ['int16_t', 'int16_t const'] + CTYPES = ['int16_t', 'int16_t const', 'short', 'short int'] def convert_c_to_python(self, wrapper): assert isinstance(wrapper, ReverseWrapperBase)