File indexing completed on 2024-06-09 05:01:52
0001 /* 0002 SPDX-FileCopyrightText: 2014-2015 Christian Dávid <christian-david@web.de> 0003 SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 0006 #include "payeeidentifier.h" 0007 0008 #include "payeeidentifierdata.h" 0009 0010 payeeIdentifier::payeeIdentifier() 0011 : m_id(0), 0012 m_payeeIdentifier(0) 0013 { 0014 } 0015 0016 payeeIdentifier::payeeIdentifier(const payeeIdentifier& other) 0017 : m_id(other.m_id), 0018 m_payeeIdentifier(0) 0019 { 0020 if (other.m_payeeIdentifier != 0) 0021 m_payeeIdentifier = other.m_payeeIdentifier->clone(); 0022 } 0023 0024 payeeIdentifier::payeeIdentifier(payeeIdentifierData*const identifierdata) 0025 : m_id(0), 0026 m_payeeIdentifier(identifierdata) 0027 { 0028 } 0029 0030 payeeIdentifier::payeeIdentifier(const payeeIdentifier::id_t& id, payeeIdentifierData*const identifierdata) 0031 : m_id(id), 0032 m_payeeIdentifier(identifierdata) 0033 { 0034 } 0035 0036 payeeIdentifier::payeeIdentifier(const QString& id, payeeIdentifierData* const identifierdata) 0037 : m_id(id.midRef(5).toUInt()) 0038 , m_payeeIdentifier(identifierdata) 0039 { 0040 bool ok = false; // hopefully the compiler optimizes this away if compiled in non-debug mode 0041 Q_ASSERT(id.midRef(5).toUInt(&ok) && ok); 0042 } 0043 0044 payeeIdentifier::payeeIdentifier(const payeeIdentifier::id_t& id, const payeeIdentifier& other) 0045 : m_id(id), 0046 m_payeeIdentifier(0) 0047 { 0048 if (other.m_payeeIdentifier != 0) 0049 m_payeeIdentifier = other.m_payeeIdentifier->clone(); 0050 } 0051 0052 QString payeeIdentifier::idString() const 0053 { 0054 QString rc; 0055 if (m_id != 0) { 0056 rc = QString("IDENT%1").arg(m_id, 6, 10, QLatin1Char('0')); 0057 } 0058 return rc; 0059 } 0060 0061 payeeIdentifier::~payeeIdentifier() 0062 { 0063 delete m_payeeIdentifier; 0064 } 0065 0066 payeeIdentifierData* payeeIdentifier::operator->() 0067 { 0068 if (m_payeeIdentifier == 0) 0069 throw PAYEEIDENTIFIEREMPTYEXCEPTION; 0070 return m_payeeIdentifier; 0071 } 0072 0073 const payeeIdentifierData* payeeIdentifier::operator->() const 0074 { 0075 if (m_payeeIdentifier == 0) 0076 throw PAYEEIDENTIFIEREMPTYEXCEPTION; 0077 return m_payeeIdentifier; 0078 } 0079 0080 payeeIdentifierData* payeeIdentifier::data() 0081 { 0082 return operator->(); 0083 } 0084 0085 const payeeIdentifierData* payeeIdentifier::data() const 0086 { 0087 return operator->(); 0088 } 0089 0090 bool payeeIdentifier::isValid() const 0091 { 0092 if (m_payeeIdentifier != 0) 0093 return m_payeeIdentifier->isValid(); 0094 return false; 0095 } 0096 0097 QString payeeIdentifier::iid() const 0098 { 0099 if (m_payeeIdentifier != 0) 0100 return m_payeeIdentifier->payeeIdentifierId(); 0101 return QString(); 0102 } 0103 0104 payeeIdentifier& payeeIdentifier::operator=(const payeeIdentifier & other) 0105 { 0106 if (this == &other) 0107 return *this; 0108 0109 m_id = other.m_id; 0110 if (other.m_payeeIdentifier == 0) 0111 m_payeeIdentifier = 0; 0112 else 0113 m_payeeIdentifier = other.m_payeeIdentifier->clone(); 0114 0115 return *this; 0116 } 0117 0118 bool payeeIdentifier::operator==(const payeeIdentifier& other) const 0119 { 0120 if (m_id != other.m_id) 0121 return false; 0122 0123 if (isNull() || other.isNull()) { 0124 if (!isNull() || !other.isNull()) 0125 return false; 0126 return true; 0127 } 0128 return (*data() == *(other.data())); 0129 } 0130