// Copyright (C) 2025 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef PYSIDEVARIANTUTILS_H #define PYSIDEVARIANTUTILS_H #include #include #include #include #include namespace PySide::Variant { /// Return a QMetaType for a PyTypeObject for purposes of /// converting to a QVariant. PYSIDE_API QMetaType resolveMetaType(PyTypeObject *type); /// Convert a heterogenous Python list to a QVariantList by converting each /// item using the QVariant converter. PYSIDE_API std::optional pyListToVariantList(PyObject *list); /// Converts a list to a QVariant following the PySide semantics: /// - A list of strings is returned as QVariant /// - A list of convertible values is returned as QVariant> /// - Remaining types are returned as QVariant(QVariantList) PYSIDE_API QVariant convertToVariantList(PyObject *list); /// Converts a map to a QVariantMap (string keys and QVariant values) PYSIDE_API QVariant convertToVariantMap(PyObject *map); } // namespace PySide::Variant #endif // PYSIDEVARIANTUTILS_H