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 *)&TypeOrValue.V,view(cpp)}</DisplayString> - <DisplayString Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Type">{(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en} template parameter: {*(clang::QualType *)&TypeOrValue.V}</DisplayString> + <DisplayString IncludeView="cpp" Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Type">{*(clang::QualType *)&TypeOrValue.V,view(cpp)}</DisplayString> + <DisplayString Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Type">{(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en} template argument: {*(clang::QualType *)&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 *)&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><{*this,view(arg0)}></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