diff options
Diffstat (limited to 'src/sql/drivers/ibase/qsql_ibase.cpp')
-rw-r--r-- | src/sql/drivers/ibase/qsql_ibase.cpp | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/src/sql/drivers/ibase/qsql_ibase.cpp b/src/sql/drivers/ibase/qsql_ibase.cpp index 2137514679..bd97db189c 100644 --- a/src/sql/drivers/ibase/qsql_ibase.cpp +++ b/src/sql/drivers/ibase/qsql_ibase.cpp @@ -312,11 +312,13 @@ struct QIBaseEventBuffer { class QIBaseDriverPrivate : public QSqlDriverPrivate { + Q_DECLARE_PUBLIC(QIBaseDriver) public: - QIBaseDriverPrivate(QIBaseDriver *d) : QSqlDriverPrivate(), q(d), ibase(0), trans(0), tc(0) { dbmsType = Interbase; } + QIBaseDriverPrivate() : QSqlDriverPrivate(), ibase(0), trans(0), tc(0) { dbmsType = Interbase; } bool isError(const char *msg, QSqlError::ErrorType typ = QSqlError::UnknownError) { + Q_Q(QIBaseDriver); QString imsg; ISC_LONG sqlcode; if (!getIBaseError(imsg, status, sqlcode, tc)) @@ -328,7 +330,6 @@ public: } public: - QIBaseDriver* q; isc_db_handle ibase; isc_tr_handle trans; QTextCodec *tc; @@ -418,9 +419,9 @@ public: QIBaseResultPrivate::QIBaseResultPrivate(QIBaseResult *d, const QIBaseDriver *ddb): - q(d), db(ddb), trans(0), stmt(0), ibase(ddb->d->ibase), sqlda(0), inda(0), queryType(-1), tc(ddb->d->tc) + q(d), db(ddb), trans(0), stmt(0), ibase(ddb->d_func()->ibase), sqlda(0), inda(0), queryType(-1), tc(ddb->d_func()->tc) { - localTransaction = (ddb->d->ibase == 0); + localTransaction = (ddb->d_func()->ibase == 0); } void QIBaseResultPrivate::cleanup() @@ -861,9 +862,9 @@ bool QIBaseResultPrivate::transaction() { if (trans) return true; - if (db->d->trans) { + if (db->d_func()->trans) { localTransaction = false; - trans = db->d->trans; + trans = db->d_func()->trans; return true; } localTransaction = true; @@ -1396,15 +1397,14 @@ QVariant QIBaseResult::handle() const /*********************************/ QIBaseDriver::QIBaseDriver(QObject * parent) - : QSqlDriver(parent) + : QSqlDriver(*new QIBaseDriverPrivate, parent) { - d = new QIBaseDriverPrivate(this); } QIBaseDriver::QIBaseDriver(isc_db_handle connection, QObject *parent) - : QSqlDriver(parent) + : QSqlDriver(*new QIBaseDriverPrivate, parent) { - d = new QIBaseDriverPrivate(this); + Q_D(QIBaseDriver); d->ibase = connection; setOpen(true); setOpenError(false); @@ -1444,6 +1444,7 @@ bool QIBaseDriver::open(const QString & db, int /*port*/, const QString & connOpts) { + Q_D(QIBaseDriver); if (isOpen()) close(); @@ -1526,6 +1527,7 @@ bool QIBaseDriver::open(const QString & db, void QIBaseDriver::close() { + Q_D(QIBaseDriver); if (isOpen()) { if (d->eventBuffers.size()) { @@ -1562,6 +1564,7 @@ QSqlResult *QIBaseDriver::createResult() const bool QIBaseDriver::beginTransaction() { + Q_D(QIBaseDriver); if (!isOpen() || isOpenError()) return false; if (d->trans) @@ -1574,6 +1577,7 @@ bool QIBaseDriver::beginTransaction() bool QIBaseDriver::commitTransaction() { + Q_D(QIBaseDriver); if (!isOpen() || isOpenError()) return false; if (!d->trans) @@ -1587,6 +1591,7 @@ bool QIBaseDriver::commitTransaction() bool QIBaseDriver::rollbackTransaction() { + Q_D(QIBaseDriver); if (!isOpen() || isOpenError()) return false; if (!d->trans) @@ -1749,6 +1754,7 @@ QString QIBaseDriver::formatValue(const QSqlField &field, bool trimStrings) cons QVariant QIBaseDriver::handle() const { + Q_D(const QIBaseDriver); return QVariant(qRegisterMetaType<isc_db_handle>("isc_db_handle"), &d->ibase); } @@ -1777,6 +1783,7 @@ static isc_callback qEventCallback(char *result, short length, char *updated) bool QIBaseDriver::subscribeToNotification(const QString &name) { + Q_D(QIBaseDriver); if (!isOpen()) { qWarning("QIBaseDriver::subscribeFromNotificationImplementation: database not open."); return false; @@ -1826,6 +1833,7 @@ bool QIBaseDriver::subscribeToNotification(const QString &name) bool QIBaseDriver::unsubscribeFromNotification(const QString &name) { + Q_D(QIBaseDriver); if (!isOpen()) { qWarning("QIBaseDriver::unsubscribeFromNotificationImplementation: database not open."); return false; @@ -1855,11 +1863,13 @@ bool QIBaseDriver::unsubscribeFromNotification(const QString &name) QStringList QIBaseDriver::subscribedToNotifications() const { + Q_D(const QIBaseDriver); return QStringList(d->eventBuffers.keys()); } void QIBaseDriver::qHandleEventNotification(void *updatedResultBuffer) { + Q_D(QIBaseDriver); QMap<QString, QIBaseEventBuffer *>::const_iterator i; for (i = d->eventBuffers.constBegin(); i != d->eventBuffers.constEnd(); ++i) { QIBaseEventBuffer* eBuffer = i.value(); |