aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml
diff options
context:
space:
mode:
Diffstat (limited to 'sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml')
-rw-r--r--sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml100
1 files changed, 46 insertions, 54 deletions
diff --git a/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml b/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml
index 625615fa1..e18bf8686 100644
--- a/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml
+++ b/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml
@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<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"/>
@@ -17,65 +15,59 @@
</conversion-rule>
</primitive-type>
- <container-type name="std::list" type="list">
- <include file-name="list" location="global"/>
- <conversion-rule>
- <native-to-target>
- PyObject* %out = PyList_New(Py_ssize_t(%in.size()));
- Py_ssize_t idx = 0;
- for (auto it = %in.cbegin(), end = %in.cend(); it != 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">
- Shiboken::AutoDecRef seq(PySequence_Fast(%in, 0));
- const Py_ssize_t size = PySequence_Fast_GET_SIZE(seq.object());
- for (Py_ssize_t i = 0; i &lt; size; ++i) {
- PyObject* pyItem = PySequence_Fast_GET_ITEM(seq.object(), i);
- %OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem);
- %out.push_back(cppItem);
- }
- </add-conversion>
- </target-to-native>
- </conversion-rule>
- </container-type>
+ <opaque-container name="std::list" opaque-containers="int:StdIntList"/>
+
+ <opaque-container name="std::vector" opaque-containers="int:StdIntVector"/>
+
+ <opaque-container name="std::array" opaque-containers="int,3:StdIntArray"/>
+
+ <?if c++20?> <!-- FIXME PYSIDE 7: Remove "if" -->
+ <opaque-container name="std::span" opaque-containers="int,3:StdIntSpan3"/>
+ <?endif?>
<object-type name="Obj"/>
<value-type name="Val">
<enum-type name="ValEnum"/>
</value-type>
- <value-type name="ListUser"/>
+ <value-type name="ListUser">
+ <modify-field name="m_stdIntList" opaque-container="yes"/>
+ <modify-function signature="getIntList()">
+ <modify-argument index="return">
+ <replace-type modified-type="StdIntList"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="getConstIntList()const">
+ <modify-argument index="return">
+ <replace-type modified-type="StdIntList"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+
+ <value-type name="SpanUser">
+ <?if c++20?> <!-- FIXME PYSIDE 7: Remove "if" -->
+ <modify-function signature="getIntSpan3_OpaqueContainer()">
+ <modify-argument index="return">
+ <replace-type modified-type="StdIntSpan3"/>
+ </modify-argument>
+ </modify-function>
+ <?endif?>
+ </value-type>
+
<value-type name="MinBoolUser"/>
- <container-type name="std::vector" type="vector">
- <include file-name="vector" location="global"/>
- <conversion-rule>
- <native-to-target>
- %INTYPE::size_type vectorSize = %in.size();
- PyObject* %out = PyList_New(Py_ssize_t(vectorSize));
- for (%INTYPE::size_type idx = 0; idx &lt; vectorSize; ++idx) {
- %INTYPE_0 cppItem(%in[idx]);
- PyList_SET_ITEM(%out, idx, %CONVERTTOPYTHON[%INTYPE_0](cppItem));
- }
- return %out;
- </native-to-target>
- <target-to-native>
- <add-conversion type="PySequence">
- Shiboken::AutoDecRef seq(PySequence_Fast(%in, 0));
- const Py_ssize_t vectorSize = PySequence_Fast_GET_SIZE(seq.object());
- %out.reserve(vectorSize);
- for (Py_ssize_t idx = 0; idx &lt; vectorSize; ++idx ) {
- PyObject* pyItem = PySequence_Fast_GET_ITEM(seq.object(), idx);
- %OUTTYPE_0 cppItem = %CONVERTTOCPP[%OUTTYPE_0](pyItem);
- %out.push_back(cppItem);
- }
- </add-conversion>
- </target-to-native>
- </conversion-rule>
- </container-type>
+ <value-type name="ContainerUser">
+ <modify-function signature="intVector()">
+ <modify-argument index="return">
+ <replace-type modified-type="StdIntVector"/>
+ </modify-argument>
+ </modify-function>
+ <modify-function signature="intArray()">
+ <modify-argument index="return">
+ <replace-type modified-type="StdIntArray"/>
+ </modify-argument>
+ </modify-function>
+ </value-type>
+
<!-- Test wrapping of a typedef -->
<function signature="arrayFuncInt(std::vector&lt;int&gt;)" />
<!-- Note manual expansion of the typedef -->