diff options
Diffstat (limited to 'src/sql/kernel/qsqlcachedresult.cpp')
-rw-r--r-- | src/sql/kernel/qsqlcachedresult.cpp | 26 |
1 files changed, 21 insertions, 5 deletions
diff --git a/src/sql/kernel/qsqlcachedresult.cpp b/src/sql/kernel/qsqlcachedresult.cpp index babe38bf732..6c810a7e9a6 100644 --- a/src/sql/kernel/qsqlcachedresult.cpp +++ b/src/sql/kernel/qsqlcachedresult.cpp @@ -36,6 +36,7 @@ #include <qvariant.h> #include <qdatetime.h> #include <qvector.h> +#include <QtSql/private/qsqldriver_p.h> QT_BEGIN_NAMESPACE @@ -53,8 +54,12 @@ QT_BEGIN_NAMESPACE static const uint initial_cache_size = 128; -QSqlCachedResultPrivate::QSqlCachedResultPrivate(): - rowCacheEnd(0), colCount(0), forwardOnly(false), atEnd(false) +QSqlCachedResultPrivate::QSqlCachedResultPrivate(QSqlCachedResult *q, const QSqlDriver *drv) + : QSqlResultPrivate(q, drv), + rowCacheEnd(0), + colCount(0), + forwardOnly(false), + atEnd(false) { } @@ -116,23 +121,24 @@ inline int QSqlCachedResultPrivate::cacheCount() const ////////////// -QSqlCachedResult::QSqlCachedResult(const QSqlDriver * db): QSqlResult (db) +QSqlCachedResult::QSqlCachedResult(QSqlCachedResultPrivate &d) + : QSqlResult(d) { - d = new QSqlCachedResultPrivate(); } QSqlCachedResult::~QSqlCachedResult() { - delete d; } void QSqlCachedResult::init(int colCount) { + Q_D(QSqlCachedResult); d->init(colCount, isForwardOnly()); } bool QSqlCachedResult::fetch(int i) { + Q_D(QSqlCachedResult); if ((!isActive()) || (i < 0)) return false; if (at() == i) @@ -171,6 +177,7 @@ bool QSqlCachedResult::fetch(int i) bool QSqlCachedResult::fetchNext() { + Q_D(QSqlCachedResult); if (d->canSeek(at() + 1)) { setAt(at() + 1); return true; @@ -185,6 +192,7 @@ bool QSqlCachedResult::fetchPrevious() bool QSqlCachedResult::fetchFirst() { + Q_D(QSqlCachedResult); if (d->forwardOnly && at() != QSql::BeforeFirstRow) { return false; } @@ -197,6 +205,7 @@ bool QSqlCachedResult::fetchFirst() bool QSqlCachedResult::fetchLast() { + Q_D(QSqlCachedResult); if (d->atEnd) { if (d->forwardOnly) return false; @@ -217,6 +226,7 @@ bool QSqlCachedResult::fetchLast() QVariant QSqlCachedResult::data(int i) { + Q_D(const QSqlCachedResult); int idx = d->forwardOnly ? i : at() * d->colCount + i; if (i >= d->colCount || i < 0 || at() < 0 || idx >= d->rowCacheEnd) return QVariant(); @@ -226,6 +236,7 @@ QVariant QSqlCachedResult::data(int i) bool QSqlCachedResult::isNull(int i) { + Q_D(const QSqlCachedResult); int idx = d->forwardOnly ? i : at() * d->colCount + i; if (i >= d->colCount || i < 0 || at() < 0 || idx >= d->rowCacheEnd) return true; @@ -235,6 +246,7 @@ bool QSqlCachedResult::isNull(int i) void QSqlCachedResult::cleanup() { + Q_D(QSqlCachedResult); setAt(QSql::BeforeFirstRow); setActive(false); d->cleanup(); @@ -242,6 +254,7 @@ void QSqlCachedResult::cleanup() void QSqlCachedResult::clearValues() { + Q_D(QSqlCachedResult); setAt(QSql::BeforeFirstRow); d->rowCacheEnd = 0; d->atEnd = false; @@ -249,6 +262,7 @@ void QSqlCachedResult::clearValues() bool QSqlCachedResult::cacheNext() { + Q_D(QSqlCachedResult); if (d->atEnd) return false; @@ -268,11 +282,13 @@ bool QSqlCachedResult::cacheNext() int QSqlCachedResult::colCount() const { + Q_D(const QSqlCachedResult); return d->colCount; } QSqlCachedResult::ValueCache &QSqlCachedResult::cache() { + Q_D(QSqlCachedResult); return d->cache; } |