From 504cf3341c0622c16d4283eef58aed9fe9c35036 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Wed, 21 Dec 2022 16:01:59 +0100 Subject: shiboken6: Add support for std::span Convert std::span to a Python list. For the conversion from Python to C++, make it a view on a vector. A special type is introduced since a different implementation is needed for opaque containers. Task-number: PYSIDE-2174 Change-Id: I17a7385282a7d373dc73d5ac63a5d3363d61d130 Reviewed-by: Cristian Maureira-Fredes Reviewed-by: Qt CI Bot --- .../shiboken6/tests/minimalbinding/CMakeLists.txt | 1 + sources/shiboken6/tests/minimalbinding/global.h | 1 + .../tests/minimalbinding/spanuser_test.py | 31 ++++++++++++++++++++++ .../tests/minimalbinding/typesystem_minimal.xml | 2 ++ 4 files changed, 35 insertions(+) create mode 100644 sources/shiboken6/tests/minimalbinding/spanuser_test.py (limited to 'sources/shiboken6/tests/minimalbinding') diff --git a/sources/shiboken6/tests/minimalbinding/CMakeLists.txt b/sources/shiboken6/tests/minimalbinding/CMakeLists.txt index ffbf9f111..7f132bd34 100644 --- a/sources/shiboken6/tests/minimalbinding/CMakeLists.txt +++ b/sources/shiboken6/tests/minimalbinding/CMakeLists.txt @@ -13,6 +13,7 @@ ${CMAKE_CURRENT_BINARY_DIR}/minimal/containeruser_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/minimal/obj_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/minimal/val_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/minimal/listuser_wrapper.cpp +${CMAKE_CURRENT_BINARY_DIR}/minimal/spanuser_wrapper.cpp ${CMAKE_CURRENT_BINARY_DIR}/minimal/minbooluser_wrapper.cpp ) diff --git a/sources/shiboken6/tests/minimalbinding/global.h b/sources/shiboken6/tests/minimalbinding/global.h index 4e792705a..fc5c59a26 100644 --- a/sources/shiboken6/tests/minimalbinding/global.h +++ b/sources/shiboken6/tests/minimalbinding/global.h @@ -6,4 +6,5 @@ #include "val.h" #include "minbool.h" #include "listuser.h" +#include "spanuser.h" #include "typedef.h" diff --git a/sources/shiboken6/tests/minimalbinding/spanuser_test.py b/sources/shiboken6/tests/minimalbinding/spanuser_test.py new file mode 100644 index 000000000..ee384eb81 --- /dev/null +++ b/sources/shiboken6/tests/minimalbinding/spanuser_test.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +import os +import sys +import unittest + +from pathlib import Path +sys.path.append(os.fspath(Path(__file__).resolve().parents[1])) +from shiboken_paths import init_paths +init_paths() + +from minimal import SpanUser + + +class IntSpanTest(unittest.TestCase): + + def testCreateIntSpan(self): + if not SpanUser.enabled(): + return + expected = [1, 2, 3] + self.assertEqual(SpanUser.getIntSpan3(), expected) + self.assertEqual(SpanUser.getConstIntSpan3(), expected) + + self.assertEqual(SpanUser.sumIntSpan3(expected), 6) + self.assertEqual(SpanUser.sumConstIntSpan3(expected), 6) + + +if __name__ == '__main__': + unittest.main() diff --git a/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml b/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml index e73ddc228..ef317f415 100644 --- a/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml +++ b/sources/shiboken6/tests/minimalbinding/typesystem_minimal.xml @@ -38,6 +38,8 @@ + + -- cgit v1.2.3