diff options
Diffstat (limited to 'src/dbus/qdbusargument.h')
-rw-r--r-- | src/dbus/qdbusargument.h | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/dbus/qdbusargument.h b/src/dbus/qdbusargument.h index f04cbc1ed43..b79f675a9e4 100644 --- a/src/dbus/qdbusargument.h +++ b/src/dbus/qdbusargument.h @@ -1,5 +1,6 @@ // Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only +// Qt-Security score:significant reason:default #ifndef QDBUSARGUMENT_H #define QDBUSARGUMENT_H @@ -119,6 +120,27 @@ protected: QDBusArgument(QDBusArgumentPrivate *d); friend class QDBusArgumentPrivate; mutable QDBusArgumentPrivate *d; + +private: + template <typename... T> + friend QDBusArgument &operator<<(QDBusArgument &argument, const std::tuple<T...> &tuple) + { + static_assert(sizeof...(T) != 0, "D-Bus doesn't allow empty structs"); + argument.beginStructure(); + std::apply([&argument](const auto &...elements) { (argument << ... << elements); }, tuple); + argument.endStructure(); + return argument; + } + + template <typename... T> + friend const QDBusArgument &operator>>(const QDBusArgument &argument, std::tuple<T...> &tuple) + { + static_assert(sizeof...(T) != 0, "D-Bus doesn't allow empty structs"); + argument.beginStructure(); + std::apply([&argument](auto &...elements) { (argument >> ... >> elements); }, tuple); + argument.endStructure(); + return argument; + } }; Q_DECLARE_SHARED(QDBusArgument) @@ -323,26 +345,6 @@ inline const QDBusArgument &operator>>(const QDBusArgument &arg, std::pair<T1, T return arg; } -template <typename... T> -QDBusArgument &operator<<(QDBusArgument &argument, const std::tuple<T...> &tuple) -{ - static_assert(sizeof...(T) != 0, "D-Bus doesn't allow empty structs"); - argument.beginStructure(); - std::apply([&argument](const auto &...elements) { (argument << ... << elements); }, tuple); - argument.endStructure(); - return argument; -} - -template <typename... T> -const QDBusArgument &operator>>(const QDBusArgument &argument, std::tuple<T...> &tuple) -{ - static_assert(sizeof...(T) != 0, "D-Bus doesn't allow empty structs"); - argument.beginStructure(); - std::apply([&argument](auto &...elements) { (argument >> ... >> elements); }, tuple); - argument.endStructure(); - return argument; -} - QT_END_NAMESPACE #endif // QT_NO_DBUS |