aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2
Commit message (Collapse)AuthorAgeFilesLines
...
| * shiboken: Streamline the type parsing codeFriedemann Kleint2018-06-016-186/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace struct TypeParser::Info by TypeInfo and remove TypeParser::Info. Move method TypeParser::Info::instantiationName() to TypeInfo for this purpose. Change TypeParser::parse() to return TypeInfo. Task-number: QTBUG-672 Change-Id: I123d5bf378ad146867b571e47e31ae08a92b2504 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * shiboken/ClangBuilder: Fix nested qualified namesFriedemann Kleint2018-06-011-1/+22
| | | | | | | | | | | | | | | | | | | | | | The qualified name was obtained by splitting by "::", which would result in "std::list<std::string>" -> ("std", "list<std", string>"). Fix by splitting up to first '<' or '(' only. Task-number: PYSIDE-672 Change-Id: I9d790535e877da251a5b6c352dc550e4077877bd Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Improve the QByteArray implementationBoxiang Sun2018-06-013-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The available constructors for QByteArray are now: bytes, bytearray, and QByteArray, unicode is not accepted anymore. Also the concatenation is now possible between QByteArrays. Even though is not possible to initialize a QByteArray with an unicode, we include the possibility to compare it with one (Compatibility with PyQt). The __repr__ and __str__ are now properly working. There seemed to be a confusion regarding data types between Shiboken, Python2 and Python3 related to bytes, so now the structure is based on the flag SBK_BYTES_NAME, which is define as "bytes" for Python3 and "str" for Python2. Many tests were modified to properly handle string, using the `py3kcompat` module. Task-number: PYSIDE-232 Change-Id: I8b671f367c60a0870c72dcbe5662106b3225037d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Improve sbkstring::toCString to support unicodeBoxiang Sun2018-06-011-2/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | If `unicode` is used in Python 2, shiboken cannot properly translate it to `const char *`. sbkstring did not supported a proper conversion of unicode types in Python2, and this change includes it. Task-number: PYSIDE-100 Change-Id: I3a70d935ad61b0e567e620c62754800370270a6b Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into 5.11Friedemann Kleint2018-06-0142-1043/+4097
|\| | | | | | | Change-Id: I31a0ff26bc02e6cc2ec2a816c16d170fc334f800
| * Don't pass -DFORCE_LIMITED_API=yes from setup.py unless asked forAlexandru Croitor2018-05-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was weird seeing "-DFORCE_LIMITED_API=yes" being passed from setup.py to CMake when "--limited-api" is not included on the command line, and then seeing "-DFORCE_LIMITED_API=yes" with Python 2 builds. It gives the impression that maybe it could work with Python 2. Instead, don't pass "FORCE_LIMITED_API=yes" from setup.py by default (but still pass it if it's present on the command line), and instead default to "yes" within the CMake project themselves. In the end nothing changes, limited API builds will still be default, but at least it's not as confusing to see the "-DFORCE_LIMITED_API=yes" lines for Python 2 builds in the CI log. Change-Id: I08c863394dd148d88bec324a6cab35459d75303a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Fix module names to contain correct limited api suffixAlexandru Croitor2018-05-311-42/+56
| | | | | | | | | | | | | | | | | | | | | | This includes .abi3.so on Linux and macOS, and .pyd on Windows. Otherwise if you build with Python 3.6, and try to install the package on Python 3.5, none of the modules would be found on import. Change-Id: I56639da6319cfa06e23ae793d66099813074adf4 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * PEP 384-squash: Implement PEP 384Christian Tismer2018-05-3039-941/+4025
| | | | | | | | | | | | | | | | | | | | This is the condensed checkin of 18 commits which created the implementation of PEP 384. Task-number: PYSIDE-560 Change-Id: I834c659af4c2b55b268f8e8dc4cfa53f02502409 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * shiboken: Streamline the type parsing codeFriedemann Kleint2018-05-304-98/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Remove bool *ok-parameter from AbstractMetaBuilderPrivate::translateType() It was only used to handle the special case of void return values of functions where translateType() returned nullptr/ok = true. Add a check TypeInfo::isVoid for this purpose and move this handling to traverseFunction instead. For all other cases, translateType() returning nullptr means failure. - Remove the code triggered by the bool resolveScope parameter of AbstractMetaBuilderPrivate::translateType(). It has been observed to not find any matches, likely due to the types being fully qualified by Clang. - Remove function AbstractMetaBuilderPrivate::decideUsagePattern() which was a one-liner calling AbstractMetaType::decideUsagePattern() Task-number: PYSIDE-672 Change-Id: I0336896917cb914d4d622eefa0a21e6e319efa0f Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into 5.11Friedemann Kleint2018-05-261-2/+2
|\| | | | | | | Change-Id: I0c5b60263ed642a9b6f6b5d6a1492a11f278bfd5
| * Fix incorrect usage of findLlvmConfigAlexandru Croitor2018-05-251-2/+2
| | | | | | | | | | | | | | | | | | The functions has been renamed due to PEP8 formatting. Amends 71249b93a5d12a320b44c608c05fb9d220788a18 Change-Id: I00206e1dda77f672d6883406e47debda19bc622f Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into 5.11Friedemann Kleint2018-05-1812-117/+343
|\| | | | | | | Change-Id: I20cf741f5b07426ad5113eb8c52f144102c331ce
| * Documentation: Improve function documentation extractionFriedemann Kleint2018-05-183-34/+134
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The XQuery used to obtain the function description can fail due to argument type mismatches (typedefs or blank formatting). In that case, repeat the query restricting the search the argument count. If exactly one match is found, use that with a warning. Output the matches otherwise. Split out functions for the function queries and and helper function for creating the XQuery with flags. Task-number: PYSIDE-363 Change-Id: I83aaa53511896ee78a25f39a769ca907d0ac10bb Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * QtXmlToSphinx::transform(): Improve XML error messageFriedemann Kleint2018-05-181-2/+4
| | | | | | | | | | | | | | Output line and column. Change-Id: Ide890b93c47ef0fc9ebe3209356da100e0cbde4e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Documentation: Skip methods added by the meta builderFriedemann Kleint2018-05-183-5/+11
| | | | | | | | | | | | | | | | | | Introduce an attribute for added methods and exclude them from the documentation generation. Task-number: PYSIDE-363 Change-Id: I06d3f468bcec4d0480012d29e26dabadae51634b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Documentation: Fix failure extracting docs for functions with QVariant::TypeFriedemann Kleint2018-05-171-3/+0
| | | | | | | | | | | | | | | | | | QVariant::Type is a primitive type, yet the fully qualified name should be used. Remove check for primitive types and always use the qualified name for building the doc XQuery. Change-Id: I8d12cf7d3095ce9e7baa2b6436cc90385bdedc22 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Docs: Point to Qt online documentation for QML typesFriedemann Kleint2018-05-171-6/+30
| | | | | | | | | | | | | | | | | | If a -qmlmodule.webxml file exists, insert a link to the Qt online documentation. Task-number: PYSIDE-363 Change-Id: I49a46ed097e8f7136b39f38e2206a2229dd08e41 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * shiboken: Improve error messages for rejected functionsFriedemann Kleint2018-05-161-11/+29
| | | | | | | | | | | | | | | | | | Add a warning explaining that a rejected abstract function will cause compilation errors later on. Change-Id: Ibcad7d79df719b0ffbaf59a0ef9eec6f22aea2ed Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Make it possible to specify a target directory for additional documentationFriedemann Kleint2018-05-161-27/+44
| | | | | | | | | | | | | | | | | | Introduce a simple [] notation for target directories. Task-number: PYSIDE-363 Change-Id: I3a0cd255faf84f564a64992cba88244ae14c2452 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Fix wrongly generated code for enums passed by const-refFriedemann Kleint2018-05-164-6/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | First encountered in: QtScxmlEvent::setEventType(const EventType &); The metatype was wrongly detected as NativePointerPattern in AbstractMetaType::determineUsagePattern(). Introduce a helper for detecting plain const-ref and use that consistently. Change-Id: I6b105bc99ae63e4737c5d628e79f23b7acbcca3d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * ShibokenGenerator::buildAbstractMetaTypeFromString(): Handle QFlagsFriedemann Kleint2018-05-141-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function would fail for a QFlags type defined in a dependent typesystem file with errors like: Can't write the C++ to Python conversion function for container type 'QPair': Could not find type '::QFlags<QAccessible::RelationFlag>' for use in 'toPython' conversion. for example caused by QAccessibleWidget::relation() where the flag is defined in class QAccessible in QtGui. The underlying reason is that there is no type entry for the class QFlags. To work around this, detect it by looking at the instantiated types and create a flags type accordingly. Task-number: PYSIDE-487 Change-Id: Ib3c962aeedf8deb1a6b11976bd91316d39738310 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Improve error handling when writing type conversion functionsFriedemann Kleint2018-05-142-22/+48
| | | | | | | | | | | | | | | | | | | | Add an errorMessage parameter to ShibokenGenerator::buildAbstractMetaTypeFromString() and output the message in ShibokenGenerator::replaceConverterTypeSystemVariable(). Change-Id: I249778b3efe89c265590a7d4977cf2a4e76063f9 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Increase Python minimal accepted versionCristian Maureira-Fredes2018-05-111-2/+2
| | | | | | | | | | | | | | | | 2.6 -> 2.7 Task-number: PYSIDE-653 Change-Id: Id62717f12e17c50732c796d3d84686fd47597ab0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into 5.11Friedemann Kleint2018-05-094-54/+189
|\| | | | | | | Change-Id: Ic7aa7796dffda87ef492a99af7859c909ec607a2
| * Improve libclang extra include headers detectionAlexandru Croitor2018-05-081-2/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | On certain distros (e.g. ArchLinux) there may be additional files in the path where we GLOB for clang version include folders (e.g. /usr/lib/llvm/lib/clang/6.0.0 and /usr/lib/llvm/lib/clang/ccc-analyzer). Filter the files out, and only consider folders starting with a number (e.g. 6.0.0). Change-Id: I85052e45610090f399ec92200f7a666c4872f78d Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Improve libclang detection on LinuxAlexandru Croitor2018-05-081-5/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change essentially allows usage of the distro-specific libclang libraries for building shiboken. This required changes to the name of the library that CMake looked for (looking at you Debian). The change also adds an additional compile test to check for the availability of the libclang headers which shiboken uses. This should prevent a failure at build time, and transform it into a nice error message at cmake configure time. Change-Id: I37e019fd5923379436a67d77f92c30efd77620d2 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * QtXmlToSphinx: Refactor link handlingFriedemann Kleint2018-05-072-46/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Forward declare QtXmlToSphinx::LinkContext as a public struct and move the definition to the source file. Replace the linkTag/linkTagEnding strings by an enumeration for the type and flags for storing the bold/italic state. Move the formatting to an operator<<(QTextStream,LinkContext) for clarity. Streamline the code checking the link text against the reference in handleLinkText(), avoiding some unnecessary tests. Add an 'External' type for external pages which do not have a role keyword. This fixes: - Undoes a breakage introduced by c5582d3120249a902681454b2319df765ffa2cd8 converting all link refs to RST labels, clobbering the '~' used for some function references. This is now limited to page type links. - Broken handling of links within italic/bold: The assignment to the linkTag variable by type would clobber the previously assigned italic/bold markers - Enable external links without role Task-number: PYSIDE-363 Change-Id: I2e9a8cd80df93a77f3c6c9f8593243b35eeeb56e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Fix CMake usage of utils.pyAlexandru Croitor2018-05-071-1/+1
| | | | | | | | | | | | | | The file was moved, but the path was not adjusted. Change-Id: I80ea28e4238f9cf9d43db2f9e669d84d5eafaea6 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Use PyLong instead of PyInt for QVariantCristian Maureira-Fredes2018-05-041-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Python 3 uses PyLong for integer manipulation, and since it is a valid type in Python 2 we can use it instead to have better compatibility, and avoid integer overflows. We keep the PyInt entry to avoid breaking other sections of the code when this type is required. Added a couple of PyInt_* alias to use PyLong_* ones instead. Task-number: PYSIDE-648 Change-Id: Id6af66050c5ab81fc51c1c07b1c9422a954b81c0 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Merge remote-tracking branch 'origin/5.9' into 5.11Friedemann Kleint2018-05-046-13/+11
|\| | | | | | | Change-Id: Iea1e427a8b70eba31b7da2cf0633ec035124956c
| * Update ApiExtractor documentationCristian Maureira-Fredes2018-05-046-13/+11
| | | | | | | | | | | | | | | | | | Changed a few old references and links. Ran aspell on the rst files. Task-number: PYSIDE-622 Change-Id: I3e096df96bfe80ead53afa8568b7de42e8a25766 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into 5.11Friedemann Kleint2018-05-03476-518/+694
|\| | | | | | | Change-Id: I15e8a6120c249bfc5a0e2b3fa262989fafccbf57
| * Change license from all the filesCristian Maureira-Fredes2018-05-03468-468/+468
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Removing the word 'project' from all the headers, and changing the PySide reference from the examples to Qt for Python: The following line was used inside the source/ and build_scripts/ directory: for i in $(grep -r "the Qt for Python project" * |grep -v "pyside2-tools" | awk '{print $1}' | sed 's/:.*//g');do sed -i 's/the\ Qt\ for\ Python\ project/Qt\ for\ Python/g' $i;done and the following line was used inside the examples/ directory: for i in $(grep -r "of the PySide" * |grep -v "pyside2-tools" | awk '{print $1}' | sed 's/:.*//g');do sed -i 's/of\ the\ PySide/of\ the\ Qt\ for\ Python/g' $i;done Change-Id: Ic480714686ad62ac4d81c670f87f1c2033d4ffa1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
| * QtXmlToSphinx: Add support for more elementsFriedemann Kleint2018-05-022-2/+41
| | | | | | | | | | | | | | | | | | Add support for <target> and <page> elements for the additional documentation sections. Task-number: PYSIDE-363 Change-Id: I0b04106fbe6ae1779625de333368e18bbc31b962 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * QtXmlToSphinx: Refactor label handlingFriedemann Kleint2018-05-022-6/+38
| | | | | | | | | | | | | | | | | | | | Add utility functions to remove invalid characters and a helper for streaming Task-number: PYSIDE-363 Change-Id: I45eb33ed60deed82912262a99551436c538eee22 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
| * Add option to create additional documentationFriedemann Kleint2018-05-022-4/+101
| | | | | | | | | | | | | | | | | | | | Add an option taking a list of files under the webxml directory that are run though the Sphinx converter to create .rst files. This can be used for tutorials and example descriptions. Task-number: PYSIDE-363 Change-Id: Ifa6df32517a2b336cd3f755523947d70c5c24f2e Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Rename PySide references to Qt for PythonCristian Maureira-Fredes2018-04-27468-468/+468
| | | | | | | | | | | | | | | | | | When referring to the project one should use "Qt for Python" and for the module "PySide2" Change-Id: I36497df245c9f6dd60d6e160e2fc805e48cefcae Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * shiboken: Accept relative file name as C++ headerFriedemann Kleint2018-04-271-1/+7
| | | | | | | | | | | | | | | | | | | | | | Relative file names cause Clang not to find them since they are included by a temporary header file. Check and convert to an absolute path via QFileInfo. Change-Id: Ie87b4d2a6fcf5d98062a8a40a3eccbbb9513c62e Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * Add references from ApiExtractor to shiboken docCristian Maureira-Fredes2018-04-268-37/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Including intersphinx extension allow us to link the documentation from ApiExtractor to shiboken's. ApiExtractor doc need to be build first, so we can use the inventory that sphinx create, to link it to shiboken's configuration. All the harcoded references were replaced by dynamic references. Also new labels were included to properly cross reference topics. Checked the spell on many rst files too. Task-number: PYSIDE-363 Change-Id: I11a50b1f9eee48a00a3de6f957942eb0823eba47 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Merge remote-tracking branch 'origin/5.9' into 5.11Friedemann Kleint2018-04-2648-1508/+1371
|\| | | | | | | Change-Id: Id40dab17b02800199f70072115d7473041f683d8
| * QtXmlToSphinx: Handle ordered listsFriedemann Kleint2018-04-241-7/+25
| | | | | | | | | | | | | | | | | | | | Introduce an enumeration for the list type and handle ordered lists like bullet lists with a different separator. Task-number: PYSIDE-640 Change-Id: I2e770f2dd56958627e423822b8f4b1c23fdd4e16 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
| * shiboken: Strip parameters of invalid type with a default value expressionFriedemann Kleint2018-04-231-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For example for: void QWebEnginePage::findText(const QString &subString, FindFlags options = FindFlags(), const QWebEngineCallback<bool> &resultCallback = QWebEngineCallback<bool>()) the resultCallback will be removed and a binding for void QWebEnginePage::findText(const QString &subString, FindFlags options) generated. Task-number: PYSIDE-487 Change-Id: I6299d1735ad6c00e257daecb64d8f2f235140a98 Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
| * Add shiboken2/ApiExtractor doc generationCristian Maureira-Fredes2018-04-233-6/+10
| | | | | | | | | | | | | | | | | | | | | | | | Changed the target name because there was a conflict, and now is possible to `make doc_apiextractor` inside the *_build/shiboken2/ApiExtractor/ directory. Task-number: PYSIDE-363 Task-number: PYSIDE-221 Change-Id: I0f330166a89ba25b616b9d665a4a1fcfb2d90241 Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Improve CMake clang detection logicAlexandru Croitor2018-04-201-1/+8
| | | | | | | | | | | | | | | | | | | | | | | | Before calling llvm_config, check that the path to llvm_config is non-empty. Otherwise exit early. Change-Id: Ibde88bbcc6a1c6324b2a0cbb1b62f894a7aae42c Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io> Reviewed-by: Christian Tismer <tismer@stackless.com>
| * Check default superclass when getting baseClassesCristian Maureira-Fredes2018-04-191-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reimplementing a class must respect the closest base class instead of falling back to QObject. By adding a default-superclass argument one can verify that field first when shiboken is getting the base classes. This problem was found by reimplementing QGraphicsObject including methods from one of its parent classes, QGraphicsItem. With this change, the generated wrapper will list all the base classes in `Sbk_QGraphicsObject_Type_bases` leaving QObject at the end, because if not, it will match inmediately. A test case was included. This change doesn't affect other existing tests. Task-number: PYSIDE-86 Change-Id: I6b9a220497b12c8085302a502f8581cc2d3fb11b Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Upgrade shiboken diagrams and documentationCristian Maureira-Fredes2018-04-1920-1154/+892
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Applied Qt-style to the diagrams: shapes, and colors. Removed references to Boost. Move the .rst links to the bottom of the files for better maintainability. Removed unused images and wrapped a few long lines. Aspell on the rst files. The links needs to be updated once we have the URL for the official documentation, since there are references to external documentation source directories. Task-number: PYSIDE-622 Change-Id: I2d553a29693ca4457e73a4ce5d78a2150501841d Reviewed-by: Christian Tismer <tismer@stackless.com>
| * shiboken: Use enum values from ClangFriedemann Kleint2018-04-1913-264/+277
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove a lot of ugly value parsing code in favor of clang_getEnumConstantDeclValue() and clang_getEnumConstantDeclUnsignedValue() depending on the type. Introduce a class EnumValue containing a union of qint64 and quint64 values to represent signed/unsigned values correctly and use that in the code model and meta language classes. Change-Id: If2efb7cfd560237907678b8f6fdfb0bc689c0c93 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| * fix more qApp crashesChristian Tismer2018-04-191-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When building PySide with a debug Python, a lot more problems become visible. They were triggered by some malicious ordering of the shutdown code, which must come *after* the refcounts of the variables are adjusted. The initial issue PYSIDE-585 was caused because the shutdown code is not only used for every created Q*Application, but also for the module shutdown, which deletes qApp_contents too often. Instead of special-casing that or adding some refcount, it was much more intuitive in that context to set qApp_content's refcount to the same value as Py_None, which also is not supposed to be garbage collected. Btw., the reason for the error message is that Py_None has it, too. When we set qApp_content's type to Py_None's type, it inherits the protection code that prevents someone from garbage collecting Py_None. Task-number: PYSIDE-585 Change-Id: I4af9de1192730f06054a5aca099a32e2392e367d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Add default return value to pythonTypeIsValueTypeCristian Maureira-Fredes2018-04-191-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a class inherits from two base classes, Shiboken sets the converter of the newly created SbkObject to 0 (SbkObjectTypeTpNew), and handle the multiple inheritance in a different way. When any SbkObject try to release its ownership, it first verify if the ownership is already on the C++ side by checking the attribute hasOwership and also if the converter is a ValueType. The later fails if the converter is null, so a default value (false) was added. A test case using deleteLater() was included, which uses the releaseOwnership method internally. Task-number: PYSIDE-11 Change-Id: I34fba0d3e5d28b99b49a183ed08e977a311da632 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * shiboken: Exclude smart-pointer-type from documentationFriedemann Kleint2018-04-192-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | smart-pointer-type is a special type for making getter method and type known to shiboken. It should not be documented. Fixes a lot of warnings when trying to generate documentation for QtQuick.QSharedPointer. Task-number: PYSIDE-363 Change-Id: Icb26fa3e16cd74ae5115cdd1cbe32cb48ab5445b Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>