blob: 20ca220316f6e60d9926a64dabb3c140d6162fa0 (
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
<?xml version="1.0" ?>
<typesystem package="shiboken">
<primitive-type name="bool" />
<primitive-type name="unsigned long" />
<add-function signature="isValid(PyObject*)" return-type="bool">
<inject-code>
%PYARG_0 = %CONVERTTOPYTHON[bool](Shiboken::Object::isValid(%1, false));
</inject-code>
</add-function>
<add-function signature="wrapInstance(unsigned long, PyType)" return-type="PyObject*">
<inject-code>
if (Shiboken::ObjectType::checkType((PyTypeObject*)%2))
%PYARG_0 = Shiboken::Object::newObject((SbkObjectType*)%2, (void*)%1, false, true);
else
PyErr_SetString(PyExc_TypeError, "You need a shiboken-based type.");
</inject-code>
</add-function>
<add-function signature="getCppPointer(PyObject*)" return-type="PyObject*">
<inject-code>
if (Shiboken::Object::checkType(%1)) {
std::vector<void*> ptrs = Shiboken::Object::cppPointers((SbkObject*)%1);
%PYARG_0 = PyTuple_New(ptrs.size());
for (std::size_t i = 0; i < ptrs.size(); ++i)
PyTuple_SET_ITEM(%PYARG_0, i, PyLong_FromVoidPtr(ptrs[i]));
} else {
PyErr_SetString(PyExc_TypeError, "You need a shiboken-based type.");
}
</inject-code>
</add-function>
<add-function signature="delete(PyObject*)">
<inject-code>
if (Shiboken::Object::checkType(%1)) {
Shiboken::Object::callCppDestructors((SbkObject*)%1);
} else {
PyErr_SetString(PyExc_TypeError, "You need a shiboken-based type.");
}
</inject-code>
</add-function>
<add-function signature="isOwnedByPython(PyObject*)" return-type="bool">
<inject-code>
if (Shiboken::Object::checkType(%1)) {
%PYARG_0 = %CONVERTTOPYTHON[bool](Shiboken::Object::hasOwnership((SbkObject*)%1));
} else {
PyErr_SetString(PyExc_TypeError, "You need a shiboken-based type.");
}
</inject-code>
</add-function>
<add-function signature="wasCreatedByPython(PyObject*)" return-type="bool">
<inject-code>
if (Shiboken::Object::checkType(%1)) {
%PYARG_0 = %CONVERTTOPYTHON[bool](Shiboken::Object::wasCreatedByPython((SbkObject*)%1));
} else {
PyErr_SetString(PyExc_TypeError, "You need a shiboken-based type.");
}
</inject-code>
</add-function>
<add-function signature="dump(PyObject*)" return-type="PyObject*">
<inject-code>
if (!Shiboken::Object::checkType(%1)) {
%PYARG_0 = PyString_FromString("Ordinary Python type.");
} else {
std::string str = Shiboken::Object::info((SbkObject*)%1);
%PYARG_0 = PyString_FromString(str.c_str());
}
</inject-code>
</add-function>
</typesystem>
|