File indexing completed on 2022-10-04 13:56:32

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 KEduVocArticle::KEduVocArticle( const KEduVocArticle &other )
0023         :d( new Private )
0024 {
0025     d->m_articles = other.d->m_articles;
0026 }
0027 
0028 KEduVocArticle &KEduVocArticle::operator= ( const KEduVocArticle& other )
0029 {
0030     d->m_articles = other.d->m_articles;
0031     return *this;
0032 }
0033 
0034 KEduVocArticle::KEduVocArticle( const QString &fem_def, const QString &fem_indef, const QString &mal_def, const QString &mal_indef, const QString &neu_def, const QString &neu_indef )
0035         :d( new Private )
0036 {
0037     setArticle( mal_def, KEduVocWordFlag::Singular | KEduVocWordFlag::Definite | KEduVocWordFlag::Masculine );
0038     setArticle( fem_def, KEduVocWordFlag::Singular | KEduVocWordFlag::Definite | KEduVocWordFlag::Feminine );
0039     setArticle( neu_def, KEduVocWordFlag::Singular | KEduVocWordFlag::Definite | KEduVocWordFlag::Neuter );
0040 
0041     setArticle( mal_indef, KEduVocWordFlag::Singular | KEduVocWordFlag::Indefinite | KEduVocWordFlag::Masculine );
0042     setArticle( fem_indef, KEduVocWordFlag::Singular | KEduVocWordFlag::Indefinite | KEduVocWordFlag::Feminine );
0043     setArticle( neu_indef, KEduVocWordFlag::Singular | KEduVocWordFlag::Indefinite | KEduVocWordFlag::Neuter );
0044 }
0045 
0046 KEduVocArticle::~KEduVocArticle()
0047 {
0048     delete d;
0049 }
0050 
0051 
0052 QString KEduVocArticle::article(KEduVocWordFlags flags)
0053 {
0054     return d->m_articles.value(flags & (KEduVocWordFlag::genders | KEduVocWordFlag::numbers | KEduVocWordFlag::Definite | KEduVocWordFlag::Indefinite));
0055 }
0056 
0057 void KEduVocArticle::setArticle(const QString & article, KEduVocWordFlags flags)
0058 {
0059     d->m_articles[flags & (KEduVocWordFlag::genders | KEduVocWordFlag::numbers | KEduVocWordFlag::Definite | KEduVocWordFlag::Indefinite)] = article;
0060 }
0061 
0062 
0063 bool KEduVocArticle::isArticle(const QString & article) const
0064 {
0065     return d->m_articles.values().contains(article);
0066 }
0067 
0068 bool KEduVocArticle::isEmpty()
0069 {
0070     // we don't count empty strings as articles
0071     foreach(const QString& s, d->m_articles)
0072     {
0073         if (!s.isEmpty())
0074             return false;
0075     }
0076     return true;
0077 }
0078 
0079 
0080