File indexing completed on 2024-05-12 16:42:37
0001 /* 0002 SPDX-FileCopyrightText: 2002-2011 Thomas Baumgart <tbaumgart@kde.org> 0003 SPDX-FileCopyrightText: 2017-2018 Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com> 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "mymoneykeyvaluecontainer.h" 0008 #include "mymoneykeyvaluecontainer_p.h" 0009 0010 // ---------------------------------------------------------------------------- 0011 // QT Includes 0012 0013 // ---------------------------------------------------------------------------- 0014 // KDE Includes 0015 0016 // ---------------------------------------------------------------------------- 0017 // Project Includes 0018 0019 #include "mymoneyexception.h" 0020 0021 Q_GLOBAL_STATIC(QString, nullString) 0022 0023 MyMoneyKeyValueContainer::MyMoneyKeyValueContainer() : 0024 d_ptr(new MyMoneyKeyValueContainerPrivate) 0025 { 0026 } 0027 0028 MyMoneyKeyValueContainer::MyMoneyKeyValueContainer(const MyMoneyKeyValueContainer& other) : 0029 d_ptr(new MyMoneyKeyValueContainerPrivate(*other.d_func())) 0030 { 0031 } 0032 0033 MyMoneyKeyValueContainer::~MyMoneyKeyValueContainer() 0034 { 0035 Q_D(MyMoneyKeyValueContainer); 0036 delete d; 0037 } 0038 0039 QString MyMoneyKeyValueContainer::value(const QString& key) const 0040 { 0041 Q_D(const MyMoneyKeyValueContainer); 0042 QMap<QString, QString>::ConstIterator it; 0043 0044 it = d->m_kvp.find(key); 0045 if (it != d->m_kvp.end()) 0046 return (*it); 0047 return *nullString; 0048 } 0049 0050 void MyMoneyKeyValueContainer::setValue(const QString& key, const QString& value) 0051 { 0052 Q_D(MyMoneyKeyValueContainer); 0053 d->m_kvp[key] = value; 0054 } 0055 0056 QMap<QString, QString> MyMoneyKeyValueContainer::pairs() const 0057 { 0058 Q_D(const MyMoneyKeyValueContainer); 0059 return d->m_kvp; 0060 } 0061 0062 void MyMoneyKeyValueContainer::setPairs(const QMap<QString, QString>& list) 0063 { 0064 Q_D(MyMoneyKeyValueContainer); 0065 d->m_kvp = list; 0066 } 0067 0068 void MyMoneyKeyValueContainer::deletePair(const QString& key) 0069 { 0070 Q_D(MyMoneyKeyValueContainer); 0071 QMap<QString, QString>::Iterator it; 0072 0073 it = d->m_kvp.find(key); 0074 if (it != d->m_kvp.end()) 0075 d->m_kvp.erase(it); 0076 } 0077 0078 void MyMoneyKeyValueContainer::clear() 0079 { 0080 Q_D(MyMoneyKeyValueContainer); 0081 d->m_kvp.clear(); 0082 } 0083 0084 bool MyMoneyKeyValueContainer::operator == (const MyMoneyKeyValueContainer& right) const 0085 { 0086 Q_D(const MyMoneyKeyValueContainer); 0087 QMap<QString, QString>::ConstIterator it_a, it_b; 0088 0089 auto d2 = static_cast<const MyMoneyKeyValueContainerPrivate *>(right.d_func()); 0090 it_a = d->m_kvp.begin(); 0091 it_b = d2->m_kvp.begin(); 0092 0093 while (it_a != d->m_kvp.end() && it_b != d2->m_kvp.end()) { 0094 if (it_a.key() != it_b.key() 0095 || (((*it_a).length() != 0 || (*it_b).length() != 0) && *it_a != *it_b)) 0096 return false; 0097 ++it_a; 0098 ++it_b; 0099 } 0100 0101 return (it_a == d->m_kvp.end() && it_b == d2->m_kvp.end()); 0102 } 0103 0104 0105 QString MyMoneyKeyValueContainer::operator[](const QString& k) const 0106 { 0107 return value(k); 0108 } 0109 0110 QString& MyMoneyKeyValueContainer::operator[](const QString& k) 0111 { 0112 Q_D(MyMoneyKeyValueContainer); 0113 return d->m_kvp[k]; 0114 }