diff options
author | David Schulz <david.schulz@digia.com> | 2013-12-11 13:29:34 +0100 |
---|---|---|
committer | David Schulz <david.schulz@digia.com> | 2013-12-11 15:22:13 +0100 |
commit | 05a26599aeee3fe17c2298bfc672d68108594418 (patch) | |
tree | ef3b02ec6d7d0356c795eca51bf1398638ea0ff3 /src | |
parent | c4a0f90edda1fab0238101dc30ef4148f621e940 (diff) | |
download | qt-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.h | 1 | ||||
-rw-r--r-- | src/libs/qtcreatorcdbext/symbolgroupvalue.cpp | 22 |
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; |