[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdeedu/libkdeedu/kdeeducore
From: Pino Toscano <toscano.pino () tiscali ! it>
Date: 2007-02-28 23:01:29
Message-ID: 1172703689.328982.26960.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 638139 by pino:
API work on KEduVocConjugation:
- move all the private stuff into the Private class
- add copy constructor and operator= so it can be used as value class
M +112 -41 keduvocgrammar.cpp
M +9 -38 keduvocgrammar.h
--- trunk/KDE/kdeedu/libkdeedu/kdeeducore/keduvocgrammar.cpp #638138:638139
@@ -27,9 +27,55 @@
#include <klocale.h>
-KEduVocConjugation::conjug_name_t
-KEduVocConjugation::names [] =
+class KEduVocConjugation::Private
{
+public:
+ Private()
+ {
+ }
+
+ QString verbName; // added to have something to compare in operator ==, assumes \
that there is always only one + // KEduVocConjugation per verb
+
+ struct conjug_name_t
+ {
+ const char *abbrev;
+ const char *name;
+ };
+
+ struct conjug_t
+ {
+ conjug_t() {
+ p3common = false;
+ s3common = false;
+ }
+
+ QString type;
+ bool p3common;
+ bool s3common;
+ QString pers1_sing;
+ QString pers2_sing;
+ QString pers3_m_sing;
+ QString pers3_f_sing;
+ QString pers3_n_sing;
+ QString pers1_plur;
+ QString pers2_plur;
+ QString pers3_m_plur;
+ QString pers3_f_plur;
+ QString pers3_n_plur;
+ };
+
+ typedef QList<conjug_t> conjug_tList;
+ conjug_tList conjugations;
+
+ static conjug_name_t names[];
+ static QStringList userTenses;
+};
+
+
+KEduVocConjugation::Private::conjug_name_t
+KEduVocConjugation::Private::names [] =
+{
{ CONJ_SIMPLE_PRESENT, I18N_NOOP("Simple Present") },
{ CONJ_PRESENT_PROGR, I18N_NOOP("Present Progressive") },
{ CONJ_PRESENT_PERFECT, I18N_NOOP("Present Perfect") },
@@ -42,7 +88,7 @@
};
-QStringList KEduVocConjugation::userTenses;
+QStringList KEduVocConjugation::Private::userTenses;
//================================================================
@@ -134,20 +180,45 @@
//==============================================================
+KEduVocConjugation::KEduVocConjugation()
+ : d(new Private)
+{
+}
+
+
+KEduVocConjugation::KEduVocConjugation(const KEduVocConjugation& rhs)
+ : d(new Private(*rhs.d))
+{
+}
+
+
+KEduVocConjugation::~KEduVocConjugation()
+{
+ delete d;
+}
+
+
+KEduVocConjugation& KEduVocConjugation::operator =(const KEduVocConjugation& a)
+{
+ *d = *a.d;
+ return *this;
+}
+
+
bool KEduVocConjugation::operator ==(const KEduVocConjugation& a) const
{
- return verbName == a.getVerbName();
+ return d->verbName == a.getVerbName();
}
-const QString& KEduVocConjugation::getVerbName() const
+QString KEduVocConjugation::getVerbName() const
{
- return verbName;
+ return d->verbName;
}
int KEduVocConjugation::numEntries() const
{
- return conjugations.count();
+ return d->conjugations.count();
}
@@ -156,14 +227,14 @@
QList<KEduVocTenseRelation> vec;
for (int i = 0; i < numInternalNames(); i++) {
- vec.append(KEduVocTenseRelation(names[i].abbrev, i18n(names[i].name)));
+ vec.append(KEduVocTenseRelation(Private::names[i].abbrev, \
i18n(Private::names[i].name))); }
- for (int i = 0; i < userTenses.count(); i++) {
+ for (int i = 0; i < Private::userTenses.count(); i++) {
QString s;
s.setNum(i + 1);
s.prepend(UL_USER_TENSE);
- vec.append(KEduVocTenseRelation(s, userTenses[i]));
+ vec.append(KEduVocTenseRelation(s, Private::userTenses[i]));
}
return vec;
@@ -172,7 +243,7 @@
void KEduVocConjugation::setTenseNames(const QStringList& names)
{
- userTenses = names;
+ Private::userTenses = names;
}
@@ -183,15 +254,15 @@
s.remove(0, 1);
int i = s.toInt() - 1;
- if (i < userTenses.count() )
- return userTenses[i];
+ if (i < Private::userTenses.count() )
+ return Private::userTenses[i];
else
return "";
}
else {
for (int i = 0; i < numInternalNames(); i++)
- if (names[i].abbrev == abbrev) {
- return i18n(names[i].name);
+ if (Private::names[i].abbrev == abbrev) {
+ return i18n(Private::names[i].name);
}
}
@@ -202,9 +273,9 @@
QString KEduVocConjugation::getName(int idx)
{
if (idx < numInternalNames())
- return i18n(names[idx].name);
+ return i18n(Private::names[idx].name);
else if (idx < numTenses() )
- return userTenses[idx-numInternalNames()];
+ return Private::userTenses[idx-numInternalNames()];
else
return "";
}
@@ -212,8 +283,8 @@
QString KEduVocConjugation::getAbbrev(const QString &name)
{
- for (int i = 0; i < userTenses.count(); i++)
- if (userTenses[i] == name) {
+ for (int i = 0; i < Private::userTenses.count(); i++)
+ if (Private::userTenses[i] == name) {
QString s;
s.setNum(i + 1);
s.prepend(UL_USER_TENSE);
@@ -221,8 +292,8 @@
}
for (int i = 0; i < numInternalNames(); i++)
- if (names[i].name == name)
- return names[i].abbrev;
+ if (Private::names[i].name == name)
+ return Private::names[i].abbrev;
return "";
}
@@ -231,7 +302,7 @@
QString KEduVocConjugation::getAbbrev(int idx)
{
if (idx < numInternalNames() )
- return names[idx].abbrev;
+ return Private::names[idx].abbrev;
else if (idx < numTenses() ) {
QString s;
@@ -247,38 +318,38 @@
int KEduVocConjugation::numInternalNames()
{
- return sizeof(names) / sizeof(names[0]);
+ return sizeof(Private::names) / sizeof(Private::names[0]);
}
int KEduVocConjugation::numTenses()
{
- return numInternalNames() + userTenses.size();
+ return numInternalNames() + Private::userTenses.size();
}
QString KEduVocConjugation::getType(int idx)
{
- if (idx >= conjugations.count())
+ if (idx >= d->conjugations.count())
return "";
- return conjugations[idx].type;
+ return d->conjugations[idx].type;
}
void KEduVocConjugation::setType(int idx, const QString & type)
{
- if (idx >= (int) conjugations.size())
+ if (idx >= d->conjugations.size())
return;
- conjugations[idx].type = type;
+ d->conjugations[idx].type = type;
}
void KEduVocConjugation::cleanUp()
{
- for (int i = conjugations.count() - 1; i >= 0; i--) {
- const conjug_t *ctp = &conjugations[i];
+ for (int i = d->conjugations.count() - 1; i >= 0; i--) {
+ const Private::conjug_t *ctp = &d->conjugations[i];
if ( ctp->pers1_sing.simplified().isEmpty()
&& ctp->pers2_sing.simplified().isEmpty()
&& ctp->pers3_m_sing.simplified().isEmpty()
@@ -290,15 +361,15 @@
&& ctp->pers3_f_plur.simplified().isEmpty()
&& ctp->pers3_n_plur.simplified().isEmpty()
)
- conjugations.removeAt(i);
+ d->conjugations.removeAt(i);
}
}
bool KEduVocConjugation::isEmpty(int idx)
{
- if (idx < conjugations.count()) {
- const conjug_t *ctp = &conjugations[idx];
+ if (idx < d->conjugations.count()) {
+ const Private::conjug_t *ctp = &d->conjugations[idx];
return ctp->pers1_sing.simplified().isEmpty()
&& ctp->pers2_sing.simplified().isEmpty()
&& ctp->pers3_m_sing.simplified().isEmpty()
@@ -315,9 +386,9 @@
#define _GET_CON_(elem, type, default) \
- for (int i = 0; i < (int) conjugations.size(); i++) \
- if (conjugations[i].type == type) \
- return conjugations[i].elem; \
+ for (int i = 0; i < d->conjugations.size(); i++) \
+ if (d->conjugations[i].type == type) \
+ return d->conjugations[i].elem; \
return default;
@@ -397,15 +468,15 @@
#define _SET_CON_(elem, type, str) \
- for (int i = 0; i < (int) conjugations.size(); i++) \
- if (conjugations[i].type == type) { \
- conjugations[i].elem = str; \
+ for (int i = 0; i < d->conjugations.size(); i++) \
+ if (d->conjugations[i].type == type) { \
+ d->conjugations[i].elem = str; \
return; \
} \
- conjug_t ct; \
+ Private::conjug_t ct; \
ct.type = type; \
ct.elem = str; \
- conjugations.append(ct);
+ d->conjugations.append(ct);
void KEduVocConjugation::setPers3PluralCommon(const QString &type, bool f)
--- trunk/KDE/kdeedu/libkdeedu/kdeeducore/keduvocgrammar.h #638138:638139
@@ -169,8 +169,12 @@
/**
* The constructor
*/
- KEduVocConjugation() {}
+ explicit KEduVocConjugation();
+ KEduVocConjugation(const KEduVocConjugation& rhs);
+
+ ~KEduVocConjugation();
+
/**
* @return
*/
@@ -193,7 +197,7 @@
static int numInternalNames();
static int numTenses();
- const QString& getVerbName() const;
+ QString getVerbName() const;
QString getType(int index);
void setType(int index, const QString & type);
@@ -228,45 +232,12 @@
void setPers3MalePlural(const QString &type, const QString &str);
void setPers3NaturalPlural(const QString &type, const QString &str);
+ KEduVocConjugation& operator = (const KEduVocConjugation& a);
bool operator == (const KEduVocConjugation& a) const;
private:
- QString verbName; // added to have something to compare in operator ==, assumes \
that there is always only one
- // KEduVocConjugation per verb
-
- struct conjug_name_t
- {
- const char *abbrev;
- const char *name;
- };
-
- struct conjug_t
- {
- conjug_t() {
- p3common = false;
- s3common = false;
- }
-
- QString type;
- bool p3common;
- bool s3common;
- QString pers1_sing;
- QString pers2_sing;
- QString pers3_m_sing;
- QString pers3_f_sing;
- QString pers3_n_sing;
- QString pers1_plur;
- QString pers2_plur;
- QString pers3_m_plur;
- QString pers3_f_plur;
- QString pers3_n_plur;
- };
-
- typedef QList<conjug_t> conjug_tList;
- conjug_tList conjugations;
-
- static conjug_name_t names[];
- static QStringList userTenses;
+ class Private;
+ Private* const d;
};
#endif // grammarmanager_included
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic