Hi aaron.ballman,

Adds a natvis Visualizer for VarDecl.  Specifically, this visualizer behaves as 
follows:

1) Displays the name of the declaration as the DisplayString
2) Translates some of the bitfields into their corresponding enumeration values
3) Converts some of the existing visualizers to deref their pointers, so their 
DisplayStrings don't show the pointer address (increases verbosity for little 
gain)

http://reviews.llvm.org/D4303

Files:
  utils/clang.natvis

Index: utils/clang.natvis
===================================================================
--- utils/clang.natvis
+++ utils/clang.natvis
@@ -15,14 +15,14 @@
   </Type>
   <Type Name="clang::DeclarationName">
     <DisplayString Condition="Ptr == 0">Empty</DisplayString>
-    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredIdentifier">{{Identifier ({(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)})}}</DisplayString>
-    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector ({(clang::IdentifierInfo 
*)(Ptr &amp; ~PtrMask)})}}</DisplayString>
-    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredObjCOneArgSelector">{{ObjC One Arg Selector ({(clang::IdentifierInfo 
*)(Ptr &amp; ~PtrMask)})}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredIdentifier">{{Identifier ({*(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)})}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector (*{(clang::IdentifierInfo 
*)(Ptr &amp; ~PtrMask)})}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredObjCOneArgSelector">{{ObjC One Arg Selector (*{(clang::IdentifierInfo 
*)(Ptr &amp; ~PtrMask)})}}</DisplayString>
     <DisplayString Condition="(Ptr &amp; PtrMask) == 
StoredDeclarationNameExtra">{{Extra 
({(clang::DeclarationNameExtra::ExtraKind)((clang::DeclarationNameExtra *)(Ptr 
&amp; ~PtrMask))-&gt;ExtraKindOrNumArgs})}}</DisplayString>
     <Expand>
-      <Item Condition="(Ptr &amp; PtrMask) == StoredIdentifier" 
Name="[Identifier]">(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
-      <Item Condition="(Ptr &amp; PtrMask) == StoredObjCZeroArgSelector" 
Name="[ObjC Zero Arg Selector]">(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)</Item>
-      <Item Condition="(Ptr &amp; PtrMask) == StoredObjCOneArgSelector" 
Name="[ObjC One Arg Selector]">(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredIdentifier" 
Name="[Identifier]">*(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredObjCZeroArgSelector" 
Name="[ObjC Zero Arg Selector]">*(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredObjCOneArgSelector" 
Name="[ObjC One Arg Selector]">*(clang::IdentifierInfo *)(Ptr &amp; 
~PtrMask)</Item>
       <Item Condition="(Ptr &amp; PtrMask) == StoredDeclarationNameExtra" 
Name="[Extra]">(clang::DeclarationNameExtra::ExtraKind)((clang::DeclarationNameExtra
 *)(Ptr &amp; ~PtrMask))-&gt;ExtraKindOrNumArgs</Item>
     </Expand>
   </Type>
@@ -41,4 +41,19 @@
   <Type Name="clang::DirectoryEntry">
     <DisplayString>{Name,s}</DisplayString>
   </Type>
+  <Type Name="clang::VarDecl::VarDeclBitfields">
+    <Expand>
+      <Item Name="StorageClass">(clang::StorageClass)SClass</Item>
+      <Item 
Name="ThreadStorageClass">(clang::ThreadStorageClassSpecifier)TSCSpec</Item>
+      <Item 
Name="InitStyle">(clang::VarDecl::InitializationStyle)InitStyle</Item>
+    </Expand>
+  </Type>
+  <Type Name="clang::VarDecl">
+    <DisplayString>{Name}</DisplayString>
+    <Expand>
+      <ExpandedItem>*(DeclaratorDecl*)this,nd</ExpandedItem>
+      <Item Name="VarDeclBits">VarDeclBits</Item>
+      <Item Name="ParmVarDeclBits">ParmVarDeclBits</Item>
+    </Expand>
+  </Type>
 </AutoVisualizer>
Index: utils/clang.natvis
===================================================================
--- utils/clang.natvis
+++ utils/clang.natvis
@@ -15,14 +15,14 @@
   </Type>
   <Type Name="clang::DeclarationName">
     <DisplayString Condition="Ptr == 0">Empty</DisplayString>
-    <DisplayString Condition="(Ptr &amp; PtrMask) == StoredIdentifier">{{Identifier ({(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)})}}</DisplayString>
-    <DisplayString Condition="(Ptr &amp; PtrMask) == StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector ({(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)})}}</DisplayString>
-    <DisplayString Condition="(Ptr &amp; PtrMask) == StoredObjCOneArgSelector">{{ObjC One Arg Selector ({(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)})}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == StoredIdentifier">{{Identifier ({*(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)})}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector (*{(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)})}}</DisplayString>
+    <DisplayString Condition="(Ptr &amp; PtrMask) == StoredObjCOneArgSelector">{{ObjC One Arg Selector (*{(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)})}}</DisplayString>
     <DisplayString Condition="(Ptr &amp; PtrMask) == StoredDeclarationNameExtra">{{Extra ({(clang::DeclarationNameExtra::ExtraKind)((clang::DeclarationNameExtra *)(Ptr &amp; ~PtrMask))-&gt;ExtraKindOrNumArgs})}}</DisplayString>
     <Expand>
-      <Item Condition="(Ptr &amp; PtrMask) == StoredIdentifier" Name="[Identifier]">(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
-      <Item Condition="(Ptr &amp; PtrMask) == StoredObjCZeroArgSelector" Name="[ObjC Zero Arg Selector]">(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
-      <Item Condition="(Ptr &amp; PtrMask) == StoredObjCOneArgSelector" Name="[ObjC One Arg Selector]">(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredIdentifier" Name="[Identifier]">*(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredObjCZeroArgSelector" Name="[ObjC Zero Arg Selector]">*(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
+      <Item Condition="(Ptr &amp; PtrMask) == StoredObjCOneArgSelector" Name="[ObjC One Arg Selector]">*(clang::IdentifierInfo *)(Ptr &amp; ~PtrMask)</Item>
       <Item Condition="(Ptr &amp; PtrMask) == StoredDeclarationNameExtra" Name="[Extra]">(clang::DeclarationNameExtra::ExtraKind)((clang::DeclarationNameExtra *)(Ptr &amp; ~PtrMask))-&gt;ExtraKindOrNumArgs</Item>
     </Expand>
   </Type>
@@ -41,4 +41,19 @@
   <Type Name="clang::DirectoryEntry">
     <DisplayString>{Name,s}</DisplayString>
   </Type>
+  <Type Name="clang::VarDecl::VarDeclBitfields">
+    <Expand>
+      <Item Name="StorageClass">(clang::StorageClass)SClass</Item>
+      <Item Name="ThreadStorageClass">(clang::ThreadStorageClassSpecifier)TSCSpec</Item>
+      <Item Name="InitStyle">(clang::VarDecl::InitializationStyle)InitStyle</Item>
+    </Expand>
+  </Type>
+  <Type Name="clang::VarDecl">
+    <DisplayString>{Name}</DisplayString>
+    <Expand>
+      <ExpandedItem>*(DeclaratorDecl*)this,nd</ExpandedItem>
+      <Item Name="VarDeclBits">VarDeclBits</Item>
+      <Item Name="ParmVarDeclBits">ParmVarDeclBits</Item>
+    </Expand>
+  </Type>
 </AutoVisualizer>
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to