Dumper: Add a dumper for CPlusPlus::PointerType

Change-Id: Ibc868a54326647184a30a796a487e218db7e968f
Reviewed-by: hjk <hjk@theqtcompany.com>
This commit is contained in:
Orgad Shaneh
2015-03-31 00:06:09 +03:00
committed by hjk
parent 9b5022762f
commit e22d0e82df

View File

@@ -30,6 +30,21 @@
from dumper import *
def stripTypeName(value):
type = value.type
try:
type = type.target()
except:
pass
return str(type.unqualified())
def extractPointerType(d, value):
postfix = ""
while stripTypeName(value) == "CPlusPlus::PointerType":
postfix += "*"
value = d.downcast(value["_elementType"]["_type"])
return readLiteral(d, value["_name"]) + postfix
def readTemplateName(d, value):
name = readLiteral(d, value["_identifier"]) + "<"
args = value["_templateArguments"]
@@ -39,12 +54,7 @@ def readTemplateName(d, value):
for i in range(size):
if i > 0:
name += ", "
typeVal = d.downcast(start[i]["_type"])
postfix = ""
while str(typeVal.type.target().unqualified()) == "CPlusPlus::PointerType":
postfix += "*"
typeVal = d.downcast(typeVal["_elementType"]["_type"])
name += readLiteral(d, typeVal["_name"]) + postfix
name += extractPointerType(d, d.downcast(start[i]["_type"]))
name += ">"
return name
@@ -126,6 +136,10 @@ def qdump__CPlusPlus__NamedType(d, value):
d.putBetterType(value.type)
d.putPlainChildren(value)
def qdump__CPlusPlus__PointerType(d, value):
d.putValue(d.hexencode(extractPointerType(d, value)), Hex2EncodedLatin1)
d.putPlainChildren(value)
def qdump__CPlusPlus__TemplateNameId(d, value):
dumpLiteral(d, value)
d.putBetterType(value.type)