From: Jeremy Paul Whiting Date: Sun, 22 Jul 2007 19:44:02 +0000 (+0000) Subject: grade class uses d-pointer without crashing too X-Git-Tag: v3.92.0~19 X-Git-Url: https://git.rmz.fi/?a=commitdiff_plain;h=3889bc3afff01297da2d0785b27a31c5cecc9a05;p=libqmvoc.git grade class uses d-pointer without crashing too svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=691031 --- diff --git a/kdeeducore/keduvocgrade.cpp b/kdeeducore/keduvocgrade.cpp index 3682988..db3df64 100644 --- a/kdeeducore/keduvocgrade.cpp +++ b/kdeeducore/keduvocgrade.cpp @@ -15,27 +15,45 @@ #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; } diff --git a/kdeeducore/keduvocgrade.h b/kdeeducore/keduvocgrade.h index dee3371..bc1428c 100644 --- a/kdeeducore/keduvocgrade.h +++ b/kdeeducore/keduvocgrade.h @@ -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 diff --git a/kdeeducore/keduvockvtml2reader.h b/kdeeducore/keduvockvtml2reader.h index 17b5916..d123729 100644 --- a/kdeeducore/keduvockvtml2reader.h +++ b/kdeeducore/keduvockvtml2reader.h @@ -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);