blob: cd26b34c2d8e6bcca0699d58655e55c6586ac714 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
<?xml version="1.0"?>
<typesystem package="minimal">
<primitive-type name="bool"/>
<primitive-type name="int"/>
<primitive-type name="MinBool" target-lang-api-name="PyBool" default-constructor="MinBool(false)">
<include file-name="minbool.h" location="global"/>
<conversion-rule file="minbool_conversions.h">
<native-to-target>
return PyBool_FromLong(%in.value());
</native-to-target>
<target-to-native>
<add-conversion type="PyBool" check="PyBool_Check(%in)">
%out = %OUTTYPE(%in == Py_True);
</add-conversion>
</target-to-native>
</conversion-rule>
</primitive-type>
<container-type name="std::list" type="list">
<include file-name="list" location="global"/>
<conversion-rule file="list_conversions.h">
<native-to-target>
PyObject* %out = PyList_New((int) %in.size());
%INTYPE::const_iterator it = %in.begin();
for (int idx = 0; it != %in.end(); ++it, ++idx) {
%INTYPE_0 cppItem(*it);
PyList_SET_ITEM(%out, idx, %CONVERTTOPYTHON[%INTYPE_0](cppItem));
}
return %out;
</native-to-target>
<target-to-native>
<add-conversion type="PySequence">
for (int i = 0; i < PySequence_Fast_GET_SIZE(%in); i++) {
PyObject* pyItem = PySequence_Fast_GET_ITEM(%in, i);
%OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem);
%out.push_back(cppItem);
}
</add-conversion>
</target-to-native>
</conversion-rule>
</container-type>
<object-type name="Obj"/>
<value-type name="Val">
<enum-type name="ValEnum"/>
</value-type>
<value-type name="ListUser"/>
<value-type name="MinBoolUser"/>
</typesystem>
|