Patch from Mark Lee (Bug #144360): add support for more basic types (unsigned int, char, string)
This commit is contained in:
1 parent
2709085732
commit
dafcb0712f
2 files changed
+73
No files matched your search
@@ -21,6 +21,22 @@ class IntParam(Parameter):
|
||||
wrapper.call_params.append(name)
|
||||
|
||||
|
||||
class UnsignedIntParam(Parameter):
|
||||
|
||||
DIRECTIONS = [Parameter.DIRECTION_IN]
|
||||
CTYPES = ['unsigned int']
|
||||
|
||||
def convert_c_to_python(self, wrapper):
|
||||
assert isinstance(wrapper, ReverseWrapperBase)
|
||||
wrapper.build_params.add_parameter('I', [self.value])
|
||||
|
||||
def convert_python_to_c(self, wrapper):
|
||||
assert isinstance(wrapper, ForwardWrapperBase)
|
||||
name = wrapper.declarations.declare_variable(self.ctype, self.name)
|
||||
wrapper.parse_params.add_parameter('I', ['&'+name], self.name)
|
||||
wrapper.call_params.append(name)
|
||||
|
||||
|
||||
class IntReturn(ReturnValue):
|
||||
|
||||
CTYPES = ['int']
|
||||
@@ -35,6 +51,20 @@ class IntReturn(ReturnValue):
|
||||
wrapper.build_params.add_parameter("i", [self.value], prepend=True)
|
||||
|
||||
|
||||
class UnsignedIntReturn(ReturnValue):
|
||||
|
||||
CTYPES = ['unsigned int']
|
||||
|
||||
def get_c_error_return(self):
|
||||
return "return 0;"
|
||||
|
||||
def convert_python_to_c(self, wrapper):
|
||||
wrapper.parse_params.add_parameter("I", ["&"+self.value], prepend=True)
|
||||
|
||||
def convert_c_to_python(self, wrapper):
|
||||
wrapper.build_params.add_parameter("I", [self.value], prepend=True)
|
||||
|
||||
|
||||
class IntPtrParam(Parameter):
|
||||
|
||||
DIRECTIONS = [Parameter.DIRECTION_IN, Parameter.DIRECTION_OUT,
|
||||
|
||||
@@ -20,6 +20,22 @@ class StringParam(Parameter):
|
||||
wrapper.call_params.append(name)
|
||||
|
||||
|
||||
class CharParam(Parameter):
|
||||
|
||||
DIRECTIONS = [Parameter.DIRECTION_IN]
|
||||
CTYPES = ['char']
|
||||
|
||||
def convert_c_to_python(self, wrapper):
|
||||
assert isinstance(wrapper, ReverseWrapperBase)
|
||||
wrapper.build_params.add_parameter('c', [self.value])
|
||||
|
||||
def convert_python_to_c(self, wrapper):
|
||||
assert isinstance(wrapper, ForwardWrapperBase)
|
||||
name = wrapper.declarations.declare_variable(self.ctype, self.name)
|
||||
wrapper.parse_params.add_parameter('c', ['&'+name], self.value)
|
||||
wrapper.call_params.append(name)
|
||||
|
||||
|
||||
class StdStringParam(Parameter):
|
||||
|
||||
DIRECTIONS = [Parameter.DIRECTION_IN]
|
||||
@@ -87,6 +103,33 @@ class StdStringRefParam(Parameter):
|
||||
wrapper.build_params.add_parameter("s#", [name_std+'.c_str()', name_std+'.size()'])
|
||||
|
||||
|
||||
class CharReturn(ReturnValue):
|
||||
|
||||
CTYPES = ['char']
|
||||
|
||||
def get_c_error_return(self):
|
||||
return "return '\\0';"
|
||||
|
||||
def convert_python_to_c(self, wrapper):
|
||||
name = wrapper.declarations.declare_variable("char*", "retval_ptr")
|
||||
wrapper.parse_params.add_parameter("c", ['&'+name], self.value)
|
||||
|
||||
def convert_c_to_python(self, wrapper):
|
||||
wrapper.build_params.add_parameter("c", [self.value])
|
||||
|
||||
|
||||
class StringReturn(ReturnValue):
|
||||
|
||||
CTYPES = ['char*', 'const char*']
|
||||
|
||||
def convert_python_to_c(self, wrapper):
|
||||
name = wrapper.declarations.declare_variable(self.ctype, "retval_ptr")
|
||||
wrapper.parse_params.add_parameter("s", ['&'+name], self.value)
|
||||
|
||||
def convert_c_to_python(self, wrapper):
|
||||
wrapper.build_params.add_parameter("s", [self.value])
|
||||
|
||||
|
||||
class StdStringReturn(ReturnValue):
|
||||
|
||||
CTYPES = ['std::string']
|
||||
|
||||
Reference in new issue
Block a user