diff options
Diffstat (limited to 'sources/shiboken6/shibokenmodule/typesystem_shiboken.xml')
-rw-r--r-- | sources/shiboken6/shibokenmodule/typesystem_shiboken.xml | 121 |
1 files changed, 28 insertions, 93 deletions
diff --git a/sources/shiboken6/shibokenmodule/typesystem_shiboken.xml b/sources/shiboken6/shibokenmodule/typesystem_shiboken.xml index 7ebc990e1..aa08a8bbf 100644 --- a/sources/shiboken6/shibokenmodule/typesystem_shiboken.xml +++ b/sources/shiboken6/shibokenmodule/typesystem_shiboken.xml @@ -1,15 +1,14 @@ <?xml version="1.0" ?> +<!-- +// Copyright (C) 2024 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 +--> <typesystem package="Shiboken"> - <custom-type name="PyObject" /> - <custom-type name="PyType" /> <primitive-type name="bool" /> <primitive-type name="unsigned long" /> <primitive-type name="size_t" /> <add-function signature="isValid(PyObject*)" return-type="bool"> - <inject-code> - bool isValid = Shiboken::Object::isValid(%1, false); - %PYARG_0 = %CONVERTTOPYTHON[bool](isValid); - </inject-code> + <inject-code file="shibokenmodule.cpp" snippet="isvalid"/> </add-function> <add-function signature="invalidate(PyObject*)"> @@ -18,113 +17,49 @@ </inject-code> </add-function> - <add-function signature="wrapInstance(size_t, 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 signature="wrapInstance(size_t, PyTypeObject)" return-type="PyObject*"> + <inject-code file="shibokenmodule.cpp" snippet="wrapinstance"/> </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 signature="getCppPointer(PyObject*)" return-type="PySequence*"> + <inject-code file="shibokenmodule.cpp" snippet="getcpppointer"/> </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> + <inject-code file="shibokenmodule.cpp" snippet="delete"/> </add-function> <add-function signature="ownedByPython(PyObject*)" return-type="bool"> - <inject-code> - if (Shiboken::Object::checkType(%1)) { - bool hasOwnership = Shiboken::Object::hasOwnership((SbkObject*)%1); - %PYARG_0 = %CONVERTTOPYTHON[bool](hasOwnership); - } else { - PyErr_SetString(PyExc_TypeError, "You need a shiboken-based type."); - } - </inject-code> + <inject-code file="shibokenmodule.cpp" snippet="ownedbypython"/> </add-function> - <add-function signature="createdByPython(PyObject*)" return-type="bool"> - <inject-code> - if (Shiboken::Object::checkType(%1)) { - bool wasCreatedByPython = Shiboken::Object::wasCreatedByPython((SbkObject*)%1); - %PYARG_0 = %CONVERTTOPYTHON[bool](wasCreatedByPython); - } else { - PyErr_SetString(PyExc_TypeError, "You need a shiboken-based type."); - } - </inject-code> - </add-function> + <add-function signature="createdByPython(PyObject*)" return-type="bool"> + <inject-code file="shibokenmodule.cpp" snippet="createdbypython"/> + </add-function> - <add-function signature="dump(PyObject*)" return-type="PyObject*"> - <inject-code> - if (!Shiboken::Object::checkType(%1)) { - %PYARG_0 = Shiboken::String::fromCString("Ordinary Python type."); - } else { - std::string str = Shiboken::Object::info((SbkObject*)%1); - %PYARG_0 = Shiboken::String::fromCString(str.c_str()); - } - </inject-code> + <add-function signature="disassembleFrame(PyObject*)" return-type="PyObject"> + <inject-code file="shibokenmodule.cpp" snippet="disassembleframe"/> </add-function> - <add-function signature="getAllValidWrappers(void)" return-type="PyObject*"> - <inject-code> - std::set<PyObject*> setAll = Shiboken::BindingManager::instance().getAllPyObjects(); - PyObject* listAll = PyList_New(0); - if (listAll == NULL) - return NULL; + <add-function signature="dump(PyObject*)" return-type="const char *"> + <inject-code file="shibokenmodule.cpp" snippet="dump"/> + </add-function> - const std::set<PyObject*>::iterator end = setAll.end(); - for (std::set<PyObject*>::iterator iter = setAll.begin(); iter != end; ++iter) { - if (*iter != NULL) { - if (PyList_Append(listAll, *iter) != 0) { - Py_DECREF(listAll); - return NULL; - } - } - } - return listAll; - </inject-code> + <add-function signature="getAllValidWrappers(void)" return-type="PySequence*"> + <inject-code file="shibokenmodule.cpp" snippet="getallvalidwrappers"/> </add-function> - <add-function signature="_unpickle_enum(PyObject*, PyObject*)" return-type="PyObject*"> - <inject-code> - %PYARG_0 = Shiboken::Enum::unpickleEnum(%1, %2); - </inject-code> + <add-function signature="dumpTypeGraph(const char *@fileName@)" return-type="bool"> + <inject-code file="shibokenmodule.cpp" snippet="dumptypegraph"/> + </add-function> + + <add-function signature="dumpWrapperMap()"> + <inject-code file="shibokenmodule.cpp" snippet="dumpwrappermap"/> </add-function> <extra-includes> <include file-name="sbkversion.h" location="local"/> <include file-name="voidptr.h" location="local"/> </extra-includes> - <inject-code position="end"> - // Add __version__ and __version_info__ attributes to the module - PyObject* version = PyTuple_New(5); - PyTuple_SET_ITEM(version, 0, PyInt_FromLong(SHIBOKEN_MAJOR_VERSION)); - PyTuple_SET_ITEM(version, 1, PyInt_FromLong(SHIBOKEN_MINOR_VERSION)); - PyTuple_SET_ITEM(version, 2, PyInt_FromLong(SHIBOKEN_MICRO_VERSION)); - PyTuple_SET_ITEM(version, 3, Shiboken::String::fromCString(SHIBOKEN_RELEASE_LEVEL)); - PyTuple_SET_ITEM(version, 4, PyInt_FromLong(SHIBOKEN_SERIAL)); - PyModule_AddObject(module, "__version_info__", version); - PyModule_AddStringConstant(module, "__version__", SHIBOKEN_VERSION); - - Shiboken::initSignature(module); - VoidPtr::addVoidPtrToModule(module); - </inject-code> + <inject-code position="end" file="shibokenmodule.cpp" snippet="init"/> </typesystem> |