From 06f75dbdbfe8c57e602c4fc258ab8934cd208089 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Thu, 21 Mar 2024 14:18:53 +0100 Subject: [PATCH] Nanotrace: Add generic map support Change-Id: I5622697e7c5a34e204d045d61bafa874ce3783d5 Reviewed-by: Qt CI Patch Build Bot Reviewed-by: Tim Jenssen Reviewed-by: --- src/libs/nanotrace/nanotracehr.h | 41 +++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/src/libs/nanotrace/nanotracehr.h b/src/libs/nanotrace/nanotracehr.h index 5f2b031d55a..37e06b559b4 100644 --- a/src/libs/nanotrace/nanotracehr.h +++ b/src/libs/nanotrace/nanotracehr.h @@ -12,6 +12,7 @@ #include #include +#include #include #include #include @@ -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 +struct is_map : std::false_type +{}; + +template +struct is_map> : std::true_type +{}; + +template +struct is_map> : std::true_type +{}; + +template::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 +void convertToString(String &string, const QMap &dictonary) +{ + convertToString(string, dictonary.asKeyValueRange()); +} + namespace Internal { template