mirror of
https://github.com/NohamR/RMHook-Win.git
synced 2026-05-25 19:59:46 +00:00
Add Qt libs and headers
This commit is contained in:
174
paho-mqtt3as-proxy/Qt/include/QtCore/qcborstreamreader.h
Normal file
174
paho-mqtt3as-proxy/Qt/include/QtCore/qcborstreamreader.h
Normal file
@@ -0,0 +1,174 @@
|
||||
// Copyright (C) 2018 Intel Corporation.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
|
||||
|
||||
#ifndef QCBORSTREAMREADER_H
|
||||
#define QCBORSTREAMREADER_H
|
||||
|
||||
#include <QtCore/qbytearray.h>
|
||||
#include <QtCore/qcborcommon.h>
|
||||
#include <QtCore/qfloat16.h>
|
||||
#include <QtCore/qscopedpointer.h>
|
||||
#include <QtCore/qstring.h>
|
||||
#include <QtCore/qstringview.h>
|
||||
|
||||
QT_REQUIRE_CONFIG(cborstreamreader);
|
||||
|
||||
/* X11 headers use these values too, but as defines */
|
||||
#if defined(False) && defined(True)
|
||||
# undef True
|
||||
# undef False
|
||||
#endif
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
|
||||
class QIODevice;
|
||||
|
||||
class QCborStreamReaderPrivate;
|
||||
class Q_CORE_EXPORT QCborStreamReader
|
||||
{
|
||||
Q_GADGET
|
||||
public:
|
||||
enum Type : quint8 {
|
||||
UnsignedInteger = 0x00,
|
||||
NegativeInteger = 0x20,
|
||||
ByteString = 0x40,
|
||||
ByteArray = ByteString,
|
||||
TextString = 0x60,
|
||||
String = TextString,
|
||||
Array = 0x80,
|
||||
Map = 0xa0,
|
||||
Tag = 0xc0,
|
||||
SimpleType = 0xe0,
|
||||
HalfFloat = 0xf9,
|
||||
Float16 = HalfFloat,
|
||||
Float = 0xfa,
|
||||
Double = 0xfb,
|
||||
|
||||
Invalid = 0xff
|
||||
};
|
||||
Q_ENUM(Type)
|
||||
|
||||
enum StringResultCode {
|
||||
EndOfString = 0,
|
||||
Ok = 1,
|
||||
Error = -1
|
||||
};
|
||||
template <typename Container> struct StringResult {
|
||||
Container data;
|
||||
StringResultCode status = Error;
|
||||
};
|
||||
Q_ENUM(StringResultCode)
|
||||
|
||||
QCborStreamReader();
|
||||
QCborStreamReader(const char *data, qsizetype len);
|
||||
QCborStreamReader(const quint8 *data, qsizetype len);
|
||||
explicit QCborStreamReader(const QByteArray &data);
|
||||
explicit QCborStreamReader(QIODevice *device);
|
||||
~QCborStreamReader();
|
||||
Q_DISABLE_COPY(QCborStreamReader)
|
||||
|
||||
void setDevice(QIODevice *device);
|
||||
QIODevice *device() const;
|
||||
void addData(const QByteArray &data);
|
||||
void addData(const char *data, qsizetype len);
|
||||
void addData(const quint8 *data, qsizetype len)
|
||||
{ addData(reinterpret_cast<const char *>(data), len); }
|
||||
void reparse();
|
||||
void clear();
|
||||
void reset();
|
||||
|
||||
QCborError lastError();
|
||||
|
||||
qint64 currentOffset() const;
|
||||
|
||||
bool isValid() const { return !isInvalid(); }
|
||||
|
||||
int containerDepth() const;
|
||||
QCborStreamReader::Type parentContainerType() const;
|
||||
bool hasNext() const noexcept Q_DECL_PURE_FUNCTION;
|
||||
bool next(int maxRecursion = 10000);
|
||||
|
||||
Type type() const { return QCborStreamReader::Type(type_); }
|
||||
bool isUnsignedInteger() const { return type() == UnsignedInteger; }
|
||||
bool isNegativeInteger() const { return type() == NegativeInteger; }
|
||||
bool isInteger() const { return quint8(type()) <= quint8(NegativeInteger); }
|
||||
bool isByteArray() const { return type() == ByteArray; }
|
||||
bool isString() const { return type() == String; }
|
||||
bool isArray() const { return type() == Array; }
|
||||
bool isMap() const { return type() == Map; }
|
||||
bool isTag() const { return type() == Tag; }
|
||||
bool isSimpleType() const { return type() == SimpleType; }
|
||||
bool isFloat16() const { return type() == Float16; }
|
||||
bool isFloat() const { return type() == Float; }
|
||||
bool isDouble() const { return type() == Double; }
|
||||
bool isInvalid() const { return type() == Invalid; }
|
||||
|
||||
bool isSimpleType(QCborSimpleType st) const { return isSimpleType() && toSimpleType() == st; }
|
||||
bool isFalse() const { return isSimpleType(QCborSimpleType::False); }
|
||||
bool isTrue() const { return isSimpleType(QCborSimpleType::True); }
|
||||
bool isBool() const { return isFalse() || isTrue(); }
|
||||
bool isNull() const { return isSimpleType(QCborSimpleType::Null); }
|
||||
bool isUndefined() const { return isSimpleType(QCborSimpleType::Undefined); }
|
||||
|
||||
bool isLengthKnown() const noexcept Q_DECL_PURE_FUNCTION;
|
||||
quint64 length() const;
|
||||
|
||||
bool isContainer() const { return isMap() || isArray(); }
|
||||
bool enterContainer() { Q_ASSERT(isContainer()); return _enterContainer_helper(); }
|
||||
bool leaveContainer();
|
||||
|
||||
StringResult<QString> readString() { Q_ASSERT(isString()); return _readString_helper(); }
|
||||
StringResult<QByteArray> readByteArray(){ Q_ASSERT(isByteArray()); return _readByteArray_helper(); }
|
||||
qsizetype currentStringChunkSize() const{ Q_ASSERT(isString() || isByteArray()); return _currentStringChunkSize(); }
|
||||
StringResult<qsizetype> readStringChunk(char *ptr, qsizetype maxlen);
|
||||
|
||||
bool toBool() const { Q_ASSERT(isBool()); return value64 - int(QCborSimpleType::False); }
|
||||
QCborTag toTag() const { Q_ASSERT(isTag()); return QCborTag(value64); }
|
||||
quint64 toUnsignedInteger() const { Q_ASSERT(isUnsignedInteger()); return value64; }
|
||||
QCborNegativeInteger toNegativeInteger() const { Q_ASSERT(isNegativeInteger()); return QCborNegativeInteger(value64 + 1); }
|
||||
QCborSimpleType toSimpleType() const{ Q_ASSERT(isSimpleType()); return QCborSimpleType(value64); }
|
||||
qfloat16 toFloat16() const { Q_ASSERT(isFloat16()); return _toFloatingPoint<qfloat16>(); }
|
||||
float toFloat() const { Q_ASSERT(isFloat()); return _toFloatingPoint<float>(); }
|
||||
double toDouble() const { Q_ASSERT(isDouble()); return _toFloatingPoint<double>(); }
|
||||
|
||||
qint64 toInteger() const
|
||||
{
|
||||
Q_ASSERT(isInteger());
|
||||
qint64 v = qint64(value64);
|
||||
if (isNegativeInteger())
|
||||
return -v - 1;
|
||||
return v;
|
||||
}
|
||||
|
||||
private:
|
||||
void preparse();
|
||||
bool _enterContainer_helper();
|
||||
StringResult<QString> _readString_helper();
|
||||
StringResult<QByteArray> _readByteArray_helper();
|
||||
qsizetype _currentStringChunkSize() const;
|
||||
|
||||
template <typename FP> FP _toFloatingPoint() const noexcept
|
||||
{
|
||||
using UIntFP = typename QIntegerForSizeof<FP>::Unsigned;
|
||||
UIntFP u = UIntFP(value64);
|
||||
FP f;
|
||||
memcpy(static_cast<void *>(&f), &u, sizeof(f));
|
||||
return f;
|
||||
}
|
||||
|
||||
friend QCborStreamReaderPrivate;
|
||||
friend class QCborContainerPrivate;
|
||||
quint64 value64;
|
||||
QScopedPointer<QCborStreamReaderPrivate> d;
|
||||
quint8 type_;
|
||||
quint8 reserved[3] = {};
|
||||
};
|
||||
|
||||
QT_END_NAMESPACE
|
||||
|
||||
#if defined(QT_X11_DEFINES_FOUND)
|
||||
# define True 1
|
||||
# define False 0
|
||||
#endif
|
||||
|
||||
#endif // QCBORSTREAMREADER_H
|
||||
Reference in New Issue
Block a user