From 34ff9c97e60fffda06c3cb5bc87eae7491b0025f Mon Sep 17 00:00:00 2001 From: Dmitry Bravikov Date: Thu, 5 Jan 2023 21:26:58 +0400 Subject: [PATCH] Debugging: Add dumpers for libcpp types: variant, optional, tuple Task-number: QTCREATORBUG-25865 Change-Id: I262ac708ae040982d2ed4f62e1f95807eaaae718 Reviewed-by: Reviewed-by: hjk --- share/qtcreator/debugger/libcpp_stdtypes.py | 37 +++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/share/qtcreator/debugger/libcpp_stdtypes.py b/share/qtcreator/debugger/libcpp_stdtypes.py index 3f6fcbdb93c..8b2dbda6754 100644 --- a/share/qtcreator/debugger/libcpp_stdtypes.py +++ b/share/qtcreator/debugger/libcpp_stdtypes.py @@ -340,3 +340,40 @@ def qdump__std____1__vector(d, value): def qdump__std____1__once_flag(d, value): qdump__std__once_flag(d, value) + + +def qdump__std____1__variant(d, value): + index = value['__impl']['__index'] + index_num = int(index) + value_type = d.templateArgument(value.type, index_num) + d.putValue("<%s:%s>" % (index_num, value_type.name)) + + d.putNumChild(2) + if d.isExpanded(): + with Children(d): + d.putSubItem("index", index) + d.putSubItem("value", value.cast(value_type)) + + +def qdump__std____1__optional(d, value): + if value['__engaged_'].integer() == 0: + d.putSpecialValue("uninitialized") + d.putNumChild(2) + if d.isExpanded(): + with Children(d): + d.putSubItem("engaged", value['__engaged_']) + d.putSubItem("value", value['#1']['__val_']) + + +def qdump__std____1__tuple(d, value): + values = [] + for member in value['__base_'].members(False): + values.append(member['__value_']) + d.putItemCount(len(values)) + d.putNumChild(len(values)) + if d.isExpanded(): + with Children(d): + count = 0 + for internal_value in values: + d.putSubItem("[%i]" % count, internal_value) + count += 1