[ClangDataFormat.py] Add summary for QualType.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 16 Nov 2012 00:25:26 +0000 (00:25 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Fri, 16 Nov 2012 00:25:26 +0000 (00:25 +0000)
llvm-svn: 168117

clang/utils/ClangDataFormat.py

index 23aaba2..a80f0b5 100644 (file)
@@ -23,11 +23,15 @@ import lldb
 
 def __lldb_init_module(debugger, internal_dict):
        debugger.HandleCommand("type summary add -F ClangDataFormat.SourceLocation_summary clang::SourceLocation")
+       debugger.HandleCommand("type summary add -F ClangDataFormat.QualType_summary clang::QualType")
        debugger.HandleCommand("type summary add -F ClangDataFormat.StringRef_summary llvm::StringRef")
 
 def SourceLocation_summary(srcloc, internal_dict):
        return SourceLocation(srcloc).summary()
 
+def QualType_summary(qualty, internal_dict):
+       return QualType(qualty).summary()
+
 def StringRef_summary(strref, internal_dict):
        return StringRef(strref).summary()
 
@@ -55,10 +59,23 @@ class SourceLocation(object):
        def summary(self):
                if self.isInvalid():
                        return "<invalid loc>"
-               desc = "(offset: %d, %s)" % (self.offset(), "macro" if self.isMacro() else "file")
                srcmgr_path = findObjectExpressionPath("clang::SourceManager", lldb.frame)
                if srcmgr_path:
-                       desc = "%s (offset: %d, %s, %s)" % (self.getPrint(srcmgr_path), self.offset(), "macro" if self.isMacro() else "file", "local" if self.isLocal(srcmgr_path) else "loaded")
+                       return "%s (offset: %d, %s, %s)" % (self.getPrint(srcmgr_path), self.offset(), "macro" if self.isMacro() else "file", "local" if self.isLocal(srcmgr_path) else "loaded")
+               return "(offset: %d, %s)" % (self.offset(), "macro" if self.isMacro() else "file")
+
+class QualType(object):
+       def __init__(self, qualty):
+               self.qualty = qualty
+
+       def getAsString(self):
+               std_str = getValueFromExpression(self.qualty, ".getAsString()")
+               return std_str.GetSummary()
+
+       def summary(self):
+               desc = self.getAsString()
+               if desc == '"NULL TYPE"':
+                       return "<NULL TYPE>"
                return desc
 
 class StringRef(object):