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:
Marco Bubke
2024-03-21 14:18:53 +01:00
parent 431d29859b
commit 06f75dbdbf

View File

@@ -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>