summaryrefslogtreecommitdiffstats
path: root/src/remoteobjects
Commit message (Collapse)AuthorAgeFilesLines
...
* 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-235-5/+5
| | | | | | | 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-073-0/+9
| | | | | | | | | | | | 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-1476-2689/+150
| | | | | | | | | | | 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>
* 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>
* 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-072-32/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* 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>
* Clean up Qt RemoteObjects documentationSona Kurazyan2021-08-175-11/+16
| | | | | | | | | | | | | - Rename Remoteobjects -> RemoteObjects - Fix the import version for QML types - Add a "Using the Module" section, as it is done for most of the modules. - Other minor fixes Pick-to: 6.2 Fixes: QTBUG-94899 Change-Id: If522b0c73994f59a84821fb35d13c11a5d80c172 Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Add ability to use class enums in .repBrett Stottlemyer2021-08-172-3/+5
| | | | | | | | | | | | This extends the pattern match for enums (NB: w/ backwards compatibility) to allow generation of class enums as well as typed enums. NB2: I didn't realize "regular" enums could be typed in C++11, but that is supported as well. Pick-to: 6.2 Fixes: QTBUG-74835 Change-Id: I8baf334041ca54eefaf9e81f5dd08d7b57819838 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Doc: Add thumbnail images to the example docsVenugopal Shivashankar2021-08-171-0/+6
| | | | | | | | Task-number: QTBUG-95860 Pick-to: 6.2 Change-Id: I14d166d1125251ea949ddcc463aae44299609922 Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* reverseProxy: Update documentationMårten Nordheim2021-08-161-6/+5
| | | | | | | | | | myInternalHost was not connected to any registry so it could not have acquired any reverse-proxied objects. nodeOnRemoteDevice must connect with setRegistryUrl rather than connectToNode to set up notification in both directions. Change-Id: I95f01805731fb1f1b7a14d8bd739666b1f6cb424 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Fix crash when using QList<*> with a proxyMichael Brasser2021-08-086-2/+353
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt6 fixes the original test case, as it now generates metatype info at compile time for container classes of all primitive types. `subclass.rep` was modified to include the type QList<MyPOD> as a property, which did crash in Qt6, because PODs can have their metaObjects created at runtime, which do not generate container<POD> metatypes. 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, transforming to something that works dynamically should 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 and QML support are from the type QtROSequentialContainer. This class is derived from QVariant list, but stores a few extra members allow forwarding without losing type information. Over-the-wire transfer is via a new class (QSQ_), which stores the 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 (a sequential container of Q_GADGET types), and convert those to QSQ_ 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 QtROSequentialContainer. Pick-to: 6.2 Change-Id: Ie2ca53bcbeb4ca0e38c672b5ce951742f625711a Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Restructure CMake API docs to add them to the main CMake docs pageSona Kurazyan2021-08-062-60/+151
| | | | | | | | | | | | | | | | | The main CMake command reference page for all modules uses annotated lists of items that are grouped together (for example, see the link in the bugreport). It has an entry for QtRemoteObjects, but there's no group with the name it links to, so the docs don't show up. Moved the docs for each QtRemoteObjects CMake functions to separate pages, which are grouped as the main CMake doc page expects. This makes CMake API docs for QtRemoteObjects consitent with the docs for other modules. Pick-to: 6.2 Task-number: QTBUG-95433 Change-Id: Ia6ebe1a825ec9bcdfb4628b92a32ad31d3938e24 Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Paul Wicking <paul.wicking@qt.io>
* Make sure dynamic replica values are decodedBrett Stottlemyer2021-08-051-0/+7
| | | | | | | | This affects enums and container types (added in a separate patchset). Pick-to: 6.2 Change-Id: I924cd698bfed9a6e6e480132e7f69f38e13665a8 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* Refactor decodeVariant to pass by rvalue ref/std::moveBrett Stottlemyer2021-08-049-37/+39
| | | | | | | | | | | | | | The decodeVariant calls were weird in how their parameters were pass by reference so they could be changed, but without forcing a copy. It is clearer to pass by rvalue ref, using std::move on the calling side. This rippled up to calls that called the method, including setProperties which is part of the repc generated code. Because of the repc change, this should *not* be picked to Qt5. Pick-to: 6.2 Change-Id: Ieb1b0620569ad8eb9797edc57cc189d0b426510c Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
* Doc: Use correct documentation groupPaul Wicking2021-08-041-2/+2
| | | | | | | Task-number: QTBUG-94904 Pick-to: 6.2 Change-Id: I372399728e9dbfc95a638e58f149858e293960a3 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
* Rename qt6_rep_from_headers -> qt6_reps_from_headersSona Kurazyan2021-08-033-7/+7
| | | | | | | | | This function generates multiple .rep files in case if multiple headers are passed, so `qt6_reps_from_headers` is a better name. Pick-to: 6.2 Change-Id: I71967f40ec38c817d4414d2470728168a7da06b5 Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* CMake: make qt_rep_from_header function pluralSona Kurazyan2021-08-023-7/+7
| | | | | | | | | It can take multiple header files. Pick-to: 6.2 Change-Id: I0105000d63cf06448b2373517d37bfb65fcbf8fb Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> Reviewed-by: Brett Stottlemyer <bstottle@ford.com>
* Clean-up the qremoteobjectsource.h headerSona Kurazyan2021-07-302-98/+114
| | | | | | | | | | | | Move the methods and structs that don't need to be public into the corresponding .cpp file. Pick-to: 6.2 Task-number: QTBUG-94407 Change-Id: I125f17a214e09ff2ea9ae98801b418e07d732868 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Brett Stottlemyer <bstottle@ford.com> Reviewed-by: Alex Blasche <alexander.blasche@qt.io>