mirror of https://github.com/qt/qtgrpc.git
The functionality is desirable by some users, we re-enable it. New API addresses the core issue that is partially related to QTBUG-119912, but has wider concequences in blind use in user projects. We add the 'mut' prefix to all mutable getters to make the mutable access explicit. Overload approach leads to unwanted detaches not only whe is used be moc-generated code, but also in user projects if developers do not pay enough attention to const modifiers of their variables/references. We declined to restore it, dispite it was the better looking API, in favor to the code safety. This also reveals the code clashing scenario, when the overload might happen if the message has both 'a' and 'mutA' fields in its definition. This scenario is kindly forbidden by our generator, and sanitized at very early stages. We expect that it won't happen in user projects, but even if it will, the solution is to rename the field when generating Qt code. The serialization/deserialization do not depend on field naming directly. json_name attribute also will help to workaround this. The undocumented ALLOW_MUTABLE_GETTER_CONFLICTS option allows clashing the mutable getter names, but its usage currently limited by our internal code only. The reason unfixed QTBUG-119912 issue in moc. Once the issue is fixed, the moc version check should get the proper version, but not '99' as for now and the ALLOW_MUTABLE_GETTER_CONFLICTS will become public. Another design solution is the use of overloaded functions that return pointers, like it's done it the reference protobuf. But this kind of API leaves the pointer ownership undefined and decided to not be used. [ChangeLog][Protobuf] The generated messages now have the mutable getters for the fiels of the message type. The getters have 'mut' prefix and implicily allocate the respective fields if needed, so the use of intermediate message objects is not required. Task-number: QTBUG-119913 Change-Id: I09b9ee37e1fbbe37b9c3cb501e92442da8ad3e4b Reviewed-by: Dennis Oberst <dennis.oberst@qt.io> |
||
---|---|---|
LICENSES | ||
cmake | ||
coin | ||
examples | ||
src | ||
tests | ||
.clang-format | ||
.cmake.conf | ||
.gitattributes | ||
.gitignore | ||
.gitreview | ||
.tag | ||
CMakeLists.txt | ||
LICENSE.Apache-2.0.txt | ||
REUSE.toml | ||
configure.cmake | ||
dependencies.yaml | ||
licenseRule.json | ||
qt_attribution.json | ||
qt_cmdline.cmake |