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 };
68 for (auto it = json.constBegin(); it != json.constEnd(); ++it) {
69 if (!knownKeys.contains(it.key()))
70 rec.extras.insert(it.key(), it.value());
71 }
72
73 return rec;
74}
75
76//=============================================================================================================
77
78QCborMap MnaRecording::toCbor() const
79{
80 QCborMap cbor = QCborMap::fromJsonObject(extras);
81 cbor[QLatin1String("id")] = id;
82
83 QCborArray filesArr;
84 for(const MnaFileRef& f : files) {
85 filesArr.append(f.toCbor());
86 }
87 cbor[QLatin1String("files")] = filesArr;
88
89 return cbor;
90}
91
92//=============================================================================================================
93
95{
96 MnaRecording rec;
97 rec.id = cbor[QLatin1String("id")].toString();
98
99 const QCborArray filesArr = cbor[QLatin1String("files")].toArray();
100 for(const QCborValue& v : filesArr) {
101 rec.files.append(MnaFileRef::fromCbor(v.toMap()));
102 }
103
104 static const QSet<QString> knownKeys = {
105 QStringLiteral("id"), QStringLiteral("files")
106 };
107 QJsonObject cborJson = cbor.toJsonObject();
108 for (auto it = cborJson.constBegin(); it != cborJson.constEnd(); ++it) {
109 if (!knownKeys.contains(it.key()))
110 rec.extras.insert(it.key(), it.value());
111 }
112
113 return rec;
114}
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