File indexing completed on 2024-04-21 03:48:22
0001 /* 0002 * SPDX-FileCopyrightText: 2007 Frederik Gladhorn <frederik.gladhorn@kdemail.net> 0003 * SPDX-License-Identifier: GPL-2.0-or-later 0004 */ 0005 #include "keduvocpersonalpronoun.h" 0006 #include "keduvoccommon_p.h" 0007 0008 #include <QMap> 0009 0010 class KEduVocPersonalPronoun::Private 0011 { 0012 public: 0013 Private(); 0014 0015 bool m_maleFemaleDifferent; 0016 bool m_neutralExists; 0017 bool m_dualExists; 0018 QMap<KEduVocWordFlags, QString> m_personalpronouns; 0019 }; 0020 0021 KEduVocPersonalPronoun::Private::Private() 0022 { 0023 m_maleFemaleDifferent = false; 0024 m_neutralExists = false; 0025 m_dualExists = false; 0026 } 0027 0028 KEduVocPersonalPronoun::KEduVocPersonalPronoun() 0029 : d(new Private) 0030 { 0031 } 0032 0033 KEduVocPersonalPronoun::KEduVocPersonalPronoun(const KEduVocPersonalPronoun &other) 0034 : d(new Private) 0035 { 0036 d->m_maleFemaleDifferent = other.d->m_maleFemaleDifferent; 0037 d->m_neutralExists = other.d->m_neutralExists; 0038 d->m_personalpronouns = other.d->m_personalpronouns; 0039 d->m_dualExists = other.d->m_dualExists; 0040 } 0041 0042 KEduVocPersonalPronoun::~KEduVocPersonalPronoun() 0043 { 0044 delete d; 0045 } 0046 0047 KEduVocPersonalPronoun &KEduVocPersonalPronoun::operator=(const KEduVocPersonalPronoun &other) 0048 { 0049 d->m_maleFemaleDifferent = other.d->m_maleFemaleDifferent; 0050 d->m_neutralExists = other.d->m_neutralExists; 0051 d->m_personalpronouns = other.d->m_personalpronouns; 0052 d->m_dualExists = other.d->m_dualExists; 0053 return *this; 0054 } 0055 0056 bool KEduVocPersonalPronoun::operator==(const KEduVocPersonalPronoun &other) const 0057 { 0058 return d->m_personalpronouns == other.d->m_personalpronouns && d->m_maleFemaleDifferent == other.d->m_maleFemaleDifferent 0059 && d->m_neutralExists == other.d->m_neutralExists && d->m_dualExists == other.d->m_dualExists; 0060 } 0061 0062 QString KEduVocPersonalPronoun::personalPronoun(KEduVocWordFlags flags) const 0063 { 0064 QString p = d->m_personalpronouns.value(flags & (KEduVocWordFlag::persons | KEduVocWordFlag::numbers | KEduVocWordFlag::genders)); 0065 if (p.isEmpty() && !(flags & KEduVocWordFlag::genders) && d->m_maleFemaleDifferent && d->m_neutralExists) { 0066 // initial flag lookup failed, adding neuter gender flag 0067 flags |= KEduVocWordFlag::Neuter; 0068 p = d->m_personalpronouns.value(flags & (KEduVocWordFlag::persons | KEduVocWordFlag::numbers | KEduVocWordFlag::genders)); 0069 } 0070 return p; 0071 } 0072 0073 void KEduVocPersonalPronoun::setPersonalPronoun(const QString &personalpronoun, KEduVocWordFlags flags) 0074 { 0075 d->m_personalpronouns[flags & (KEduVocWordFlag::persons | KEduVocWordFlag::numbers | KEduVocWordFlag::genders)] = personalpronoun; 0076 } 0077 0078 bool KEduVocPersonalPronoun::maleFemaleDifferent() const 0079 { 0080 return d->m_maleFemaleDifferent; 0081 } 0082 0083 void KEduVocPersonalPronoun::setMaleFemaleDifferent(bool different) 0084 { 0085 d->m_maleFemaleDifferent = different; 0086 } 0087 0088 bool KEduVocPersonalPronoun::neutralExists() const 0089 { 0090 return d->m_neutralExists; 0091 } 0092 0093 void KEduVocPersonalPronoun::setNeutralExists(bool exists) 0094 { 0095 d->m_neutralExists = exists; 0096 } 0097 0098 bool KEduVocPersonalPronoun::dualExists() const 0099 { 0100 return d->m_dualExists; 0101 } 0102 0103 void KEduVocPersonalPronoun::setDualExists(bool exists) 0104 { 0105 d->m_dualExists = exists; 0106 }