QxOrm 1.4.9
C++ Object Relational Mapping library
Loading...
Searching...
No Matches
QxSerializeQJson_std_tuple.h
Go to the documentation of this file.
1/****************************************************************************
2**
3** https://www.qxorm.com/
4** Copyright (C) 2013 Lionel Marty (contact@qxorm.com)
5**
6** This file is part of the QxOrm library
7**
8** This software is provided 'as-is', without any express or implied
9** warranty. In no event will the authors be held liable for any
10** damages arising from the use of this software
11**
12** Commercial Usage
13** Licensees holding valid commercial QxOrm licenses may use this file in
14** accordance with the commercial license agreement provided with the
15** Software or, alternatively, in accordance with the terms contained in
16** a written agreement between you and Lionel Marty
17**
18** GNU General Public License Usage
19** Alternatively, this file may be used under the terms of the GNU
20** General Public License version 3.0 as published by the Free Software
21** Foundation and appearing in the file 'license.gpl3.txt' included in the
22** packaging of this file. Please review the following information to
23** ensure the GNU General Public License version 3.0 requirements will be
24** met : http://www.gnu.org/copyleft/gpl.html
25**
26** If you are unsure which license is appropriate for your use, or
27** if you have questions regarding the use of this file, please contact :
28** contact@qxorm.com
29**
30****************************************************************************/
31
32#ifndef _QX_NO_JSON
33#ifndef _QX_SERIALIZE_QJSON_STD_TUPLE_H_
34#define _QX_SERIALIZE_QJSON_STD_TUPLE_H_
35
36#ifdef _MSC_VER
37#pragma once
38#endif
39
47#include <QtCore/qjsonvalue.h>
48#include <QtCore/qjsonobject.h>
49#include <QtCore/qjsonarray.h>
50
51#include <QxConvert/QxConvert.h>
53
54namespace qx {
55namespace cvt {
56namespace detail {
57
58template <typename T0, typename T1>
59struct QxConvert_ToJson< std::tuple<T0, T1> >
60{
61 static inline QJsonValue toJson(const std::tuple<T0, T1> & t, const QString & format)
62 {
63 QJsonArray arr; QJsonValue val;
64 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
65 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
66 return QJsonValue(arr);
67 }
68};
69
70template <typename T0, typename T1, typename T2>
71struct QxConvert_ToJson< std::tuple<T0, T1, T2> >
72{
73 static inline QJsonValue toJson(const std::tuple<T0, T1, T2> & t, const QString & format)
74 {
75 QJsonArray arr; QJsonValue val;
76 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
77 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
78 val = qx::cvt::to_json(std::get<2>(t), format); arr.append(val);
79 return QJsonValue(arr);
80 }
81};
82
83template <typename T0, typename T1, typename T2, typename T3>
84struct QxConvert_ToJson< std::tuple<T0, T1, T2, T3> >
85{
86 static inline QJsonValue toJson(const std::tuple<T0, T1, T2, T3> & t, const QString & format)
87 {
88 QJsonArray arr; QJsonValue val;
89 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
90 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
91 val = qx::cvt::to_json(std::get<2>(t), format); arr.append(val);
92 val = qx::cvt::to_json(std::get<3>(t), format); arr.append(val);
93 return QJsonValue(arr);
94 }
95};
96
97template <typename T0, typename T1, typename T2, typename T3, typename T4>
98struct QxConvert_ToJson< std::tuple<T0, T1, T2, T3, T4> >
99{
100 static inline QJsonValue toJson(const std::tuple<T0, T1, T2, T3, T4> & t, const QString & format)
101 {
102 QJsonArray arr; QJsonValue val;
103 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
104 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
105 val = qx::cvt::to_json(std::get<2>(t), format); arr.append(val);
106 val = qx::cvt::to_json(std::get<3>(t), format); arr.append(val);
107 val = qx::cvt::to_json(std::get<4>(t), format); arr.append(val);
108 return QJsonValue(arr);
109 }
110};
111
112template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
113struct QxConvert_ToJson< std::tuple<T0, T1, T2, T3, T4, T5> >
114{
115 static inline QJsonValue toJson(const std::tuple<T0, T1, T2, T3, T4, T5> & t, const QString & format)
116 {
117 QJsonArray arr; QJsonValue val;
118 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
119 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
120 val = qx::cvt::to_json(std::get<2>(t), format); arr.append(val);
121 val = qx::cvt::to_json(std::get<3>(t), format); arr.append(val);
122 val = qx::cvt::to_json(std::get<4>(t), format); arr.append(val);
123 val = qx::cvt::to_json(std::get<5>(t), format); arr.append(val);
124 return QJsonValue(arr);
125 }
126};
127
128template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
129struct QxConvert_ToJson< std::tuple<T0, T1, T2, T3, T4, T5, T6> >
130{
131 static inline QJsonValue toJson(const std::tuple<T0, T1, T2, T3, T4, T5, T6> & t, const QString & format)
132 {
133 QJsonArray arr; QJsonValue val;
134 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
135 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
136 val = qx::cvt::to_json(std::get<2>(t), format); arr.append(val);
137 val = qx::cvt::to_json(std::get<3>(t), format); arr.append(val);
138 val = qx::cvt::to_json(std::get<4>(t), format); arr.append(val);
139 val = qx::cvt::to_json(std::get<5>(t), format); arr.append(val);
140 val = qx::cvt::to_json(std::get<6>(t), format); arr.append(val);
141 return QJsonValue(arr);
142 }
143};
144
145template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
146struct QxConvert_ToJson< std::tuple<T0, T1, T2, T3, T4, T5, T6, T7> >
147{
148 static inline QJsonValue toJson(const std::tuple<T0, T1, T2, T3, T4, T5, T6, T7> & t, const QString & format)
149 {
150 QJsonArray arr; QJsonValue val;
151 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
152 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
153 val = qx::cvt::to_json(std::get<2>(t), format); arr.append(val);
154 val = qx::cvt::to_json(std::get<3>(t), format); arr.append(val);
155 val = qx::cvt::to_json(std::get<4>(t), format); arr.append(val);
156 val = qx::cvt::to_json(std::get<5>(t), format); arr.append(val);
157 val = qx::cvt::to_json(std::get<6>(t), format); arr.append(val);
158 val = qx::cvt::to_json(std::get<7>(t), format); arr.append(val);
159 return QJsonValue(arr);
160 }
161};
162
163template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
164struct QxConvert_ToJson< std::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8> >
165{
166 static inline QJsonValue toJson(const std::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8> & t, const QString & format)
167 {
168 QJsonArray arr; QJsonValue val;
169 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
170 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
171 val = qx::cvt::to_json(std::get<2>(t), format); arr.append(val);
172 val = qx::cvt::to_json(std::get<3>(t), format); arr.append(val);
173 val = qx::cvt::to_json(std::get<4>(t), format); arr.append(val);
174 val = qx::cvt::to_json(std::get<5>(t), format); arr.append(val);
175 val = qx::cvt::to_json(std::get<6>(t), format); arr.append(val);
176 val = qx::cvt::to_json(std::get<7>(t), format); arr.append(val);
177 val = qx::cvt::to_json(std::get<8>(t), format); arr.append(val);
178 return QJsonValue(arr);
179 }
180};
181
182template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
183struct QxConvert_ToJson< std::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
184{
185 static inline QJsonValue toJson(const std::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> & t, const QString & format)
186 {
187 QJsonArray arr; QJsonValue val;
188 val = qx::cvt::to_json(std::get<0>(t), format); arr.append(val);
189 val = qx::cvt::to_json(std::get<1>(t), format); arr.append(val);
190 val = qx::cvt::to_json(std::get<2>(t), format); arr.append(val);
191 val = qx::cvt::to_json(std::get<3>(t), format); arr.append(val);
192 val = qx::cvt::to_json(std::get<4>(t), format); arr.append(val);
193 val = qx::cvt::to_json(std::get<5>(t), format); arr.append(val);
194 val = qx::cvt::to_json(std::get<6>(t), format); arr.append(val);
195 val = qx::cvt::to_json(std::get<7>(t), format); arr.append(val);
196 val = qx::cvt::to_json(std::get<8>(t), format); arr.append(val);
197 val = qx::cvt::to_json(std::get<9>(t), format); arr.append(val);
198 return QJsonValue(arr);
199 }
200};
201
202template <typename T0, typename T1>
203struct QxConvert_FromJson< std::tuple<T0, T1> >
204{
205 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1> & t, const QString & format)
206 {
207 if (! j.isArray()) { return qx_bool(true); }
208 QJsonArray arr = j.toArray();
209 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
210 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
211 return qx_bool(true);
212 }
213};
214
215template <typename T0, typename T1, typename T2>
216struct QxConvert_FromJson< std::tuple<T0, T1, T2> >
217{
218 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1, T2> & t, const QString & format)
219 {
220 if (! j.isArray()) { return qx_bool(true); }
221 QJsonArray arr = j.toArray();
222 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
223 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
224 qx::cvt::from_json(arr.at(2), std::get<2>(t), format);
225 return qx_bool(true);
226 }
227};
228
229template <typename T0, typename T1, typename T2, typename T3>
230struct QxConvert_FromJson< std::tuple<T0, T1, T2, T3> >
231{
232 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1, T2, T3> & t, const QString & format)
233 {
234 if (! j.isArray()) { return qx_bool(true); }
235 QJsonArray arr = j.toArray();
236 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
237 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
238 qx::cvt::from_json(arr.at(2), std::get<2>(t), format);
239 qx::cvt::from_json(arr.at(3), std::get<3>(t), format);
240 return qx_bool(true);
241 }
242};
243
244template <typename T0, typename T1, typename T2, typename T3, typename T4>
245struct QxConvert_FromJson< std::tuple<T0, T1, T2, T3, T4> >
246{
247 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1, T2, T3, T4> & t, const QString & format)
248 {
249 if (! j.isArray()) { return qx_bool(true); }
250 QJsonArray arr = j.toArray();
251 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
252 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
253 qx::cvt::from_json(arr.at(2), std::get<2>(t), format);
254 qx::cvt::from_json(arr.at(3), std::get<3>(t), format);
255 qx::cvt::from_json(arr.at(4), std::get<4>(t), format);
256 return qx_bool(true);
257 }
258};
259
260template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5>
261struct QxConvert_FromJson< std::tuple<T0, T1, T2, T3, T4, T5> >
262{
263 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1, T2, T3, T4, T5> & t, const QString & format)
264 {
265 if (! j.isArray()) { return qx_bool(true); }
266 QJsonArray arr = j.toArray();
267 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
268 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
269 qx::cvt::from_json(arr.at(2), std::get<2>(t), format);
270 qx::cvt::from_json(arr.at(3), std::get<3>(t), format);
271 qx::cvt::from_json(arr.at(4), std::get<4>(t), format);
272 qx::cvt::from_json(arr.at(5), std::get<5>(t), format);
273 return qx_bool(true);
274 }
275};
276
277template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
278struct QxConvert_FromJson< std::tuple<T0, T1, T2, T3, T4, T5, T6> >
279{
280 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1, T2, T3, T4, T5, T6> & t, const QString & format)
281 {
282 if (! j.isArray()) { return qx_bool(true); }
283 QJsonArray arr = j.toArray();
284 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
285 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
286 qx::cvt::from_json(arr.at(2), std::get<2>(t), format);
287 qx::cvt::from_json(arr.at(3), std::get<3>(t), format);
288 qx::cvt::from_json(arr.at(4), std::get<4>(t), format);
289 qx::cvt::from_json(arr.at(5), std::get<5>(t), format);
290 qx::cvt::from_json(arr.at(6), std::get<6>(t), format);
291 return qx_bool(true);
292 }
293};
294
295template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
296struct QxConvert_FromJson< std::tuple<T0, T1, T2, T3, T4, T5, T6, T7> >
297{
298 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1, T2, T3, T4, T5, T6, T7> & t, const QString & format)
299 {
300 if (! j.isArray()) { return qx_bool(true); }
301 QJsonArray arr = j.toArray();
302 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
303 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
304 qx::cvt::from_json(arr.at(2), std::get<2>(t), format);
305 qx::cvt::from_json(arr.at(3), std::get<3>(t), format);
306 qx::cvt::from_json(arr.at(4), std::get<4>(t), format);
307 qx::cvt::from_json(arr.at(5), std::get<5>(t), format);
308 qx::cvt::from_json(arr.at(6), std::get<6>(t), format);
309 qx::cvt::from_json(arr.at(7), std::get<7>(t), format);
310 return qx_bool(true);
311 }
312};
313
314template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
315struct QxConvert_FromJson< std::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8> >
316{
317 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8> & t, const QString & format)
318 {
319 if (! j.isArray()) { return qx_bool(true); }
320 QJsonArray arr = j.toArray();
321 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
322 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
323 qx::cvt::from_json(arr.at(2), std::get<2>(t), format);
324 qx::cvt::from_json(arr.at(3), std::get<3>(t), format);
325 qx::cvt::from_json(arr.at(4), std::get<4>(t), format);
326 qx::cvt::from_json(arr.at(5), std::get<5>(t), format);
327 qx::cvt::from_json(arr.at(6), std::get<6>(t), format);
328 qx::cvt::from_json(arr.at(7), std::get<7>(t), format);
329 qx::cvt::from_json(arr.at(8), std::get<8>(t), format);
330 return qx_bool(true);
331 }
332};
333
334template <typename T0, typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
335struct QxConvert_FromJson< std::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> >
336{
337 static inline qx_bool fromJson(const QJsonValue & j, std::tuple<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9> & t, const QString & format)
338 {
339 if (! j.isArray()) { return qx_bool(true); }
340 QJsonArray arr = j.toArray();
341 qx::cvt::from_json(arr.at(0), std::get<0>(t), format);
342 qx::cvt::from_json(arr.at(1), std::get<1>(t), format);
343 qx::cvt::from_json(arr.at(2), std::get<2>(t), format);
344 qx::cvt::from_json(arr.at(3), std::get<3>(t), format);
345 qx::cvt::from_json(arr.at(4), std::get<4>(t), format);
346 qx::cvt::from_json(arr.at(5), std::get<5>(t), format);
347 qx::cvt::from_json(arr.at(6), std::get<6>(t), format);
348 qx::cvt::from_json(arr.at(7), std::get<7>(t), format);
349 qx::cvt::from_json(arr.at(8), std::get<8>(t), format);
350 qx::cvt::from_json(arr.at(9), std::get<9>(t), format);
351 return qx_bool(true);
352 }
353};
354
355} // namespace detail
356} // namespace cvt
357} // namespace qx
358
359#endif // _QX_SERIALIZE_QJSON_STD_TUPLE_H_
360#endif // _QX_NO_JSON
qx::QxBool qx_bool
Definition QxBool.h:150
qx::cvt : namespace to provide global functions to convert any kind of objects to/from QString and QV...
qx_bool : boolean type with code and description message when an error occured
Definition QxBool.h:71
qx_bool from_json(const QJsonValue &j, T &t, const QString &format=QString())
Definition QxConvert.h:84
QJsonValue to_json(const T &t, const QString &format=QString())
Definition QxConvert.h:83
Root namespace for all QxOrm library features.
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1, T2, T3, T4 > &t, const QString &format)
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1, T2, T3 > &t, const QString &format)
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1, T2 > &t, const QString &format)
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1, T2, T3, T4, T5 > &t, const QString &format)
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1, T2, T3, T4, T5, T6, T7 > &t, const QString &format)
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 > &t, const QString &format)
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1, T2, T3, T4, T5, T6 > &t, const QString &format)
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > &t, const QString &format)
static qx_bool fromJson(const QJsonValue &j, std::tuple< T0, T1 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1, T2, T3, T4 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1, T2, T3 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1, T2, T3, T4, T5, T6, T7 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1, T2, T3, T4, T5 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1, T2, T3, T4, T5, T6 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1, T2 > &t, const QString &format)
static QJsonValue toJson(const std::tuple< T0, T1 > &t, const QString &format)