summaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* CMake: Use new _qt_internal_get_tool_wrapper_script_pathAlexandru Croitor2022-10-281-5/+12
| | | | | | | | | As a drive-by, remove old usage of QT_TOOL_PATH_SETUP_COMMAND Pick-to: 6.4 Change-Id: I796792a907684db6df77849d2bd4b61ef03b3a15 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Port from container::count() and length() to size() - V4Marc Mutz2022-10-092-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a semantic patch using ClangTidyTransformator as in qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8, but extended to handle typedefs and accesses through pointers, too: const std::string o = "object"; auto hasTypeIgnoringPointer = [](auto type) { return anyOf(hasType(type), hasType(pointsTo(type))); }; auto derivedFromAnyOfClasses = [&](ArrayRef<StringRef> classes) { auto exprOfDeclaredType = [&](auto decl) { return expr(hasTypeIgnoringPointer(hasUnqualifiedDesugaredType(recordType(hasDeclaration(decl))))).bind(o); }; return exprOfDeclaredType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes)))); }; auto renameMethod = [&] (ArrayRef<StringRef> classes, StringRef from, StringRef to) { return makeRule(cxxMemberCallExpr(on(derivedFromAnyOfClasses(classes)), callee(cxxMethodDecl(hasName(from), parameterCountIs(0)))), changeTo(cat(access(o, cat(to)), "()")), cat("use '", to, "' instead of '", from, "'")); }; renameMethod(<classes>, "count", "size"); renameMethod(<classes>, "length", "size"); a.k.a qt-port-to-std-compatible-api V4 with config Scope: 'Container'. Change-Id: I58e1b41b91c34d2e860dbb5847b3752edbfc6fc9 Reviewed-by: Sona Kurazyan <kurazyan.sona@gmail.com>
* Port from qAsConst() to std::as_const()Marc Mutz2022-10-075-10/+10
| | | | | | | | | | | | | | We've been requiring C++17 since Qt 6.0, and our qAsConst use finally starts to bother us (QTBUG-99313), so time to port away from it now. Since qAsConst has exactly the same semantics as std::as_const (down to rvalue treatment, constexpr'ness and noexcept'ness), there's really nothing more to it than a global search-and-replace. Task-number: QTBUG-99313 Change-Id: Ifc205a53ed6809f98d6cd552de901ea7e90716f5 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Port from container::count() and length() to size()Marc Mutz2022-10-064-8/+8
| | | | | | | | | | | | | | | | | | | | | This is a semantic patch using ClangTidyTransformator as in qtbase/df9d882d41b741fef7c5beeddb0abe9d904443d8: auto QtContainerClass = anyOf( expr(hasType(cxxRecordDecl(isSameOrDerivedFrom(hasAnyName(classes))))).bind(o), expr(hasType(namedDecl(hasAnyName(<classes>)))).bind(o)); makeRule(cxxMemberCallExpr(on(QtContainerClass), callee(cxxMethodDecl(hasAnyName({"count", "length"), parameterCountIs(0))))), changeTo(cat(access(o, cat("size"), "()"))), cat("use 'size()' instead of 'count()/length()'")) a.k.a qt-port-to-std-compatible-api with config Scope: 'Container', with the extended set of container classes recognized. Change-Id: Id816b39977e17712fd078900037efc45f66a0175 Reviewed-by: Sona Kurazyan <kurazyan.sona@gmail.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Replace qExchange with std::exchangeMarc Mutz2022-10-063-3/+3
| | | | | | | | | None of these users require C++20 constexpr or C++23 noexcept, the only remaining difference between std::exchange and qExchange. Task-number: QTBUG-99313 Change-Id: I3a1cc903f8298085dd2bf09a08234557e9eb430a Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Enable QtRemoteObjects example documentationJuha Vuolle2022-09-233-1/+18
| | | | | | | | | | | | | This commit adds the example listing page and a link to it on the module's landing page. The examples that had the 'qdoc' file are included in the listing. Few examples' documentation is quite limited, but those can be addresed in their own tasks as needed. Fixes: QTBUG-105943 Change-Id: Id69baead6fa5a2a62a3ce7fdf3d7e6be06cc851d Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Port away from deprecated QRegularExpression::match() callIvan Solovev2022-08-301-2/+2
| | | | | | | Task-number: QTBUG-105102 Change-Id: Id96498dfd134614946d9668ff36748e20fbc20a9 Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Add QList<int> metatype registration so that QDataStream worksJuha Vuolle2022-08-302-0/+2
| | | | | | | | | | | | | Recent changes in qtbase have the consequence that some of the metatypes that were previously implicitly/indirectly registered no longer are. Fixes: QTBUG-105469 Change-Id: I3a62fc46dad82c64271d62f74e466b0a54fcd2d4 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* QtRemoteObjectsQml: remove dependency from unused private headerSona Kurazyan2022-08-292-2/+0
| | | | | | | | | | | | qjsvalue_p.h is included, but not used, so remove the unneeded include and dependency from QmlPrivate. Fixes: QTBUG-106003 Pick-to: 6.4 6.3 6.2 Change-Id: I161fd0bafb11af0e21778b0c9db3ada72f7bba80 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Juha Vuolle <juha.vuolle@insta.fi>
* Add QtRO over BT LE exampleBogDan Vatra2022-08-293-1/+2
| | | | | | | | | | | | | | | | | This commit adds Qt remote object example which demonstrates remote objects over Bluetooth Low Energy (LE). The example uses GATT characteristics and their value notifications as the transport method. The source (server) side is a simple "heater" object which is either turned ON or OFF, as controlled by the client. The temperature then changes upwards (heats) or downwards (cools) accordingly. The changing temperature value is shown by the client GUI. Fixes: QTBUG-99576 Change-Id: I70dff545db0e45e3026ed5a7a98fce7bf54b9821 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Ivan Solovev <ivan.solovev@qt.io>
* Change the license of all CMakeLists.txt and *.cmake files to BSDLucie Gérard2022-08-238-8/+8
| | | | | | | Task-number: QTBUG-105718 Change-Id: I3c41abc9bca22c7395fa8bbacb853e2081491d5f Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Add license headers to cmake filesLucie Gérard2022-07-076-0/+18
| | | | | | | | | | | | CMakeLists.txt and .cmake files of significant size (more than 2 lines according to our check in tst_license.pl) now have the copyright and license header. Existing copyright statements remain intact Task-number: QTBUG-88621 Change-Id: I645192906c25043651ee09447a2d98e70330a39c Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Fix race condition when accessing invalid indexElias Steurer2022-07-051-1/+4
| | | | | | | | | | | | This can sometimes happen when clicking fast on different items in debug mode. This this is a fix by Roman Putintsev. [ChangeLog][QtRemoteObjects][ModelReplica] Fix race condition when accessing invalid index Pick-to: 6.4 6.3 6.2 Fixes: QTBUG-74124 Change-Id: Ice95b4f91b50173ce804f3d664e9b12a4c74e1ce Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* SourceApiMap: De-inline dtor of polymorphic classMarc Mutz2022-06-212-2/+5
| | | | | | | | | | ... fixing Clang -Wweak-vtables warnings, which we'll soon add to headersclean. Pick-to: 6.4 Task-number: QTBUG-45582 Change-Id: I0a2962f216c2fb03e924bb94b21c0903450974c5 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Fix typo in debug outputKai Köhne2022-06-201-2/+3
| | | | | | | | | s/paremeters/parameters Task-number: QTBUG-97092 Pick-to: 6.3 6.4 Change-Id: I7f3e306f5899e4834aadc4ab142f1532652fedf3 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Use SPDX license identifiersLucie Gérard2022-06-1479-2804/+156
| | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: I315d7ce1d6c6c3497afdfe8b61a113fdc181c935 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Replace Q_DECLARE_METATYPE with QT_DECL_METATYPE_EXTERNSona Kurazyan2022-06-098-12/+34
| | | | | | | | | | | | | This reduces compilation time by avoiding repeated metatype instantiations. Can't backport to Qt 6.3 or 6.2 because this change introduces new exported symbols. Pick-to: 6.4 Fixes: QTBUG-102219 Change-Id: Ice0f606bdcfa283b8eb89c57c4b06650d3f88928 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
* Doc: Use find_package(Qt6 REQUIRED COMPONENTS ...) idiomKai Köhne2022-05-131-1/+1
| | | | | | | | | | | Using REQUIRED as a prefix instead of suffix works better with OPTIONAL_COMPONENTS, and is also the order in the CMake manual. Pick-to: 6.3 Task-number: QTBUG-98867 Change-Id: I02034035f8c67a1e55a826898231409c07ebd6bf Reviewed-by: Rui Oliveira Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* repparser: add missing #include <QHash>, <QSet>Marc Mutz2022-04-051-0/+2
| | | | | | | | These headers are no longer transitively included from qvariant.h. Pick-to: 6.3 6.2 Change-Id: I9e95274d23ae1175874fc89d5e2902b2da6b17ab Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
* Sweep replace setObjectName(QStringLiteral(~~~)) → QLatin1StringMarc Mutz2022-04-051-1/+1
| | | | | | | | Much more efficient now that setObjectName takes QAnyStringView. Change-Id: I0d7423f6fb9aa41f1570c21ce948f1b8d0e0ff16 Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@qt.io>
* QNX: Fix compiler warningsPasi Petäjäjärvi2022-03-252-5/+5
| | | | | | | | | | | | | warning: narrowing conversion of '(int)len' from 'int' to '_Sizet' {aka 'long unsigned int'} inside { } [-Wnarrowing] warning: narrowing conversion of 'data.QByteArray::length()' from 'qsizetype' {aka 'long long int'} to '_Sizet' {aka 'long unsigned int'} inside { } [-Wnarrowing] Pick-to: 6.2 6.3 Task-number: QTBUG-101384 Change-Id: Ia2e2c979ad668b040e0e2ba7a36f65bb91d8e18e Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* QNX: Fix compiler warningPasi Petäjäjärvi2022-03-251-0/+1
| | | | | | | | | warning: this statement may fall through [-Wimplicit-fallthrough=] Pick-to: 6.2 6.3 Task-number: QTBUG-101384 Change-Id: I645ad99db0ddea8e8da53ac7722bc534e2c49240 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Add missing qobject includesFabian Kosmale2022-03-242-0/+3
| | | | | | Change-Id: Ic6f439997f57df5bb374d901d39890dd1b1d2a0c Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Make sure all private headers include at least one otherThiago Macieira2022-03-086-1/+7
| | | | | | | | | | See script in qtbase/util/includeprivate for the rules. Since these files are being touched anyway, I also ran the updatecopyright.pl script too. Change-Id: Ib056b47dde3341ef9a52ffff13ef677e471674b6 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* qconnection_qnx_global_p.h: add missing Qt namespaceMarc Mutz2022-02-181-0/+4
| | | | | | | | | | | Exported or not, the library should not claim names like Thread in the global namespace if the user asked for a namespaced Qt build. Pick-to: 6.3 6.2 5.15 Change-Id: I31fc715a70923ab85d82c3407ca89c6b087eb19e Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Check nullptr before using pointerZhang Hao2022-02-101-1/+3
| | | | | | | | | | | Calling QRemoteObjectHost::hostUrl() will crash if remoteObjectIO is nullptr, so check if it's not nullptr before using it. Fixes: QTBUG-85124 Pick-to: 5.15 6.2 6.3 Done-with: sona.kurazyan@qt.io Change-Id: I1f73589958ba08d3997193653b57a64a223cd201 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Doc: State Qt versions for when CMake commands etc. were introducedJoerg Bornemann2022-02-091-0/+8
| | | | | | | Pick-to: 6.2 6.3 Task-number: QTBUG-100212 Change-Id: I35220805f85ebadbaffbcb32ae4654271926e155 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix addData() calls for upstream changeBrett Stottlemyer2022-02-021-2/+2
| | | | | | | | | | | | | qtbase commit de18b3ff370543b5b99bd068b871a2cd677cf9f3 ("QCryptographicHash: port addData() to QByteArrayView") requires passing a QByteArrayView to addData, and deprecated the overload that took a pointer and size. This fix avoids using the deprecated methods. Fixes: QTBUG-100358 Change-Id: Ic3ee2311d27fc7e5d17ecbb2953c244701c5109d Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CMake: Add missing dependencies to repc targetJoerg Bornemann2021-10-291-0/+1
| | | | | | | | | | | | This amends commit e37a1ffbf2f85475219be66e71ee2abc4f1dcede. The custom commands in Qt6RemoteObjectsMacros.cmake need to explicitly depend on the repc target since we changed the COMMAND to use generator expressions, and because CMP0112 in effect, this dependency is not automatically added. Change-Id: I2a1a41b84059b852aea7f13fc2b00fc1a43ca53d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* CMake: Replace deprecated QT_TOOL_PATH_SETUP_COMMANDJoerg Bornemann2021-10-281-6/+6
| | | | | | | | ...with _qt_internal_wrap_tool_command() calls. Change-Id: I6b7783492fdf43b0906c28fbe8e8bae655680406 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
* Fix reconnect to replaced server nodeBernd Weimer2021-10-251-1/+1
| | | | | | | | | | | When a host node was deleted the QTcpServer wasn't destroyed, because it wasn't parented to the actual remote objects TcpServerImpl. Fixes: QTBUG-97688 Pick-to: 5.15 6.2 Change-Id: Ib28f7d8d20f0d7bfd032c5736d6347f2f3f0c6f6 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Fix header change replicationJoni Poikelin2021-10-132-4/+11
| | | | | | | | | Fixes: QTBUG-91041 Pick-to: 6.2 5.15 Change-Id: I5b56ed81ee9df658e0c596199dfde067bba6cd43 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Fix warnings on Android with developer-buildAssam Boudjelthia2021-10-041-6/+7
| | | | | | | | | | | | | | The current code can throw the error: comparison of integers of different signs: 'quint32' (aka 'unsigned int') and 'qsizetype' (aka 'int') [-Werror,-Wsign-compare] Pick-to: 6.2 Task-number: QTBUG-91163 Change-Id: I171833f057d6216a9212c48589ce11f1eb428027 Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Migrate to autogenerated cpp exportsAlexey Edelev2021-09-272-10/+2
| | | | | | | | | | Replace the hardcoded cpp exports with a generated one where it's applicable. Task-number: QTBUG-90492 Change-Id: Ia349eabdd7cfbdcd8e29e4bb57806ebf58aecf91 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Bump almost all cmake_minimum_required calls to 3.16Alexandru Croitor2021-09-221-1/+1
| | | | | | | | | | | | | Needed for subsequent change that will check and error out if the version is lower than 3.16. We do that to ensure all policies introduced by CMake up to version 3.16 have their behavior set to NEW. Pick-to: 6.2 Task-number: QTBUG-95018 Change-Id: Iae47a29fea5ea6a14a7c7fb5528be02c40bbe617 Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* CMake: Manually run moc on generated rep_$name_$type headersAlexandru Croitor2021-09-221-2/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | User projects might have cmake_minimum_required set to 3.1, which means that the CMP0071 policy is set to OLD and AUTOMOC is not used for GENERATED header files. This leads to compilation / linking errors. Don't rely on AUTOMOC and instead run moc manually on the generated header files using qt6_wrap_cpp. Ensure that all qt6_wrap_cpp calls have a CMake target given so that they moc call gets the target's include dirs and compile definitions. Also, for macOS framework prefix builds, we need to be explicit in passing the location of the RemoteObjects framework. This avoids 'error: Parse error at "("' messages when running moc. Ideally this would be fixed in the implementation of qt6_wrap_cpp somewhat like it was done in d57ccd923f0df6abf6943c97e8223c9a24f0e4ae but that exact fix can't be applied to qt6_wrap_cpp because we don't have an explicit list of dependency include directories at configure time and CMake does not allow complicated regular expression transformations at generation time to detect and replace the -I flags with -F flags. Pick-to: 6.2 Fixes: QTBUG-95832 Change-Id: If773e61151c87fec6cc878ef5ef777487bf1ec7c Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* CMake: Use new __QT_INTERNAL_OUTPUT_MOC_JSON_FILES option in APIAlexandru Croitor2021-09-211-2/+4
| | | | | | | | | | | | | | | | The implementation of _qt_internal_add_repc_files and qt6_reps_from_headers were using qt_manual_moc which is internal API not available for user projects. Use the newly introduced __QT_INTERNAL_OUTPUT_MOC_JSON_FILES in qtbase's qt6_wrap_cpp to run moc and extract the metatypes json files. Fixes: QTBUG-95832 Change-Id: I64969478a2c1226aa0b73d458acd30c695d7521e Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io> (cherry picked from commit 7e58270087f705ab1b5b499c0849baac6a2f56ea) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* 6.2 cleanupBrett Stottlemyer2021-09-084-2/+7
| | | | | | | | | | | | | | Several cleanup fixes prior to 6.2 release: * Bump the protocol version: several earlier patches are incompatible with version 1.3. * Set the datastream format to little endian. Most machines are LE, so this prevents unnecessary byte-swapping. * Use 6.2 datastream format * Update compatibility table in the documentation. Pick-to: 6.2 6.2.0 Change-Id: I3a96513d9edf351ee30f49bad237005878b54b8a Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Allow PODs to include enums/flagsBrett Stottlemyer2021-09-073-44/+264
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The goal is to allow a new syntax: POD myPOD{ ENUM MyEnum {FOO, BAR} MyEnum myEnum, QString myString }, in addition to the current syntax POD myPOD(QString myString) The challenge is that the parsing simplified the detection of parameter types and parameter names by grabbing everything between the parentheses and having a separate chunk of code split that up. The new POD syntax requires the parser to detect and handle parameter types (including templated types) and handle that syntax. This converts the enum parsing to use new symbol and value tokens, rather than the enum_param token, which is necessary to enable a more generic type detection. The pod2 type has comparable syntax to the previous version, but uses brackets ('{' and '}') instead of parentheses for the definition. While this code detects the parameter type and parameter name distinctly, it currently merges all of the parameter content into a single string for processing using the original postprocess method. This ensures the capture is correct and there aren't any regressions. The tests were modified for the new POD syntax. The new code normalizes whitespace, rather than keeping the source formatting. Pick-to: 6.2 Change-Id: I671b23852fc2b515bcaea1ed389cfbde122683bd Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Allow debug run of repcBrett Stottlemyer2021-09-071-1/+6
| | | | | | | Pick-to: 6.2 Change-Id: I7a6c3aea728a00c21d333ae081b948d7b8a328cd Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Revert "Ensure versionless wrappers do not introduce a new variable scope"Craig Scott2021-09-061-12/+12
| | | | | | | | | | | | | This reverts commit ab6e2942fb428c2db3196d786f61e1a9ef79c07b. Macros add another level of escaping that functions do not. The conversion of the versionless wrappers to macros may alter the behavior, so revert that change. Task-number: QTBUG-96219 Pick-to: 6.2 Change-Id: I2f539d395f8471a87f7d45d6b333ec9d132180b3 Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Provide a schema for abstract local socketsBrett Stottlemyer2021-08-315-14/+86
| | | | | | | | | | | | | | | | Adds 'localabstract' schema, an extension of the 'local' schema. An abstract Unix domain socket (which is a non-portable Linux extension) avoids creating a file handle for local socket communication. This allows abstract sockets to run on systems that are non-writable, in particular Android environments. Pick-to: 6.2 Fixes: QTBUG-96006 Change-Id: I9f7f7854708264c38d05d704f3569bcc9e46cfbf Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Ensure versionless wrappers do not introduce a new variable scopeCraig Scott2021-08-311-12/+12
| | | | | | | | | | | | Using function instead of macro prevented the wrappers from being able to pass back any variables set by the wrapped function in the calling scope. Prefer macros to avoid future changes which might do this from silently swallowing such variable setting. Task-number: QTBUG-96121 Pick-to: 6.2 Change-Id: I22c8c28a446bcb09dc15325d07c30e15e88861cb Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
* Doc: Fix linking warning to 'qmake'Topi Reinio2021-08-261-1/+2
| | | | | | | Pick-to: 6.2 Task-number: QTBUG-95860 Change-Id: I73dc7e92d7613bae9f21f22b3d621e692434b63f Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Doc: Remove unsupported customFiltersKai Köhne2021-08-251-3/+0
| | | | | | Task-number: QTBUG-95987 Change-Id: I49e397a9fb3607bb9e6d477d0f81d93802b86317 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Move class signature handling to parser.gBrett Stottlemyer2021-08-241-16/+202
| | | | | | | | | | | | | | | | | | | This refactors the signature handling so the AST knows the signatures of the included types. This, in turn, allows the parser headers to be used directly for interpreting .rep files, without needing to includes pieces from the repc tool itself just for the signature. This also augments the signatures to use more fields * Handle individual elements of template parameters. For instance, "QHash<flag, POD>" will have a signature based on the flag's signature, the POD's signature and the string "QHash". * Flags include the signature of the enum they are based on * Enum signatures will include the type (if specified) and scope. Pick-to: 6.2 Change-Id: Id4e68e61a1c2690939e368e1e8e7555eb81fd68a Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Allow automatic move for local variablesSona Kurazyan2021-08-241-1/+1
| | | | | | | | | | | | Removed constness from some local variables to allow automatic move. Found by the codechecker. Pick-to: 6.2 Task-number: QTBUG-95752 Change-Id: Ic022f823c8fcf028b81d97ba877fe0409305697f Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Get rid of calls to virtual methods inside constructorsSona Kurazyan2021-08-242-45/+82
| | | | | | | | | | | | | | | | | | Move the implementations of setRegistryUrl() and setHostUrl() virtual methods to the non-virtual methods in the corresponding private classes and call them from the constructors. Although in the context of the current code the virtual method calls were legal and didn't lead to anything unexpected, but generally it's not recommended (so the codechecker complains) and can lead to issues in future, for example when refactoring or changing the code. Pick-to: 6.2 Task-number: QTBUG-95752 Change-Id: I13b97e3a1e179b0e5ce5bc7e9bbb9f5bb7166ebb Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Handle enums/flags as hash/map keysBrett Stottlemyer2021-08-175-42/+129
| | | | | | | | | This extends the previous commit to allow enums in hash/map containers. Pick-to: 6.2 Change-Id: Iaea9f9ddcbf2e01a611e20800305ebbf236eeada Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
* Support general QMap<*>/QHash<*> types with a proxyBrett Stottlemyer2021-08-175-5/+291
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Extends the QList<*> fix to work with associative containers as well. Note, this doesn't support enums as keys (to be added in a future commit) There are two use-cases which should be supported by a fix. 1) Proxy, where the parameter is stored, but then forward to downstream replicas which can be compiled. In this case, the ransformation needs to support conversion back to the declared type. 2) Dynamic replicas being used from QML. In this case, the dynamic type should be made available to QML in a way that is equivalent to the declared type. Dynamic storage/QML support are from the type QtROAssociativeContainer. This class is derived from QVariantMap, but stores a few extra members to allow forwarding without losing type information. Over-the-wire transfer is via a new class (QAS_), which stores elements in a QByteArray based on the valueType, not the container. Since the type will always be fully known at the source, we can use metatype detection to separate out the problematic types (an associative container of Q_GADGET types), and convert those to QAS_ containers for sending. Note: there is one additional piece needed. When we send the definition of a dynamic type (needed for the creation of the dynamic metaobject), we need to change the type of any member or parameter that is a such a container to QtROAssociativeContainer. Pick-to: 6.2 Change-Id: Ib50a01b4f9a3ecaa25a5a933feb6ed843e104b15 Reviewed-by: Michael Brasser <michael.brasser@live.com> Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>