Skip to content
Snippets Groups Projects
Commit a4c20f85 authored by Mike Spertus's avatar Mike Spertus
Browse files

Show members of DeclContexts (i.e., class members) in Visual Studio native visualizers

This change shows members of DeclContext objects in the Visual Studio debugger. It will also cast a TagType like a class or a struct to a DeclContext, so its methods and fields are visualized. 



git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263794 91177308-0d34-0410-b5e6-96231b3b80d8
parent b21f5854
No related branches found
No related tags found
No related merge requests found
...@@ -73,6 +73,31 @@ or create a symbolic link so it updates automatically. ...@@ -73,6 +73,31 @@ or create a symbolic link so it updates automatically.
<Type Name="clang::AttributedType"> <Type Name="clang::AttributedType">
<DisplayString>{ModifiedType} Attribute={(clang::AttributedType::Kind)AttributedTypeBits.AttrKind}</DisplayString> <DisplayString>{ModifiedType} Attribute={(clang::AttributedType::Kind)AttributedTypeBits.AttrKind}</DisplayString>
</Type> </Type>
<!-- Unfortunately, Visual Studio has trouble seeing the PointerBitMask member PointerIntUnion, so I hardwire it to 2 bits-->
<Type Name="clang::DeclContext">
<DisplayString>{(clang::Decl::Kind)DeclKind,en}Decl</DisplayString>
<Expand>
<Item Name="DeclKind">(clang::Decl::Kind)DeclKind,en</Item>
<LinkedListItems>
<HeadPointer>FirstDecl</HeadPointer>
<NextPointer>(clang::Decl *)(NextInContextAndBits.Value &amp; ~3)</NextPointer>
<ValueNode>*this</ValueNode>
</LinkedListItems>
</Expand>
</Type>
<Type Name="clang::FieldDecl">
<DisplayString>Field {{{*(clang::NamedDecl *)this,view(cpp)nd}}}</DisplayString>
</Type>
<Type Name="clang::CXXMethodDecl">
<DisplayString>Method {{{*(clang::NamedDecl *)this,view(cpp)nd}}}</DisplayString>
</Type>
<Type Name="clang::CXXConstructorDecl">
<DisplayString>Constructor {{{*(clang::NamedDecl *)this,view(cpp)nd}}}</DisplayString>
</Type>
<Type Name="clang::CXXDestructorDecl">
<DisplayString>Destructor {{{*(clang::NamedDecl *)this,view(cpp)nd}}}</DisplayString>
</Type>
<Type Name="clang::NamedDecl" > <Type Name="clang::NamedDecl" >
<DisplayString IncludeView="cpp">{Name,view(cpp)}</DisplayString> <DisplayString IncludeView="cpp">{Name,view(cpp)}</DisplayString>
<DisplayString>{Name}</DisplayString> <DisplayString>{Name}</DisplayString>
...@@ -83,6 +108,9 @@ or create a symbolic link so it updates automatically. ...@@ -83,6 +108,9 @@ or create a symbolic link so it updates automatically.
<DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Union">union {Name,view(cpp)}</DisplayString> <DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Union">union {Name,view(cpp)}</DisplayString>
<DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Class">class {Name,view(cpp)}</DisplayString> <DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Class">class {Name,view(cpp)}</DisplayString>
<DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Enum">enum {Name,view(cpp)}</DisplayString> <DisplayString Condition="TagDeclKind==clang::TagTypeKind::TTK_Enum">enum {Name,view(cpp)}</DisplayString>
<Expand>
<ExpandedItem>(clang::DeclContext *)this</ExpandedItem>
</Expand>
</Type> </Type>
<Type Name="clang::TagType"> <Type Name="clang::TagType">
<DisplayString>{*decl}</DisplayString> <DisplayString>{*decl}</DisplayString>
...@@ -97,7 +125,6 @@ or create a symbolic link so it updates automatically. ...@@ -97,7 +125,6 @@ or create a symbolic link so it updates automatically.
<Item Name="TagType">*(clang::TagType *)this</Item> <Item Name="TagType">*(clang::TagType *)this</Item>
</Expand> </Expand>
</Type> </Type>
<Type Name="clang::SubstTemplateTypeParmType"> <Type Name="clang::SubstTemplateTypeParmType">
<DisplayString>{*Replaced,view(cpp)} &lt;= {CanonicalType,view(cpp)}</DisplayString> <DisplayString>{*Replaced,view(cpp)} &lt;= {CanonicalType,view(cpp)}</DisplayString>
<Expand> <Expand>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment