aboutsummaryrefslogtreecommitdiff
path: root/jobs/converters.h
diff options
context:
space:
mode:
authorKitsune Ral <Kitsune-Ral@users.sf.net>2017-11-01 08:38:59 +0300
committerKitsune Ral <Kitsune-Ral@users.sf.net>2017-11-01 08:38:59 +0300
commit1cc5d08159936e87f7c1dc791d6ab3c0e46e7035 (patch)
treec83234016798e5028925c9df1a14adb301150bfc /jobs/converters.h
parentda8bb556dca628e20be732b4a30895010abcc9bf (diff)
downloadlibquotient-1cc5d08159936e87f7c1dc791d6ab3c0e46e7035.tar.gz
libquotient-1cc5d08159936e87f7c1dc791d6ab3c0e46e7035.zip
Move converters.h out of jobs/
Because they are applicable beyond jobs.
Diffstat (limited to 'jobs/converters.h')
-rw-r--r--jobs/converters.h121
1 files changed, 0 insertions, 121 deletions
diff --git a/jobs/converters.h b/jobs/converters.h
deleted file mode 100644
index f6e850c6..00000000
--- a/jobs/converters.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/******************************************************************************
-* Copyright (C) 2017 Kitsune Ral <kitsune-ral@users.sf.net>
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation; either
-* version 2.1 of the License, or (at your option) any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*/
-
-#pragma once
-
-#include <QtCore/QJsonObject>
-#include <QtCore/QJsonArray> // Includes <QtCore/QJsonValue>
-#include <QtCore/QDate>
-
-namespace QMatrixClient
-{
- template <typename T>
- inline QJsonValue toJson(T val)
- {
- return QJsonValue(val);
- }
-
- template <typename T>
- inline QJsonValue toJson(const QVector<T>& vals)
- {
- QJsonArray ar;
- for (const auto& v: vals)
- ar.push_back(toJson(v));
- return ar;
- }
-
- inline QJsonValue toJson(const QStringList& strings)
- {
- return QJsonArray::fromStringList(strings);
- }
-
- template <typename T>
- struct FromJson
- {
- T operator()(QJsonValue jv) const { return static_cast<T>(jv); }
- };
-
- template <typename T>
- inline T fromJson(const QJsonValue& jv)
- {
- return FromJson<T>()(jv);
- }
-
- template <> struct FromJson<bool>
- {
- bool operator()(QJsonValue jv) const { return jv.toBool(); }
- };
-
- template <> struct FromJson<int>
- {
- int operator()(QJsonValue jv) const { return jv.toInt(); }
- };
-
- template <> struct FromJson<double>
- {
- double operator()(QJsonValue jv) const { return jv.toDouble(); }
- };
-
- template <> struct FromJson<qint64>
- {
- qint64 operator()(QJsonValue jv) const { return qint64(jv.toDouble()); }
- };
-
- template <> struct FromJson<QString>
- {
- QString operator()(QJsonValue jv) const { return jv.toString(); }
- };
-
- template <> struct FromJson<QDateTime>
- {
- QDateTime operator()(QJsonValue jv) const
- {
- return QDateTime::fromMSecsSinceEpoch(fromJson<qint64>(jv), Qt::UTC);
- }
- };
-
- template <> struct FromJson<QDate>
- {
- QDate operator()(QJsonValue jv) const
- {
- return fromJson<QDateTime>(jv).date();
- }
- };
-
- template <> struct FromJson<QJsonObject>
- {
- QJsonObject operator()(QJsonValue jv) const { return jv.toObject(); }
- };
-
- template <> struct FromJson<QJsonArray>
- {
- QJsonArray operator()(QJsonValue jv) const { return jv.toArray(); }
- };
-
- template <typename T> struct FromJson<QVector<T>>
- {
- QVector<T> operator()(QJsonValue jv) const
- {
- const auto jsonArray = jv.toArray();
- QVector<T> vect; vect.resize(jsonArray.size());
- std::transform(jsonArray.begin(), jsonArray.end(),
- vect.begin(), FromJson<T>());
- return vect;
- }
- };
-} // namespace QMatrixClient