From 73f135fa5b19c9a278fcdf3167561c9c4250643a Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Wed, 18 Mar 2015 02:10:08 +0000 Subject: [PATCH] refs #356 Streaming ops for QJsonObject: value in pair should be a reference, to avoid unnecessary copying and object slicing. --- src/blackmisc/json.cpp | 18 +++++++++--------- src/blackmisc/json.h | 20 ++++++++++---------- src/blackmisc/tuple_private.h | 4 ++-- src/blackmisc/valueobject.h | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/blackmisc/json.cpp b/src/blackmisc/json.cpp index 428bdccba..011366448 100644 --- a/src/blackmisc/json.cpp +++ b/src/blackmisc/json.cpp @@ -167,55 +167,55 @@ QJsonArray &operator<<(QJsonArray &json, const QDateTime &value) return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(value.second)); return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(value.second)); return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(static_cast(value.second))); return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(value.second)); return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(static_cast(value.second))); return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(value.second)); return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(value.second)); return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(value.second)); return json; } -QJsonObject &operator<<(QJsonObject &json, const std::pair &value) +QJsonObject &operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(value.second.toString())); return json; diff --git a/src/blackmisc/json.h b/src/blackmisc/json.h index 1562342ec..d9f1fa230 100644 --- a/src/blackmisc/json.h +++ b/src/blackmisc/json.h @@ -50,7 +50,7 @@ const QJsonValueRef &operator >>(const QJsonValueRef &json, QDateTime &value); //! \ingroup JSON template typename std::enable_if::value, QJsonObject>::type -&operator<<(QJsonObject &json, std::pair value) +&operator<<(QJsonObject &json, std::pair value) { json.insert(value.first, QJsonValue(static_cast(value.second))); return json; @@ -93,15 +93,15 @@ QJsonArray &operator<<(QJsonArray &json, const QDateTime &value); //! \name Streaming operators for QJsonObject (from value) //! \ingroup JSON //! @{ -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); -QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); +QJsonObject &operator<<(QJsonObject &json, const std::pair &value); //! @} namespace BlackMisc diff --git a/src/blackmisc/tuple_private.h b/src/blackmisc/tuple_private.h index cf45bb962..4d8cc3be4 100644 --- a/src/blackmisc/tuple_private.h +++ b/src/blackmisc/tuple_private.h @@ -289,7 +289,7 @@ namespace BlackMisc template static void serializeJson(QJsonObject &json, const QStringList &names, const Tu &tu, index_sequence) { - serializeJsonImpl(json, std::make_pair(names[Is], std::get(tu))...); + serializeJsonImpl(json, std::make_pair(names[Is], get_ref(tu))...); } template @@ -301,7 +301,7 @@ namespace BlackMisc template static void serializeJson(QJsonObject &json, const Tu &tu, index_sequence) { - serializeJsonImpl(json, std::make_pair(std::get(tu).m_jsonName, std::get(tu).m_obj)...); + serializeJsonImpl(json, std::make_pair(std::get(tu).m_jsonName, get_ref(tu))...); Q_UNUSED(tu); // avoid compiler warning when all attributes are JSON disabled } diff --git a/src/blackmisc/valueobject.h b/src/blackmisc/valueobject.h index abc2a72ac..0239229b7 100644 --- a/src/blackmisc/valueobject.h +++ b/src/blackmisc/valueobject.h @@ -292,7 +292,7 @@ namespace BlackMisc } //! operator << for JSON - friend QJsonObject& operator<<(QJsonObject &json, const std::pair &value) + friend QJsonObject& operator<<(QJsonObject &json, const std::pair &value) { json.insert(value.first, QJsonValue(value.second.toJson())); return json;