85 m_tags = QVariant::fromValue(map);
91 qDebug(
"ZDataStream::ZDataStream");
100 QObject(parent),
m_dv(device)
102 qDebug(
"ZDataStream::ZDataStream - QIODevice");
108 m_ds = QDataStreamPtr::create();
112 "ZDataStream::ZDataStream - error creating QDataStream object");
118 QObject(parent),
m_b(byteArray)
120 qDebug(
"ZDataStream::ZDataStream - QByteArray");
126 m_ds.reset(
new QDataStream(byteArray.data(), QIODevice::ReadWrite));
130 "ZDataStream::ZDataStream - error creating QDataStream object");
132 qDebug() <<
"ZDataStream::ZDataStream - " <<
m_ds->device()->errorString();
139 connect(
m_zd, SIGNAL(getCurrentDevice(QIODevice**)),
140 SLOT(
getQDevice(QIODevice**)), Qt::DirectConnection);
146 qmlRegisterType<ZDataStream>(
"org.zuble.qml", 1, 0,
"ZDataStream");
152 throw ZblException(
"No device or byte array object available to stream.");
155 throw ZblException(
"Data stream object not initialized.");
164 "Error, device is not readable.");
173 "Error, device is not writable.");
179 disconnect(
m_zd, SIGNAL(getDevice(QIODevice**)),
this,
204 *device =
m_ds->device();
224 m_ds->setByteOrder(QDataStream::ByteOrder(byteOrder));
240 m_ds->setFloatingPointPrecision(
241 QDataStream::FloatingPointPrecision(floatingPointPrecision));
259 m_ds->setVersion(QDataStream::Version(version));
273 qDebug(
"ZDataStream::jWriteBytes");
278 const int size = data.size();
279 char* bytes =
new char[size];
281 for(
int i = 0; i < size; i++)
282 bytes[i] = static_cast<char>(data.at(i));
284 qDebug(
"ZDataStream::jWriteBytes - writing %d bytes", size);
286 m_ds->writeBytes(bytes, size);
287 status =
m_ds->status() == QDataStream::Ok;
296 qDebug(
"ZDataStream::jReadBytes");
298 uint sizeReturned = 0;
307 m_ds->readBytes(data, sizeReturned);
309 qDebug(
"ZDataStream::jReadBytes - size returned = %u", sizeReturned);
311 for(uint i = 0; i < sizeReturned; i++)
312 array.append(data[i]);
330 qDebug(
"ZDataStream::zReadBytes");
331 QByteArray byteArray;
334 *
m_ds.data() >> byteArray;
341 qDebug(
"ZDataStream::zWriteBytes");
346 throw ZblException(
"Object passed is not a ZByteArray.");
348 *
m_ds.data() << *byteArray.data();
356 qDebug(
"ZDataStream::jWriteBytes");
362 const int size = data.size();
363 char* bytes =
new char[size];
367 for(
int i = 0; i < size; i++)
368 bytes[i] = static_cast<qint8>(data.at(i));
370 qDebug(
"ZDataStream::jWriteRawData - writing %d bytes", size);
372 m_ds->writeRawData(static_cast<const char*>(bytes), size);
373 status =
m_ds->status() == QDataStream::Ok;
389 qDebug(
"ZDataStream::jReadRawData");
391 int sizeReturned = 0;
393 char* data =
new char[len];
400 sizeReturned =
m_ds->readRawData(data, len);
402 qDebug(
"ZDataStream::jReadRawData - size returned = %d", sizeReturned);
404 if(sizeReturned == -1)
405 throw ZblException(
"QDataStream::readRawData encountered an error.");
407 for(
int i = 0; i < sizeReturned; i++)
408 array.append(data[i]);
425 qDebug(
"ZDataStream::zReadRawData");
426 QByteArray byteArray;
430 int sizeReturned = 0;
431 char* data =
new char[len];
435 sizeReturned =
m_ds->readRawData(data, len);
437 qDebug(
"ZDataStream::zReadRawData - size returned = %d", sizeReturned);
439 if(sizeReturned == -1)
440 throw ZblException(
"QDataStream::readRawData encountered an error.");
442 byteArray.append(data, sizeReturned);
458 qDebug(
"ZDataStream::zWriteRawData");
463 throw ZblException(
"Object passed is not a ZByteArray.");
465 const int size = qByteArray->size();
466 qDebug(
"ZDataStream::jWriteRawData - writing %d bytes", size);
467 m_ds->writeRawData(qByteArray->constData(), size);
474 qDebug(
"ZDataStream::skipRawData");
475 int sizeReturned = -1;
477 sizeReturned =
m_ds->skipRawData(len);
484 #define readNumericDataType(dataType, className, methodName) \ 485 dataType className::methodName() \ 487 qDebug("%s::%s", #className, #methodName); \ 490 validateReadable(); \ 492 ZBL_SLOT_END_RETURN(data, 0, \ 493 Z_FAC_JS, className::methodName, methodName failed) \ 507 qDebug(
"ZDataStream::readChar");
516 #define writeNumericDataType(dataType, className, methodName) \ 517 bool className::methodName(dataType data) \ 519 qDebug("%s::%s", #className, #methodName); \ 521 validateWritable(); \ 523 ZBL_SLOT_END_RETURN(true, false, \ 524 Z_FAC_JS, className::methodName, methodName failed) \ 539 qDebug(
"ZDataStream::writeChar");
This class supports streaming of text and binary data.
Q_INVOKABLE bool jWriteBytes(const QList< int > data)
Q_INVOKABLE quint8 readByte()
Q_INVOKABLE uint skipRawData(uint len)
Q_INVOKABLE bool zWriteRawData(QObject *zByteArray)
void validateData() const
ZioDevice * m_zd
Pointer to contained ZioDevice object.
Q_INVOKABLE QObject * zReadBytes()
Q_INVOKABLE qint64 readInt64()
void setFloatingPointPrecision(uint floatingPointPrecision)
Q_INVOKABLE bool writeUInt64(quint64 data)
Q_INVOKABLE quint32 readUInt32()
Q_INVOKABLE qint16 readInt16()
ZqByteArrayPtr m_b
Smartpointer to embedded QByteArray.
void validateWritable() const
static QVariant m_tags
QVariantMap of QDataStream enumerations for use by Javascript programs.
Q_INVOKABLE float readFloat()
Q_INVOKABLE bool writeFloat(float data)
void validateReadable() const
Reads and writes binary data to an i/o stream.
uint floatingPointPrecision
ZDataStream(QObject *parent=0)
A javascript wrapper for QIODevice.
#define ZBL_SLOT_BEGIN_TRY
Q_INVOKABLE bool writeByte(quint8 data)
Q_INVOKABLE qint32 readInt32()
Q_INVOKABLE void resetStatus()
Q_INVOKABLE bool writeInt32(qint32 data)
Q_INVOKABLE quint64 readUInt64()
Q_INVOKABLE QList< int > jReadBytes()
Q_INVOKABLE bool writeUInt16(quint16 data)
Q_INVOKABLE bool zWriteBytes(QObject *zByteArray)
Q_INVOKABLE QList< int > jReadRawData(uint len)
#define ZBL_SLOT_END_VOID(facility, code, error_message)
Q_INVOKABLE double readDouble()
uint getFloatingPointPrecision() const
static void registerType()
Registers ZDataStream as a QML type.
uint getByteOrder() const
QDataStreamPtr m_ds
Smartpointer to embedded QDataStream.
Q_INVOKABLE bool writeInt64(qint64 data)
QSharedPointer< QByteArray > ZqByteArrayPtr
void getQDevice(QIODevice **device)
readNumericDataType(qint16, ZDataStream, readInt16) readNumericDataType(quint16
Q_INVOKABLE void release()
Zuble's Qt Exception Object.
ZqIODevicePtr m_dv
Smartpointer to embedded QIODevice.
Q_INVOKABLE bool writeUInt32(quint32 data)
ZqByteArrayPtr qByteArray()
Q_INVOKABLE quint16 readUInt16()
Q_INVOKABLE bool writeDouble(double data)
QSharedPointer< QIODevice > ZqIODevicePtr
Q_INVOKABLE QObject * zReadRawData(uint len)
writeNumericDataType(qint16, ZDataStream, writeInt16) writeNumericDataType(quint16
void setByteOrder(uint byteOrder)
Q_INVOKABLE bool writeInt16(qint16 data)
#define ZBL_SLOT_END_RETURN(return_success, return_failed, facility, code, error_message)
void setVersion(uint version)
Q_INVOKABLE bool jWriteRawData(const QList< int > data)