Wrap enum pointer params

This commit is contained in:
Gustavo J. A. M. Carneiro committed 2010-01-19 11:00:21 +00:00
1 parent cdbc237f3a
commit 225436e711
6 files changed
+29 -1

No files matched your search

+12
View File
@@ -88,13 +88,21 @@ class Enum(object):
def __init__(self, ctype, name, *args, **kwargs):
super(ThisEnumRefParameter, self).__init__(self.full_type_name, name, *args, **kwargs)
class ThisEnumPtrParameter(inttype.IntPtrParam):
CTYPES = []
full_type_name = self.full_name + " *"
def __init__(self, ctype, name, *args, **kwargs):
super(ThisEnumPtrParameter, self).__init__(self.full_type_name, name, *args, **kwargs)
self.ThisEnumParameter = ThisEnumParameter
self.ThisEnumReturn = ThisEnumReturn
self.ThisEnumRefParameter = ThisEnumRefParameter
self.ThisEnumPtrParameter = ThisEnumPtrParameter
param_type_matcher.register(self.full_name, self.ThisEnumParameter)
return_type_matcher.register(self.full_name, self.ThisEnumReturn)
param_type_matcher.register(self.full_name + ' &', self.ThisEnumRefParameter)
param_type_matcher.register(self.full_name + ' *', self.ThisEnumPtrParameter)
if self.name != self.full_name:
try:
@@ -109,6 +117,10 @@ class Enum(object):
param_type_matcher.register(self.name+' &', self.ThisEnumRefParameter)
except ValueError:
pass
try:
param_type_matcher.register(self.name+' *', self.ThisEnumPtrParameter)
except ValueError:
pass
module = property(get_module, set_module)
+1 -1
View File
@@ -163,7 +163,7 @@ class IntPtrParam(PointerParameter):
wrapper.parse_params.add_parameter("i", [self.value], self.name)
def convert_python_to_c(self, wrapper):
name = wrapper.declarations.declare_variable('int', self.name)
name = wrapper.declarations.declare_variable(self.ctype_no_const[:-1], self.name)
wrapper.call_params.append('&'+name)
if self.direction & self.DIRECTION_IN:
wrapper.parse_params.add_parameter('i', ['&'+name], self.name)
+7
View File
@@ -237,6 +237,13 @@ namespace xpto
type = oldfooType;
}
void set_foo_type_ptr (FooType *type)
{
FooType oldfooType = g_fooType;
g_fooType = *type;
*type = oldfooType;
}
}
+3
View File
@@ -499,6 +499,9 @@ namespace xpto
FooType get_foo_type ();
void set_foo_type (FooType type);
// -#- @type(direction=inout) -#-
void set_foo_type_ptr (FooType *type);
// -#- @type(direction=inout) -#-
void set_foo_type_inout (FooType &type);
+2
View File
@@ -280,6 +280,8 @@ int %s::custom_method_added_by_a_hook(int x)
xpto.add_function('set_foo_type', ReturnValue.new('void'), [Parameter.new("FooType", 'type')])
xpto.add_function('set_foo_type_inout', ReturnValue.new('void'),
[Parameter.new("FooType&", 'type', direction=Parameter.DIRECTION_INOUT)])
xpto.add_function('set_foo_type_ptr', ReturnValue.new('void'),
[Parameter.new("FooType*", 'type', direction=Parameter.DIRECTION_INOUT)])
xpto_SomeClass = xpto.add_class('SomeClass', docstring="This is the docstring for SomeClass")
+4
View File
@@ -597,9 +597,13 @@ class TestFoo(unittest.TestCase):
def test_enum(self):
foo.xpto.set_foo_type(foo.xpto.FOO_TYPE_BBB)
self.assertEqual(foo.xpto.get_foo_type(), foo.xpto.FOO_TYPE_BBB)
old = foo.xpto.set_foo_type_inout(foo.xpto.FOO_TYPE_CCC)
self.assertEqual(old, foo.xpto.FOO_TYPE_BBB)
old = foo.xpto.set_foo_type_ptr(foo.xpto.FOO_TYPE_AAA)
self.assertEqual(old, foo.xpto.FOO_TYPE_CCC)
def test_virtual_overload(self):
## first test the plain object
obj = foo.SomeObject("")