for ( int num = 0; num <= 2; ++num) {
QDomElement numberElement = domDoc.createElement( KVTML_GRAMMATICAL_NUMBER[num] );
for ( int person = 0; person < 5; ++person) {
- if (!conjugation(numbers[num] | persons[person]).isEmpty()) {
+ KEduVocWordFlags curFlags = numbers[num] | persons[person];
+
+ if (keys().contains(curFlags) && !conjugation(curFlags).isEmpty()) {
QDomElement personElement = domDoc.createElement( KVTML_GRAMMATICAL_PERSON[person] );
numberElement.appendChild(personElement);
- conjugation(persons[person] | numbers[num]).toKVTML2(personElement);
+ conjugation(curFlags).toKVTML2(personElement);
}
}
if (numberElement.hasChildNodes()) {
KEduVocConjugation& operator = ( const KEduVocConjugation& a );
bool operator == ( const KEduVocConjugation& a ) const;
+ /**
+ * Returns an existing conjugation object. It is an error and leads to undefined behaviour
+ * to call this method with flags which are not in the list returned by keys().
+ *
+ * BCI: return a pointer instead of a reference.
+ *
+ * @param flags Flags obtained by a previous call to keys()
+ * @return The existing conjugation object with the specified properties
+ */
KEduVocText& conjugation(KEduVocWordFlags flags) const;
+ /**
+ * Updates or creates the conjugation object for the given word flags.
+ */
void setConjugation(const KEduVocText& conjugation, KEduVocWordFlags flags);
QList<KEduVocWordFlags> keys();