summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@digia.com>2013-12-11 13:29:34 +0100
committerDavid Schulz <david.schulz@digia.com>2013-12-11 15:22:13 +0100
commit05a26599aeee3fe17c2298bfc672d68108594418 (patch)
treeef3b02ec6d7d0356c795eca51bf1398638ea0ff3 /src
parentc4a0f90edda1fab0238101dc30ef4148f621e940 (diff)
downloadqt-creator-05a26599aeee3fe17c2298bfc672d68108594418.tar.gz
CdbExt: Add dumper for std::complex.
Change-Id: Idc97782b4ad9bd9a117eec2cc1b7f92bf6b8ab0a Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/libs/qtcreatorcdbext/knowntype.h1
-rw-r--r--src/libs/qtcreatorcdbext/symbolgroupvalue.cpp22
2 files changed, 23 insertions, 0 deletions
diff --git a/src/libs/qtcreatorcdbext/knowntype.h b/src/libs/qtcreatorcdbext/knowntype.h
index 206f971ebf..4a99284f28 100644
--- a/src/libs/qtcreatorcdbext/knowntype.h
+++ b/src/libs/qtcreatorcdbext/knowntype.h
@@ -167,6 +167,7 @@ enum KnownType
// Types: STL
KT_StdString = KT_STL_Type + KT_Editable + KT_HasSimpleDumper + 1,
KT_StdWString = KT_STL_Type + KT_Editable + KT_HasSimpleDumper + 2,
+ KT_StdComplex = KT_STL_Type + KT_HasSimpleDumper + 3,
// Types: STL containers
KT_StdVector = KT_STL_Type + KT_ContainerType + KT_HasSimpleDumper + 1,
KT_StdList = KT_STL_Type + KT_ContainerType + KT_HasSimpleDumper + 2,
diff --git a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
index f7d13fa08c..a89a99503f 100644
--- a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
+++ b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp
@@ -1085,6 +1085,10 @@ static KnownType knownClassTypeHelper(const std::string &type,
if (!type.compare(hPos, 6, "vector"))
return KT_StdVector;
break;
+ case 7:
+ if (!type.compare(hPos, 7, "complex"))
+ return KT_StdComplex;
+ break;
case 8:
if (!type.compare(hPos, 8, "multimap"))
return KT_StdMultiMap;
@@ -2432,6 +2436,21 @@ static bool dumpStd_W_String(const SymbolGroupValue &v, int type, std::wostream
return true;
}
+// Dump a std::complex.
+static bool dumpStd_Complex(const SymbolGroupValue &v, std::wostream &str)
+{
+ if (const SymbolGroupValue &valArray = v[0u][0u]["_Val"]) {
+ if (const SymbolGroupValue &val0 = valArray["0"]) {
+ str << L'(' << val0.value();
+ if (const SymbolGroupValue &val1 = valArray["1"]) {
+ str << L", " << val1.value() << L')';
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
// QVariant employs a template for storage where anything bigger than the data union
// is pointed to by data.shared.ptr, else it is put into the data struct (pointer size)
// itself (notably Qt types consisting of a d-ptr only).
@@ -2812,6 +2831,9 @@ unsigned dumpSimpleType(SymbolGroupNode *n, const SymbolGroupValueContext &ctx,
case KT_StdWString:
rc = dumpStd_W_String(v, kt, str, memoryHandleIn) ? SymbolGroupNode::SimpleDumperOk : SymbolGroupNode::SimpleDumperFailed;
break;
+ case KT_StdComplex:
+ rc = dumpStd_Complex(v, str) ? SymbolGroupNode::SimpleDumperOk : SymbolGroupNode::SimpleDumperFailed;
+ break;
case KT_QTextCursor:
rc = dumpQTextCursor(v, str) ? SymbolGroupNode::SimpleDumperOk
: SymbolGroupNode::SimpleDumperFailed;