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