From 0068b9ee08a5444da843c5c2c2cef1955c51605a Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 2 Dec 2013 13:20:08 +0100 Subject: [PATCH] Cdbext: Add simple dumper for QTextCursor. Change-Id: I092ab69445028c8b359ae0edca764f17b4a6d6cd Reviewed-by: Friedemann Kleint --- src/libs/qtcreatorcdbext/knowntype.h | 1 + src/libs/qtcreatorcdbext/symbolgroupvalue.cpp | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/libs/qtcreatorcdbext/knowntype.h b/src/libs/qtcreatorcdbext/knowntype.h index ee609567bcc..7604d25efea 100644 --- a/src/libs/qtcreatorcdbext/knowntype.h +++ b/src/libs/qtcreatorcdbext/knowntype.h @@ -72,6 +72,7 @@ enum KnownType KT_QBasicAtomicInt = KT_Qt_Type + KT_HasSimpleDumper + 18, KT_QAtomicInt = KT_Qt_Type + KT_HasSimpleDumper + 19, KT_QStringRef = KT_Qt_Type + KT_HasSimpleDumper + 20, + KT_QTextCursor = KT_Qt_Type + KT_HasSimpleDumper + 21, KT_QObject = KT_Qt_Type + KT_HasSimpleDumper + KT_HasComplexDumper + 20, KT_QWindow = KT_Qt_Type + KT_HasSimpleDumper + KT_HasComplexDumper + 21, KT_QWidget = KT_Qt_Type + KT_HasSimpleDumper + KT_HasComplexDumper + 22, diff --git a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp index 19635c42121..7cc61ed36bc 100644 --- a/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp +++ b/src/libs/qtcreatorcdbext/symbolgroupvalue.cpp @@ -1281,6 +1281,8 @@ static KnownType knownClassTypeHelper(const std::string &type, return KT_QFixedPoint; if (!type.compare(qPos, 11, "QScriptLine")) return KT_QScriptLine; + if (!type.compare(qPos, 11, "QTextCursor")) + return KT_QTextCursor; break; case 12: if (!type.compare(qPos, 12, "QKeySequence")) @@ -2383,6 +2385,18 @@ static inline bool dumpQWindow(const SymbolGroupValue &v, std::wostream &str, vo return true; } +//Dump a QTextCursor +static inline bool dumpQTextCursor(const SymbolGroupValue &v, std::wostream &str) +{ + const unsigned offset = SymbolGroupValue::pointerSize() + SymbolGroupValue::sizeOf("double"); + const ULONG64 posAddr = addressOfQPrivateMember(v, QPDM_qSharedDataPadded, offset); + if (!posAddr) + return false; + const int position = SymbolGroupValue::readIntValue(v.context().dataspaces, posAddr); + str << position; + return true; +} + // Dump a std::string. static bool dumpStd_W_String(const SymbolGroupValue &v, int type, std::wostream &str, MemoryHandle **memoryHandle = 0) @@ -2796,6 +2810,10 @@ 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_QTextCursor: + rc = dumpQTextCursor(v, str) ? SymbolGroupNode::SimpleDumperOk + : SymbolGroupNode::SimpleDumperFailed; + break; default: break; }