v2.0.0
Loading...
Searching...
No Matches
mna_session.cpp
Go to the documentation of this file.
1//=============================================================================================================
19
20//=============================================================================================================
21// INCLUDES
22//=============================================================================================================
23
24#include "mna_session.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 MnaSession::toJson() const
40{
41 QJsonObject json = extras;
42 json[QLatin1String("id")] = id;
43
44 QJsonArray recsArr;
45 for (const MnaRecording& r : recordings) {
46 recsArr.append(r.toJson());
47 }
48 json[QLatin1String("recordings")] = recsArr;
49
50 return json;
51}
52
53//=============================================================================================================
54
55MnaSession MnaSession::fromJson(const QJsonObject& json)
56{
57 MnaSession session;
58 session.id = json[QLatin1String("id")].toString();
59
60 const QJsonArray recsArr = json[QLatin1String("recordings")].toArray();
61 for (const QJsonValue& v : recsArr) {
62 session.recordings.append(MnaRecording::fromJson(v.toObject()));
63 }
64
65 static const QSet<QString> knownKeys = {
66 QStringLiteral("id"), QStringLiteral("recordings")};
67 for (auto it = json.constBegin(); it != json.constEnd(); ++it) {
68 if (!knownKeys.contains(it.key()))
69 session.extras.insert(it.key(), it.value());
70 }
71
72 return session;
73}
74
75//=============================================================================================================
76
77QCborMap MnaSession::toCbor() const
78{
79 QCborMap cbor = QCborMap::fromJsonObject(extras);
80 cbor[QLatin1String("id")] = id;
81
82 QCborArray recsArr;
83 for (const MnaRecording& r : recordings) {
84 recsArr.append(r.toCbor());
85 }
86 cbor[QLatin1String("recordings")] = recsArr;
87
88 return cbor;
89}
90
91//=============================================================================================================
92
93MnaSession MnaSession::fromCbor(const QCborMap& cbor)
94{
95 MnaSession session;
96 session.id = cbor[QLatin1String("id")].toString();
97
98 const QCborArray recsArr = cbor[QLatin1String("recordings")].toArray();
99 for (const QCborValue& v : recsArr) {
100 session.recordings.append(MnaRecording::fromCbor(v.toMap()));
101 }
102
103 static const QSet<QString> knownKeys = {
104 QStringLiteral("id"), QStringLiteral("recordings")};
105 QJsonObject cborJson = cbor.toJsonObject();
106 for (auto it = cborJson.constBegin(); it != cborJson.constEnd(); ++it) {
107 if (!knownKeys.contains(it.key()))
108 session.extras.insert(it.key(), it.value());
109 }
110
111 return session;
112}
Container for all recordings collected within a single experimental session for one subject.
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:64
QJsonObject toJson() const
QCborMap toCbor() const
static MnaSession fromJson(const QJsonObject &json)
QList< MnaRecording > recordings
Definition mna_session.h:63