File indexing completed on 2024-04-21 03:48:19
0001 /* 0002 * SPDX-FileCopyrightText: 1999-2001 Ewald Arnold <kvoctrain@ewald-arnold.de> 0003 * SPDX-FileCopyrightText: 2004, 2005, 2007 Peter Hedlund <peter.hedlund@kdemail.net> 0004 * SPDX-FileCopyrightText: 2007-2008 Frederik Gladhorn <frederik.gladhorn@kdemail.net> 0005 * SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "keduvocarticle.h" 0009 0010 #include <QMap> 0011 0012 class KEduVocArticle::Private 0013 { 0014 public: 0015 QMap<KEduVocWordFlags, QString> m_articles; 0016 }; 0017 0018 KEduVocArticle::KEduVocArticle() 0019 : d(new Private) 0020 { 0021 } 0022 0023 KEduVocArticle::KEduVocArticle(const KEduVocArticle &other) 0024 : d(new Private) 0025 { 0026 d->m_articles = other.d->m_articles; 0027 } 0028 0029 KEduVocArticle &KEduVocArticle::operator=(const KEduVocArticle &other) 0030 { 0031 d->m_articles = other.d->m_articles; 0032 return *this; 0033 } 0034 0035 KEduVocArticle::KEduVocArticle(const QString &fem_def, 0036 const QString &fem_indef, 0037 const QString &mal_def, 0038 const QString &mal_indef, 0039 const QString &neu_def, 0040 const QString &neu_indef) 0041 : d(new Private) 0042 { 0043 setArticle(mal_def, KEduVocWordFlag::Singular | KEduVocWordFlag::Definite | KEduVocWordFlag::Masculine); 0044 setArticle(fem_def, KEduVocWordFlag::Singular | KEduVocWordFlag::Definite | KEduVocWordFlag::Feminine); 0045 setArticle(neu_def, KEduVocWordFlag::Singular | KEduVocWordFlag::Definite | KEduVocWordFlag::Neuter); 0046 0047 setArticle(mal_indef, KEduVocWordFlag::Singular | KEduVocWordFlag::Indefinite | KEduVocWordFlag::Masculine); 0048 setArticle(fem_indef, KEduVocWordFlag::Singular | KEduVocWordFlag::Indefinite | KEduVocWordFlag::Feminine); 0049 setArticle(neu_indef, KEduVocWordFlag::Singular | KEduVocWordFlag::Indefinite | KEduVocWordFlag::Neuter); 0050 } 0051 0052 KEduVocArticle::~KEduVocArticle() 0053 { 0054 delete d; 0055 } 0056 0057 QString KEduVocArticle::article(KEduVocWordFlags flags) 0058 { 0059 return d->m_articles.value(flags & (KEduVocWordFlag::genders | KEduVocWordFlag::numbers | KEduVocWordFlag::Definite | KEduVocWordFlag::Indefinite)); 0060 } 0061 0062 void KEduVocArticle::setArticle(const QString &article, KEduVocWordFlags flags) 0063 { 0064 d->m_articles[flags & (KEduVocWordFlag::genders | KEduVocWordFlag::numbers | KEduVocWordFlag::Definite | KEduVocWordFlag::Indefinite)] = article; 0065 } 0066 0067 bool KEduVocArticle::isArticle(const QString &article) const 0068 { 0069 return d->m_articles.values().contains(article); 0070 } 0071 0072 bool KEduVocArticle::isEmpty() 0073 { 0074 // we don't count empty strings as articles 0075 foreach (const QString &s, d->m_articles) { 0076 if (!s.isEmpty()) 0077 return false; 0078 } 0079 return true; 0080 }