summaryrefslogtreecommitdiffstats
path: root/src/corelib/serialization
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2020-08-07 11:46:07 +0200
committerLars Knoll <lars.knoll@qt.io>2020-08-15 20:55:31 +0200
commitf741a12de11c9b06d971795cf34b26afc08e3f59 (patch)
tree91084bd3a88a7674d65806dd2d068ebcc372e5cd /src/corelib/serialization
parent5e3b7effbd7f70682d5a15ccd277e7f49c1e259e (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.cpp1
-rw-r--r--src/corelib/serialization/qdatastream.cpp12
-rw-r--r--src/corelib/serialization/qdatastream.h10
-rw-r--r--src/corelib/serialization/qtextstream.cpp12
-rw-r--r--src/corelib/serialization/qtextstream.h18
-rw-r--r--src/corelib/serialization/qtextstream_p.h2
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