aboutsummaryrefslogtreecommitdiffstats
path: root/sources/shiboken2
Commit message (Collapse)AuthorAgeFilesLines
* Refactor TypeEntry::isCppPrimitive()Friedemann Kleint2017-08-291-13/+18
| | | | | | | | | Introduce a helper function returning a sorted string vector to avoid converting each type string to a QByteArray. Change-Id: If9036d6251f5cc8d83ae13c8b5c3f731a6738657 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* FunctionModification: Make it possible to specify a regular expressionFriedemann Kleint2017-08-296-14/+65
| | | | | | | | | It should make it easier to specify the <array> modifications for GL functions. Task-number: PYSIDE-516 Change-Id: Ieb2e540f61785d13ee46a196a18d03b311d308e1 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix the chain of issues regarding QSslConfigurationAlexandru Croitor2017-08-242-1/+31
| | | | | | | | | | | | | | | | | | | | | | | | | The failure was seen on Windows CI build, but was actually present on all platforms if the QSsl checks were properly fixed, or if certain CMake versions randomly decided to force C++11 usage. The first issue was that QSsl wrappers were not generated on all platforms because the C++11 standard was not forced for the compilation tests done in the check_qt_class macro. This is a bug in CMake, and the official way of fixing this is introduced in the yet unreleased CMake 3.9 version. The current fix is a workaround to explicitly pass the C++11 standard switch to the try_compile invocation. The next issue concerns handling of const char[] C++ types. There are three such members in QSslConfiguration, which caused build failures due to incorrectly generated code. The solution is to treat "const char[]" types as "const char*" types, which generates correct conversion code. Tests were also added to check for such cases. Change-Id: I874a3591dfc5f385338de7e3aff2a2c0dd2f5719 Reviewed-by: Christian Tismer <tismer@stackless.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* shiboken: Output argument index in warning about unsupported parameterFriedemann Kleint2017-08-241-7/+12
| | | | | | | It makes it easier to generate modification tags by script. Change-Id: I3d256371974e05eee336eaac3541029078ea2cc5 Reviewed-by: Christian Tismer <tismer@stackless.com>
* shiboken: Prefix all warning messages by base prefix of typesystem fileFriedemann Kleint2017-08-233-1/+17
| | | | | | | | shiboken is run in parallel when building PySide2, so it is sometimes hard to tell where warnings come from. Change-Id: Iaccd91543e14e6e9c38ebfa2b0c285417f924d03 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Shiboken2: Suppress warning for parameters modified by <array>Friedemann Kleint2017-08-221-0/+1
| | | | | | | | | | | | | Add a check to checkTypeViability(), suppressing the warnings like There's no user provided way (conversion rule, argument removal, custom code, etc) to handle the primitive argument type 'const unsigned int *' in function 'QOpenGLShaderProgram::setUniformValueArray(const char * name, const unsigned int * values, int count)'. when the type was modified to be an array. Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: Id5fa4789024cc82533d15a61b893a3f60baa4bff Reviewed-by: Christian Tismer <tismer@stackless.com>
* Shiboken2: Add an index check for the <array> modificationFriedemann Kleint2017-08-221-1/+6
| | | | | | | | | Amends change 1578d14d1693122d4bcacede0d77527d8e898629. Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: I50e5d0762f1b049a511c62f8aa8d08da4cb563d9 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Add numpy supportFriedemann Kleint2017-08-037-3/+434
| | | | | | | | | Add simple array converters giving access to NumPy arrays. Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: I2446b0f1ef98eaf12df95e4bd0e03d73e0cd7126 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Add new <array> argument modification indicating array usageFriedemann Kleint2017-08-0312-11/+97
| | | | | | | | | | | | The modification can be used to indicate that for example int* is meant to be used as int[]. This is reflected in the NativePointerAsArrayPattern usage pattern of AbstractMetaType. Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: Icaeb3cce4be9ce06caa2cab628d4e8fc1b684819 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* libshiboken: Add Array convertersFriedemann Kleint2017-08-0317-6/+685
| | | | | | | | | | | | | | | | Add a SbkArrayConverter struct which provides a list of check functions that return a converter function for an array of matching size. Add simple array converters for arrays of C++ primitive types. Instances of the ArrayHandle<>, Array2Handle<> templates will be generated which may point to internal data or allocated arrays. Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: I157606891fad345ccd7af6d4a9d4dcb0c634b2f4 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Shiboken: No longer change arrays[] to pointer typesFriedemann Kleint2017-08-034-37/+35
| | | | | | | | | | In AbstractMetaBuilder, no longer change array types like "int[]" to "int*". Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: Ia9e15ae3fca895bf179275eb31a94323d91f4941 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Shiboken: Improve Handling of array typesFriedemann Kleint2017-08-034-5/+64
| | | | | | | | | | | Change the AbstractMetaType::signature() functions to work with the nested AbstractMetaType types instead of TypeEntry so that the correct array signatures appear in the signature of AbstractMetaFunction. Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: I90aa11891c95ccdcbae81fb70db4bec0e62f5923 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Bump minimum required CMake version to 3.1Alexandru Croitor2017-07-271-2/+2
| | | | | | | | | Shiboken uses C++11 features, and thus the CMAKE_CXX_STANDARD setting needs to be set in the CMakeLists.txt file. The setting was introduced in CMake version 3.1.0. Thus we bump the minimum required version. Change-Id: Ic93dc76440930a19945bbd95461fc5859f2df0d0 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Force usage of C++11 for shibokenAlexandru Croitor2017-07-261-0/+4
| | | | | | | | | | Previously we requested C++11 support from the compiler, but if the compiler does not support the standard, CMake would silently fall back to using C++08. Force usage of C++11, and cancel the build if the standard is not supported. Change-Id: I963a3f3d0b7dffb85a822c7aeb5f6979c0bbc189 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Fix building on openSuSE and Ubuntu 16.04 CI machinesAlexandru Croitor2017-07-243-2/+42
| | | | | | | | | | | | | | | | | | | | Previously all the GCC header paths were explicitly passed to libclang, which caused redefinition errors of builtin functions or intrisics (like __rdtsc). Instead of passing the include paths explicitly, we rely on libclang itself recognizing that there are GCC paths in the default search locations. Also we need to pass the libclang builtin headers location, because it is not able to find them by itself. Usually the search location for these headers is to get the executable path location (aka the clang++ binary) and navigate to ../lib/clang/VERSION/include relative to that binary. But because the shared library is used instead of the binary, we need to explicitly pass that header location via the -isystem flag. Task-number: PYSIDE-513 Change-Id: I7c1127d85c0cea4c063c5c2a3548a1eef5eadaf3 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2017-07-1411-92/+122
|\ | | | | | | Change-Id: I1dd2958b252b82e8699e8d2212afdce0086a16d2
| * Fix Windows module extensions and tests to work with --debug buildAlexandru Croitor2017-07-122-27/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the same imp.get_suffixes() mechanism as on Unix, to determine the suffix part of module extension files. This fixes debug builds to work on Windows. Note that the whole build stack has to use the same configuration, no mixing is allowed on Windows. For release build you need: python.exe + setup.py without --debug flag + release build of Qt5. For debug build you need: python_d.exe + setup.py with --debug flag + debug build of Qt5. Change-Id: I6188c859b5757d11e87d6a9e32b9ba558f7f609e Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
| * Improve suffix names for shared libraries and cmake config filesAlexandru Croitor2017-07-1211-87/+121
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change decouples the naming of general shared libraries, python module extensions, and cmake configuration files. All of them are now computed depending on the python version and python build configuration, and can also be manually set via CMake variables. The module extensions names now use the most detailed 'import' prefix, which usually informs whether a debug or release python was used, or the Python ABI flags (for Python >= 3.2). When a debug Python interpreter is used for building PySide2, the preprocessor define Py_Debug is now correctly propagated to PySide2 sources, which fixes previous crashes in debug builds. This affects only Linux and macOS builds. There is a subsequent change for making it work for Windows builds. All in all, this now allows proper mixing of debug / release versions of the Python interpreter with debug / release versions of PySide2 on Linux and macOS. Task-number: PYSIDE-508 Change-Id: I88a05c3ada0fb32c7c29bdb86d7a2c15acc963b8 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Clang: Fix build with MSVC2017/Clang 4.1Friedemann Kleint2017-07-141-0/+6
| | | | | | | | | | | | | | | | | | | | - Remove option -fPIC for Windows, fixing error: unsupported option '-fPIC' for target 'x86_64-pc-windows-msvc'" - Raise language level to prevent constexpr errors in MSVC libraries Task-number: QTBUG-57086 Change-Id: Ic5bd84a8ce37c9f93d70d983257c98431aa18efe Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | AbstractMetaType: Join the signature functionsFriedemann Kleint2017-07-112-51/+23
| | | | | | | | | | | | | | | | | | | | Introduce a common helper function to format the signature for minimalSignature() / cppSignature() which differ only by whitespace. Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: Ife6be7001618d73a7a2bc15e91bff4ae42192a45 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Shiboken: Improve debug operators of the type systemFriedemann Kleint2017-07-114-3/+74
| | | | | | | | | | | | | | | | | | | | | | - Add debug operator for TypeParser::Info - Add verbose mode to AbstractMetaType - Output more information for TypeEntry Task-number: PYSIDE-354 Task-number: PYSIDE-516 Change-Id: Id9882e89f9b5a51929f27b100d28396d3f6c4198 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Shiboken: Set C++ 11 globallyFriedemann Kleint2017-06-283-3/+1
| | | | | | | | | | Change-Id: I17634ebc245cae87819af16d79704326905e5783 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | [Reland] Fix crash on exit with debug Python 3Alexandru Croitor2017-06-271-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | Crash happens because of an use-after-free error. This is a bandaid fix transforming the crash into a memory leak. Proper fix will require more investigation and time. The commit was missing in 5.9 branch after repo merge. Task-number: PYSIDE-488 Change-Id: I56358573ca60d6f18fd85fbd7eb3eb0da8fbf163 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
* | Change parsing to #include the source headerFriedemann Kleint2017-06-191-15/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | shiboken is normally run on a global header that includes all classes to be wrapped. However, when passing a header that contains the class declaration, it happens that the temporary copy of the header (being the location of the class declaration) is stored as required #include by the generators. Fix by using #include instead, so that the original header from the command line is seen as location. Task-number: PYSIDE-526 Change-Id: Ie30a8a2b21606c9f6ed5dda3447885576fdc4c2c Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | shiboken: Further refactor command line arguments and helpFriedemann Kleint2017-06-099-83/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Replace the QMap of options returned by the generators by a vector of pairs to allow for specifying the order. This allows for better formatting -I/-F/-T in multiple lines. Add -h for help. Move the missing typelib file handling into main and print a help hint there. Change-Id: I5a95bd8d193be012aaa7ce3934945b25e21d3f79 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | Merge "Merge remote-tracking branch 'origin/5.6' into 5.9" into 5.9Friedemann Kleint2017-06-098-27/+50
|\ \
| * | Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2017-06-098-27/+50
| |\| | | | | | | | | | Change-Id: I73f39966a2af7aa935e1890e29c9b71573aae97c
| | * Fix missing headers in PySide custom buildChristian Tismer2017-06-092-18/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PySide itself built fine after the additional includes were added for inheritance. But when a smaller project is built, suddenly header files are not found, because the inherited names are not expected by the deployment. Therefore, we do no longer add more includes, but insert recursive headers for the few relevant cases. So the includes become a little longer, but the names of the include files are those as before the enhanced inheritance. Task-number: PYSIDE-500 Change-Id: Iab456307a3c2365dfe1964dbe222b7d0efac7878 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
| | * libshiboken: Fix/Silence some MSVC warningsFriedemann Kleint2017-06-096-9/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | autodecref.h(110): warning C4522: 'Shiboken::AutoDecRef': multiple assignment operators specified autodecref.h(78): warning C4800: 'PyObject *const ': forcing value to bool 'true' or 'false' (performance warning) conversions.h(282): warning C4800: 'long': forcing value to bool 'true' or 'false' (performance warning) basewrapper.cpp(625): warning C4800: 'int': forcing value to bool 'true' or 'false' (performance warning) basewrapper.cpp(654): warning C4800: 'SpecialCastFunction': forcing value to bool 'true' or 'false' (performance warning) basewrapper.cpp(1014): warning C4800: 'Shiboken::ParentInfo *': forcing value to bool 'true' or 'false' (performance warning) basewrapper.cpp(1044): warning C4800: 'void *': forcing value to bool 'true' or 'false' (performance warning) helper.cpp(56): warning C4244: 'initializing': conversion from 'Py_ssize_t' to 'int', possible loss of data shibokenbuffer.cpp(46): warning C4800: 'int': forcing value to bool 'true' or 'false' (performance warning) Change-Id: If1517fde8e7670f258a56f6d845a66ebb3d82141 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | | Port the suppression mechanism to use QRegularExpressionFriedemann Kleint2017-06-093-24/+54
|/ / | | | | | | | | Change-Id: I686308207c03de2216cd6a5143b2c66f3014a896 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* | shiboken2: Refactor path argument handlingFriedemann Kleint2017-06-071-21/+60
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, shiboken2 accepted path arguments of the format --option=path1;path2 using the native OS separator character. This poses a problem when writing cross-platform .pro files for applications. Refactor the code to allow for the options to occur multiple times on the command line and introduce short-hand options -I, -F, -T for includes, framework includes and type system paths to reduce command line length. Task-number: PYSIDE-526 Change-Id: Ice540cbffeb01841988a99fdeb84bb7ba969ed79 Reviewed-by: Christian Tismer <tismer@stackless.com>
* | Merge remote-tracking branch 'origin/5.6' into 5.9Friedemann Kleint2017-06-025-2024/+0
|\| | | | | | | Change-Id: Ia6485d1b1caa93c4ecdd02b0544f19d197a43fb0
| * Remove README.md of PySide2/Shiboken2Friedemann Kleint2017-06-021-19/+0
| | | | | | | | | | | | | | | | They contain outdated links and are no longer required after the repository merge. Change-Id: I6867435bcd1bbe53308dea1d9d8c1ba1a0fc0584 Reviewed-by: Christian Tismer <tismer@stackless.com>
| * Remove license files from previous submodulesFriedemann Kleint2017-06-024-2005/+0
| | | | | | | | | | | | Task-number: PYSIDE-431 Change-Id: I35594dbf7dc6430ab5d0a2d235303f2bb7bd3677 Reviewed-by: Christian Tismer <tismer@stackless.com>
| * move everying into sources/shiboken2Oswald Buddenhagen2017-05-22653-0/+106755
| | | | | | in preparation for a subtree merge. this should not be necessary to do in a separate commit, but git is a tad stupid about following history correctly without it.
* Remove AbstractMetaFunction::invalid()Friedemann Kleint2017-05-295-32/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change AbstractMetaBuilderPrivate::traverseFunction() to consistently return 0 if something does not fit. Previously, functions with half-parsed arguments with the invalid flag set were returned. This caused strange side effects since the flag was not checked in all places. The only relevant information is whether some constructors were rejected. In that case, no default constructors or default copy constructors should be generated. This is now determined by checking the code model function item; the attribute HasRejectConstructor is introduced for this. This fixes: - Make it possible to reject the QTextStreamManipulator constructor taking a function pointer without having a default constructor generated: typedef void (QTextStream::*QTSMFI)(int); QTextStreamManipulator(QTSMFI m, int a) Q_DECL_NOTHROW - Implement QtCharts whose class QAbstractSeries has a rejected constructor. Change-Id: I6310574ba677dac20699f257340d2c2a55674353 Reviewed-by: Christian Tismer <tismer@stackless.com>
* Use information about Constructor/Destructor functions from ClangFriedemann Kleint2017-05-293-53/+82
| | | | | | | Expand CodeModel::FunctionType accordingly. Change-Id: I2759f45e4c60f36d4583b1c475c4c2df1e00ace6 Reviewed-by: Christian Tismer <tismer@stackless.com>
* move everying into sources/shiboken2 (5.9 edition)Oswald Buddenhagen2017-05-22599-0/+91828
in preparation for a subtree merge. this should not be necessary to do in a separate commit, but git is a tad stupid about following history correctly without it.