aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2024-03-21 14:18:53 +0100
committerMarco Bubke <marco.bubke@qt.io>2024-03-21 21:07:40 +0000
commit06f75dbdbfe8c57e602c4fc258ab8934cd208089 (patch)
treeeadf7aea9f5a9d3e36e116ec271563f3ca0c36b2 /src/libs
parent431d29859bd28cfc38274eed896a0d813ca86c85 (diff)
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>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/nanotrace/nanotracehr.h41
1 files changed, 40 insertions, 1 deletions
diff --git a/src/libs/nanotrace/nanotracehr.h b/src/libs/nanotrace/nanotracehr.h
index 5f2b031d55..37e06b559b 100644
--- a/src/libs/nanotrace/nanotracehr.h
+++ b/src/libs/nanotrace/nanotracehr.h
@@ -12,6 +12,7 @@
#include <QByteArrayView>
#include <QList>
+#include <QMap>
#include <QStringView>
#include <QVarLengthArray>
#include <QVariant>
@@ -247,8 +248,10 @@ void convertToString(String &string, const Container &values)
{
string.append('[');
- for (const auto &value : values)
+ for (const auto &value : values) {
convertToString(string, value);
+ string.append(',');
+ }
if (values.size())
string.pop_back();
@@ -256,6 +259,42 @@ void convertToString(String &string, const Container &values)
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 {
template<typename String, typename... Arguments>