3#include <QMetaProperty>
4#if QT_VERSION < QT_VERSION_CHECK(6,11,0)
5#include <QSequentialIterable>
7#include <QMetaSequence>
14#include <QCborStreamWriter>
16 : m_writer(new QCborStreamWriter(&m_buffer))
19 if (name.startsWith(
"V2"))
27 auto name =
Name.toUtf8();
28 m_writer->appendTextString(name.constData(), name.size());
42 if (Value.isNull() || !Value.isValid())
44 m_writer->append(QCborSimpleType::Null);
48 auto *
object = Value.value<QObject*>();
51 QVariant isNull =
object->property(
"isNull");
54 m_writer->append(QCborSimpleType::Null);
63#
if QT_VERSION < QT_VERSION_CHECK(6,0,0)
64 static_cast<QMetaType::Type
>(Value.type())
66 static_cast<QMetaType::Type
>(Value.typeId())
71 case QMetaType::LongLong:
72 if (
auto value = Value.toLongLong(&ok); ok)
76 case QMetaType::ULongLong:
77 if (
auto value = Value.toULongLong(&ok); ok)
80 case QMetaType::Double:
m_writer->append(Value.toDouble());
break;
81 case QMetaType::Bool:
m_writer->append(Value.toBool());
break;
83 case QMetaType::QVariantList:
AddList(Value);
break;
84 case QMetaType::QVariantMap:
AddMap(Value.toMap());
break;
86 case QMetaType::QDateTime:
88 QDateTime dt(Value.toDateTime());
91 m_writer->append(QCborSimpleType::Null);
96 m_writer->appendTextString(name.constData(), name.size());
101 auto name = Value.toString().toUtf8();
102 m_writer->appendTextString(name.constData(), name.size());
110 const auto * metaobject = Object->metaObject();
111 int count = metaobject->propertyCount();
114 for (
int index = 0; index < count; ++index )
116 QMetaProperty metaProperty = metaobject->property(index);
118#
if QT_VERSION < QT_VERSION_CHECK(6,0,0)
119 metaProperty.isUser(Object)
121 metaProperty.isUser()
125 const char *rawname = metaProperty.name();
126 QString name(rawname);
127 if (name.compare(
"objectName") == 0)
129 auto utf8 = name.toUtf8();
130 m_writer->appendTextString(utf8.constData(), utf8.size());
131 AddValue(Object->property(rawname));
140#if QT_VERSION < QT_VERSION_CHECK(6,11,0)
141 auto values = Values.value<QSequentialIterable>();
143 auto values = Values.value<QMetaSequence::Iterable>();
145 for (
const auto & value : values)
147 auto utf8 = value.toString().toUtf8();
148 m_writer->appendTextString(utf8.constData(), utf8.size());
156#if QT_VERSION < QT_VERSION_CHECK(6,11,0)
157 auto values = Values.value<QSequentialIterable>();
159 auto values = Values.value<QMetaSequence::Iterable>();
161 for (
const auto & value : values)
169 for (
auto it = Map.cbegin(); it != Map.cend(); ++it)
171 auto utf8 = it.key().toUtf8();
172 m_writer->appendTextString(utf8.constData(), utf8.size());
void AddObject(const QString &Name, const QVariant &Value)
void AddQObject(const QObject *Object)
QCborStreamWriter * m_writer
void AddList(const QVariant &Values)
void AddMap(const QVariantMap &Map)
void AddStringList(const QVariant &Values)
MythCBORSerialiser(const QString &Name, const QVariant &Value)
void AddValue(const QVariant &Value)
MythCBORSerialiser::AddValue.
QString toString(const QDateTime &raw_dt, uint format)
Returns formatted string representing the time.