summaryrefslogtreecommitdiff
path: root/share
diff options
context:
space:
mode:
authorhjk <hjk121@nokiamail.com>2013-07-04 12:42:24 +0200
committerhjk <hjk121@nokiamail.com>2013-07-04 13:24:32 +0200
commit0159774451913270feb9301d3d5f5cacee70743a (patch)
tree6b2854faf6abf398cb1d330108f3400a6f9e057e /share
parentea6a72143d3ecbc5fe0279c65216cc62fc07838c (diff)
downloadqt-creator-0159774451913270feb9301d3d5f5cacee70743a.tar.gz
Debugger: Improve QVariant dumper
Access to the is_shared flag seems somewhat indeterministic across platforms/compilers. Hard-code to non-shared for now. Change-Id: Iaac9dd8fcee28ffd1e599300a1c12f3215823573 Reviewed-by: hjk <hjk121@nokiamail.com>
Diffstat (limited to 'share')
-rw-r--r--share/qtcreator/dumper/qttypes.py32
1 files changed, 19 insertions, 13 deletions
diff --git a/share/qtcreator/dumper/qttypes.py b/share/qtcreator/dumper/qttypes.py
index 9f0d4f486e..636446482c 100644
--- a/share/qtcreator/dumper/qttypes.py
+++ b/share/qtcreator/dumper/qttypes.py
@@ -1855,27 +1855,27 @@ def qdumpHelper_QVariant_1(d, data):
def qdumpHelper_QVariant_2(d, data):
# QVariant::Int
d.putBetterType("%sQVariant (int)" % d.ns)
- d.putValue(data["i"])
+ d.putValue(int(data["i"]))
def qdumpHelper_QVariant_3(d, data):
# uint
d.putBetterType("%sQVariant (uint)" % d.ns)
- d.putValue(data["u"])
+ d.putValue(int(data["u"]))
def qdumpHelper_QVariant_4(d, data):
# qlonglong
d.putBetterType("%sQVariant (qlonglong)" % d.ns)
- d.putValue(data["ll"])
+ d.putValue(int(data["ll"]))
def qdumpHelper_QVariant_5(d, data):
# qulonglong
d.putBetterType("%sQVariant (qulonglong)" % d.ns)
- d.putValue(data["ull"])
+ d.putValue(int(data["ull"]))
def qdumpHelper_QVariant_6(d, data):
# QVariant::Double
d.putBetterType("%sQVariant (double)" % d.ns)
- d.putValue(data["d"])
+ d.putValue(float(data["d"]))
qdumpHelper_QVariants_A = [
qdumpHelper_QVariant_0,
@@ -1958,13 +1958,13 @@ def qdumpHelper__QVariant(d, value):
if not inner is None:
innert = inner
elif variantType == 8: # QVariant::VariantMap
- inner = d.ns + "QMap<" + d.ns + "QString, " + d.ns + "QVariant>"
+ inner = d.ns + "QMap<" + d.ns + "QString," + d.ns + "QVariant>"
innert = d.ns + "QVariantMap"
elif variantType == 9: # QVariant::VariantList
inner = d.ns + "QList<" + d.ns + "QVariant>"
innert = d.ns + "QVariantList"
elif variantType == 28: # QVariant::VariantHash
- inner = d.ns + "QHash<" + d.ns + "QString, " + d.ns + "QVariant>"
+ inner = d.ns + "QHash<" + d.ns + "QString," + d.ns + "QVariant>"
innert = d.ns + "QVariantHash"
elif variantType <= 86:
@@ -1973,9 +1973,9 @@ def qdumpHelper__QVariant(d, value):
if len(inner):
innerType = d.lookupType(inner)
- sizePD = d.lookupType(d.ns + 'QVariant::Private::Data').sizeof
+ sizePD = 8 # sizeof(QVariant::Private::Data)
if innerType.sizeof > sizePD:
- sizePS = d.lookupType(d.ns + 'QVariant::PrivateShared').sizeof
+ sizePS = 2 * d.ptrSize() # sizeof(QVariant::PrivateShared)
val = (data.cast(d.charPtrType()) + sizePS) \
.cast(innerType.pointer()).dereference()
else:
@@ -1995,9 +1995,14 @@ def qdump__QVariant(d, value):
if len(inner):
innerType = d.lookupType(inner)
- # FIXME: Why "shared"?
if innerType.sizeof > d_data.type.sizeof:
- v = d_data["shared"]["ptr"].cast(innerType.pointer()).dereference()
+ # FIXME:
+ #if int(d_ptr["is_shared"]):
+ # v = d_data["ptr"].cast(innerType.pointer().pointer().pointer()) \
+ # .dereference().dereference().dereference()
+ #else:
+ v = d_data["ptr"].cast(innerType.pointer().pointer()) \
+ .dereference().dereference()
else:
v = d_data.cast(innerType)
d.putEmptyValue(-99)
@@ -2006,12 +2011,13 @@ def qdump__QVariant(d, value):
return innert
# User types.
+ typeCode = int(d_ptr["type"])
if gdbLoaded:
type = str(call(value, "typeToName",
- "('%sQVariant::Type')%d" % (d.ns, d_ptr["type"])))
+ "('%sQVariant::Type')%d" % (d.ns, typeCode)))
if lldbLoaded:
type = str(call(value, "typeToName",
- "(%sQVariant::Type)%d" % (d.ns, d_ptr["type"])))
+ "(%sQVariant::Type)%d" % (d.ns, typeCode)))
type = type[type.find('"') + 1 : type.rfind('"')]
type = type.replace("Q", d.ns + "Q") # HACK!
type = type.replace("uint", "unsigned int") # HACK!