1e5dd7070Spatrick<?xml version="1.0" encoding="utf-8"?> 2e5dd7070Spatrick<!-- 3e5dd7070SpatrickVisual Studio Native Debugging Visualizers for LLVM 4e5dd7070Spatrick 5e5dd7070SpatrickFor Visual Studio 2013 only, put this file into 6e5dd7070Spatrick"%USERPROFILE%\Documents\Visual Studio 2013\Visualizers" or create a symbolic link so it updates automatically. 7e5dd7070Spatrick 8e5dd7070SpatrickFor later versions of Visual Studio, no setup is required--> 9e5dd7070Spatrick<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> 10e5dd7070Spatrick 11e5dd7070Spatrick <Type Name="clang::Type"> 12e5dd7070Spatrick <!-- To visualize clang::Types, we need to look at TypeBits.TC to determine the actual 13e5dd7070Spatrick type subclass and manually dispatch accordingly (Visual Studio can't identify the real type 14e5dd7070Spatrick because clang::Type has no virtual members hence no RTTI). 15e5dd7070Spatrick 16e5dd7070Spatrick Views: 17e5dd7070Spatrick "cmn": Visualization that is common to all clang::Type subclasses 18e5dd7070Spatrick "poly": Visualization that is specific to the actual clang::Type subclass. The subtype-specific 19e5dd7070Spatrick <DisplayString> is typically as C++-like as possible (like in dump()) with <Expand> 20e5dd7070Spatrick containing all the gory details. 21e5dd7070Spatrick "cpp": Only occasionally used when we need to distinguish between an ordinary view and a C++-like view. 22e5dd7070Spatrick --> 23e5dd7070Spatrick <DisplayString IncludeView="cmn" Condition="TypeBits.TC==clang::LocInfoType::LocInfo">LocInfoType</DisplayString> 24e5dd7070Spatrick <DisplayString IncludeView="cmn">{(clang::Type::TypeClass)TypeBits.TC, en}Type</DisplayString> 25e5dd7070Spatrick <!-- Dispatch to visualizers for the actual Type subclass --> 26e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Builtin" IncludeView="poly">{*(clang::BuiltinType *)this}</DisplayString> 27e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Pointer" IncludeView="poly">{*(clang::PointerType *)this}</DisplayString> 28e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::LValueReference" IncludeView="poly">{*(clang::LValueReferenceType *)this}</DisplayString> 29e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::RValueReference" IncludeView="poly">{*(clang::RValueReferenceType *)this}</DisplayString> 30e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::ConstantArray" IncludeView="poly">{(clang::ConstantArrayType *)this,na}</DisplayString> 31e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::ConstantArray" IncludeView="left">{(clang::ConstantArrayType *)this,view(left)na}</DisplayString> 32e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::ConstantArray" IncludeView="right">{(clang::ConstantArrayType *)this,view(right)na}</DisplayString> 33e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::IncompleteArray" IncludeView="poly">{(clang::IncompleteArrayType *)this,na}</DisplayString> 34e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::IncompleteArray" IncludeView="left">{(clang::IncompleteArrayType *)this,view(left)na}</DisplayString> 35e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::IncompleteArray" IncludeView="right">{(clang::IncompleteArrayType *)this,view(right)na}</DisplayString> 36e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Typedef" IncludeView="poly">{(clang::TypedefType *)this,na}</DisplayString> 37e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Typedef" IncludeView="cpp">{(clang::TypedefType *)this,view(cpp)na}</DisplayString> 38e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Attributed" IncludeView="poly">{*(clang::AttributedType *)this}</DisplayString> 39e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Decayed" IncludeView="poly">{(clang::DecayedType *)this,na}</DisplayString> 40e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Decayed" IncludeView="left">{(clang::DecayedType *)this,view(left)na}</DisplayString> 41e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Decayed" IncludeView="right">{(clang::DecayedType *)this,view(right)na}</DisplayString> 42e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::TemplateTypeParm" IncludeView="poly">{*(clang::TemplateTypeParmType *)this}</DisplayString> 43e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::TemplateTypeParm" IncludeView="cpp">{*(clang::TemplateTypeParmType *)this,view(cpp)}</DisplayString> 44e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::SubstTemplateTypeParm" IncludeView="poly">{*(clang::SubstTemplateTypeParmType *)this}</DisplayString> 45e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Record" IncludeView="poly">{*(clang::RecordType *)this}</DisplayString> 46e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::Record" IncludeView="cpp">{*(clang::RecordType *)this,view(cpp)}</DisplayString> 47e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::FunctionProto" IncludeView="poly">{(clang::FunctionProtoType *)this,na}</DisplayString> 48e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::FunctionProto" IncludeView="left">{(clang::FunctionProtoType *)this,view(left)na}</DisplayString> 49e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::FunctionProto" IncludeView="right">{(clang::FunctionProtoType *)this,view(right)na}</DisplayString> 50e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::TemplateSpecialization" IncludeView="poly">{*(clang::TemplateSpecializationType *)this}</DisplayString> 51e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::DeducedTemplateSpecialization" IncludeView="poly">{*(clang::DeducedTemplateSpecializationType *)this}</DisplayString> 52e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::DeducedTemplateSpecialization" IncludeView="cpp">{*(clang::DeducedTemplateSpecializationType *)this,view(cpp)}</DisplayString> 53e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::InjectedClassName" IncludeView="poly">{*(clang::InjectedClassNameType *)this}</DisplayString> 54e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::DependentName" IncludeView="poly">{*(clang::DependentNameType *)this}</DisplayString> 55e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::Type::TypeClass::PackExpansion" IncludeView="poly">{*(clang::PackExpansionType *)this}</DisplayString> 56e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::LocInfoType::LocInfo" IncludeView="poly">{(clang::LocInfoType *)this,na}</DisplayString> 57e5dd7070Spatrick <DisplayString Condition="TypeBits.TC==clang::LocInfoType::LocInfo" IncludeView="cpp">{(clang::LocInfoType *)this,view(cpp)na}</DisplayString> 58e5dd7070Spatrick <DisplayString IncludeView="cpp">{this,view(poly)na}</DisplayString> 59e5dd7070Spatrick <DisplayString IncludeView="left">{*this,view(cpp)}</DisplayString> 60e5dd7070Spatrick <DisplayString IncludeView="right"></DisplayString> 61e5dd7070Spatrick <DisplayString IncludeView="poly">No visualizer yet for {(clang::Type::TypeClass)TypeBits.TC,en}Type</DisplayString> <!-- Not yet implemented Type subclass --> 62e5dd7070Spatrick <DisplayString IncludeView="Dependent" Condition="TypeBits.Dependent">Dependent{" ",sb}</DisplayString> 63e5dd7070Spatrick <DisplayString IncludeView="Dependent"></DisplayString> 64e5dd7070Spatrick <DisplayString IncludeView="InstantiationDependent" Condition="TypeBits.InstantiationDependent">InstantiationDependent{" ",sb}</DisplayString> 65e5dd7070Spatrick <DisplayString IncludeView="InstantiationDependent"></DisplayString> 66e5dd7070Spatrick <DisplayString IncludeView="VariablyModified" Condition="TypeBits.VariablyModified">VariablyModified{" ",sb}</DisplayString> 67e5dd7070Spatrick <DisplayString IncludeView="VariablyModified"></DisplayString> 68e5dd7070Spatrick <DisplayString IncludeView="ContainsUnexpandedParameterPack" Condition="TypeBits.ContainsUnexpandedParameterPack">ContainsUnexpandedParameterPack{" ",sb}</DisplayString> 69e5dd7070Spatrick <DisplayString IncludeView="ContainsUnexpandedParameterPack"></DisplayString> 70e5dd7070Spatrick <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid && TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en} CachedLocalOrUnnamed</DisplayString> 71e5dd7070Spatrick <DisplayString IncludeView="Cache" Condition="TypeBits.CacheValid && !TypeBits.CachedLocalOrUnnamed">CachedLinkage: {(clang::Linkage)TypeBits.CachedLinkage,en}{" ",sb}</DisplayString> 72e5dd7070Spatrick <DisplayString IncludeView="Cache"></DisplayString> 73e5dd7070Spatrick <DisplayString IncludeView="FromAST" Condition="TypeBits.FromAST">FromAST</DisplayString> 74e5dd7070Spatrick <DisplayString IncludeView="FromAST"></DisplayString> 75e5dd7070Spatrick <DisplayString IncludeView="flags" Condition="!TypeBits.Dependent && !TypeBits.InstantiationDependent && !TypeBits.VariablyModified && !TypeBits.ContainsUnexpandedParameterPack && !TypeBits.CacheValid && !TypeBits.FromAST"> 76e5dd7070Spatrick No TypeBits set beyond TypeClass 77e5dd7070Spatrick </DisplayString> 78e5dd7070Spatrick <DisplayString IncludeView="flags"> 79e5dd7070Spatrick{*this, view(Dependent)}{*this, view(InstantiationDependent)}{*this, view(VariablyModified)} 80e5dd7070Spatrick{*this, view(ContainsUnexpandedParameterPack)}{*this, view(Cache)}{*this, view(FromAST)}</DisplayString> 81e5dd7070Spatrick <DisplayString>{*this,view(cmn)} {{{*this,view(poly)}}}</DisplayString> 82e5dd7070Spatrick <Expand> 83e5dd7070Spatrick <Item Name="TypeClass" IncludeView="cmn">(clang::Type::TypeClass)TypeBits.TC</Item> 84e5dd7070Spatrick <Item Name="Flags" IncludeView="cmn">this,view(flags)na</Item> 85e5dd7070Spatrick <Item Name="Canonical" IncludeView="cmn">CanonicalType</Item> 86e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Builtin">*(clang::BuiltinType *)this</ExpandedItem> 87e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Pointer">*(clang::PointerType *)this</ExpandedItem> 88e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::LValueReference">*(clang::LValueReferenceType *)this</ExpandedItem> 89e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::RValueReference">*(clang::RValueReferenceType *)this</ExpandedItem> 90e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::ConstantArray">(clang::ConstantArrayType *)this</ExpandedItem> 91e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::IncompleteArray">(clang::IncompleteArrayType *)this</ExpandedItem> 92e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Attributed">*(clang::AttributedType *)this</ExpandedItem> 93e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Decayed">(clang::DecayedType *)this</ExpandedItem> 94e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::TemplateTypeParm">(clang::TemplateTypeParmType *)this</ExpandedItem> 95e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::SubstTemplateTypeParm">(clang::SubstTemplateTypeParmType *)this</ExpandedItem> 96e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::Record">(clang::RecordType *)this</ExpandedItem> 97e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::FunctionProto">(clang::FunctionProtoType *)this</ExpandedItem> 98e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::TemplateSpecialization">(clang::TemplateSpecializationType *)this</ExpandedItem> 99e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::DeducedTemplateSpecialization">(clang::DeducedTemplateSpecializationType *)this</ExpandedItem> 100e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::InjectedClassName">(clang::InjectedClassNameType *)this</ExpandedItem> 101e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::DependentName">(clang::DependentNameType *)this</ExpandedItem> 102e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::Type::TypeClass::PackExpansion">(clang::PackExpansionType *)this</ExpandedItem> 103e5dd7070Spatrick <ExpandedItem ExcludeView="cmn" Condition="TypeBits.TC==clang::LocInfoType::LocInfo">(clang::LocInfoType *)this</ExpandedItem> 104e5dd7070Spatrick </Expand> 105e5dd7070Spatrick </Type> 106e5dd7070Spatrick <Type Name="clang::ArrayType"> 107e5dd7070Spatrick <Expand> 108e5dd7070Spatrick <Item Name="ElementType">ElementType</Item> 109e5dd7070Spatrick </Expand> 110e5dd7070Spatrick </Type> 111e5dd7070Spatrick <Type Name="clang::ConstantArrayType"> 112e5dd7070Spatrick <DisplayString IncludeView="left">{ElementType,view(cpp)}</DisplayString> 113e5dd7070Spatrick <DisplayString IncludeView="right">[{Size}]</DisplayString> 114e5dd7070Spatrick <DisplayString>{ElementType,view(cpp)}[{Size}]</DisplayString> 115e5dd7070Spatrick <Expand> 116e5dd7070Spatrick <Item Name="Size">Size</Item> 117e5dd7070Spatrick <ExpandedItem>(clang::ArrayType *)this</ExpandedItem> 118e5dd7070Spatrick </Expand> 119e5dd7070Spatrick </Type> 120e5dd7070Spatrick <Type Name="clang::IncompleteArrayType"> 121e5dd7070Spatrick <DisplayString IncludeView="left">{ElementType,view(cpp)}</DisplayString> 122e5dd7070Spatrick <DisplayString IncludeView="right">[]</DisplayString> 123e5dd7070Spatrick <DisplayString>{ElementType,view(cpp)}[]</DisplayString> 124e5dd7070Spatrick <Expand> 125e5dd7070Spatrick <ExpandedItem>(clang::ArrayType *)this</ExpandedItem> 126e5dd7070Spatrick </Expand> 127e5dd7070Spatrick </Type> 128e5dd7070Spatrick <Type Name="clang::TypedefType"> 129e5dd7070Spatrick <DisplayString IncludeView="cpp">{Decl,view(name)nd}</DisplayString> 130e5dd7070Spatrick <DisplayString>{Decl}</DisplayString> 131e5dd7070Spatrick <Expand> 132e5dd7070Spatrick <Item Name="Decl">Decl</Item> 133e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 134e5dd7070Spatrick </Expand> 135e5dd7070Spatrick </Type> 136e5dd7070Spatrick <Type Name="clang::PointerType"> 137e5dd7070Spatrick <DisplayString>{PointeeType, view(cpp)} *</DisplayString> 138e5dd7070Spatrick <Expand> 139e5dd7070Spatrick <Item Name="PointeeType">PointeeType</Item> 140e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 141e5dd7070Spatrick </Expand> 142e5dd7070Spatrick </Type> 143e5dd7070Spatrick <!-- We visualize all inner types for clang reference types. So a rvalue reference to an lvalue reference 144e5dd7070Spatrick to an int would visual as int & && This is a little different than GetPointeeType(), 145e5dd7070Spatrick but more clearly displays the data structure and seems natural --> 146e5dd7070Spatrick <Type Name="clang::LValueReferenceType"> 147e5dd7070Spatrick <DisplayString>{((clang::ReferenceType *)this)->PointeeType,view(cpp)} &</DisplayString> 148e5dd7070Spatrick <Expand> 149e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 150e5dd7070Spatrick <Item Name="PointeeType">PointeeType</Item> 151e5dd7070Spatrick </Expand> 152e5dd7070Spatrick </Type> 153e5dd7070Spatrick <Type Name="clang::RValueReferenceType"> 154e5dd7070Spatrick <DisplayString>{((clang::ReferenceType *)this)->PointeeType,view(cpp)} &&</DisplayString> 155e5dd7070Spatrick <Expand> 156e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 157e5dd7070Spatrick <Item Name="PointeeType">PointeeType</Item> 158e5dd7070Spatrick </Expand> 159e5dd7070Spatrick </Type> 160e5dd7070Spatrick <Type Name="clang::AttributedType"> 161e5dd7070Spatrick <DisplayString>{ModifiedType} Attribute={(clang::AttributedType::Kind)AttributedTypeBits.AttrKind}</DisplayString> 162e5dd7070Spatrick </Type> 163e5dd7070Spatrick 164e5dd7070Spatrick <!-- Unfortunately, Visual Studio has trouble seeing the PointerBitMask member PointerIntUnion, so I hardwire it to 2 bits--> 165e5dd7070Spatrick <Type Name="clang::DeclContext"> 166e5dd7070Spatrick <DisplayString>{(clang::Decl::Kind)DeclContextBits.DeclKind,en}Decl</DisplayString> 167e5dd7070Spatrick <Expand> 168e5dd7070Spatrick <Item Name="DeclKind">(clang::Decl::Kind)DeclContextBits.DeclKind,en</Item> 169e5dd7070Spatrick <Synthetic Name="Members"> 170e5dd7070Spatrick <DisplayString></DisplayString> 171e5dd7070Spatrick <Expand> 172e5dd7070Spatrick <LinkedListItems> 173e5dd7070Spatrick <HeadPointer>FirstDecl</HeadPointer> 174e5dd7070Spatrick <NextPointer>(clang::Decl *)(NextInContextAndBits.Value & ~3)</NextPointer> 175e5dd7070Spatrick <ValueNode>*this</ValueNode> 176e5dd7070Spatrick </LinkedListItems> 177e5dd7070Spatrick </Expand> 178e5dd7070Spatrick </Synthetic> 179e5dd7070Spatrick </Expand> 180e5dd7070Spatrick </Type> 181e5dd7070Spatrick <Type Name="clang::FieldDecl"> 182e5dd7070Spatrick <DisplayString>Field {{{*(clang::DeclaratorDecl *)this,view(cpp)nd}}}</DisplayString> 183e5dd7070Spatrick </Type> 184e5dd7070Spatrick <Type Name="clang::CXXMethodDecl"> 185e5dd7070Spatrick <DisplayString IncludeView="cpp">{*(clang::FunctionDecl *)this,nd}</DisplayString> 186e5dd7070Spatrick <DisplayString>Method {{{*this,view(cpp)}}}</DisplayString> 187e5dd7070Spatrick </Type> 188e5dd7070Spatrick <Type Name="clang::CXXConstructorDecl"> 189e5dd7070Spatrick <DisplayString>Constructor {{{Name,view(cpp)}({*(clang::FunctionDecl *)this,view(parm0)nd})}}</DisplayString> 190e5dd7070Spatrick </Type> 191e5dd7070Spatrick <Type Name="clang::CXXDestructorDecl"> 192e5dd7070Spatrick <DisplayString>Destructor {{~{Name,view(cpp)}()}}</DisplayString> 193e5dd7070Spatrick </Type> 194e5dd7070Spatrick <Type Name="clang::TemplateTypeParmDecl"> 195e5dd7070Spatrick <DisplayString IncludeView="TorC" Condition="Typename">typename</DisplayString> 196e5dd7070Spatrick <DisplayString IncludeView="TorC" Condition="!Typename">class</DisplayString> 197e5dd7070Spatrick <DisplayString IncludeView="MaybeEllipses" Condition="TypeForDecl == nullptr">(not yet known if parameter pack) </DisplayString> 198e5dd7070Spatrick <DisplayString IncludeView="MaybeEllipses" Condition="((TemplateTypeParmType *)(((clang::ExtQualsTypeCommonBase *)(((uintptr_t)TypeForDecl->CanonicalType.Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType))->CanTTPTInfo.ParameterPack">...</DisplayString> 199e5dd7070Spatrick <DisplayString IncludeView="MaybeEllipses" Condition="!((TemplateTypeParmType *)(((clang::ExtQualsTypeCommonBase *)(((uintptr_t)TypeForDecl->CanonicalType.Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType))->CanTTPTInfo.ParameterPack"></DisplayString> 200e5dd7070Spatrick <DisplayString IncludeView="DefaultArg" Condition="(DefaultArgument.ValueOrInherited.Val.Value&3LL) == 0">{(TypeSourceInfo *)(DefaultArgument.ValueOrInherited.Val.Value&~3LL),view(cpp)}</DisplayString> 201e5dd7070Spatrick <DisplayString IncludeView="DefaultArg">{{InheritedInitializer}}</DisplayString> 202e5dd7070Spatrick <DisplayString IncludeView="Initializer" Condition="DefaultArgument.ValueOrInherited.Val.Value&~3LL">= {this,view(DefaultArg)na}</DisplayString> 203e5dd7070Spatrick <DisplayString IncludeView="Initializer"></DisplayString> 204e5dd7070Spatrick <DisplayString>{*this,view(TorC)} {*this,view(MaybeEllipses)}{Name,view(cpp)} {this,view(Initializer)na}</DisplayString> 205e5dd7070Spatrick </Type> 206e5dd7070Spatrick <Type Name="clang::TemplateDecl"> 207e5dd7070Spatrick <DisplayString IncludeView="cpp">{*TemplatedDecl,view(cpp)}</DisplayString> 208e5dd7070Spatrick <DisplayString>template{TemplateParams,na} {*TemplatedDecl};</DisplayString> 209e5dd7070Spatrick <Expand> 210e5dd7070Spatrick <Item Name="TemplateParams">TemplateParams,na</Item> 211e5dd7070Spatrick <Item Name="TemplatedDecl">TemplatedDecl,na</Item> 212e5dd7070Spatrick </Expand> 213e5dd7070Spatrick </Type> 214e5dd7070Spatrick <!-- Unfortunately, visualization of PointerIntPair<PointerUnion> doesn't work due to limitations in natvis, so we will barehad it--> 215e5dd7070Spatrick <Type Name="clang::TypedefNameDecl"> 216e5dd7070Spatrick <DisplayString Condition="(MaybeModedTInfo.Value & 4)==0" IncludeView="type">{(clang::TypeSourceInfo *)(MaybeModedTInfo.Value & ~7LL),view(cpp)na}</DisplayString> 217e5dd7070Spatrick <DisplayString Condition="(MaybeModedTInfo.Value & 4)!=0" IncludeView="type">{(clang::TypedefNameDecl::ModedTInfo *)(MaybeModedTInfo.Value & ~7LL),view(cpp)na}</DisplayString> 218e5dd7070Spatrick <DisplayString IncludeView="name">{(TypeDecl *)this,view(cpp)nand}</DisplayString> 219e5dd7070Spatrick <DisplayString>typedef {this,view(type)na} {this,view(name)na};</DisplayString> 220e5dd7070Spatrick <Expand> 221e5dd7070Spatrick <Item Name="IsTransparent" Condition="(MaybeModedTInfo.Value & 1)==0">"Not yet calculated",sb</Item> 222e5dd7070Spatrick <Item Name="IsTransparent" Condition="(MaybeModedTInfo.Value & 1)!=0">(bool)(MaybeModedTInfo.Value & 2)</Item> 223e5dd7070Spatrick <Item Name="TypeSourceInfo" Condition="(MaybeModedTInfo.Value & 4)==0">(clang::TypeSourceInfo *)(MaybeModedTInfo.Value & ~7LL)</Item> 224e5dd7070Spatrick <Item Name="ModedTInfo" Condition="(MaybeModedTInfo.Value & 4)!=0">(clang::TypedefNameDecl::ModedTInfo *)(MaybeModedTInfo.Value & ~7LL)</Item> 225e5dd7070Spatrick <ExpandedItem>(TypeDecl *)this,nd</ExpandedItem> 226e5dd7070Spatrick </Expand> 227e5dd7070Spatrick </Type> 228e5dd7070Spatrick <Type Name="clang::TypeAliasDecl"> 229e5dd7070Spatrick <DisplayString IncludeView="cpp">{(TypedefNameDecl *)this,view(name)nand}</DisplayString> 230e5dd7070Spatrick <DisplayString>using {(TypedefNameDecl *)this,view(name)nand} = {(TypedefNameDecl *)this,view(type)nand}</DisplayString> 231e5dd7070Spatrick </Type> 232e5dd7070Spatrick <Type Name="clang::AssumedTemplateStorage"> 233e5dd7070Spatrick <DisplayString>{Name}</DisplayString> 234e5dd7070Spatrick </Type> 235e5dd7070Spatrick <Type Name="clang::UncommonTemplateNameStorage::BitsTag"> 236e5dd7070Spatrick <DisplayString>Kind={(UncommonTemplateNameStorage::Kind)Kind,en}, Size={Size}</DisplayString> 237e5dd7070Spatrick <Expand> 238e5dd7070Spatrick <Item Name="Kind">(UncommonTemplateNameStorage::Kind)Kind</Item> 239e5dd7070Spatrick <Item Name="Size">Size</Item> 240e5dd7070Spatrick </Expand> 241e5dd7070Spatrick </Type> 242e5dd7070Spatrick <Type Name="clang::UncommonTemplateNameStorage"> 243e5dd7070Spatrick <DisplayString IncludeView="cmn">{Bits},</DisplayString> 244e5dd7070Spatrick <DisplayString Condition="Bits.Kind==UncommonTemplateNameStorage::Overloaded">{this,view(cmn)na},{(OverloadedTemplateStorage*)this,na}</DisplayString> 245e5dd7070Spatrick <DisplayString Condition="Bits.Kind==UncommonTemplateNameStorage::Assumed">{this,view(cmn)na},{(AssumedTemplateStorage*)this,na}</DisplayString> 246e5dd7070Spatrick <DisplayString Condition="Bits.Kind==UncommonTemplateNameStorage::SubstTemplateTemplateParm">{this,view(cmn)na},{(SubstTemplateTemplateParmStorage*)this,na}</DisplayString> 247e5dd7070Spatrick <DisplayString Condition="Bits.Kind==UncommonTemplateNameStorage::SubstTemplateTemplateParmPack">{this,view(cmn)na},{(SubstTemplateTemplateParmPackStorage*)this,na}</DisplayString> 248e5dd7070Spatrick <DisplayString>{this,view(cmn)na}</DisplayString> 249e5dd7070Spatrick <Expand> 250e5dd7070Spatrick <Item Name="Bits">Bits</Item> 251e5dd7070Spatrick <ExpandedItem Condition="Bits.Kind==UncommonTemplateNameStorage::Overloaded">(OverloadedTemplateStorage*)this</ExpandedItem> 252e5dd7070Spatrick <ExpandedItem Condition="Bits.Kind==UncommonTemplateNameStorage::Assumed">(AssumedTemplateStorage*)this</ExpandedItem> 253e5dd7070Spatrick <ExpandedItem Condition="Bits.Kind==UncommonTemplateNameStorage::SubstTemplateTemplateParm">(SubstTemplateTemplateParmStorage*)this</ExpandedItem> 254e5dd7070Spatrick <ExpandedItem Condition="Bits.Kind==UncommonTemplateNameStorage::SubstTemplateTemplateParmPack">(SubstTemplateTemplateParmPackStorage*)this</ExpandedItem> 255e5dd7070Spatrick </Expand> 256e5dd7070Spatrick </Type> 257e5dd7070Spatrick <!-- clang::TemplateName::StorageType --> 258e5dd7070Spatrick <Type Name="llvm::PointerUnion<clang::TemplateDecl *, clang::UncommonTemplateNameStorage *, 259e5dd7070Spatrick clang::QualifiedTemplateName *, clang::DependentTemplateName *>"> 260e5dd7070Spatrick <!-- Expand this out by hand to get cpp view --> 261e5dd7070Spatrick <DisplayString Condition="(Val.Value &3) == 0" IncludeView="cpp"> 262e5dd7070Spatrick {(clang::TemplateDecl *)(Val.Value & ~3LL),view(cpp)na} 263e5dd7070Spatrick </DisplayString> 264e5dd7070Spatrick <DisplayString Condition="(Val.Value &3) == 0"> 265e5dd7070Spatrick {(clang::TemplateDecl *)(Val.Value & ~3LL),na} 266e5dd7070Spatrick </DisplayString> 267e5dd7070Spatrick <DisplayString Condition="(Val.Value &3) == 1" IncludeView="cpp"> 268e5dd7070Spatrick {(clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL),view(cpp)na} 269e5dd7070Spatrick </DisplayString> 270e5dd7070Spatrick <DisplayString Condition="(Val.Value &3) == 1"> 271e5dd7070Spatrick {(clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL),na} 272e5dd7070Spatrick </DisplayString> 273e5dd7070Spatrick <DisplayString Condition="(Val.Value &3) == 2" IncludeView="cpp"> 274e5dd7070Spatrick {(clang::QualifiedTemplateName *)(Val.Value & ~3LL),view(cpp)na} 275e5dd7070Spatrick </DisplayString> 276e5dd7070Spatrick <DisplayString Condition="(Val.Value &3) == 2"> 277e5dd7070Spatrick {(clang::QualifiedTemplateName *)(Val.Value & ~3LL),na} 278e5dd7070Spatrick </DisplayString> 279e5dd7070Spatrick <DisplayString Condition="(Val.Value &3) == 3" IncludeView="cpp"> 280e5dd7070Spatrick {(clang::DependentTemplateName *)(Val.Value & ~3LL),view(cpp)na} 281e5dd7070Spatrick </DisplayString> 282e5dd7070Spatrick <DisplayString Condition="(Val.Value &3) == 3"> 283e5dd7070Spatrick {(clang::DependentTemplateName *)(Val.Value & ~3LL),na} 284e5dd7070Spatrick </DisplayString> 285e5dd7070Spatrick <Expand> 286e5dd7070Spatrick <Item Name="[Holds]" Condition="(Val.Value &3) == 0">"TemplateDecl",s8b</Item> 287e5dd7070Spatrick <Item Name="[Ptr]" Optional="true" Condition="(Val.Value &3) == 0"> 288e5dd7070Spatrick (clang::TemplateDecl *)(Val.Value & ~3LL) 289e5dd7070Spatrick </Item> 290e5dd7070Spatrick <Item Name="[Holds]" Condition="(Val.Value &3) == 1">"UncommonTemplateNameStorage",s8b</Item> 291e5dd7070Spatrick <Item Name="[Ptr]" Optional="true" Condition="(Val.Value &3) == 1"> 292e5dd7070Spatrick (clang::UncommonTemplateNameStorage *)(Val.Value & ~3LL) 293e5dd7070Spatrick </Item> 294e5dd7070Spatrick <Item Name="[Holds]" Condition="(Val.Value &3) == 2">"QualifiedTemplateName",s8b</Item> 295e5dd7070Spatrick <Item Name="[Ptr]" Optional="true" Condition="(Val.Value &3) == 2"> 296e5dd7070Spatrick (clang::QualifiedTemplateName *)(Val.Value & ~3LL) 297e5dd7070Spatrick </Item> 298e5dd7070Spatrick <Item Name="[Holds]" Condition="(Val.Value &3) == 3">"DependentTemplateName",s8b</Item> 299e5dd7070Spatrick <Item Name="[Ptr]" Optional="true" Condition="(Val.Value &3) == 3"> 300e5dd7070Spatrick (clang::DependentTemplateName *)(Val.Value & ~3LL) 301e5dd7070Spatrick </Item> 302e5dd7070Spatrick <Item Name="[Val]">Val</Item> 303e5dd7070Spatrick 304e5dd7070Spatrick </Expand> 305e5dd7070Spatrick </Type> 306e5dd7070Spatrick <Type Name="clang::TemplateName"> 307e5dd7070Spatrick <DisplayString IncludeView="cpp">{Storage,view(cpp)na}</DisplayString> 308e5dd7070Spatrick <DisplayString>{Storage,na}</DisplayString> 309e5dd7070Spatrick <Expand> 310e5dd7070Spatrick <ExpandedItem>Storage</ExpandedItem> 311e5dd7070Spatrick </Expand> 312e5dd7070Spatrick </Type> 313e5dd7070Spatrick <Type Name="clang::NamedDecl" > 314e5dd7070Spatrick <DisplayString IncludeView="cpp">{Name,view(cpp)}</DisplayString> 315e5dd7070Spatrick <DisplayString>{Name}</DisplayString> 316e5dd7070Spatrick </Type> 317e5dd7070Spatrick <Type Name="clang::TagDecl"> 318e5dd7070Spatrick <DisplayString IncludeView="implicit" Condition="Implicit">implicit{" ",sb}</DisplayString> 319e5dd7070Spatrick <DisplayString IncludeView="implicit"></DisplayString> 320e5dd7070Spatrick <DisplayString IncludeView="modifiers">{*this,view(implicit)nd}</DisplayString> 321e5dd7070Spatrick <DisplayString IncludeView="cpp">{*this,view(modifiers)}{Name,view(cpp)}</DisplayString> 322e5dd7070Spatrick <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Struct">{*this,view(modifiers)nd}struct {Name,view(cpp)}</DisplayString> 323e5dd7070Spatrick <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Interface">{*this,view(modifiers)nd}interface {Name,view(cpp)}</DisplayString> 324e5dd7070Spatrick <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Union">{*this,view(modifiers)nd}union {Name,view(cpp)}</DisplayString> 325e5dd7070Spatrick <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Class">{*this,view(modifiers)nd}class {Name,view(cpp)}</DisplayString> 326e5dd7070Spatrick <DisplayString Condition="TagDeclBits.TagDeclKind==clang::TagTypeKind::TTK_Enum">{*this,view(modifiers)nd}enum {Name,view(cpp)}</DisplayString> 327e5dd7070Spatrick <Expand> 328e5dd7070Spatrick <ExpandedItem>(clang::DeclContext *)this</ExpandedItem> 329e5dd7070Spatrick </Expand> 330e5dd7070Spatrick </Type> 331e5dd7070Spatrick <Type Name="clang::TagType"> 332e5dd7070Spatrick <DisplayString IncludeView="cpp">{decl,view(cpp)na}</DisplayString> 333e5dd7070Spatrick <DisplayString>{*decl}</DisplayString> 334e5dd7070Spatrick <Expand> 335e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 336e5dd7070Spatrick <Item Name="decl">decl</Item> 337e5dd7070Spatrick </Expand> 338e5dd7070Spatrick </Type> 339e5dd7070Spatrick <Type Name="clang::RecordType"> 340e5dd7070Spatrick <DisplayString IncludeView="cpp">{(clang::TagType *)this,view(cpp)na}</DisplayString> 341e5dd7070Spatrick <DisplayString>{(clang::TagType *)this,na}</DisplayString> 342e5dd7070Spatrick <Expand> 343e5dd7070Spatrick <Item Name="TagType">*(clang::TagType *)this</Item> 344e5dd7070Spatrick </Expand> 345e5dd7070Spatrick </Type> 346e5dd7070Spatrick <Type Name="clang::SubstTemplateTypeParmType"> 347e5dd7070Spatrick <DisplayString>{{{*Replaced,view(cpp)} <= {CanonicalType,view(cpp)}}}</DisplayString> 348e5dd7070Spatrick <Expand> 349e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 350e5dd7070Spatrick <Item Name="Replaced">*Replaced</Item> 351e5dd7070Spatrick </Expand> 352e5dd7070Spatrick </Type> 353e5dd7070Spatrick <!-- We only show the first 5 parameter types in the display string (can't figure out how to loop in DisplayString) 354e5dd7070Spatrick but the expansion has all parameters --> 355e5dd7070Spatrick <Type Name="clang::FunctionProtoType"> 356e5dd7070Spatrick <DisplayString IncludeView="left" Condition="FunctionTypeBits.HasTrailingReturn"></DisplayString> 357e5dd7070Spatrick <DisplayString IncludeView="left">{ResultType,view(cpp)}</DisplayString> 358e5dd7070Spatrick <DisplayString IncludeView="parm0" Condition="FunctionTypeBits.NumParams==0"></DisplayString> 359e5dd7070Spatrick <DisplayString IncludeView="parm0">{*(clang::QualType *)(this+1),view(cpp)}{*this,view(parm1)}</DisplayString> 360e5dd7070Spatrick <DisplayString IncludeView="parm1" Condition="FunctionTypeBits.NumParams==1"></DisplayString> 361e5dd7070Spatrick <DisplayString IncludeView="parm1">, {*((clang::QualType *)(this+1)+1),view(cpp)}{*this,view(parm2)}</DisplayString> 362e5dd7070Spatrick <DisplayString IncludeView="parm2" Condition="FunctionTypeBits.NumParams==2"></DisplayString> 363e5dd7070Spatrick <DisplayString IncludeView="parm2">, {*((clang::QualType *)(this+1)+2),view(cpp)}{*this,view(parm3)}</DisplayString> 364e5dd7070Spatrick <DisplayString IncludeView="parm3" Condition="FunctionTypeBits.NumParams==3"></DisplayString> 365e5dd7070Spatrick <DisplayString IncludeView="parm3">, {*((clang::QualType *)(this+1)+3),view(cpp)}{*this,view(parm4)}</DisplayString> 366e5dd7070Spatrick <DisplayString IncludeView="parm4" Condition="FunctionTypeBits.NumParams==4"></DisplayString> 367e5dd7070Spatrick <DisplayString IncludeView="parm4">, {*((clang::QualType *)(this+1)+4),view(cpp)}{*this,view(parm5)}</DisplayString> 368e5dd7070Spatrick <DisplayString IncludeView="parm5" Condition="FunctionTypeBits.NumParams==5"></DisplayString> 369e5dd7070Spatrick <DisplayString IncludeView="parm5">, /* expand for more params */</DisplayString> 370e5dd7070Spatrick <DisplayString IncludeView="right" Condition="FunctionTypeBits.HasTrailingReturn">({*this,view(parm0)}) -> {ResultType,view(cpp)}</DisplayString> 371e5dd7070Spatrick <DisplayString IncludeView="right">({*this,view(parm0)})</DisplayString> 372e5dd7070Spatrick <DisplayString>{this,view(left)na}{this,view(right)na}</DisplayString> 373e5dd7070Spatrick <Expand> 374e5dd7070Spatrick <Item Name="ResultType">ResultType</Item> 375e5dd7070Spatrick <Synthetic Name="Parameter Types"> 376e5dd7070Spatrick <DisplayString>{*this,view(parm0)}</DisplayString> 377e5dd7070Spatrick <Expand> 378e5dd7070Spatrick <ArrayItems> 379e5dd7070Spatrick <Size>FunctionTypeBits.NumParams</Size> 380e5dd7070Spatrick <ValuePointer>(clang::QualType *)(this+1)</ValuePointer> 381e5dd7070Spatrick </ArrayItems> 382e5dd7070Spatrick </Expand> 383e5dd7070Spatrick </Synthetic> 384e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 385e5dd7070Spatrick </Expand> 386e5dd7070Spatrick </Type> 387e5dd7070Spatrick 388e5dd7070Spatrick <Type Name="clang::AdjustedType"> 389e5dd7070Spatrick <DisplayString>{OriginalTy} adjusted to {AdjustedTy}</DisplayString> 390e5dd7070Spatrick <Expand> 391e5dd7070Spatrick <Item Name="OriginalTy">OriginalTy</Item> 392e5dd7070Spatrick <Item Name="AdjustedTy">AdjustedTy</Item> 393e5dd7070Spatrick </Expand> 394e5dd7070Spatrick </Type> 395e5dd7070Spatrick <Type Name="clang::DecayedType"> 396e5dd7070Spatrick <DisplayString IncludeView="left">{OriginalTy,view(left)}</DisplayString> 397e5dd7070Spatrick <DisplayString IncludeView="right">{OriginalTy,view(right)}</DisplayString> 398e5dd7070Spatrick <DisplayString>{OriginalTy}</DisplayString> 399e5dd7070Spatrick <Expand> 400e5dd7070Spatrick <ExpandedItem>(clang::AdjustedType *)this</ExpandedItem> 401e5dd7070Spatrick </Expand> 402e5dd7070Spatrick </Type> 403e5dd7070Spatrick <Type Name="clang::TemplateTypeParmType"> 404e5dd7070Spatrick <DisplayString IncludeView="cpp" Condition="CanonicalType.Value.Value != this">{TTPDecl->Name,view(cpp)}</DisplayString> 405e5dd7070Spatrick <DisplayString Condition="CanonicalType.Value.Value != this">Non-canonical: {*TTPDecl}</DisplayString> 406e5dd7070Spatrick <DisplayString>Canonical: {CanTTPTInfo}</DisplayString> 407e5dd7070Spatrick <Expand> 408e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 409e5dd7070Spatrick </Expand> 410e5dd7070Spatrick </Type> 411e5dd7070Spatrick <Type Name="clang::InjectedClassNameType"> 412e5dd7070Spatrick <DisplayString>{Decl,view(cpp)}</DisplayString> 413e5dd7070Spatrick <Expand> 414e5dd7070Spatrick <Item Name="Decl">Decl</Item> 415e5dd7070Spatrick <Item Name="InjectedType">InjectedType</Item> 416e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 417e5dd7070Spatrick </Expand> 418e5dd7070Spatrick </Type> 419e5dd7070Spatrick <Type Name="clang::DependentNameType"> 420e5dd7070Spatrick <DisplayString>{NNS}{Name,view(cpp)na}</DisplayString> 421e5dd7070Spatrick <Expand> 422e5dd7070Spatrick <Item Name="NNS">NNS</Item> 423e5dd7070Spatrick <Item Name="Name">Name</Item> 424e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 425e5dd7070Spatrick </Expand> 426e5dd7070Spatrick </Type> 427e5dd7070Spatrick <Type Name="clang::NestedNameSpecifier"> 428e5dd7070Spatrick <DisplayString Condition="!Specifier"></DisplayString> 429e5dd7070Spatrick <DisplayString Condition="((Prefix.Value>>1)&3) == 0">{(IdentifierInfo*)Specifier,view(cpp)na}::</DisplayString> 430e5dd7070Spatrick <DisplayString Condition="((Prefix.Value>>1)&3) == 1">{(NamedDecl*)Specifier,view(cpp)na}::</DisplayString> 431e5dd7070Spatrick <DisplayString Condition="((Prefix.Value>>1)&2) == 2">{(Type*)Specifier,view(cpp)na}::</DisplayString> 432e5dd7070Spatrick <Expand> 433e5dd7070Spatrick <Item Name="Kind">(NestedNameSpecifier::StoredSpecifierKind)((Prefix.Value>>1)&3)</Item> 434e5dd7070Spatrick </Expand> 435e5dd7070Spatrick </Type> 436e5dd7070Spatrick <Type Name="clang::PackExpansionType"> 437e5dd7070Spatrick <DisplayString>{Pattern}</DisplayString> 438e5dd7070Spatrick <Expand> 439e5dd7070Spatrick <Item Name="Pattern">Pattern</Item> 440e5dd7070Spatrick <Item Name="NumExpansions">NumExpansions</Item> 441e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 442e5dd7070Spatrick </Expand> 443e5dd7070Spatrick </Type> 444e5dd7070Spatrick <Type Name="clang::QualType"> 445e5dd7070Spatrick <!-- When VS2013 support is deprecated, change 4 to clang::TypeAlignmentInBits (not properly recognized by VS2013) --> 446e5dd7070Spatrick <DisplayString IncludeView="poly">{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(poly)}{*this,view(fastQuals)}</DisplayString> 447e5dd7070Spatrick <DisplayString IncludeView="cpp">{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(cpp)}{*this,view(fastQuals)}</DisplayString> 448e5dd7070Spatrick <DisplayString IncludeView="left">{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(left)}{*this,view(fastQuals)}</DisplayString> 449e5dd7070Spatrick <DisplayString IncludeView="right">{*((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,view(right)}{*this,view(fastQuals)}</DisplayString> 450e5dd7070Spatrick <!-- For the Fast Qualifiers, it is simpler (and probably more efficient) just to list all 8 cases than create 451e5dd7070Spatrick views for each qualifier. TODO: Non-fast qualifiers --> 452e5dd7070Spatrick <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==0"></DisplayString> 453e5dd7070Spatrick <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==1">{" ",sb}const</DisplayString> 454e5dd7070Spatrick <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==2">{" ",sb}restrict</DisplayString> 455e5dd7070Spatrick <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==3">{" ",sb}const restrict</DisplayString> 456e5dd7070Spatrick <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==4">{" ",sb}volatile</DisplayString> 457e5dd7070Spatrick <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==5">{" ",sb}const volatile</DisplayString> 458e5dd7070Spatrick <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==6">{" ",sb}volatile restrict</DisplayString> 459e5dd7070Spatrick <DisplayString IncludeView="fastQuals" Condition="(Value.Value & 15)==7">{" ",sb}const volatile restrict</DisplayString> 460e5dd7070Spatrick <DisplayString IncludeView="fastQuals">Cannot visualize non-fast qualifiers</DisplayString> 461e5dd7070Spatrick <DisplayString Condition="(uintptr_t)Value.Value == 0">Null</DisplayString> 462e5dd7070Spatrick <DisplayString>{((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType,na}{*this,view(fastQuals)}</DisplayString> 463e5dd7070Spatrick <Expand> 464e5dd7070Spatrick <Item Name="Fast Quals">*this,view(fastQuals)</Item> 465e5dd7070Spatrick <ExpandedItem>((clang::ExtQualsTypeCommonBase *)(((uintptr_t)Value.Value) & ~(uintptr_t)((1 << 4) - 1)))->BaseType</ExpandedItem> 466e5dd7070Spatrick </Expand> 467e5dd7070Spatrick </Type> 468e5dd7070Spatrick <Type Name="clang::LocInfoType"> 469e5dd7070Spatrick <DisplayString IncludeView="cpp">{DeclInfo,view(cpp)na}</DisplayString> 470e5dd7070Spatrick <DisplayString>{DeclInfo,na}</DisplayString> 471e5dd7070Spatrick <Expand> 472e5dd7070Spatrick <Item Name="DeclInfo">DeclInfo</Item> 473e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 474e5dd7070Spatrick </Expand> 475e5dd7070Spatrick </Type> 476e5dd7070Spatrick <Type Name="clang::TypeSourceInfo"> 477e5dd7070Spatrick <DisplayString IncludeView="cpp">{Ty,view(cpp)}</DisplayString> 478e5dd7070Spatrick <DisplayString>{Ty}</DisplayString> 479e5dd7070Spatrick <Expand> 480e5dd7070Spatrick <ExpandedItem>Ty</ExpandedItem> 481e5dd7070Spatrick </Expand> 482e5dd7070Spatrick </Type> 483e5dd7070Spatrick <Type Name="clang::TypeLoc"> 484e5dd7070Spatrick <DisplayString>{(QualType *)&Ty,na}</DisplayString> 485e5dd7070Spatrick <Expand> 486e5dd7070Spatrick <Item Name="Ty">(QualType *)&Ty</Item> 487e5dd7070Spatrick <Item Name="Data">Data</Item> 488e5dd7070Spatrick </Expand> 489e5dd7070Spatrick </Type> 490e5dd7070Spatrick <Type Name="clang::TypeLocBuilder"> 491e5dd7070Spatrick <DisplayString Optional="true" Condition="LastTy.Value.Value==0">Not building anything</DisplayString> 492e5dd7070Spatrick <DisplayString Optional="true">Building a {LastTy}</DisplayString> 493e5dd7070Spatrick </Type> 494e5dd7070Spatrick <Type Name="clang::TemplateArgumentLoc"> 495e5dd7070Spatrick <DisplayString IncludeView="cpp">{Argument,view(cpp)}</DisplayString> 496e5dd7070Spatrick <DisplayString>{Argument}</DisplayString> 497e5dd7070Spatrick </Type> 498e5dd7070Spatrick <Type Name="clang::TemplateArgument"> 499e5dd7070Spatrick <DisplayString IncludeView="cpp" Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Type">{*(clang::QualType *)&TypeOrValue.V,view(cpp)}</DisplayString> 500e5dd7070Spatrick <DisplayString Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Type">{(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en} template argument: {*(clang::QualType *)&TypeOrValue.V}</DisplayString> 501e5dd7070Spatrick <DisplayString IncludeView="arg0" Condition="Args.NumArgs==0"></DisplayString> 502e5dd7070Spatrick <DisplayString IncludeView="arg0">{Args.Args[0]}{*this,view(arg1)}</DisplayString> 503e5dd7070Spatrick <DisplayString IncludeView="arg1" Condition="Args.NumArgs==1"></DisplayString> 504e5dd7070Spatrick <DisplayString IncludeView="arg1">, {Args.Args[1]}{*this,view(arg2)}</DisplayString> 505e5dd7070Spatrick <DisplayString IncludeView="arg2" Condition="Args.NumArgs==2"></DisplayString> 506e5dd7070Spatrick <DisplayString IncludeView="arg2">, {Args.Args[2]}, ...</DisplayString> 507e5dd7070Spatrick <DisplayString IncludeView="arg0cpp" Condition="Args.NumArgs==0"></DisplayString> 508e5dd7070Spatrick <DisplayString IncludeView="arg0cpp">{Args.Args[0],view(cpp)}{*this,view(arg1cpp)}</DisplayString> 509e5dd7070Spatrick <DisplayString IncludeView="arg1cpp" Condition="Args.NumArgs==1"></DisplayString> 510e5dd7070Spatrick <DisplayString IncludeView="arg1cpp">, {Args.Args[1],view(cpp)}{*this,view(arg2cpp)}</DisplayString> 511e5dd7070Spatrick <DisplayString IncludeView="arg2cpp" Condition="Args.NumArgs==2"></DisplayString> 512e5dd7070Spatrick <DisplayString IncludeView="arg2cpp">, {Args.Args[2],view(cpp)}, ...</DisplayString> 513e5dd7070Spatrick <DisplayString IncludeView="cpp" Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Pack">{*this,view(arg0cpp)}</DisplayString> 514e5dd7070Spatrick <DisplayString Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Pack">{*this,view(arg0)}</DisplayString> 515e5dd7070Spatrick <DisplayString Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Expression">{(clang::Expr *)TypeOrValue.V,view(cpp)na}</DisplayString> 516e5dd7070Spatrick <DisplayString>{(clang::TemplateArgument::ArgKind)TypeOrValue.Kind,en}</DisplayString> 517e5dd7070Spatrick <Expand> 518e5dd7070Spatrick <Item Name="QualType" Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Type">*(clang::QualType *)&TypeOrValue.V</Item> 519e5dd7070Spatrick <Item Name="Expression" Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Expression">(clang::Expr *)TypeOrValue.V</Item> 520e5dd7070Spatrick <ArrayItems Condition="Integer.Kind == clang::TemplateArgument::ArgKind::Pack"> 521e5dd7070Spatrick <Size>Args.NumArgs</Size> 522e5dd7070Spatrick <ValuePointer>Args.Args</ValuePointer> 523e5dd7070Spatrick </ArrayItems> 524e5dd7070Spatrick <!-- TODO: Other kinds--> 525e5dd7070Spatrick </Expand> 526e5dd7070Spatrick </Type> 527e5dd7070Spatrick <Type Name="clang::TemplateArgumentListInfo"> 528e5dd7070Spatrick <DisplayString IncludeView ="elt0" Condition="Arguments.Size == 0"></DisplayString> 529e5dd7070Spatrick <DisplayString IncludeView ="elt0">{((TemplateArgumentLoc*)Arguments.BeginX)[0],view(cpp)}{*this,view(elt1)}</DisplayString> 530e5dd7070Spatrick <DisplayString IncludeView ="elt1" Condition="Arguments.Size == 1"></DisplayString> 531e5dd7070Spatrick <DisplayString IncludeView ="elt1">, {((TemplateArgumentLoc*)Arguments.BeginX)[1],view(cpp)}{*this,view(elt2)}</DisplayString> 532e5dd7070Spatrick <DisplayString IncludeView ="elt2" Condition="Arguments.Size == 2"></DisplayString> 533e5dd7070Spatrick <DisplayString IncludeView ="elt2">, {((TemplateArgumentLoc*)Arguments.BeginX)[2],view(cpp)}{*this,view(elt3)}</DisplayString> 534e5dd7070Spatrick <DisplayString IncludeView ="elt3" Condition="Arguments.Size == 3"></DisplayString> 535e5dd7070Spatrick <DisplayString IncludeView ="elt3">, {((TemplateArgumentLoc*)Arguments.BeginX)[3],view(cpp)}{*this,view(elt4)}</DisplayString> 536e5dd7070Spatrick <DisplayString IncludeView ="elt4" Condition="Arguments.Size == 4"></DisplayString> 537e5dd7070Spatrick <DisplayString IncludeView ="elt4">, ...</DisplayString> 538e5dd7070Spatrick <DisplayString Condition="Arguments.Size == 0">empty</DisplayString> 539e5dd7070Spatrick <DisplayString Condition="Arguments.Size != 0"><{*this,view(elt0)}></DisplayString> 540e5dd7070Spatrick <DisplayString>Uninitialized</DisplayString> 541e5dd7070Spatrick </Type> 542e5dd7070Spatrick <Type Name="clang::TemplateArgumentList"> 543e5dd7070Spatrick <DisplayString IncludeView="arg0" Condition="NumArguments==0"></DisplayString> 544e5dd7070Spatrick <DisplayString IncludeView="arg0">{Arguments[0],view(cpp)}{*this,view(arg1)}</DisplayString> 545e5dd7070Spatrick <DisplayString IncludeView="arg1" Condition="NumArguments==1"></DisplayString> 546e5dd7070Spatrick <DisplayString IncludeView="arg1">, {Arguments[1],view(cpp)}{*this,view(arg2)}</DisplayString> 547e5dd7070Spatrick <DisplayString IncludeView="arg2" Condition="NumArguments==2"></DisplayString> 548e5dd7070Spatrick <DisplayString IncludeView="arg2">, {Arguments[1],view(cpp)}, ...</DisplayString> 549e5dd7070Spatrick <DisplayString><{*this,view(arg0)}></DisplayString> 550e5dd7070Spatrick <Expand> 551e5dd7070Spatrick <Item Name="NumArguments">NumArguments</Item> 552e5dd7070Spatrick <ArrayItems> 553e5dd7070Spatrick <Size>NumArguments</Size> 554e5dd7070Spatrick <ValuePointer>Arguments</ValuePointer> 555e5dd7070Spatrick </ArrayItems> 556e5dd7070Spatrick </Expand> 557e5dd7070Spatrick </Type> 558e5dd7070Spatrick <Type Name="llvm::ArrayRef<clang::TemplateArgument>"> 559e5dd7070Spatrick <DisplayString IncludeView="arg0" Condition="Length==0"></DisplayString> 560e5dd7070Spatrick <DisplayString IncludeView="arg0">{Data[0],view(cpp)}{*this,view(arg1)}</DisplayString> 561e5dd7070Spatrick <DisplayString IncludeView="arg1" Condition="Length==1"></DisplayString> 562e5dd7070Spatrick <DisplayString IncludeView="arg1">, {Data[1],view(cpp)}{*this,view(arg2)}</DisplayString> 563e5dd7070Spatrick <DisplayString IncludeView="arg2" Condition="Length==2"></DisplayString> 564e5dd7070Spatrick <DisplayString IncludeView="arg2">, {Data[2],view(cpp)}, ...</DisplayString> 565e5dd7070Spatrick <DisplayString><{*this,view(arg0)}></DisplayString> 566e5dd7070Spatrick <Expand> 567e5dd7070Spatrick <Item Name="Length">Length</Item> 568e5dd7070Spatrick <Synthetic Name="Data"> 569e5dd7070Spatrick <Expand> 570e5dd7070Spatrick <ArrayItems> 571e5dd7070Spatrick <Size>Length</Size> 572e5dd7070Spatrick <ValuePointer>Data</ValuePointer> 573e5dd7070Spatrick </ArrayItems> 574e5dd7070Spatrick </Expand> 575e5dd7070Spatrick </Synthetic> 576e5dd7070Spatrick </Expand> 577e5dd7070Spatrick </Type> 578e5dd7070Spatrick <Type Name="clang::MultiLevelTemplateArgumentList"> 579e5dd7070Spatrick <DisplayString IncludeView="level0" Condition="(llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.EndX - (llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX==0"></DisplayString> 580e5dd7070Spatrick <DisplayString IncludeView="level0">{((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[0],view(cpp)}{*this,view(level1)}</DisplayString> 581e5dd7070Spatrick <DisplayString IncludeView="level1" Condition="(llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.EndX - (llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX==1"></DisplayString> 582e5dd7070Spatrick <DisplayString IncludeView="level1">::{((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[1],view(cpp)}{*this,view(level2)}</DisplayString> 583e5dd7070Spatrick <DisplayString IncludeView="level2" Condition="(llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.EndX - (llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX==2"></DisplayString> 584e5dd7070Spatrick <DisplayString IncludeView="level2">::{((llvm::ArrayRef<clang::TemplateArgument> *)TemplateArgumentLists.BeginX)[2],view(cpp)}, ...</DisplayString> 585e5dd7070Spatrick <DisplayString>{*this,view(level0)}</DisplayString> 586e5dd7070Spatrick <Expand> 587e5dd7070Spatrick <Item Name="TemplateList">TemplateArgumentLists</Item> 588e5dd7070Spatrick </Expand> 589e5dd7070Spatrick </Type> 590e5dd7070Spatrick <Type Name="clang::ParsedTemplateArgument"> 591e5dd7070Spatrick <DisplayString Condition="Kind==clang::ParsedTemplateArgument::Type" IncludeView="cpp">{(clang::QualType *)Arg,view(cpp)na}</DisplayString> 592e5dd7070Spatrick <DisplayString Condition="Kind==clang::ParsedTemplateArgument::Type">Type template argument: {*(clang::QualType *)Arg}</DisplayString> 593e5dd7070Spatrick <DisplayString Condition="Kind==clang::ParsedTemplateArgument::NonType">Non-type template argument: {*(clang::Expr *)Arg}</DisplayString> 594e5dd7070Spatrick <DisplayString Condition="Kind==clang::ParsedTemplateArgument::Template">Template template argument: {*(clang::TemplateName *)Arg</DisplayString> 595e5dd7070Spatrick <Expand> 596e5dd7070Spatrick <Item Name="Kind">Kind,en</Item> 597e5dd7070Spatrick <Item Name="Arg" Condition="Kind==clang::ParsedTemplateArgument::Type">(clang::QualType *)Arg</Item> 598e5dd7070Spatrick <Item Name="Arg" Condition="Kind==clang::ParsedTemplateArgument::NonType">(clang::Expr *)Arg</Item> 599e5dd7070Spatrick <Item Name="Arg" Condition="Kind==clang::ParsedTemplateArgument::Template">(clang::TemplateName *)Arg</Item> 600e5dd7070Spatrick </Expand> 601e5dd7070Spatrick </Type> 602e5dd7070Spatrick <!-- Builtin types that have C++ keywords are manually displayed as that keyword. Otherwise, just use the enum name --> 603e5dd7070Spatrick <Type Name="clang::BuiltinType"> 604e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Void">void</DisplayString> 605e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Bool">bool</DisplayString> 606e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Char_U">char</DisplayString> 607e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::UChar">unsigned char</DisplayString> 608e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::WChar_U">wchar_t</DisplayString> 609e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Char16">char16_t</DisplayString> 610e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Char32">char32_t</DisplayString> 611e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::UShort">unsigned short</DisplayString> 612e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::UInt">unsigned int</DisplayString> 613e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::ULong">unsigned long</DisplayString> 614e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::ULongLong">unsigned long long</DisplayString> 615e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::UInt128">__uint128_t</DisplayString> 616e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Char_S">char</DisplayString> 617e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::SChar">signed char</DisplayString> 618e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::WChar_S">wchar_t</DisplayString> 619e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Short">short</DisplayString> 620e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Int">int</DisplayString> 621e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Long">long</DisplayString> 622e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::LongLong">long long</DisplayString> 623e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Int128">__int128_t</DisplayString> 624e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Half">__fp16</DisplayString> 625e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Float">float</DisplayString> 626e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::Double">double</DisplayString> 627e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::LongDouble">long double</DisplayString> 628e5dd7070Spatrick <DisplayString Condition="BuiltinTypeBits.Kind==clang::BuiltinType::NullPtr">nullptr_t</DisplayString> 629e5dd7070Spatrick <DisplayString>{(clang::BuiltinType::Kind)BuiltinTypeBits.Kind, en}</DisplayString> 630e5dd7070Spatrick <Expand> 631e5dd7070Spatrick <Item Name="Kind">(clang::BuiltinType::Kind)BuiltinTypeBits.Kind</Item> 632e5dd7070Spatrick </Expand> 633e5dd7070Spatrick </Type> 634e5dd7070Spatrick 635e5dd7070Spatrick <Type Name="clang::TemplateSpecializationType"> 636e5dd7070Spatrick <DisplayString IncludeView="arg0" Condition="TemplateSpecializationTypeBits.NumArgs==0"></DisplayString> 637e5dd7070Spatrick <DisplayString IncludeView="arg0">{((clang::TemplateArgument *)(this+1))[0],view(cpp)}{*this,view(arg1)}</DisplayString> 638e5dd7070Spatrick <DisplayString IncludeView="arg1" Condition="TemplateSpecializationTypeBits.NumArgs==1"></DisplayString> 639e5dd7070Spatrick <DisplayString IncludeView="arg1">, {((clang::TemplateArgument *)(this+1))[1],view(cpp)}{*this,view(arg2)}</DisplayString> 640e5dd7070Spatrick <DisplayString IncludeView="arg2" Condition="TemplateSpecializationTypeBits.NumArgs==2"></DisplayString> 641e5dd7070Spatrick <DisplayString IncludeView="arg2">, {((clang::TemplateArgument *)(this+1))[2],view(cpp)}{*this,view(arg3)}</DisplayString> 642e5dd7070Spatrick <DisplayString Condition="(Template.Storage.Val.Value & 3) == 0"> 643e5dd7070Spatrick {*((clang::TemplateDecl *)(Template.Storage.Val.Value))->TemplatedDecl,view(cpp)}<{*this,view(arg0)}> 644e5dd7070Spatrick </DisplayString> 645e5dd7070Spatrick <DisplayString>Can't visualize this TemplateSpecializationType</DisplayString> 646e5dd7070Spatrick <Expand> 647e5dd7070Spatrick <Item Name="Template">Template.Storage</Item> 648e5dd7070Spatrick <ArrayItems> 649e5dd7070Spatrick <Size>TemplateSpecializationTypeBits.NumArgs</Size> 650e5dd7070Spatrick <ValuePointer>(clang::TemplateArgument *)(this+1)</ValuePointer> 651e5dd7070Spatrick </ArrayItems> 652e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this, view(cmn)</ExpandedItem> 653e5dd7070Spatrick </Expand> 654e5dd7070Spatrick </Type> 655e5dd7070Spatrick <Type Name="clang::DeducedType"> 656e5dd7070Spatrick <Expand> 657e5dd7070Spatrick <Item Name="isDeduced">(CanonicalType.Value.Value != this) || TypeBits.Dependent</Item> 658e5dd7070Spatrick <ExpandedItem>*(clang::Type *)this,view(cmn)</ExpandedItem> 659e5dd7070Spatrick </Expand> 660e5dd7070Spatrick </Type> 661e5dd7070Spatrick <Type Name="clang::DeducedTemplateSpecializationType"> 662e5dd7070Spatrick <DisplayString Condition="(CanonicalType.Value.Value != this) || TypeBits.Dependent">{CanonicalType,view(cpp)}</DisplayString> 663e5dd7070Spatrick <DisplayString IncludeView="cpp">{Template,view(cpp)}</DisplayString> 664e5dd7070Spatrick <DisplayString>{Template}</DisplayString> 665e5dd7070Spatrick <Expand> 666e5dd7070Spatrick <Item Name="Template">Template</Item> 667e5dd7070Spatrick <Item Name="Deduced As" Condition="(CanonicalType.Value.Value != this) || TypeBits.Dependent">CanonicalType,view(cpp)</Item> 668e5dd7070Spatrick <ExpandedItem>(clang::DeducedType *)this</ExpandedItem> 669e5dd7070Spatrick <Item Name="Template">Template</Item> 670e5dd7070Spatrick </Expand> 671e5dd7070Spatrick </Type> 672e5dd7070Spatrick <Type Name="clang::ClassTemplateSpecializationDecl"> 673e5dd7070Spatrick <DisplayString>{*(CXXRecordDecl *)this,nd}{*TemplateArgs}</DisplayString> 674e5dd7070Spatrick <Expand> 675e5dd7070Spatrick <ExpandedItem>(CXXRecordDecl *)this,nd</ExpandedItem> 676e5dd7070Spatrick <Item Name="TemplateArgs">TemplateArgs</Item> 677e5dd7070Spatrick </Expand> 678e5dd7070Spatrick </Type> 679e5dd7070Spatrick <Type Name="clang::IdentifierInfo"> 680e5dd7070Spatrick <DisplayString Condition="Entry != 0">{((llvm::StringMapEntry<clang::IdentifierInfo *>*)Entry)+1,sb}</DisplayString> 681e5dd7070Spatrick <Expand> 682e5dd7070Spatrick <Item Condition="Entry != 0" Name="[Identifier]">((llvm::StringMapEntry<clang::IdentifierInfo *>*)Entry)+1,s</Item> 683e5dd7070Spatrick <Item Name="Token Kind">(clang::tok::TokenKind)TokenID</Item> 684e5dd7070Spatrick </Expand> 685e5dd7070Spatrick </Type> 686e5dd7070Spatrick <Type Name="clang::DeclarationName"> 687e5dd7070Spatrick <DisplayString Condition="Ptr == 0" IncludeView="cpp"></DisplayString> 688e5dd7070Spatrick <DisplayString Condition="Ptr == 0">Empty</DisplayString> 689e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredIdentifier" IncludeView="cpp">{*(clang::IdentifierInfo *)(Ptr & ~PtrMask)}</DisplayString> 690e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredIdentifier">{{Identifier ({*(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString> 691e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredObjCZeroArgSelector">{{ObjC Zero Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString> 692e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredObjCOneArgSelector">{{ObjC One Arg Selector (*{(clang::IdentifierInfo *)(Ptr & ~PtrMask)})}}</DisplayString> 693e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredCXXConstructorName" IncludeView="cpp">{(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),view(cpp)na}</DisplayString> 694e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredCXXConstructorName">C++ Constructor {{{(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),view(cpp)na}}}</DisplayString> 695e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredCXXDestructorName">C++ Destructor {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}}</DisplayString> 696e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredCXXConversionFunctionName">C++ Conversion function {{*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask)}}</DisplayString> 697e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredCXXOperatorName">C++ Operator {{*(clang::detail::CXXOperatorIdName *)(Ptr & ~PtrMask)}}</DisplayString> 698e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredDeclarationNameExtra" 699e5dd7070Spatrick IncludeView="cpp">{*(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask),view(cpp)}</DisplayString> 700e5dd7070Spatrick <DisplayString Condition="(Ptr & PtrMask) == StoredDeclarationNameExtra">{{Extra ({*(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask)})}}</DisplayString> 701e5dd7070Spatrick <Expand> 702e5dd7070Spatrick <Item Name="Kind">StoredNameKind(Ptr & PtrMask),en</Item> 703e5dd7070Spatrick <Item Condition="(Ptr & PtrMask) == StoredIdentifier" Name="[Identifier]">*(clang::IdentifierInfo *)(Ptr & ~PtrMask),na</Item> 704e5dd7070Spatrick <Item Condition="(Ptr & PtrMask) == StoredObjCZeroArgSelector" Name="[ObjC Zero Arg Selector]">*(clang::IdentifierInfo *)(Ptr & ~PtrMask),na</Item> 705e5dd7070Spatrick <Item Condition="(Ptr & PtrMask) == StoredObjCOneArgSelector" Name="[ObjC One Arg Selector]">*(clang::IdentifierInfo *)(Ptr & ~PtrMask),na</Item> 706e5dd7070Spatrick <Item Condition="(Ptr & PtrMask) == StoredCXXConstructorName" Name="[C++ Constructor]">*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na</Item> 707e5dd7070Spatrick <Item Condition="(Ptr & PtrMask) == StoredCXXDestructorName" Name="[C++ Destructor]">*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na</Item> 708e5dd7070Spatrick <Item Condition="(Ptr & PtrMask) == StoredCXXConversionFunctionName" Name="[C++ Conversion function]">*(clang::detail::CXXSpecialNameExtra *)(Ptr & ~PtrMask),na</Item> 709e5dd7070Spatrick <Item Condition="(Ptr & PtrMask) == StoredCXXOperatorName" Name="[C++ Operator]">*(clang::detail::CXXOperatorIdName *)(Ptr & ~PtrMask),na</Item> 710e5dd7070Spatrick <Item Condition="(Ptr & PtrMask) == StoredDeclarationNameExtra" Name="[Extra]">(clang::detail::DeclarationNameExtra *)(Ptr & ~PtrMask),na</Item> 711e5dd7070Spatrick </Expand> 712e5dd7070Spatrick </Type> 713e5dd7070Spatrick <Type Name="clang::detail::DeclarationNameExtra"> 714e5dd7070Spatrick <DisplayString Condition="ExtraKindOrNumArgs == CXXDeductionGuideName" IncludeView="cpp"> 715e5dd7070Spatrick {(CXXDeductionGuideNameExtra *)this,view(cpp)nand} 716e5dd7070Spatrick </DisplayString> 717e5dd7070Spatrick <DisplayString Condition="ExtraKindOrNumArgs == CXXDeductionGuideName"> 718e5dd7070Spatrick {(CXXDeductionGuideNameExtra *)this,nand} 719e5dd7070Spatrick </DisplayString> 720e5dd7070Spatrick <DisplayString Condition="ExtraKindOrNumArgs == CXXLiteralOperatorName">C++ Literal operator</DisplayString> 721e5dd7070Spatrick <DisplayString Condition="ExtraKindOrNumArgs == CXXUsingDirective">C++ Using directive</DisplayString> 722e5dd7070Spatrick <DisplayString>{(clang::detail::DeclarationNameExtra::ExtraKind)ExtraKindOrNumArgs,en}{" ",sb}{*this,view(cpp)}</DisplayString> 723e5dd7070Spatrick <Expand> 724e5dd7070Spatrick <ExpandedItem Condition="ExtraKindOrNumArgs == CXXDeductionGuideName">(CXXDeductionGuideNameExtra *)this</ExpandedItem> 725e5dd7070Spatrick <Item Name="ExtraKindOrNumArgs" Condition="ExtraKindOrNumArgs != CXXDeductionGuideName">ExtraKindOrNumArgs</Item> 726e5dd7070Spatrick </Expand> 727e5dd7070Spatrick </Type> 728e5dd7070Spatrick <Type Name="clang::detail::CXXDeductionGuideNameExtra"> 729e5dd7070Spatrick <DisplayString IncludeView="cpp">{Template->TemplatedDecl,view(cpp)}</DisplayString> 730e5dd7070Spatrick <DisplayString>C++ Deduction guide for {Template->TemplatedDecl,view(cpp)na}</DisplayString> 731e5dd7070Spatrick </Type> 732e5dd7070Spatrick <Type Name="clang::detail::CXXSpecialNameExtra"> 733e5dd7070Spatrick <DisplayString IncludeView="cpp">{Type,view(cpp)}</DisplayString> 734e5dd7070Spatrick <DisplayString>{Type}</DisplayString> 735e5dd7070Spatrick </Type> 736e5dd7070Spatrick <Type Name="clang::DeclarationNameInfo"> 737e5dd7070Spatrick <DisplayString>{Name}</DisplayString> 738e5dd7070Spatrick </Type> 739e5dd7070Spatrick <Type Name="clang::TemplateIdAnnotation"> 740e5dd7070Spatrick <DisplayString IncludeView="arg0" Condition="NumArgs==0"></DisplayString> 741e5dd7070Spatrick <DisplayString IncludeView="arg0">{(ParsedTemplateArgument *)(this+1),view(cpp)na}{this,view(arg1)na}</DisplayString> 742e5dd7070Spatrick <DisplayString IncludeView="arg1" Condition="NumArgs==1"></DisplayString> 743e5dd7070Spatrick <DisplayString IncludeView="arg1">, {((ParsedTemplateArgument *)(this+1))+1,view(cpp)na}{this,view(arg2)na}</DisplayString> 744e5dd7070Spatrick <DisplayString IncludeView="arg2" Condition="NumArgs==2"></DisplayString> 745e5dd7070Spatrick <DisplayString IncludeView="arg1">, ...</DisplayString> 746e5dd7070Spatrick <DisplayString>{Name,na}<{this,view(arg0)na}></DisplayString> 747e5dd7070Spatrick <Expand> 748e5dd7070Spatrick <Item Name="Name">Name</Item> 749e5dd7070Spatrick <Synthetic Name="Arguments"> 750e5dd7070Spatrick <DisplayString>{this,view(arg0)na}</DisplayString> 751e5dd7070Spatrick <Expand> 752e5dd7070Spatrick <ArrayItems> 753e5dd7070Spatrick <Size>NumArgs</Size> 754e5dd7070Spatrick <ValuePointer>(ParsedTemplateArgument *)(this+1)</ValuePointer> 755e5dd7070Spatrick </ArrayItems> 756e5dd7070Spatrick </Expand> 757e5dd7070Spatrick </Synthetic> 758e5dd7070Spatrick <Item Name="Operator">Operator</Item> 759e5dd7070Spatrick </Expand> 760e5dd7070Spatrick </Type> 761e5dd7070Spatrick <Type Name="clang::Token"> 762e5dd7070Spatrick <DisplayString Condition="Kind == clang::tok::annot_template_id">{{annot_template_id ({(clang::TemplateIdAnnotation *)(PtrData),na})}}</DisplayString> 763e5dd7070Spatrick <DisplayString Condition="Kind == clang::tok::identifier">{{Identifier ({(clang::IdentifierInfo *)(PtrData),na})}}</DisplayString> 764e5dd7070Spatrick <DisplayString>{(clang::tok::TokenKind)Kind,en}</DisplayString> 765e5dd7070Spatrick </Type> 766e5dd7070Spatrick <Type Name="clang::Lexer"> 767e5dd7070Spatrick <DisplayString>{BufferPtr,nasb}</DisplayString> 768e5dd7070Spatrick </Type> 769e5dd7070Spatrick <Type Name="clang::Preprocessor::IncludeStackInfo"> 770e5dd7070Spatrick <DisplayString Condition="TheLexer._Mypair._Myval2 != 0">{TheLexer._Mypair._Myval2,na}</DisplayString> 771e5dd7070Spatrick <DisplayString Condition="TheTokenLexer._Mypair._Myval2 != 0">Expanding Macro: {TheTokenLexer._Mypair._Myval2,na}</DisplayString> 772e5dd7070Spatrick <DisplayString></DisplayString> 773e5dd7070Spatrick </Type> 774e5dd7070Spatrick <Type Name="clang::Preprocessor"> 775e5dd7070Spatrick <DisplayString IncludeView="cached" Condition="CachedLexPos < CachedTokens.Size"> 776e5dd7070Spatrick [{(Token *)(CachedTokens.BeginX) + CachedLexPos,na}] {IncludeMacroStack._Mypair._Myval2._Mylast - 1,na} 777e5dd7070Spatrick </DisplayString> 778e5dd7070Spatrick <DisplayString IncludeView="cached"> {IncludeMacroStack._Mypair._Myval2._Mylast - 1,na}</DisplayString> 779e5dd7070Spatrick <DisplayString Condition="CurLexer._Mypair._Myval2 != 0">{CurLexer._Mypair._Myval2,na}</DisplayString> 780e5dd7070Spatrick <DisplayString Condition="CurTokenLexer._Mypair._Myval2 != 0">Expanding Macro: {CurTokenLexer._Mypair._Myval2,na}</DisplayString> 781e5dd7070Spatrick <!-- Can't use CurLexerKind because natvis sees the type rather than the variable --> 782e5dd7070Spatrick <DisplayString Condition="IncludeMacroStack._Mypair._Myval2._Mylast - IncludeMacroStack._Mypair._Myval2._Myfirst"> 783e5dd7070Spatrick {this,view(cached)} 784e5dd7070Spatrick </DisplayString> 785e5dd7070Spatrick <DisplayString>CLK_LexAfterModuleImport</DisplayString> 786e5dd7070Spatrick </Type> 787e5dd7070Spatrick <Type Name="clang::Parser"> 788e5dd7070Spatrick <DisplayString>[{Tok}] {PP,na}</DisplayString> 789e5dd7070Spatrick </Type> 790e5dd7070Spatrick <Type Name="clang::LambdaIntroducer::LambdaCapture"> 791e5dd7070Spatrick <DisplayString Condition="Kind == LCK_This">this</DisplayString> 792e5dd7070Spatrick <DisplayString Condition="Kind == LCK_StarThis">*this</DisplayString> 793e5dd7070Spatrick <DisplayString Condition="Kind == LCK_ByCopy">{Id}</DisplayString> 794e5dd7070Spatrick <DisplayString Condition="Kind == LCK_ByRef">&{Id}</DisplayString> 795e5dd7070Spatrick <DisplayString>No visualizer for {Kind}</DisplayString> 796e5dd7070Spatrick </Type> 797e5dd7070Spatrick <Type Name="clang::LambdaIntroducer"> 798e5dd7070Spatrick <DisplayString IncludeView="default" Condition="Default==LCD_None"></DisplayString> 799e5dd7070Spatrick <DisplayString IncludeView="default" Condition="Default==LCD_ByCopy">=,</DisplayString> 800e5dd7070Spatrick <DisplayString IncludeView="default" Condition="Default==LCD_ByRef">&,</DisplayString> 801e5dd7070Spatrick <DisplayString IncludeView="capture0" Condition="Captures.Size==0"></DisplayString> 802e5dd7070Spatrick <DisplayString IncludeView="capture0">{(LambdaCapture *)(Captures.BeginX),na}{this,view(capture1)na}</DisplayString> 803e5dd7070Spatrick <DisplayString IncludeView="capture1" Condition="Captures.Size==1"></DisplayString> 804e5dd7070Spatrick <DisplayString IncludeView="capture1">,{(LambdaCapture *)(Captures.BeginX)+1,na}{this,view(capture2)na}</DisplayString> 805e5dd7070Spatrick <DisplayString IncludeView="capture2" Condition="Captures.Size==2"></DisplayString> 806e5dd7070Spatrick <DisplayString IncludeView="capture2">,{(LambdaCapture *)(Captures.BeginX)+2,na}{this,view(capture3)na}</DisplayString> 807e5dd7070Spatrick <DisplayString IncludeView="capture3" Condition="Captures.Size==3"></DisplayString> 808e5dd7070Spatrick <DisplayString IncludeView="capture3">,...</DisplayString> 809e5dd7070Spatrick <DisplayString>[{this,view(default)na}{this,view(capture0)na}]</DisplayString> 810e5dd7070Spatrick </Type> 811e5dd7070Spatrick <Type Name="clang::DeclSpec"> 812*12c85518Srobert <DisplayString IncludeView="extra" Condition="TypeSpecType == TST_typename || TypeSpecType == TST_typeofType || TypeSpecType == TST_underlying_type || TypeSpecType == TST_atomic"> 813e5dd7070Spatrick , [{TypeRep}] 814e5dd7070Spatrick </DisplayString> 815e5dd7070Spatrick <DisplayString IncludeView="extra" Condition="TypeSpecType == TST_typeofExpr || TypeSpecType == TST_decltype"> 816e5dd7070Spatrick , [{ExprRep}] 817e5dd7070Spatrick </DisplayString> 818e5dd7070Spatrick <DisplayString IncludeView="extra" Condition="TypeSpecType == TST_enum || TypeSpecType == TST_struct || TypeSpecType == TST_interface || TypeSpecType == TST_union || TypeSpecType == TST_class"> 819e5dd7070Spatrick , [{DeclRep}] 820e5dd7070Spatrick </DisplayString> 821e5dd7070Spatrick <DisplayString IncludeView="extra"></DisplayString> 822e5dd7070Spatrick <DisplayString>[{(clang::DeclSpec::SCS)StorageClassSpec,en}], [{(clang::TypeSpecifierType)TypeSpecType,en}]{this,view(extra)na}</DisplayString> 823e5dd7070Spatrick <Expand> 824e5dd7070Spatrick <Item Name="StorageClassSpec">(clang::DeclSpec::SCS)StorageClassSpec</Item> 825e5dd7070Spatrick <Item Name="TypeSpecType">(clang::TypeSpecifierType)TypeSpecType</Item> 826*12c85518Srobert <Item Name="TypeRep" Condition="TypeSpecType == TST_typename || TypeSpecType == TST_typeofType || TypeSpecType == TST_underlying_type || TypeSpecType == TST_atomic"> 827e5dd7070Spatrick TypeRep 828e5dd7070Spatrick </Item> 829e5dd7070Spatrick <Item Name="ExprRep" Condition="TypeSpecType == TST_typeofExpr || TypeSpecType == TST_decltype"> 830e5dd7070Spatrick ExprRep 831e5dd7070Spatrick </Item> 832e5dd7070Spatrick <Item Name="DeclRep" Condition="TypeSpecType == TST_enum || TypeSpecType == TST_struct || TypeSpecType == TST_interface || TypeSpecType == TST_union || TypeSpecType == TST_class"> 833e5dd7070Spatrick DeclRep 834e5dd7070Spatrick </Item> 835e5dd7070Spatrick 836e5dd7070Spatrick </Expand> 837e5dd7070Spatrick </Type> 838e5dd7070Spatrick <Type Name="clang::PragmaHandler"> 839e5dd7070Spatrick <DisplayString>{Name,s}</DisplayString> 840e5dd7070Spatrick </Type> 841e5dd7070Spatrick <Type Name="clang::FileEntry"> 842e5dd7070Spatrick <DisplayString>{Name,s}</DisplayString> 843e5dd7070Spatrick </Type> 844e5dd7070Spatrick <Type Name="clang::DirectoryEntry"> 845e5dd7070Spatrick <DisplayString>{Name,s}</DisplayString> 846e5dd7070Spatrick </Type> 847e5dd7070Spatrick <Type Name="clang::VarDecl::VarDeclBitfields"> 848e5dd7070Spatrick <Expand> 849e5dd7070Spatrick <Item Name="StorageClass">(clang::StorageClass)SClass</Item> 850e5dd7070Spatrick <Item Name="ThreadStorageClass">(clang::ThreadStorageClassSpecifier)TSCSpec</Item> 851e5dd7070Spatrick <Item Name="InitStyle">(clang::VarDecl::InitializationStyle)InitStyle</Item> 852e5dd7070Spatrick </Expand> 853e5dd7070Spatrick </Type> 854e5dd7070Spatrick <Type Name="clang::DeclaratorDecl"> 855e5dd7070Spatrick <DisplayString>{DeclType,view(left)} {Name,view(cpp)}{DeclType,view(right)}</DisplayString> 856e5dd7070Spatrick <Expand> 857e5dd7070Spatrick <Item Name="Name">Name</Item> 858e5dd7070Spatrick <Item Name="DeclType">DeclType</Item> 859e5dd7070Spatrick </Expand> 860e5dd7070Spatrick </Type> 861e5dd7070Spatrick <Type Name="clang::VarDecl"> 862e5dd7070Spatrick <DisplayString>{(DeclaratorDecl*)this,nand}</DisplayString> 863e5dd7070Spatrick <Expand> 864e5dd7070Spatrick <ExpandedItem>(DeclaratorDecl*)this,nd</ExpandedItem> 865e5dd7070Spatrick <Item Name="Init">Init</Item> 866e5dd7070Spatrick <Item Name="VarDeclBits">VarDeclBits</Item> 867e5dd7070Spatrick </Expand> 868e5dd7070Spatrick </Type> 869e5dd7070Spatrick <Type Name="clang::ParmVarDecl"> 870e5dd7070Spatrick <DisplayString>{*(VarDecl*)this,nd}</DisplayString> 871e5dd7070Spatrick <Expand> 872e5dd7070Spatrick <Item Name="ParmVarDeclBits">ParmVarDeclBits</Item> 873e5dd7070Spatrick <ExpandedItem>*(VarDecl*)this,nd</ExpandedItem> 874e5dd7070Spatrick </Expand> 875e5dd7070Spatrick </Type> 876e5dd7070Spatrick <Type Name="clang::ExplicitSpecifier"> 877e5dd7070Spatrick <DisplayString Condition="((ExplicitSpec.Value>1) & 3) == ExplicitSpecKind::ResolvedTrue" IncludeView="cpp">{"explicit ",sb}</DisplayString> 878e5dd7070Spatrick <DisplayString Condition="((ExplicitSpec.Value>1) & 3) == ExplicitSpecKind::ResolvedFalse" IncludeView="cpp"></DisplayString> 879e5dd7070Spatrick <DisplayString Condition="((ExplicitSpec.Value>1) & 3) == ExplicitSpecKind::Unresolved" IncludeView="cpp">explicit({ExplicitSpec,view(ptr)na})</DisplayString> 880e5dd7070Spatrick <DisplayString Condition="(ExplicitSpec.Value&~7) == 0">{ExplicitSpec,view(int)en}</DisplayString> 881e5dd7070Spatrick <DisplayString>{ExplicitSpec,view(int)en} : {ExplicitSpec,view(ptr)na}</DisplayString> 882e5dd7070Spatrick </Type> 883e5dd7070Spatrick <Type Name="clang::CXXDeductionGuideDecl"> 884e5dd7070Spatrick <DisplayString>{ExplicitSpec,view(cpp)}{Name,view(cpp)nd}({(FunctionDecl*)this,view(parm0)nand}) -> {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)}</DisplayString> 885e5dd7070Spatrick <Expand> 886e5dd7070Spatrick <Item Name="ExplicitSpec">ExplicitSpec</Item> 887e5dd7070Spatrick <Item Name="IsCopyDeductionCandidate">(bool)FunctionDeclBits.IsCopyDeductionCandidate</Item> 888e5dd7070Spatrick <ExpandedItem>(FunctionDecl*)this,nd</ExpandedItem> 889e5dd7070Spatrick </Expand> 890e5dd7070Spatrick </Type> 891e5dd7070Spatrick <Type Name="clang::FunctionDecl"> 892e5dd7070Spatrick <DisplayString IncludeView="retType">{((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)}</DisplayString> 893e5dd7070Spatrick <DisplayString IncludeView="parm0" Condition="0 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> 894e5dd7070Spatrick <DisplayString IncludeView="parm0">{ParamInfo[0],na}{*this,view(parm1)nd}</DisplayString> 895e5dd7070Spatrick <DisplayString IncludeView="parm1" Condition="1 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> 896e5dd7070Spatrick <DisplayString IncludeView="parm1">, {ParamInfo[1],na}{*this,view(parm2)nd}</DisplayString> 897e5dd7070Spatrick <DisplayString IncludeView="parm2" Condition="2 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> 898e5dd7070Spatrick <DisplayString IncludeView="parm2">, {ParamInfo[2],na}{*this,view(parm3)nd}</DisplayString> 899e5dd7070Spatrick <DisplayString IncludeView="parm3" Condition="3 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> 900e5dd7070Spatrick <DisplayString IncludeView="parm3">, {ParamInfo[3],na}{*this,view(parm4)nd}</DisplayString> 901e5dd7070Spatrick <DisplayString IncludeView="parm4" Condition="4 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> 902e5dd7070Spatrick <DisplayString IncludeView="parm4">, {ParamInfo[4],na}{*this,view(parm5)nd}</DisplayString> 903e5dd7070Spatrick <DisplayString IncludeView="parm5" Condition="5 == ((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams"></DisplayString> 904e5dd7070Spatrick <DisplayString IncludeView="parm5">, /* expand for more params */</DisplayString> 905e5dd7070Spatrick <DisplayString Condition="((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.HasTrailingReturn"> 906e5dd7070Spatrick auto {Name,view(cpp)nd}({*this,view(parm0)nd}) -> {((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType,view(cpp)} 907e5dd7070Spatrick </DisplayString> 908e5dd7070Spatrick <DisplayString>{this,view(retType)nand} {Name,view(cpp)nd}({*this,view(parm0)nd})</DisplayString> 909e5dd7070Spatrick <Expand> 910e5dd7070Spatrick <ExpandedItem>(clang::DeclaratorDecl *)this,nd</ExpandedItem> 911e5dd7070Spatrick <Item Name="ReturnType">((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->ResultType</Item> 912e5dd7070Spatrick <Synthetic Name="Parameter Types"> 913e5dd7070Spatrick <DisplayString>{*this,view(parm0)nd}</DisplayString> 914e5dd7070Spatrick <Expand> 915e5dd7070Spatrick <ArrayItems> 916e5dd7070Spatrick <Size>((clang::FunctionProtoType *)((clang::ExtQualsTypeCommonBase *)(((uintptr_t)DeclType.Value.Value) & ~15))->BaseType)->FunctionTypeBits.NumParams</Size> 917e5dd7070Spatrick <ValuePointer>ParamInfo</ValuePointer> 918e5dd7070Spatrick </ArrayItems> 919e5dd7070Spatrick </Expand> 920e5dd7070Spatrick </Synthetic> 921e5dd7070Spatrick <Item Name="TemplateOrSpecialization">TemplateOrSpecialization</Item> 922e5dd7070Spatrick </Expand> 923e5dd7070Spatrick </Type> 924e5dd7070Spatrick <Type Name="clang::OpaquePtr<*>"> 925e5dd7070Spatrick <DisplayString>{*($T1*)&Ptr}</DisplayString> 926e5dd7070Spatrick <Expand> 927e5dd7070Spatrick <ExpandedItem>($T1*)&Ptr</ExpandedItem> 928e5dd7070Spatrick </Expand> 929e5dd7070Spatrick </Type> 930e5dd7070Spatrick <Type Name="clang::UnionOpaquePtr<*>"> 931e5dd7070Spatrick <DisplayString>{($T1 *)Ptr}</DisplayString> 932e5dd7070Spatrick <Expand> 933e5dd7070Spatrick <ExpandedItem>($T1 *)Ptr</ExpandedItem> 934e5dd7070Spatrick </Expand> 935e5dd7070Spatrick </Type> 936e5dd7070Spatrick <Type Name="clang::TemplateParameterList"> 937e5dd7070Spatrick <DisplayString IncludeView="parm0" Condition="NumParams==0"></DisplayString> 938e5dd7070Spatrick <DisplayString IncludeView="parm0">{*((NamedDecl **)(this+1))[0],view(cpp)}{*this,view(parm1)}</DisplayString> 939e5dd7070Spatrick <DisplayString IncludeView="parm1" Condition="NumParams==1"></DisplayString> 940e5dd7070Spatrick <DisplayString IncludeView="parm1">, {*((NamedDecl **)(this+1))[1],view(cpp)}{*this,view(parm2)}</DisplayString> 941e5dd7070Spatrick <DisplayString IncludeView="parm2" Condition="NumParams==2"></DisplayString> 942e5dd7070Spatrick <DisplayString IncludeView="parm2">, {*((NamedDecl **)(this+1))[2],view(cpp)}{*this,view(parm3)}</DisplayString> 943e5dd7070Spatrick <DisplayString IncludeView="parm3" Condition="NumParams==3"></DisplayString> 944e5dd7070Spatrick <DisplayString IncludeView="parm3">, {*((NamedDecl **)(this+1))[3],view(cpp)}{*this,view(parm4)}</DisplayString> 945e5dd7070Spatrick <DisplayString IncludeView="parm4" Condition="NumParams==4"></DisplayString> 946e5dd7070Spatrick <DisplayString IncludeView="parm4">, {*((NamedDecl **)(this+1))[4],view(cpp)}{*this,view(parm5)}</DisplayString> 947e5dd7070Spatrick <DisplayString IncludeView="parm5" Condition="NumParams==5"></DisplayString> 948e5dd7070Spatrick <DisplayString IncludeView="parm5">, /* Expand for more params */</DisplayString> 949e5dd7070Spatrick <DisplayString><{*this,view(parm0)}></DisplayString> 950e5dd7070Spatrick <Expand> 951e5dd7070Spatrick <ArrayItems> 952e5dd7070Spatrick <Size>NumParams</Size> 953e5dd7070Spatrick <ValuePointer>(NamedDecl **)(this+1)</ValuePointer> 954e5dd7070Spatrick </ArrayItems> 955e5dd7070Spatrick </Expand> 956e5dd7070Spatrick </Type> 957e5dd7070Spatrick <Type Name="clang::Stmt"> 958e5dd7070Spatrick <DisplayString>{(clang::Stmt::StmtClass)StmtBits.sClass,en}</DisplayString> 959e5dd7070Spatrick <Expand> 960e5dd7070Spatrick <Item Name="Class">(clang::Stmt::StmtClass)StmtBits.sClass,en</Item> 961e5dd7070Spatrick </Expand> 962e5dd7070Spatrick </Type> 963e5dd7070Spatrick <Type Name="clang::Expr"> 964e5dd7070Spatrick <DisplayString>Expression of class {(clang::Stmt::StmtClass)StmtBits.sClass,en} and type {TR,view(cpp)}</DisplayString> 965e5dd7070Spatrick </Type> 966e5dd7070Spatrick <Type Name="clang::DeclAccessPair"> 967e5dd7070Spatrick <DisplayString IncludeView="access" Condition="(Ptr&Mask) == clang::AS_public">public</DisplayString> 968e5dd7070Spatrick <DisplayString IncludeView="access" Condition="(Ptr&Mask) == clang::AS_protected">protected</DisplayString> 969e5dd7070Spatrick <DisplayString IncludeView="access" Condition="(Ptr&Mask) == clang::AS_private">private</DisplayString> 970e5dd7070Spatrick <DisplayString IncludeView="access" Condition="(Ptr&Mask) == clang::AS_none"></DisplayString> 971e5dd7070Spatrick <DisplayString IncludeView="decl">{*(clang::NamedDecl *)(Ptr&~Mask)}</DisplayString> 972e5dd7070Spatrick <DisplayString>{*this,view(access)} {*this,view(decl)}</DisplayString> 973e5dd7070Spatrick <Expand> 974e5dd7070Spatrick <Item Name="access">(clang::AccessSpecifier)(Ptr&Mask),en</Item> 975e5dd7070Spatrick <Item Name="decl">*(clang::NamedDecl *)(Ptr&~Mask)</Item> 976e5dd7070Spatrick </Expand> 977e5dd7070Spatrick </Type> 978e5dd7070Spatrick <Type Name="clang::UnqualifiedId"> 979e5dd7070Spatrick <DisplayString Condition="Kind==UnqualifiedIdKind::IK_Identifier">[IK_Identifier] {*Identifier}</DisplayString> 980e5dd7070Spatrick <DisplayString Condition="Kind==UnqualifiedIdKind::IK_OperatorFunctionId">[IK_OperatorFunctionId] {OperatorFunctionId}</DisplayString> 981e5dd7070Spatrick <DisplayString Condition="Kind==UnqualifiedIdKind::IK_ConversionFunctionId">[IK_ConversionFunctionId] {ConversionFunctionId}</DisplayString> 982e5dd7070Spatrick <DisplayString Condition="Kind==UnqualifiedIdKind::IK_ConstructorName">[IK_ConstructorName] {ConstructorName}</DisplayString> 983e5dd7070Spatrick <DisplayString Condition="Kind==UnqualifiedIdKind::IK_DestructorName">[IK_DestructorName] {DestructorName}</DisplayString> 984e5dd7070Spatrick <DisplayString Condition="Kind==UnqualifiedIdKind::IK_DeductionGuideName">[IK_DeductionGuideName] {TemplateName}</DisplayString> 985e5dd7070Spatrick <DisplayString Condition="Kind==UnqualifiedIdKind::IK_TemplateId">[IK_TemplateId] {TemplateId}</DisplayString> 986e5dd7070Spatrick <DisplayString Condition="Kind==UnqualifiedIdKind::IK_ConstructorTemplateId">[IK_ConstructorTemplateId] {TemplateId}</DisplayString> 987e5dd7070Spatrick <DisplayString>Kind</DisplayString> 988e5dd7070Spatrick <Expand> 989e5dd7070Spatrick <ExpandedItem Condition="Kind==UnqualifiedIdKind::IK_Identifier">Identifier</ExpandedItem> 990e5dd7070Spatrick <ExpandedItem Condition="Kind==UnqualifiedIdKind::IK_OperatorFunctionId">OperatorFunctionId</ExpandedItem> 991e5dd7070Spatrick <ExpandedItem Condition="Kind==UnqualifiedIdKind::IK_ConversionFunctionId">ConversionFunctionId</ExpandedItem> 992e5dd7070Spatrick <ExpandedItem Condition="Kind==UnqualifiedIdKind::IK_ConstructorName">ConstructorName</ExpandedItem> 993e5dd7070Spatrick <ExpandedItem Condition="Kind==UnqualifiedIdKind::IK_DestructorName">DestructorName</ExpandedItem> 994e5dd7070Spatrick <ExpandedItem Condition="Kind==UnqualifiedIdKind::IK_DeductionGuideName">TemplateName</ExpandedItem> 995e5dd7070Spatrick <ExpandedItem Condition="Kind==UnqualifiedIdKind::IK_TemplateId">TemplateId</ExpandedItem> 996e5dd7070Spatrick <ExpandedItem Condition="Kind==UnqualifiedIdKind::IK_ConstructorTemplateId">TemplateId</ExpandedItem> 997e5dd7070Spatrick </Expand> 998e5dd7070Spatrick </Type> 999e5dd7070Spatrick <Type Name="clang::DeclGroup"> 1000e5dd7070Spatrick <DisplayString>NumDecls={NumDecls}</DisplayString> 1001e5dd7070Spatrick <Expand> 1002e5dd7070Spatrick <ArrayItems> 1003e5dd7070Spatrick <Size>NumDecls</Size> 1004e5dd7070Spatrick <ValuePointer>(Decl **)(this+1)</ValuePointer> 1005e5dd7070Spatrick </ArrayItems> 1006e5dd7070Spatrick </Expand> 1007e5dd7070Spatrick </Type> 1008e5dd7070Spatrick <Type Name="clang::DeclGroupRef"> 1009e5dd7070Spatrick <DisplayString Condition="(Kind)((uintptr_t)D&1)==SingleDeclKind">{*D}</DisplayString> 1010e5dd7070Spatrick <DisplayString>{*(DeclGroup *)((uintptr_t)D&~1)}</DisplayString> 1011e5dd7070Spatrick <Expand> 1012e5dd7070Spatrick <ExpandedItem Condition="(Kind)((uintptr_t)D&1)==SingleDeclKind">D</ExpandedItem> 1013e5dd7070Spatrick <ExpandedItem Condition="(Kind)((uintptr_t)D&1)==DeclGroupKind">(DeclGroup *)((uintptr_t)D&~1)</ExpandedItem> 1014e5dd7070Spatrick </Expand> 1015e5dd7070Spatrick </Type> 1016e5dd7070Spatrick <Type Name="clang::Declarator"> 1017e5dd7070Spatrick <DisplayString>{DS} {Name}</DisplayString> 1018e5dd7070Spatrick </Type> 1019e5dd7070Spatrick <Type Name="clang::UnresolvedSet<*>"> 1020e5dd7070Spatrick <DisplayString>{Decls}</DisplayString> 1021e5dd7070Spatrick <Expand> 1022e5dd7070Spatrick <ExpandedItem>Decls</ExpandedItem> 1023e5dd7070Spatrick </Expand> 1024e5dd7070Spatrick </Type> 1025e5dd7070Spatrick <Type Name="clang::LookupResult"> 1026e5dd7070Spatrick <DisplayString Condition="ResultKind == clang::LookupResult::Ambiguous">{Ambiguity,en}: {Decls}</DisplayString> 1027e5dd7070Spatrick <DisplayString>{ResultKind,en}: {Decls}</DisplayString> 1028e5dd7070Spatrick </Type> 1029e5dd7070Spatrick <Type Name="clang::ActionResult<*, 0>"> 1030e5dd7070Spatrick <DisplayString Condition="Invalid">Invalid</DisplayString> 1031e5dd7070Spatrick <DisplayString Condition="!*(void **)&Val">Unset</DisplayString> 1032e5dd7070Spatrick <DisplayString>{Val}</DisplayString> 1033e5dd7070Spatrick </Type> 1034e5dd7070Spatrick <Type Name="clang::ActionResult<*, 1>"> 1035e5dd7070Spatrick <DisplayString Condition="PtrWithInvalid&1">Invalid</DisplayString> 1036e5dd7070Spatrick <DisplayString Condition="!PtrWithInvalid">Unset</DisplayString> 1037e5dd7070Spatrick <DisplayString>{($T1)(PtrWithInvalid&~1)}</DisplayString> 1038e5dd7070Spatrick <Expand> 1039e5dd7070Spatrick <Item Name="Invalid">(bool)(PtrWithInvalid&1)</Item> 1040e5dd7070Spatrick <Item Name="Val">($T1)(PtrWithInvalid&~1)</Item> 1041e5dd7070Spatrick </Expand> 1042e5dd7070Spatrick </Type> 1043e5dd7070Spatrick</AutoVisualizer> 1044