File indexing completed on 2024-06-23 05:48:59
0001 /* 0002 This file is part of the Okteta Kasten Framework, made within the KDE community. 0003 0004 SPDX-FileCopyrightText: 2010, 2011, 2013 Alex Richardson <alex.richardson@gmx.de> 0005 0006 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0007 */ 0008 0009 #ifndef KASTEN_ADDITIONALDATA_HPP 0010 #define KASTEN_ADDITIONALDATA_HPP 0011 0012 #include <QScriptValue> 0013 #include <QVariant> 0014 0015 /** Additional data which is not needed frequently. Store this in a QHash to save memory */ 0016 class AdditionalData 0017 { 0018 public: 0019 enum class AdditionalDataType 0020 { 0021 UpdateFunction, 0022 ValidationFunction, 0023 ValidationError, 0024 ArrayLengthFunction, 0025 CustomTypeName, 0026 ToStringFunction, 0027 PointerInterpreterFunction, 0028 }; 0029 explicit AdditionalData(); 0030 AdditionalData(const AdditionalData& data); 0031 ~AdditionalData(); 0032 AdditionalData& operator=(const AdditionalData& data); 0033 QVariant get(AdditionalDataType entry) const; 0034 void set(AdditionalDataType entry, const QVariant& value); 0035 void remove(AdditionalDataType entry); 0036 0037 private: 0038 QHash<int, QVariant> mData; 0039 }; 0040 Q_STATIC_ASSERT(sizeof(AdditionalData) == sizeof(void*)); 0041 0042 Q_DECLARE_METATYPE(QScriptValue) 0043 0044 inline AdditionalData::AdditionalData() = default; 0045 0046 inline AdditionalData::AdditionalData(const AdditionalData& data) = default; 0047 0048 inline AdditionalData::~AdditionalData() = default; 0049 0050 inline AdditionalData& AdditionalData::operator=(const AdditionalData& data) = default; 0051 0052 inline QVariant AdditionalData::get(AdditionalData::AdditionalDataType entry) const 0053 { 0054 return mData.value((int)entry); 0055 } 0056 0057 inline void AdditionalData::set(AdditionalData::AdditionalDataType entry, const QVariant& value) 0058 { 0059 mData.insert((int)entry, value); 0060 } 0061 0062 inline void AdditionalData::remove(AdditionalData::AdditionalDataType entry) 0063 { 0064 mData.remove((int)entry); 0065 } 0066 0067 #endif /* KASTEN_ADDITIONALDATA_HPP */