diff options
author | Lars Knoll <lars.knoll@qt.io> | 2020-08-07 11:46:07 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2020-08-15 20:55:31 +0200 |
commit | f741a12de11c9b06d971795cf34b26afc08e3f59 (patch) | |
tree | 91084bd3a88a7674d65806dd2d068ebcc372e5cd /src/corelib/serialization | |
parent | 5e3b7effbd7f70682d5a15ccd277e7f49c1e259e (diff) |
Disentangle QIODevice dependencies
Move the QIODevice::OpenMode enum into a base class, so that
we can remove the full QIODevice (and thus QObject) dependency
from qdatastream.h and qtextstream.h.
This is required so that we can include QDataStream in qmetatype.h
without getting circular dependencies.
As a nice side effect, QDataStream and QTextStream can now inherit
QIODeviceBase and provide the OpenMode enum directly in their
class scope.
Change-Id: Ifa68b7b1d8d95687ed032f6c9206f92e63bfacdf
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Diffstat (limited to 'src/corelib/serialization')
-rw-r--r-- | src/corelib/serialization/qcborstreamreader.cpp | 1 | ||||
-rw-r--r-- | src/corelib/serialization/qdatastream.cpp | 12 | ||||
-rw-r--r-- | src/corelib/serialization/qdatastream.h | 10 | ||||
-rw-r--r-- | src/corelib/serialization/qtextstream.cpp | 12 | ||||
-rw-r--r-- | src/corelib/serialization/qtextstream.h | 18 | ||||
-rw-r--r-- | src/corelib/serialization/qtextstream_p.h | 2 |
6 files changed, 34 insertions, 21 deletions
diff --git a/src/corelib/serialization/qcborstreamreader.cpp b/src/corelib/serialization/qcborstreamreader.cpp index 308fbe9ae9..c5d0c855e3 100644 --- a/src/corelib/serialization/qcborstreamreader.cpp +++ b/src/corelib/serialization/qcborstreamreader.cpp @@ -45,6 +45,7 @@ #include <private/qbytearray_p.h> #include <private/qnumeric_p.h> #include <private/qstringconverter_p.h> +#include <qiodevice.h> #include <qdebug.h> #include <qstack.h> diff --git a/src/corelib/serialization/qdatastream.cpp b/src/corelib/serialization/qdatastream.cpp index 7888296b85..c6135336cf 100644 --- a/src/corelib/serialization/qdatastream.cpp +++ b/src/corelib/serialization/qdatastream.cpp @@ -302,7 +302,7 @@ QDataStream::QDataStream(QIODevice *d) } /*! - \fn QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode mode) + \fn QDataStream::QDataStream(QByteArray *a, OpenMode mode) Constructs a data stream that operates on a byte array, \a a. The \a mode describes how the device is to be used. @@ -314,7 +314,7 @@ QDataStream::QDataStream(QIODevice *d) is created to wrap the byte array. */ -QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode flags) +QDataStream::QDataStream(QByteArray *a, OpenMode flags) { QBuffer *buf = new QBuffer(a); #ifndef QT_NO_QOBJECT @@ -755,6 +755,14 @@ void QDataStream::abortTransaction() dev->commitTransaction(); } +/*! + \internal +*/ +bool QDataStream::isDeviceTransactionStarted() const +{ + return dev && dev->isTransactionStarted(); +} + /***************************************************************************** QDataStream read functions *****************************************************************************/ diff --git a/src/corelib/serialization/qdatastream.h b/src/corelib/serialization/qdatastream.h index 095a6681c2..ad47490ebf 100644 --- a/src/corelib/serialization/qdatastream.h +++ b/src/corelib/serialization/qdatastream.h @@ -41,8 +41,7 @@ #define QDATASTREAM_H #include <QtCore/qscopedpointer.h> -#include <QtCore/qiodevice.h> -#include <QtCore/qpair.h> +#include <QtCore/qiodevicebase.h> #include <QtCore/qcontainerfwd.h> #ifdef Status @@ -60,7 +59,7 @@ class QDataStreamPrivate; namespace QtPrivate { class StreamStateSaver; } -class Q_CORE_EXPORT QDataStream +class Q_CORE_EXPORT QDataStream : public QIODeviceBase { public: enum Version { @@ -122,7 +121,7 @@ public: QDataStream(); explicit QDataStream(QIODevice *); - QDataStream(QByteArray *, QIODevice::OpenMode flags); + QDataStream(QByteArray *, OpenMode flags); QDataStream(const QByteArray &); ~QDataStream(); @@ -199,6 +198,7 @@ public: void rollbackTransaction(); void abortTransaction(); + bool isDeviceTransactionStarted() const; private: Q_DISABLE_COPY(QDataStream) @@ -222,7 +222,7 @@ class StreamStateSaver public: inline StreamStateSaver(QDataStream *s) : stream(s), oldStatus(s->status()) { - if (!stream->dev || !stream->dev->isTransactionStarted()) + if (!stream->isDeviceTransactionStarted()) stream->resetStatus(); } inline ~StreamStateSaver() diff --git a/src/corelib/serialization/qtextstream.cpp b/src/corelib/serialization/qtextstream.cpp index c834f22834..9ba65ba02b 100644 --- a/src/corelib/serialization/qtextstream.cpp +++ b/src/corelib/serialization/qtextstream.cpp @@ -368,7 +368,7 @@ void QTextStreamPrivate::reset() deleteDevice = false; string = nullptr; stringOffset = 0; - stringOpenMode = QIODevice::NotOpen; + stringOpenMode = QTextStream::NotOpen; readBufferOffset = 0; readBufferStartDevicePos = 0; @@ -983,7 +983,7 @@ QTextStream::QTextStream(QIODevice *device) Constructs a QTextStream that operates on \a string, using \a openMode to define the open mode. */ -QTextStream::QTextStream(QString *string, QIODevice::OpenMode openMode) +QTextStream::QTextStream(QString *string, OpenMode openMode) : d_ptr(new QTextStreamPrivate(this)) { #if defined (QTEXTSTREAM_DEBUG) @@ -1001,7 +1001,7 @@ QTextStream::QTextStream(QString *string, QIODevice::OpenMode openMode) openMode to define the open mode. Internally, the array is wrapped by a QBuffer. */ -QTextStream::QTextStream(QByteArray *array, QIODevice::OpenMode openMode) +QTextStream::QTextStream(QByteArray *array, OpenMode openMode) : d_ptr(new QTextStreamPrivate(this)) { #if defined (QTEXTSTREAM_DEBUG) @@ -1028,7 +1028,7 @@ QTextStream::QTextStream(QByteArray *array, QIODevice::OpenMode openMode) \snippet code/src_corelib_io_qtextstream.cpp 3 */ -QTextStream::QTextStream(const QByteArray &array, QIODevice::OpenMode openMode) +QTextStream::QTextStream(const QByteArray &array, OpenMode openMode) : d_ptr(new QTextStreamPrivate(this)) { #if defined (QTEXTSTREAM_DEBUG) @@ -1059,7 +1059,7 @@ QTextStream::QTextStream(const QByteArray &array, QIODevice::OpenMode openMode) \snippet code/src_corelib_io_qtextstream.cpp 4 */ -QTextStream::QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode) +QTextStream::QTextStream(FILE *fileHandle, OpenMode openMode) : d_ptr(new QTextStreamPrivate(this)) { #if defined (QTEXTSTREAM_DEBUG) @@ -1272,7 +1272,7 @@ QIODevice *QTextStream::device() const \sa string(), setDevice() */ -void QTextStream::setString(QString *string, QIODevice::OpenMode openMode) +void QTextStream::setString(QString *string, OpenMode openMode) { Q_D(QTextStream); flush(); diff --git a/src/corelib/serialization/qtextstream.h b/src/corelib/serialization/qtextstream.h index a3526c84fc..b196e9e935 100644 --- a/src/corelib/serialization/qtextstream.h +++ b/src/corelib/serialization/qtextstream.h @@ -40,10 +40,9 @@ #ifndef QTEXTSTREAM_H #define QTEXTSTREAM_H -#include <QtCore/qiodevice.h> +#include <QtCore/qiodevicebase.h> #include <QtCore/qstring.h> #include <QtCore/qchar.h> -#include <QtCore/qlocale.h> #include <QtCore/qscopedpointer.h> #include <QtCore/qstringconverter.h> @@ -55,8 +54,11 @@ QT_BEGIN_NAMESPACE +class QIODevice; +class QLocale; + class QTextStreamPrivate; -class Q_CORE_EXPORT QTextStream // text stream class +class Q_CORE_EXPORT QTextStream : public QIODeviceBase { Q_DECLARE_PRIVATE(QTextStream) @@ -89,10 +91,10 @@ public: QTextStream(); explicit QTextStream(QIODevice *device); - explicit QTextStream(FILE *fileHandle, QIODevice::OpenMode openMode = QIODevice::ReadWrite); - explicit QTextStream(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite); - explicit QTextStream(QByteArray *array, QIODevice::OpenMode openMode = QIODevice::ReadWrite); - explicit QTextStream(const QByteArray &array, QIODevice::OpenMode openMode = QIODevice::ReadOnly); + explicit QTextStream(FILE *fileHandle, OpenMode openMode = ReadWrite); + explicit QTextStream(QString *string, OpenMode openMode = ReadWrite); + explicit QTextStream(QByteArray *array, OpenMode openMode = ReadWrite); + explicit QTextStream(const QByteArray &array, OpenMode openMode = ReadOnly); virtual ~QTextStream(); void setEncoding(QStringConverter::Encoding encoding); @@ -108,7 +110,7 @@ public: void setDevice(QIODevice *device); QIODevice *device() const; - void setString(QString *string, QIODevice::OpenMode openMode = QIODevice::ReadWrite); + void setString(QString *string, OpenMode openMode = ReadWrite); QString *string() const; Status status() const; diff --git a/src/corelib/serialization/qtextstream_p.h b/src/corelib/serialization/qtextstream_p.h index cee79a7ecf..067a5ec94a 100644 --- a/src/corelib/serialization/qtextstream_p.h +++ b/src/corelib/serialization/qtextstream_p.h @@ -53,6 +53,8 @@ // #include <QtCore/private/qglobal_p.h> +#include "qiodevice.h" +#include "qlocale.h" #include "qtextstream.h" QT_BEGIN_NAMESPACE |