Author: mps
Date: Mon Jun  6 12:08:32 2016
New Revision: 271910

URL: http://llvm.org/viewvc/llvm-project?rev=271910&view=rev
Log:
Better Visual Studio visualization of TemplateArgument and TemplateArgumentList

For pack TemplateArguments, visualize all of the items in the pack
Visualize a TemplateArgumentList as a template argument list. E.g., <int, 
double>

Modified:
    cfe/trunk/utils/ClangVisualizers/clang.natvis

Modified: cfe/trunk/utils/ClangVisualizers/clang.natvis
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/utils/ClangVisualizers/clang.natvis?rev=271910&r1=271909&r2=271910&view=diff
==============================================================================
--- cfe/trunk/utils/ClangVisualizers/clang.natvis (original)
+++ cfe/trunk/utils/ClangVisualizers/clang.natvis Mon Jun  6 12:08:32 2016
@@ -233,8 +233,22 @@ For later versions of Visual Studio, no
     </Expand>
   </Type>
   <Type Name="clang::TemplateArgument">
-    <DisplayString IncludeView="cpp">{*(clang::QualType 
*)&amp;TypeOrValue.V,view(cpp)}</DisplayString>
-    <DisplayString Condition="Integer.Kind == 
clang::TemplateArgument::ArgKind::Type">{(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en}
 template parameter: {*(clang::QualType *)&amp;TypeOrValue.V}</DisplayString>
+    <DisplayString IncludeView="cpp" Condition="Integer.Kind == 
clang::TemplateArgument::ArgKind::Type">{*(clang::QualType 
*)&amp;TypeOrValue.V,view(cpp)}</DisplayString>
+    <DisplayString Condition="Integer.Kind == 
clang::TemplateArgument::ArgKind::Type">{(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en}
 template argument: {*(clang::QualType *)&amp;TypeOrValue.V}</DisplayString>
+    <DisplayString IncludeView="arg0" 
Condition="Args.NumArgs==0"></DisplayString>
+    <DisplayString 
IncludeView="arg0">{Args.Args[0]}{*this,view(arg1)}</DisplayString>
+    <DisplayString IncludeView="arg1" 
Condition="Args.NumArgs==1"></DisplayString>
+    <DisplayString IncludeView="arg1">, 
{Args.Args[1]}{*this,view(arg2)}</DisplayString>
+    <DisplayString IncludeView="arg2" 
Condition="Args.NumArgs==2"></DisplayString>
+    <DisplayString IncludeView="arg2">, {Args.Args[2]}, ...</DisplayString>
+    <DisplayString IncludeView="arg0cpp" 
Condition="Args.NumArgs==0"></DisplayString>
+    <DisplayString 
IncludeView="arg0cpp">{Args.Args[0],view(cpp)}{*this,view(arg1cpp)}</DisplayString>
+    <DisplayString IncludeView="arg1cpp" 
Condition="Args.NumArgs==1"></DisplayString>
+    <DisplayString IncludeView="arg1cpp">, 
{Args.Args[1],view(cpp)}{*this,view(arg2cpp)}</DisplayString>
+    <DisplayString IncludeView="arg2cpp" 
Condition="Args.NumArgs==2"></DisplayString>
+    <DisplayString IncludeView="arg2cpp">, {Args.Args[2],view(cpp)}, 
...</DisplayString>
+    <DisplayString IncludeView="cpp" Condition="Integer.Kind == 
clang::TemplateArgument::ArgKind::Pack">{*this,view(arg0cpp)}</DisplayString>
+    <DisplayString Condition="Integer.Kind == 
clang::TemplateArgument::ArgKind::Pack">{*this,view(arg0)}</DisplayString>
     
<DisplayString>{(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en}</DisplayString>
     <Expand>
       <Item Name="QualType" Condition="Integer.Kind == 
clang::TemplateArgument::ArgKind::Type">*(clang::QualType 
*)&amp;TypeOrValue.V</Item>
@@ -245,6 +259,22 @@ For later versions of Visual Studio, no
       <!-- TODO: Other kinds-->
     </Expand>
   </Type>
+  <Type Name="clang::TemplateArgumentList">
+    <DisplayString IncludeView="arg0" 
Condition="NumArguments==0"></DisplayString>
+    <DisplayString 
IncludeView="arg0">{Arguments[0],view(cpp)}{*this,view(arg1)}</DisplayString>
+    <DisplayString IncludeView="arg1" 
Condition="NumArguments==1"></DisplayString>
+    <DisplayString IncludeView="arg1">, 
{Arguments[1],view(cpp)}{*this,view(arg2)}</DisplayString>
+    <DisplayString IncludeView="arg2" 
Condition="NumArguments==2"></DisplayString>
+    <DisplayString IncludeView="arg2">, {Arguments[1],view(cpp)}, 
...</DisplayString>
+    <DisplayString>&lt;{*this,view(arg0)}&gt;</DisplayString>
+    <Expand>
+      <Item Name="NumArguments">NumArguments</Item>
+      <ArrayItems>
+        <Size>NumArguments</Size>
+        <ValuePointer>Arguments</ValuePointer>
+      </ArrayItems>
+    </Expand>
+  </Type>
   <!-- Builtin types that have C++ keywords are manually displayed as that 
keyword. Otherwise, just use the enum name -->
   <Type Name="clang::BuiltinType">
     <DisplayString 
Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Void">void</DisplayString>


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to