7#include <QtCore/qscopedpointer.h>
8#include <QtCore/qiodevicebase.h>
9#include <QtCore/qcontainerfwd.h>
10#include <QtCore/qnamespace.h>
15#error qdatastream.h must be included before any header file that defines Status
20#if QT_CORE_REMOVED_SINCE(6, 3)
28#if !defined(QT_NO_DATASTREAM)
31class StreamStateSaver;
32template <
typename Container>
34template <
typename Container>
36template <
typename Container>
38template <
typename Container>
40template <
typename Container>
42template <
typename Container>
90 Qt_DefaultCompiledVersion = Qt_6_8
91#if QT_VERSION >= QT_VERSION_CHECK(6, 9, 0)
92#error Add the datastream version for this Qt version and update Qt_DefaultCompiledVersion
125 QT_CORE_INLINE_SINCE(6, 8)
126 Status status() const;
127 void setStatus(Status status);
130 QT_CORE_INLINE_SINCE(6, 8)
131 FloatingPointPrecision floatingPointPrecision() const;
132 void setFloatingPointPrecision(FloatingPointPrecision
precision);
152#if QT_CORE_REMOVED_SINCE(6, 3)
171#if QT_CORE_REMOVED_SINCE(6, 8) || defined(Q_QDOC)
176 template <
typename T,
177 std::enable_if_t<std::is_same_v<T, bool>,
bool> =
true>
180 return (*
this <<
qint8(
i));
183#if QT_CORE_REMOVED_SINCE(6, 3)
192#if QT_DEPRECATED_SINCE(6, 11)
196#if QT_CORE_REMOVED_SINCE(6, 7)
198 int skipRawData(
int len);
199 int readRawData(
char *,
int len);
200 int writeRawData(
const char *,
int len);
208 void startTransaction();
209 bool commitTransaction();
210 void rollbackTransaction();
211 void abortTransaction();
213 bool isDeviceTransactionStarted()
const;
217 QScopedPointer<QDataStreamPrivate>
d;
222 quint8 fpPrecision = QDataStream::DoublePrecision;
224#if QT_VERSION < QT_VERSION_CHECK(7, 0, 0) && !defined(QT_BOOTSTRAPPED)
225 ByteOrder byteorder = BigEndian;
226 int ver = Qt_DefaultCompiledVersion;
228 Version ver = Qt_DefaultCompiledVersion;
232#if QT_CORE_REMOVED_SINCE(6, 7)
233 int readBlock(
char *
data,
int len);
238 static constexpr quint32 NullCode = 0xffffffffu;
239 static constexpr quint32 ExtendedSize = 0xfffffffeu;
246 template <
typename Container>
248 template <
typename Container>
250 template <
typename Container>
252 template <
typename Container>
254 template <
typename Container>
256 template <
typename Container>
269 if (!
stream->isDeviceTransactionStarted())
274 if (oldStatus != QDataStream::Ok) {
276 stream->setStatus(oldStatus);
282 QDataStream::Status oldStatus;
285template <
typename Container>
294 s.setStatus(QDataStream::SizeLimitExceeded);
299 typename Container::value_type
t;
301 if (
s.status() != QDataStream::Ok) {
311template <
typename Container>
320 s.setStatus(QDataStream::SizeLimitExceeded);
324 typename Container::value_type
t;
326 if (
s.status() != QDataStream::Ok) {
336template <
typename Container>
345 s.setStatus(QDataStream::SizeLimitExceeded);
349 typename Container::key_type k;
350 typename Container::mapped_type
t;
352 if (
s.status() != QDataStream::Ok) {
362template <
typename Container>
365 if (!QDataStream::writeQSizeType(
s,
c.size()))
367 for (
const typename Container::value_type &
t :
c)
373template <
typename Container>
376 if (!QDataStream::writeQSizeType(
s,
c.size()))
379 auto end =
c.constEnd();
381 s <<
it.key() <<
it.value();
388template <
typename Container>
391 if (!QDataStream::writeQSizeType(
s,
c.size()))
394 auto end =
c.constEnd();
396 const auto rangeStart =
it++;
397 while (
it !=
end && rangeStart.key() ==
it.key())
399 const qint64 last = std::distance(rangeStart,
it) - 1;
401 auto next = std::next(rangeStart,
i);
411template<
typename ...T>
413 std::enable_if_t<std::conjunction_v<QTypeTraits::has_ostream_operator<QDataStream, T>...>,
QDataStream &>;
414template<
typename Container,
typename ...T>
416 std::enable_if_t<std::conjunction_v<QTypeTraits::has_ostream_operator_container<QDataStream, Container, T>...>,
QDataStream &>;
418template<
typename ...T>
420 std::enable_if_t<std::conjunction_v<QTypeTraits::has_istream_operator<QDataStream, T>...>,
QDataStream &>;
421template<
typename Container,
typename ...T>
423 std::enable_if_t<std::conjunction_v<QTypeTraits::has_istream_operator_container<QDataStream, Container, T>...>,
QDataStream &>;
432#if QT_CORE_INLINE_IMPL_SINCE(6, 8)
435 return Status(q_status);
440 return FloatingPointPrecision(fpPrecision);
461 if (
first == NullCode)
463 if (
first < ExtendedSize ||
s.version() < QDataStream::Qt_6_7)
474 }
else if (
s.version() >= QDataStream::Qt_6_7) {
475 s << ExtendedSize <<
value;
479 s.setStatus(QDataStream::SizeLimitExceeded);
486{
return *
this >>
reinterpret_cast<qint8&
>(
i); }
489{
return *
this >>
reinterpret_cast<qint8&
>(
i); }
492{
return *
this >>
reinterpret_cast<qint16&
>(
i); }
495{
return *
this >>
reinterpret_cast<qint32&
>(
i); }
498{
return *
this >>
reinterpret_cast<qint64&
>(
i); }
501{
return *
this <<
qint8(
i); }
504{
return *
this <<
qint8(
i); }
515template <
typename Enum>
517{
return s << typename QFlags<Enum>::Int(e); }
519template <
typename Enum>
529typename std::enable_if_t<std::is_enum<T>::value,
QDataStream &>
531{
return s << static_cast<typename std::underlying_type<T>::type>(
t); }
534typename std::enable_if_t<std::is_enum<T>::value,
QDataStream &>
536{
return s >>
reinterpret_cast<typename std::underlying_type<T>::type &
>(
t); }
564template <
class Key,
class T>
570template <
class Key,
class T>
577template <
class Key,
class T>
583template <
class Key,
class T>
589template <
class Key,
class T>
595template <
class Key,
class T>
601template <
class Key,
class T>
607template <
class Key,
class T>
613template <
class T1,
class T2>
616 s >>
p.first >>
p.second;
620template <
class T1,
class T2>
623 s <<
p.first <<
p.second;
641template <
class Key,
class T>
644template <
class Key,
class T>
647template <
class Key,
class T>
650template <
class Key,
class T>
653template <
class Key,
class T>
656template <
class Key,
class T>
659template <
class Key,
class T>
662template <
class Key,
class T>
665template <
class T1,
class T2>
668template <
class T1,
class T2>
IOBluetoothDevice * device
\inmodule QtCore\reentrant
enum Status QT7_ONLY(:quint8)
enum Version QT7_ONLY(:quint8)
Status status() const
Returns the status of the data stream.
ByteOrder
The byte order used for reading/writing the data.
QDataStream & operator<<(T i)
Q_CORE_EXPORT friend QDataStream & operator>>(QDataStream &in, QByteArray &ba)
Q_CORE_EXPORT friend QDataStream & operator>>(QDataStream &in, QString &str)
Q_CORE_EXPORT friend QDataStream & operator<<(QDataStream &out, const QByteArray &ba)
enum FloatingPointPrecision QT7_ONLY(:quint8)
QDataStream & operator<<(std::nullptr_t)
ByteOrder byteOrder() const
Returns the current byte order setting – either BigEndian or LittleEndian.
FloatingPointPrecision floatingPointPrecision() const
Returns the floating point precision of the data stream.
QIODevice * device() const
Returns the I/O device currently set, or \nullptr if no device is currently set.
Q_CORE_EXPORT friend QDataStream & operator<<(QDataStream &out, const QString &str)
int version() const
Returns the version number of the data serialization format.
void setVersion(int)
Sets the version number of the data serialization format to v, a value of the \l Version enum.
std::conditional< std::is_unsigned< typenamestd::underlying_type< Enum >::type >::value, unsignedint, signedint >::type Int
\inheaderfile QIODevice \inmodule QtCore
\inmodule QtCore \reentrant
static constexpr QKeyCombination fromCombined(int combined)
constexpr int toCombined() const noexcept
const_iterator constBegin() const noexcept
\macro QT_RESTRICTED_CAST_FROM_ASCII
StreamStateSaver(QDataStream *s)
\keyword 16-bit Floating Point Support\inmodule QtCore \inheaderfile QFloat16
QHash< int, QWidget * > hash
[35multi]
QMap< QString, QString > map
[6]
QSet< QString >::iterator it
Combined button and popup list for selecting options.
QDataStream & readListBasedContainer(QDataStream &s, Container &c)
QDataStream & readAssociativeContainer(QDataStream &s, Container &c)
QDataStream & writeAssociativeContainer(QDataStream &s, const Container &c)
QDataStream & writeAssociativeMultiContainer(QDataStream &s, const Container &c)
QDataStream & writeSequentialContainer(QDataStream &s, const Container &c)
QDataStream & readArrayBasedContainer(QDataStream &s, Container &c)
std::enable_if_t< std::conjunction_v< QTypeTraits::has_ostream_operator_container< QDataStream, Container, T >... >, QDataStream & > QDataStreamIfHasOStreamOperatorsContainer
QDataStream & operator>>(QDataStream &s, QFlags< Enum > &e)
std::enable_if_t< std::conjunction_v< QTypeTraits::has_ostream_operator< QDataStream, T >... >, QDataStream & > QDataStreamIfHasOStreamOperators
std::enable_if_t< std::conjunction_v< QTypeTraits::has_istream_operator< QDataStream, T >... >, QDataStream & > QDataStreamIfHasIStreamOperators
std::enable_if_t< std::conjunction_v< QTypeTraits::has_istream_operator_container< QDataStream, Container, T >... >, QDataStream & > QDataStreamIfHasIStreamOperatorsContainer
QDataStream & operator<<(QDataStream &s, QFlags< Enum > e)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
static ControlElement< T > * ptr(QWidget *widget)
GLsizei const GLfloat * v
[13]
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLenum GLint GLint * precision
#define QT_DEPRECATED_VERSION_X_6_11(text)
unsigned long long quint64
QT_BEGIN_NAMESPACE typedef signed char qint8
QFuture< QSet< QChar > > set
[10]
QTextStream out(stdout)
[7]