From d18230a09f97a4136e382fa97cb515c8f95cf8c2 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 16 Dec 2019 10:58:44 +0000 Subject: [PATCH] Add conversion from List/Map QVariants into structured data --- renderdoc/api/replay/structured_data.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/renderdoc/api/replay/structured_data.h b/renderdoc/api/replay/structured_data.h index 510a06c8f..77755c5da 100644 --- a/renderdoc/api/replay/structured_data.h +++ b/renderdoc/api/replay/structured_data.h @@ -632,6 +632,28 @@ inline SDObject *makeSDObject(const char *name, QVariant val) ret->data.str = val.toString().toUtf8().data(); ret->type.byteSize = ret->data.str.size(); break; + case QMetaType::QVariantList: + { + QVariantList list = val.toList(); + ret->type.name = "array"_lit; + ret->type.basetype = SDBasic::Array; + ret->data.children.reserve(list.size()); + for(int i = 0; i < list.size(); i++) + ret->data.children.push_back(makeSDObject("[]", list.at(i))); + ret->type.byteSize = list.size(); + break; + } + case QMetaType::QVariantMap: + { + QVariantMap map = val.toMap(); + ret->type.name = "struct"_lit; + ret->type.basetype = SDBasic::Struct; + ret->data.children.reserve(map.size()); + for(const QString &str : map.keys()) + ret->data.children.push_back(makeSDObject(str.toUtf8().data(), map[str])); + ret->type.byteSize = map.size(); + break; + } default: break; }