QDataStream::QDataStream()
: dev(nullptr),
owndev(false),
- noswap(QDataStream::HostEndian == QDataStream::BigEndian),
byteorder(QDataStream::BigEndian),
q_status(QDataStream::Ok),
floatingPrecision(QDataStream::DoublePrecision)
QDataStream::QDataStream(QIODevice *device)
: dev(device),
owndev(false),
- noswap(QDataStream::HostEndian == QDataStream::BigEndian),
byteorder(QDataStream::BigEndian),
q_status(QDataStream::Ok),
floatingPrecision(QDataStream::DoublePrecision)
QDataStream::QDataStream(QByteArray *a, QIODevice::OpenMode flags)
: dev(nullptr),
owndev(true),
- noswap(QDataStream::HostEndian == QDataStream::BigEndian),
byteorder(QDataStream::BigEndian),
q_status(QDataStream::Ok),
floatingPrecision(QDataStream::DoublePrecision)
QDataStream::QDataStream(const QByteArray &a)
: dev(nullptr),
owndev(true),
- noswap(QDataStream::HostEndian == QDataStream::BigEndian),
byteorder(QDataStream::BigEndian),
q_status(QDataStream::Ok),
floatingPrecision(QDataStream::DoublePrecision)
void QDataStream::setByteOrder(ByteOrder bo)
{
byteorder = bo;
- noswap = (byteorder == QDataStream::HostEndian);
}
/*****************************************************************************
if (dev->read((char *)&i, sizeof(qint16)) != sizeof(qint16)) {
i = 0;
setStatus(ReadPastEnd);
- } else if (!noswap) {
+ } else if (byteorder != QDataStream::HostEndian) {
i = qbswap(i);
}
return *this;
if (dev->read((char *)&i, sizeof(qint32)) != sizeof(qint32)) {
i = 0;
setStatus(ReadPastEnd);
- } else if (!noswap) {
+ } else if (byteorder != QDataStream::HostEndian) {
i = qbswap(i);
}
return *this;
if (dev->read((char *)&i, sizeof(qint64)) != sizeof(qint64)) {
i = qint64(0);
setStatus(ReadPastEnd);
- } else if (!noswap) {
+ } else if (byteorder != QDataStream::HostEndian) {
i = qbswap(i);
}
return *this;
if (dev->read((char *)&f, sizeof(float)) != sizeof(float)) {
f = 0.0f;
setStatus(ReadPastEnd);
- } else if (!noswap) {
+ } else if (byteorder != QDataStream::HostEndian) {
union {
float val1;
quint32 val2;
if (dev->read((char *)&f, sizeof(double)) != sizeof(double)) {
f = 0.0;
setStatus(ReadPastEnd);
- } else if (!noswap) {
+ } else if (byteorder != QDataStream::HostEndian) {
union {
double val1;
quint64 val2;
QDataStream &QDataStream::operator<<(qint16 i)
{
CHECK_STREAM_WRITE_PRECOND(*this)
- if (!noswap) {
+ if (byteorder != QDataStream::HostEndian) {
i = qbswap(i);
}
if (dev->write((char *)&i, sizeof(qint16)) != sizeof(qint16))
QDataStream &QDataStream::operator<<(qint32 i)
{
CHECK_STREAM_WRITE_PRECOND(*this)
- if (!noswap) {
+ if (byteorder != QDataStream::HostEndian) {
i = qbswap(i);
}
if (dev->write((char *)&i, sizeof(qint32)) != sizeof(qint32))
QDataStream &QDataStream::operator<<(qint64 i)
{
CHECK_STREAM_WRITE_PRECOND(*this)
- if (!noswap) {
+ if (byteorder != QDataStream::HostEndian) {
i = qbswap(i);
}
if (dev->write((char *)&i, sizeof(qint64)) != sizeof(qint64))
CHECK_STREAM_WRITE_PRECOND(*this)
float g = f; // fixes float-on-stack problem
- if (!noswap) {
+ if (byteorder != QDataStream::HostEndian) {
union {
float val1;
quint32 val2;
}
CHECK_STREAM_WRITE_PRECOND(*this)
- if (noswap) {
+ if (byteorder == QDataStream::HostEndian) {
if (dev->write((char *)&f, sizeof(double)) != sizeof(double))
q_status = WriteFailed;
} else {
QTest::addColumn<QString>("byteOrder");
for (int d=0; devices[d] != 0; d++) {
- QString device = devices[d];
- for (int b=0; b<2; b++) {
- QString byte_order = b == 0 ? "BigEndian" : "LittleEndian";
-
- QString tag = device + "_" + byte_order;
- for (int e=0; e<noOfElements; e++) {
- QTest::newRow(qPrintable(tag + QString("_%1").arg(e))) << device << QString(byte_order);
- }
- }
+ QString device = devices[d];
+ for (int b=0; b<2; b++) {
+ QString byte_order = b == 0 ? "BigEndian" : "LittleEndian";
+
+ QString tag = device + "_" + byte_order;
+ for (int e=0; e<noOfElements; e++) {
+ QTest::newRow(qPrintable(tag + QString("_%1").arg(e))) << device << QString(byte_order);
+ }
+ }
}
}
static const QString open_png = QFile::decodeName(SRCDIR "/open.png");
#define STREAM_IMPL(TYPE) \
QFETCH(QString, device); \
if (device == "bytearray") { \
- QByteArray ba; \
- QDataStream sout(&ba, QIODevice::WriteOnly); \
- write##TYPE(&sout); \
- QDataStream sin(&ba, QIODevice::ReadOnly); \
- read##TYPE(&sin); \
+ QByteArray ba; \
+ QDataStream sout(&ba, QIODevice::WriteOnly); \
+ write##TYPE(&sout); \
+ QDataStream sin(&ba, QIODevice::ReadOnly); \
+ read##TYPE(&sin); \
} else if (device == "file") { \
- QString fileName = "qdatastream.out"; \
- QFile fOut(fileName); \
- QVERIFY(fOut.open(QIODevice::WriteOnly)); \
- QDataStream sout(&fOut); \
- write##TYPE(&sout); \
- fOut.close(); \
- QFile fIn(fileName); \
- QVERIFY(fIn.open(QIODevice::ReadOnly)); \
- QDataStream sin(&fIn); \
- read##TYPE(&sin); \
- fIn.close(); \
+ QString fileName = "qdatastream.out"; \
+ QFile fOut(fileName); \
+ QVERIFY(fOut.open(QIODevice::WriteOnly)); \
+ QDataStream sout(&fOut); \
+ write##TYPE(&sout); \
+ fOut.close(); \
+ QFile fIn(fileName); \
+ QVERIFY(fIn.open(QIODevice::ReadOnly)); \
+ QDataStream sin(&fIn); \
+ read##TYPE(&sin); \
+ fIn.close(); \
} else if (device == "buffer") { \
- QByteArray ba(10000, '\0'); \
- QBuffer bOut(&ba); \
- bOut.open(QIODevice::WriteOnly); \
- QDataStream sout(&bOut); \
- write##TYPE(&sout); \
- bOut.close(); \
- QBuffer bIn(&ba); \
- bIn.open(QIODevice::ReadOnly); \
- QDataStream sin(&bIn); \
- read##TYPE(&sin); \
- bIn.close(); \
+ QByteArray ba(10000, '\0'); \
+ QBuffer bOut(&ba); \
+ bOut.open(QIODevice::WriteOnly); \
+ QDataStream sout(&bOut); \
+ write##TYPE(&sout); \
+ bOut.close(); \
+ QBuffer bIn(&ba); \
+ bIn.open(QIODevice::ReadOnly); \
+ QDataStream sin(&bIn); \
+ read##TYPE(&sin); \
+ bIn.close(); \
}
// ************************************
{
switch (index)
{
- case 0: return QString();
- case 1: return QString("");
- case 2: return QString("A");
- case 3: return QString("ABCDE FGHI");
- case 4: return QString("This is a long string");
- case 5: return QString("And again a string with a \nCRLF");
- case 6: return QString("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRESTUVWXYZ 1234567890 ~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/");
+ case 0: return QString();
+ case 1: return QString("");
+ case 2: return QString("A");
+ case 3: return QString("ABCDE FGHI");
+ case 4: return QString("This is a long string");
+ case 5: return QString("And again a string with a \nCRLF");
+ case 6: return QString("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRESTUVWXYZ 1234567890 ~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/");
}
return QString("foo");
}