MythTV master
mythbinaryplist.h
Go to the documentation of this file.
1#ifndef PLIST_H
2#define PLIST_H
3
4// Qt
5#include <QChar> // Fix Qt6 GCC SFINAE warning
6#include <QBitArray> // Fix Qt6 GCC SFINAE warning
7#include <QVariant>
8#include <QXmlStreamWriter>
9
10// MythTV
11#include "mythbaseexp.h"
12
14{
15 public:
16 explicit MythBinaryPList(const QByteArray& Data);
17 QVariant GetValue (const QString& Key);
18 QString ToString ();
19 bool ToXML (QIODevice* Device);
20
21 private:
22 void ParseBinaryPList (const QByteArray& Data);
23 QVariant ParseBinaryNode (uint64_t Num);
24 QVariantMap ParseBinaryDict (uint8_t* Data);
25 QList<QVariant> ParseBinaryArray (uint8_t* Data);
26 static QVariant ParseBinaryString (uint8_t* Data);
27 static QVariant ParseBinaryReal (uint8_t* Data);
28 static QVariant ParseBinaryDate (uint8_t* Data);
29 static QVariant ParseBinaryData (uint8_t* Data);
30 static QVariant ParseBinaryUnicode(uint8_t* Data);
31 static QVariant ParseBinaryUInt (uint8_t** Data);
32 static uint64_t GetBinaryCount (uint8_t** Data);
33 static uint64_t GetBinaryUInt (uint8_t* Data, uint64_t Size);
34 uint8_t* GetBinaryObject (uint64_t Num);
35 bool ToXML (const QVariant& Data, QXmlStreamWriter& Xml);
36 void DictToXML (const QVariant& Data, QXmlStreamWriter& Xml);
37 void ArrayToXML (const QVariant& Data, QXmlStreamWriter& Xml);
38
39 QVariant m_result;
40 uint8_t* m_data { nullptr };
41 uint8_t* m_offsetTable { nullptr };
42 uint64_t m_rootObj { 0 };
43 uint64_t m_numObjs { 0 };
44 uint8_t m_offsetSize { 0 };
45 uint8_t m_parmSize { 0 };
46};
47
48#endif
A device containing images (ie. USB stick, CD, storage group etc)
#define MBASE_PUBLIC
Definition: mythbaseexp.h:8