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