v2.0.0
Loading...
Searching...
No Matches
mna_recording.cpp
Go to the documentation of this file.
1//=============================================================================================================
34
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
39#include "mna_recording.h"
40
41#include <QJsonArray>
42#include <QCborArray>
43
44//=============================================================================================================
45// USED NAMESPACES
46//=============================================================================================================
47
48using namespace MNALIB;
49
50//=============================================================================================================
51// DEFINE METHODS
52//=============================================================================================================
53
54QJsonObject MnaRecording::toJson() const
55{
56 QJsonObject json = extras;
57 json[QLatin1String("id")] = id;
58
59 QJsonArray filesArr;
60 for(const MnaFileRef& f : files) {
61 filesArr.append(f.toJson());
62 }
63 json[QLatin1String("files")] = filesArr;
64
65 return json;
66}
67
68//=============================================================================================================
69
70MnaRecording MnaRecording::fromJson(const QJsonObject& json)
71{
72 MnaRecording rec;
73 rec.id = json[QLatin1String("id")].toString();
74
75 const QJsonArray filesArr = json[QLatin1String("files")].toArray();
76 for(const QJsonValue& v : filesArr) {
77 rec.files.append(MnaFileRef::fromJson(v.toObject()));
78 }
79
80 static const QSet<QString> knownKeys = {
81 QStringLiteral("id"), QStringLiteral("files")
82 };
83 for (auto it = json.constBegin(); it != json.constEnd(); ++it) {
84 if (!knownKeys.contains(it.key()))
85 rec.extras.insert(it.key(), it.value());
86 }
87
88 return rec;
89}
90
91//=============================================================================================================
92
93QCborMap MnaRecording::toCbor() const
94{
95 QCborMap cbor = QCborMap::fromJsonObject(extras);
96 cbor[QLatin1String("id")] = id;
97
98 QCborArray filesArr;
99 for(const MnaFileRef& f : files) {
100 filesArr.append(f.toCbor());
101 }
102 cbor[QLatin1String("files")] = filesArr;
103
104 return cbor;
105}
106
107//=============================================================================================================
108
110{
111 MnaRecording rec;
112 rec.id = cbor[QLatin1String("id")].toString();
113
114 const QCborArray filesArr = cbor[QLatin1String("files")].toArray();
115 for(const QCborValue& v : filesArr) {
116 rec.files.append(MnaFileRef::fromCbor(v.toMap()));
117 }
118
119 static const QSet<QString> knownKeys = {
120 QStringLiteral("id"), QStringLiteral("files")
121 };
122 QJsonObject cborJson = cbor.toJsonObject();
123 for (auto it = cborJson.constBegin(); it != cborJson.constEnd(); ++it) {
124 if (!knownKeys.contains(it.key()))
125 rec.extras.insert(it.key(), it.value());
126 }
127
128 return rec;
129}
MnaRecording class declaration.
MNE Analysis Container Format (mna/mnx).
static MnaFileRef fromJson(const QJsonObject &json)
static MnaFileRef fromCbor(const QCborMap &cbor)
static MnaRecording fromJson(const QJsonObject &json)
static MnaRecording fromCbor(const QCborMap &cbor)
QCborMap toCbor() const
QJsonObject toJson() const
QList< MnaFileRef > files