v2.0.0
Loading...
Searching...
No Matches
mna_recording.cpp
Go to the documentation of this file.
1//=============================================================================================================
19
20//=============================================================================================================
21// INCLUDES
22//=============================================================================================================
23
24#include "mna_recording.h"
25
26#include <QJsonArray>
27#include <QCborArray>
28
29//=============================================================================================================
30// USED NAMESPACES
31//=============================================================================================================
32
33using namespace MNALIB;
34
35//=============================================================================================================
36// DEFINE METHODS
37//=============================================================================================================
38
39QJsonObject MnaRecording::toJson() const
40{
41 QJsonObject json = extras;
42 json[QLatin1String("id")] = id;
43
44 QJsonArray filesArr;
45 for (const MnaFileRef& f : files) {
46 filesArr.append(f.toJson());
47 }
48 json[QLatin1String("files")] = filesArr;
49
50 return json;
51}
52
53//=============================================================================================================
54
55MnaRecording MnaRecording::fromJson(const QJsonObject& json)
56{
57 MnaRecording rec;
58 rec.id = json[QLatin1String("id")].toString();
59
60 const QJsonArray filesArr = json[QLatin1String("files")].toArray();
61 for (const QJsonValue& v : filesArr) {
62 rec.files.append(MnaFileRef::fromJson(v.toObject()));
63 }
64
65 static const QSet<QString> knownKeys = {
66 QStringLiteral("id"), QStringLiteral("files")};
67 for (auto it = json.constBegin(); it != json.constEnd(); ++it) {
68 if (!knownKeys.contains(it.key()))
69 rec.extras.insert(it.key(), it.value());
70 }
71
72 return rec;
73}
74
75//=============================================================================================================
76
77QCborMap MnaRecording::toCbor() const
78{
79 QCborMap cbor = QCborMap::fromJsonObject(extras);
80 cbor[QLatin1String("id")] = id;
81
82 QCborArray filesArr;
83 for (const MnaFileRef& f : files) {
84 filesArr.append(f.toCbor());
85 }
86 cbor[QLatin1String("files")] = filesArr;
87
88 return cbor;
89}
90
91//=============================================================================================================
92
94{
95 MnaRecording rec;
96 rec.id = cbor[QLatin1String("id")].toString();
97
98 const QCborArray filesArr = cbor[QLatin1String("files")].toArray();
99 for (const QCborValue& v : filesArr) {
100 rec.files.append(MnaFileRef::fromCbor(v.toMap()));
101 }
102
103 static const QSet<QString> knownKeys = {
104 QStringLiteral("id"), QStringLiteral("files")};
105 QJsonObject cborJson = cbor.toJsonObject();
106 for (auto it = cborJson.constBegin(); it != cborJson.constEnd(); ++it) {
107 if (!knownKeys.contains(it.key()))
108 rec.extras.insert(it.key(), it.value());
109 }
110
111 return rec;
112}
Grouping of every file that belongs to one continuous measurement run inside an MNA project.
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