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 & PtrMask) ==
StoredIdentifier">{{Identifier ({(clang::IdentifierInfo *)(Ptr &
~PtrMask)})}}</DisplayString>
- <DisplayString Condition="(Ptr & PtrMask) ==
StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector ({(clang::IdentifierInfo
*)(Ptr & ~PtrMask)})}}</DisplayString>
- <DisplayString Condition="(Ptr & PtrMask) ==
StoredObjCOneArgSelector">{{ObjC One Arg Selector ({(clang::IdentifierInfo
*)(Ptr & ~PtrMask)})}}</DisplayString>
+ <DisplayString Condition="(Ptr & PtrMask) ==
StoredIdentifier">{{Identifier ({*(clang::IdentifierInfo *)(Ptr &
~PtrMask)})}}</DisplayString>
+ <DisplayString Condition="(Ptr & PtrMask) ==
StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector (*{(clang::IdentifierInfo
*)(Ptr & ~PtrMask)})}}</DisplayString>
+ <DisplayString Condition="(Ptr & PtrMask) ==
StoredObjCOneArgSelector">{{ObjC One Arg Selector (*{(clang::IdentifierInfo
*)(Ptr & ~PtrMask)})}}</DisplayString>
<DisplayString Condition="(Ptr & PtrMask) ==
StoredDeclarationNameExtra">{{Extra
({(clang::DeclarationNameExtra::ExtraKind)((clang::DeclarationNameExtra *)(Ptr
& ~PtrMask))->ExtraKindOrNumArgs})}}</DisplayString>
<Expand>
- <Item Condition="(Ptr & PtrMask) == StoredIdentifier"
Name="[Identifier]">(clang::IdentifierInfo *)(Ptr & ~PtrMask)</Item>
- <Item Condition="(Ptr & PtrMask) == StoredObjCZeroArgSelector"
Name="[ObjC Zero Arg Selector]">(clang::IdentifierInfo *)(Ptr &
~PtrMask)</Item>
- <Item Condition="(Ptr & PtrMask) == StoredObjCOneArgSelector"
Name="[ObjC One Arg Selector]">(clang::IdentifierInfo *)(Ptr &
~PtrMask)</Item>
+ <Item Condition="(Ptr & PtrMask) == StoredIdentifier"
Name="[Identifier]">*(clang::IdentifierInfo *)(Ptr & ~PtrMask)</Item>
+ <Item Condition="(Ptr & PtrMask) == StoredObjCZeroArgSelector"
Name="[ObjC Zero Arg Selector]">*(clang::IdentifierInfo *)(Ptr &
~PtrMask)</Item>
+ <Item Condition="(Ptr & PtrMask) == StoredObjCOneArgSelector"
Name="[ObjC One Arg Selector]">*(clang::IdentifierInfo *)(Ptr &
~PtrMask)</Item>
<Item Condition="(Ptr & PtrMask) == StoredDeclarationNameExtra"
Name="[Extra]">(clang::DeclarationNameExtra::ExtraKind)((clang::DeclarationNameExtra
*)(Ptr & ~PtrMask))->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 & PtrMask) == StoredIdentifier">{{Identifier ({(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString>
- <DisplayString Condition="(Ptr & PtrMask) == StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector ({(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString>
- <DisplayString Condition="(Ptr & PtrMask) == StoredObjCOneArgSelector">{{ObjC One Arg Selector ({(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString>
+ <DisplayString Condition="(Ptr & PtrMask) == StoredIdentifier">{{Identifier ({*(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString>
+ <DisplayString Condition="(Ptr & PtrMask) == StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString>
+ <DisplayString Condition="(Ptr & PtrMask) == StoredObjCOneArgSelector">{{ObjC One Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString>
<DisplayString Condition="(Ptr & PtrMask) == StoredDeclarationNameExtra">{{Extra ({(clang::DeclarationNameExtra::ExtraKind)((clang::DeclarationNameExtra *)(Ptr & ~PtrMask))->ExtraKindOrNumArgs})}}</DisplayString>
<Expand>
- <Item Condition="(Ptr & PtrMask) == StoredIdentifier" Name="[Identifier]">(clang::IdentifierInfo *)(Ptr & ~PtrMask)</Item>
- <Item Condition="(Ptr & PtrMask) == StoredObjCZeroArgSelector" Name="[ObjC Zero Arg Selector]">(clang::IdentifierInfo *)(Ptr & ~PtrMask)</Item>
- <Item Condition="(Ptr & PtrMask) == StoredObjCOneArgSelector" Name="[ObjC One Arg Selector]">(clang::IdentifierInfo *)(Ptr & ~PtrMask)</Item>
+ <Item Condition="(Ptr & PtrMask) == StoredIdentifier" Name="[Identifier]">*(clang::IdentifierInfo *)(Ptr & ~PtrMask)</Item>
+ <Item Condition="(Ptr & PtrMask) == StoredObjCZeroArgSelector" Name="[ObjC Zero Arg Selector]">*(clang::IdentifierInfo *)(Ptr & ~PtrMask)</Item>
+ <Item Condition="(Ptr & PtrMask) == StoredObjCOneArgSelector" Name="[ObjC One Arg Selector]">*(clang::IdentifierInfo *)(Ptr & ~PtrMask)</Item>
<Item Condition="(Ptr & PtrMask) == StoredDeclarationNameExtra" Name="[Extra]">(clang::DeclarationNameExtra::ExtraKind)((clang::DeclarationNameExtra *)(Ptr & ~PtrMask))->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