mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-04 17:30:12 +08:00
refs #356 Streaming ops for QJsonObject: value in pair should be a reference, to avoid unnecessary copying and object slicing.
This commit is contained in:
@@ -167,55 +167,55 @@ QJsonArray &operator<<(QJsonArray &json, const QDateTime &value)
|
|||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, int> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const int &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second));
|
json.insert(value.first, QJsonValue(value.second));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, qint16> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const qint16 &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second));
|
json.insert(value.first, QJsonValue(value.second));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, qulonglong> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const qulonglong &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(static_cast<int>(value.second)));
|
json.insert(value.first, QJsonValue(static_cast<int>(value.second)));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, qlonglong> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const qlonglong &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second));
|
json.insert(value.first, QJsonValue(value.second));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, uint> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const uint &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(static_cast<int>(value.second)));
|
json.insert(value.first, QJsonValue(static_cast<int>(value.second)));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, QString> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QString &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second));
|
json.insert(value.first, QJsonValue(value.second));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, double> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const double &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second));
|
json.insert(value.first, QJsonValue(value.second));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, bool> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const bool &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second));
|
json.insert(value.first, QJsonValue(value.second));
|
||||||
return json;
|
return json;
|
||||||
}
|
}
|
||||||
|
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, QDateTime> &value)
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QDateTime &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second.toString()));
|
json.insert(value.first, QJsonValue(value.second.toString()));
|
||||||
return json;
|
return json;
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ const QJsonValueRef &operator >>(const QJsonValueRef &json, QDateTime &value);
|
|||||||
//! \ingroup JSON
|
//! \ingroup JSON
|
||||||
template<class ENUM> typename
|
template<class ENUM> typename
|
||||||
std::enable_if<std::is_enum<ENUM>::value, QJsonObject>::type
|
std::enable_if<std::is_enum<ENUM>::value, QJsonObject>::type
|
||||||
&operator<<(QJsonObject &json, std::pair<QString, ENUM> value)
|
&operator<<(QJsonObject &json, std::pair<QString, const ENUM &> value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(static_cast<int>(value.second)));
|
json.insert(value.first, QJsonValue(static_cast<int>(value.second)));
|
||||||
return json;
|
return json;
|
||||||
@@ -93,15 +93,15 @@ QJsonArray &operator<<(QJsonArray &json, const QDateTime &value);
|
|||||||
//! \name Streaming operators for QJsonObject (from value)
|
//! \name Streaming operators for QJsonObject (from value)
|
||||||
//! \ingroup JSON
|
//! \ingroup JSON
|
||||||
//! @{
|
//! @{
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, int> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const int &> &value);
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, qint16> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const qint16 &> &value);
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, qlonglong> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const qlonglong &> &value);
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, uint> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const uint &> &value);
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, qulonglong> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const qulonglong &> &value);
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, QString> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QString &> &value);
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, double> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const double &> &value);
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, bool> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const bool &> &value);
|
||||||
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, QDateTime> &value);
|
QJsonObject &operator<<(QJsonObject &json, const std::pair<QString, const QDateTime &> &value);
|
||||||
//! @}
|
//! @}
|
||||||
|
|
||||||
namespace BlackMisc
|
namespace BlackMisc
|
||||||
|
|||||||
@@ -289,7 +289,7 @@ namespace BlackMisc
|
|||||||
template <class Tu, size_t... Is>
|
template <class Tu, size_t... Is>
|
||||||
static void serializeJson(QJsonObject &json, const QStringList &names, const Tu &tu, index_sequence<Is...>)
|
static void serializeJson(QJsonObject &json, const QStringList &names, const Tu &tu, index_sequence<Is...>)
|
||||||
{
|
{
|
||||||
serializeJsonImpl(json, std::make_pair(names[Is], std::get<Is>(tu))...);
|
serializeJsonImpl(json, std::make_pair(names[Is], get_ref<Is>(tu))...);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class Tu, size_t... Is>
|
template <class Tu, size_t... Is>
|
||||||
@@ -301,7 +301,7 @@ namespace BlackMisc
|
|||||||
template <class Tu, size_t... Is>
|
template <class Tu, size_t... Is>
|
||||||
static void serializeJson(QJsonObject &json, const Tu &tu, index_sequence<Is...>)
|
static void serializeJson(QJsonObject &json, const Tu &tu, index_sequence<Is...>)
|
||||||
{
|
{
|
||||||
serializeJsonImpl(json, std::make_pair(std::get<Is>(tu).m_jsonName, std::get<Is>(tu).m_obj)...);
|
serializeJsonImpl(json, std::make_pair(std::get<Is>(tu).m_jsonName, get_ref<Is>(tu))...);
|
||||||
Q_UNUSED(tu); // avoid compiler warning when all attributes are JSON disabled
|
Q_UNUSED(tu); // avoid compiler warning when all attributes are JSON disabled
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -292,7 +292,7 @@ namespace BlackMisc
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! operator << for JSON
|
//! operator << for JSON
|
||||||
friend QJsonObject& operator<<(QJsonObject &json, const std::pair<QString, Derived> &value)
|
friend QJsonObject& operator<<(QJsonObject &json, const std::pair<QString, const Derived &> &value)
|
||||||
{
|
{
|
||||||
json.insert(value.first, QJsonValue(value.second.toJson()));
|
json.insert(value.first, QJsonValue(value.second.toJson()));
|
||||||
return json;
|
return json;
|
||||||
|
|||||||
Reference in New Issue
Block a user