Visual Studio native visualization for TemplateParameterList and TemplateTypeParmDecl
authorMike Spertus <mike@spertus.com>
Tue, 29 Mar 2016 10:57:24 +0000 (10:57 +0000)
committerMike Spertus <mike@spertus.com>
Tue, 29 Mar 2016 10:57:24 +0000 (10:57 +0000)
With this change, a TemplateParameterList will suggestively display in the locals window something like:
  <typename T, int i>

llvm-svn: 264714

clang/utils/ClangVisualizers/clang.natvis

index ab99328..411d7a2 100644 (file)
@@ -112,6 +112,10 @@ For later versions of Visual Studio, no setup is required-->
   <Type Name="clang::CXXDestructorDecl">\r
     <DisplayString>Destructor {{~{Name,view(cpp)}()}}</DisplayString>\r
   </Type>\r
+  <Type Name="clang::TemplateTypeParmDecl">\r
+    <DisplayString Condition="!Typename">class {Name,view(cpp)}</DisplayString>\r
+    <DisplayString>typename {Name,view(cpp)}</DisplayString>\r
+  </Type>\r
   <Type Name="clang::NamedDecl" >\r
     <DisplayString IncludeView="cpp">{Name,view(cpp)}</DisplayString>\r
     <DisplayString>{Name}</DisplayString>\r
@@ -371,4 +375,25 @@ For later versions of Visual Studio, no setup is required-->
       <ExpandedItem>($T1 *)Ptr</ExpandedItem>\r
     </Expand>\r
   </Type>\r
+  <Type Name="clang::TemplateParameterList">\r
+    <DisplayString IncludeView="parm0" Condition="NumParams==0"></DisplayString>\r
+    <DisplayString IncludeView="parm0">{*((NamedDecl **)(this+1))[0],view(cpp)}{*this,view(parm1)}</DisplayString>\r
+    <DisplayString IncludeView="parm1" Condition="NumParams==1"></DisplayString>\r
+    <DisplayString IncludeView="parm1">, {*((NamedDecl **)(this+1))[1],view(cpp)}{*this,view(parm2)}</DisplayString>\r
+    <DisplayString IncludeView="parm2" Condition="NumParams==2"></DisplayString>\r
+    <DisplayString IncludeView="parm2">, {*((NamedDecl **)(this+1))[2],view(cpp)}{*this,view(parm3)}</DisplayString>\r
+    <DisplayString IncludeView="parm3" Condition="NumParams==3"></DisplayString>\r
+    <DisplayString IncludeView="parm3">, {*((NamedDecl **)(this+1))[3],view(cpp)}{*this,view(parm4)}</DisplayString>\r
+    <DisplayString IncludeView="parm4" Condition="NumParams==4"></DisplayString>\r
+    <DisplayString IncludeView="parm4">, {*((NamedDecl **)(this+1))[4],view(cpp)}{*this,view(parm5)}</DisplayString>\r
+    <DisplayString IncludeView="parm5" Condition="NumParams==5"></DisplayString>\r
+    <DisplayString IncludeView="parm5">, /* Expand for more params */</DisplayString>\r
+    <DisplayString>&lt;{*this,view(parm0)}&gt;</DisplayString>\r
+    <Expand>\r
+      <ArrayItems>\r
+        <Size>NumParams</Size>\r
+      <ValuePointer>(NamedDecl **)(this+1)</ValuePointer>\r
+      </ArrayItems>\r
+    </Expand>\r
+  </Type>\r
 </AutoVisualizer>\r