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