1 /* 2 variantwrapper.h 3 4 This file is part of GammaRay, the Qt application inspection and 5 manipulation tool. 6 7 Copyright (C) 2014-2021 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com 8 Author: Volker Krause <volker.krause@kdab.com> 9 10 Licensees holding valid commercial KDAB GammaRay licenses may use this file in 11 accordance with GammaRay Commercial License Agreement provided with the Software. 12 13 Contact info@kdab.com if any conditions of this licensing are not clear to you. 14 15 This program is free software; you can redistribute it and/or modify 16 it under the terms of the GNU General Public License as published by 17 the Free Software Foundation, either version 2 of the License, or 18 (at your option) any later version. 19 20 This program is distributed in the hope that it will be useful, 21 but WITHOUT ANY WARRANTY; without even the implied warranty of 22 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 GNU General Public License for more details. 24 25 You should have received a copy of the GNU General Public License 26 along with this program. If not, see <http://www.gnu.org/licenses/>. 27 */ 28 29 #ifndef GAMMARAY_VARIANTWRAPPER_H 30 #define GAMMARAY_VARIANTWRAPPER_H 31 32 #include <QDataStream> 33 #include <QVariant> 34 35 namespace GammaRay { 36 /** Transport wrapper for variants that shall not be unpacked by GammaRay::MethodArgument. */ 37 class VariantWrapper 38 { 39 public: VariantWrapper()40 inline VariantWrapper() {} VariantWrapper(const QVariant & variant)41 explicit inline VariantWrapper(const QVariant &variant) 42 : m_variant(variant) {} 43 variant()44 inline QVariant variant() const { return m_variant; } setVariant(const QVariant & v)45 inline void setVariant(const QVariant &v) { m_variant = v; } QVariant()46 inline operator QVariant() const { return QVariant::fromValue(*this); } 47 48 private: 49 QVariant m_variant; 50 }; 51 52 inline QDataStream &operator<<(QDataStream &out, const VariantWrapper &wrapper) 53 { 54 out << wrapper.variant(); 55 return out; 56 } 57 58 inline QDataStream &operator>>(QDataStream &in, VariantWrapper &value) 59 { 60 QVariant v; 61 in >> v; 62 value.setVariant(v); 63 return in; 64 } 65 } 66 67 Q_DECLARE_METATYPE(GammaRay::VariantWrapper) 68 69 #endif 70