]> Git trees. - libqmvoc.git/commitdiff
grade class uses d-pointer without crashing too
authorJeremy Paul Whiting <jpwhiting@kde.org>
Sun, 22 Jul 2007 19:44:02 +0000 (19:44 +0000)
committerJeremy Paul Whiting <jpwhiting@kde.org>
Sun, 22 Jul 2007 19:44:02 +0000 (19:44 +0000)
svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=691031

kdeeducore/keduvocgrade.cpp
kdeeducore/keduvocgrade.h
kdeeducore/keduvockvtml2reader.h

index 3682988bce23adf68297922b23de62cd0b3ff23a..db3df648739d63452ac56926853d678aecd89ec5 100644 (file)
 
 #include "keduvocgrade.h"
 
+class KEduVocGradePrivate
+{
+  public:
+    grade_t m_grade;
+    count_t m_queryCount;
+    count_t m_badCount;
+    QDateTime m_queryDate;
+};
+
 KEduVocGrade::KEduVocGrade()
+  :d(new KEduVocGradePrivate)
 {
     resetGrades();
 }
 
+KEduVocGrade::KEduVocGrade(const KEduVocGrade &other)
+  :d(new KEduVocGradePrivate)
+{
+    setGrade(other.grade());
+    setQueryCount(other.queryCount());
+    setBadCount(other.badCount());
+    setQueryDate(other.queryDate());
+}
 
 void KEduVocGrade::resetGrades()
 {
-    m_grade = KV_NORM_GRADE;
-    m_queryCount = 0;
-    m_badCount = 0;
+    d->m_grade = KV_NORM_GRADE;
+    d->m_queryCount = 0;
+    d->m_badCount = 0;
 
     QDateTime dt;
     dt.setTime_t(0);
-    m_queryDate = dt;
+    d->m_queryDate = dt;
 }
 
 
 grade_t KEduVocGrade::grade () const
 {
-    return m_grade;
+    return d->m_grade;
 }
 
 
@@ -45,7 +63,7 @@ void KEduVocGrade::setGrade ( grade_t grade )
         grade = KV_MAX_GRADE;
     if ( grade < KV_MIN_GRADE )
         grade = KV_MIN_GRADE;
-    m_grade = grade;
+    d->m_grade = grade;
 }
 
 
@@ -63,7 +81,7 @@ void KEduVocGrade::decGrade ()
 
 count_t KEduVocGrade::queryCount ( )  const
 {
-    return m_queryCount;
+    return d->m_queryCount;
 }
 
 
@@ -81,29 +99,29 @@ void KEduVocGrade::incBadCount ( )
 
 void KEduVocGrade::setQueryCount ( count_t count )
 {
-    m_queryCount = count;
+    d->m_queryCount = count;
 }
 
 
 count_t KEduVocGrade::badCount ( ) const
 {
-    return m_badCount;
+    return d->m_badCount;
 }
 
 
 void KEduVocGrade::setBadCount ( count_t count )
 {
-    m_badCount = count;
+    d->m_badCount = count;
 }
 
 
 QDateTime KEduVocGrade::queryDate () const
 {
-    return m_queryDate;
+    return d->m_queryDate;
 }
 
 
 void KEduVocGrade::setQueryDate ( const QDateTime & date )
 {
-    m_queryDate = date;
+    d->m_queryDate = date;
 }
index dee337136585b574ddec18671a3c5d68b08deee7..bc1428c38505dc10f9e7280fa6cbf40365299082 100644 (file)
@@ -51,6 +51,8 @@
 typedef signed char grade_t;
 typedef unsigned short count_t;
 
+class KEduVocGradePrivate;
+
 /**
 Contains grading information (query date, bad count) for one language with respect to another.
 
@@ -61,6 +63,11 @@ class KDEEDUCORE_EXPORT KEduVocGrade
 public:
     KEduVocGrade();
 
+    /** copy constructor
+     * provides safe copy of d pointer
+     */
+    KEduVocGrade(const KEduVocGrade &other);
+
       /** returns query count of given translation as int
    *
    * @param index            index of translation
@@ -164,11 +171,8 @@ public:
     void setQueryDate ( const QDateTime & date );
 
 private:
-    grade_t m_grade;
-    count_t m_queryCount;
-    count_t m_badCount;
-    QDateTime m_queryDate;
 
+    KEduVocGradePrivate *d;
 };
 
 #endif
index 17b5916f24067f0f892f2324275e428cea538904..d12372952264c057af02f6147faf77fce7249e63 100644 (file)
@@ -105,7 +105,12 @@ public:
    * @param mc KEduVocMultipleChoice object to read to
    */
   bool readMultipleChoice(QDomElement &multipleChoiceElement, KEduVocMultipleChoice &mc);
-  bool readGrade(QDomElement &gradeElement);
+  
+  /** read a grade
+   * @param gradeElement element to read from
+   * #param grade object to read to
+   */
+  bool readGrade(QDomElement &gradeElement, KEduVocGrade &grade);
 
   bool readLesson(QDomElement &lessonElement);