forked from qt-creator/qt-creator
Nanotrace: Add generic map support
Change-Id: I5622697e7c5a34e204d045d61bafa874ce3783d5 Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include <QByteArrayView>
|
#include <QByteArrayView>
|
||||||
#include <QList>
|
#include <QList>
|
||||||
|
#include <QMap>
|
||||||
#include <QStringView>
|
#include <QStringView>
|
||||||
#include <QVarLengthArray>
|
#include <QVarLengthArray>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
@@ -247,8 +248,10 @@ void convertToString(String &string, const Container &values)
|
|||||||
{
|
{
|
||||||
string.append('[');
|
string.append('[');
|
||||||
|
|
||||||
for (const auto &value : values)
|
for (const auto &value : values) {
|
||||||
convertToString(string, value);
|
convertToString(string, value);
|
||||||
|
string.append(',');
|
||||||
|
}
|
||||||
|
|
||||||
if (values.size())
|
if (values.size())
|
||||||
string.pop_back();
|
string.pop_back();
|
||||||
@@ -256,6 +259,42 @@ void convertToString(String &string, const Container &values)
|
|||||||
string.append(']');
|
string.append(']');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
struct is_map : std::false_type
|
||||||
|
{};
|
||||||
|
|
||||||
|
template<typename... Arguments>
|
||||||
|
struct is_map<QtPrivate::QKeyValueRange<Arguments...>> : std::true_type
|
||||||
|
{};
|
||||||
|
|
||||||
|
template<typename... Arguments>
|
||||||
|
struct is_map<std::map<Arguments...>> : std::true_type
|
||||||
|
{};
|
||||||
|
|
||||||
|
template<typename String, typename Map, typename std::enable_if_t<is_map<Map>::value, bool> = true>
|
||||||
|
void convertToString(String &string, const Map &map)
|
||||||
|
{
|
||||||
|
string.append('{');
|
||||||
|
|
||||||
|
for (const auto &[key, value] : map) {
|
||||||
|
convertToString(string, key);
|
||||||
|
string.append(':');
|
||||||
|
convertToString(string, value);
|
||||||
|
string.append(',');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (map.begin() != map.end())
|
||||||
|
string.pop_back();
|
||||||
|
|
||||||
|
string.append('}');
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename String, typename Key, typename Value>
|
||||||
|
void convertToString(String &string, const QMap<Key, Value> &dictonary)
|
||||||
|
{
|
||||||
|
convertToString(string, dictonary.asKeyValueRange());
|
||||||
|
}
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
template<typename String, typename... Arguments>
|
template<typename String, typename... Arguments>
|
||||||
|
|||||||
Reference in New Issue
Block a user