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