1*8975f5c5SAndroid Build Coastguard Worker<?xml version="1.0" encoding="utf-8" ?> 2*8975f5c5SAndroid Build Coastguard Worker<AutoVisualizer 3*8975f5c5SAndroid Build Coastguard Worker xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010"> 4*8975f5c5SAndroid Build Coastguard Worker 5*8975f5c5SAndroid Build Coastguard Worker <!-- libc++'s __compressed_pair is an internal type used pervasively for 6*8975f5c5SAndroid Build Coastguard Worker doing the empty base class optimization. 7*8975f5c5SAndroid Build Coastguard Worker 8*8975f5c5SAndroid Build Coastguard Worker __compressed_pair<U,V> derives from __compressed_pair_elem<U,0> and 9*8975f5c5SAndroid Build Coastguard Worker __compressed_pair_elem<V,1>. __compressed_pair_elem<T> is specialized on 10*8975f5c5SAndroid Build Coastguard Worker a 3rd template parameter: 11*8975f5c5SAndroid Build Coastguard Worker * if T is empty and non-final the 3rd param is 1 and it derives from T 12*8975f5c5SAndroid Build Coastguard Worker * else it has a member variable __value_ of type T 13*8975f5c5SAndroid Build Coastguard Worker --> 14*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::__compressed_pair_elem<*,*,0>"> 15*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{__value_}</DisplayString> 16*8975f5c5SAndroid Build Coastguard Worker <Expand> 17*8975f5c5SAndroid Build Coastguard Worker <ExpandedItem>__value_</ExpandedItem> 18*8975f5c5SAndroid Build Coastguard Worker </Expand> 19*8975f5c5SAndroid Build Coastguard Worker </Type> 20*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::__compressed_pair_elem<*,*,1>"> 21*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{*($T1*)this}</DisplayString> 22*8975f5c5SAndroid Build Coastguard Worker <Expand> 23*8975f5c5SAndroid Build Coastguard Worker <ExpandedItem>*($T1*)this</ExpandedItem> 24*8975f5c5SAndroid Build Coastguard Worker </Expand> 25*8975f5c5SAndroid Build Coastguard Worker </Type> 26*8975f5c5SAndroid Build Coastguard Worker 27*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::array<*,*>"> 28*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={$T2} }}</DisplayString> 29*8975f5c5SAndroid Build Coastguard Worker <Expand> 30*8975f5c5SAndroid Build Coastguard Worker <ArrayItems> 31*8975f5c5SAndroid Build Coastguard Worker <Size>$T2</Size> 32*8975f5c5SAndroid Build Coastguard Worker <ValuePointer>__elems_</ValuePointer> 33*8975f5c5SAndroid Build Coastguard Worker </ArrayItems> 34*8975f5c5SAndroid Build Coastguard Worker </Expand> 35*8975f5c5SAndroid Build Coastguard Worker </Type> 36*8975f5c5SAndroid Build Coastguard Worker 37*8975f5c5SAndroid Build Coastguard Worker <!--libc++'s short string optimization: 38*8975f5c5SAndroid Build Coastguard Worker A basic_string is 3 size_t words long. In the "alternate string layout" 39*8975f5c5SAndroid Build Coastguard Worker that we use, they are: pointer to data, size, capacity. 40*8975f5c5SAndroid Build Coastguard Worker (In the normal layout, it's capacity, size, data instead.) 41*8975f5c5SAndroid Build Coastguard Worker If a string is short enough that it fits in these three size_ts instead, 42*8975f5c5SAndroid Build Coastguard Worker the string data is stored inline in these 3 words, with the last byte of 43*8975f5c5SAndroid Build Coastguard Worker the storage storing the length of the string. 44*8975f5c5SAndroid Build Coastguard Worker The highest bit of the "capacity" word is set for normal, "long" strings, 45*8975f5c5SAndroid Build Coastguard Worker and that bit needs to be masked out to know the real capacity. 46*8975f5c5SAndroid Build Coastguard Worker If this bit is not set, the string data is stored inline. 47*8975f5c5SAndroid Build Coastguard Worker (In the normal layout, if the lowest bit in the first byte is set, 48*8975f5c5SAndroid Build Coastguard Worker it's a "long" string, requiring a long string to always have even 49*8975f5c5SAndroid Build Coastguard Worker capacity. A short string here stores its length in the first byte 50*8975f5c5SAndroid Build Coastguard Worker and the inline data in the remaining storage.) 51*8975f5c5SAndroid Build Coastguard Worker --> 52*8975f5c5SAndroid Build Coastguard Worker 53*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::basic_string<char,*>"> 54*8975f5c5SAndroid Build Coastguard Worker <!--<Intrinsic Name="is_long" 55*8975f5c5SAndroid Build Coastguard Worker Expression="((__rep*)&__r_)->__s.__size_ & 0x80" />--> 56*8975f5c5SAndroid Build Coastguard Worker <!-- The above doesn't work because of https://llvm.org/PR41615 57*8975f5c5SAndroid Build Coastguard Worker TODO(thakis): Now that we have clang r362038, try the above approach 58*8975f5c5SAndroid Build Coastguard Worker again. 59*8975f5c5SAndroid Build Coastguard Worker The below assumes the alternate string layout and little endianness :/ 60*8975f5c5SAndroid Build Coastguard Worker --> 61*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="is_long" 62*8975f5c5SAndroid Build Coastguard Worker Expression="*(((char*)this) + 3*sizeof(size_t) - 1) & 0x80" /> 63*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="is_long()">{*(char**)this}</DisplayString> 64*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="!is_long()">{(char*)this}</DisplayString> 65*8975f5c5SAndroid Build Coastguard Worker <StringView Condition="is_long()">*(char**)this</StringView> 66*8975f5c5SAndroid Build Coastguard Worker <StringView Condition="!is_long()">(char*)this</StringView> 67*8975f5c5SAndroid Build Coastguard Worker <Expand> 68*8975f5c5SAndroid Build Coastguard Worker <Item Name="[size]" Condition="is_long()" 69*8975f5c5SAndroid Build Coastguard Worker ExcludeView="simple">((size_t*)this)[1]</Item> 70*8975f5c5SAndroid Build Coastguard Worker <Item Name="[size]" Condition="!is_long()" 71*8975f5c5SAndroid Build Coastguard Worker ExcludeView="simple">*(((char*)this) + 3*sizeof(size_t) - 1)</Item> 72*8975f5c5SAndroid Build Coastguard Worker <Item Name="[capacity]" Condition="is_long()" ExcludeView="simple"> 73*8975f5c5SAndroid Build Coastguard Worker ((size_t*)this)[2] & (~((size_t)0) >> 1) 74*8975f5c5SAndroid Build Coastguard Worker </Item> 75*8975f5c5SAndroid Build Coastguard Worker <Item Name="[capacity]" Condition="!is_long()" 76*8975f5c5SAndroid Build Coastguard Worker ExcludeView="simple">22</Item> 77*8975f5c5SAndroid Build Coastguard Worker <ArrayItems> 78*8975f5c5SAndroid Build Coastguard Worker <Size Condition="is_long()">((size_t*)this)[1]</Size> 79*8975f5c5SAndroid Build Coastguard Worker <Size Condition="!is_long()"> 80*8975f5c5SAndroid Build Coastguard Worker *(((char*)this) + 3*sizeof(size_t) - 1) 81*8975f5c5SAndroid Build Coastguard Worker </Size> 82*8975f5c5SAndroid Build Coastguard Worker <ValuePointer Condition="is_long()">*(char**)this</ValuePointer> 83*8975f5c5SAndroid Build Coastguard Worker <ValuePointer Condition="!is_long()">(char*)this</ValuePointer> 84*8975f5c5SAndroid Build Coastguard Worker </ArrayItems> 85*8975f5c5SAndroid Build Coastguard Worker </Expand> 86*8975f5c5SAndroid Build Coastguard Worker </Type> 87*8975f5c5SAndroid Build Coastguard Worker 88*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::basic_string<wchar_t,*>"> 89*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="is_long" 90*8975f5c5SAndroid Build Coastguard Worker Expression="*(((char*)this) + 3*sizeof(size_t) - 1) & 0x80" /> 91*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="is_long()">{*(wchar_t**)this}</DisplayString> 92*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="!is_long()">{(wchar_t*)this}</DisplayString> 93*8975f5c5SAndroid Build Coastguard Worker <StringView Condition="is_long()">*(wchar_t**)this</StringView> 94*8975f5c5SAndroid Build Coastguard Worker <StringView Condition="!is_long()">(wchar_t*)this</StringView> 95*8975f5c5SAndroid Build Coastguard Worker <Expand> 96*8975f5c5SAndroid Build Coastguard Worker <Item Name="[size]" Condition="is_long()" 97*8975f5c5SAndroid Build Coastguard Worker ExcludeView="simple">((size_t*)this)[1]</Item> 98*8975f5c5SAndroid Build Coastguard Worker <Item Name="[size]" Condition="!is_long()" 99*8975f5c5SAndroid Build Coastguard Worker ExcludeView="simple">*(((char*)this) + 3*sizeof(size_t) - 1)</Item> 100*8975f5c5SAndroid Build Coastguard Worker <Item Name="[capacity]" Condition="is_long()" ExcludeView="simple"> 101*8975f5c5SAndroid Build Coastguard Worker ((size_t*)this)[2] & (~((size_t)0) >> 1) 102*8975f5c5SAndroid Build Coastguard Worker </Item> 103*8975f5c5SAndroid Build Coastguard Worker <Item Name="[capacity]" Condition="!is_long()" 104*8975f5c5SAndroid Build Coastguard Worker ExcludeView="simple">10</Item> 105*8975f5c5SAndroid Build Coastguard Worker <ArrayItems> 106*8975f5c5SAndroid Build Coastguard Worker <Size Condition="is_long()">((size_t*)this)[1]</Size> 107*8975f5c5SAndroid Build Coastguard Worker <Size Condition="!is_long()"> 108*8975f5c5SAndroid Build Coastguard Worker *(((char*)this) + 3*sizeof(size_t) - 1) 109*8975f5c5SAndroid Build Coastguard Worker </Size> 110*8975f5c5SAndroid Build Coastguard Worker <ValuePointer Condition="is_long()">*(wchar_t**)this</ValuePointer> 111*8975f5c5SAndroid Build Coastguard Worker <ValuePointer Condition="!is_long()">(wchar_t*)this</ValuePointer> 112*8975f5c5SAndroid Build Coastguard Worker </ArrayItems> 113*8975f5c5SAndroid Build Coastguard Worker </Expand> 114*8975f5c5SAndroid Build Coastguard Worker </Type> 115*8975f5c5SAndroid Build Coastguard Worker 116*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::deque<*,*>"> 117*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="size" Expression="*(size_type*)&__size_" /> 118*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="block_size" 119*8975f5c5SAndroid Build Coastguard Worker Expression="sizeof($T1) < 256 ? 4096 / sizeof($T1) : 16" /> 120*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={size()} }}</DisplayString> 121*8975f5c5SAndroid Build Coastguard Worker <Expand> 122*8975f5c5SAndroid Build Coastguard Worker <IndexListItems> 123*8975f5c5SAndroid Build Coastguard Worker <Size>size()</Size> 124*8975f5c5SAndroid Build Coastguard Worker <ValueNode> 125*8975f5c5SAndroid Build Coastguard Worker *(*(__map_.__begin_ + ($i + __start_) / block_size()) + 126*8975f5c5SAndroid Build Coastguard Worker ($i + __start_) % block_size()) 127*8975f5c5SAndroid Build Coastguard Worker </ValueNode> 128*8975f5c5SAndroid Build Coastguard Worker </IndexListItems> 129*8975f5c5SAndroid Build Coastguard Worker </Expand> 130*8975f5c5SAndroid Build Coastguard Worker </Type> 131*8975f5c5SAndroid Build Coastguard Worker 132*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::forward_list<*>"> 133*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="head" 134*8975f5c5SAndroid Build Coastguard Worker Expression="((__node_pointer)&__before_begin_)->__next_" /> 135*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="head() == 0">empty</DisplayString> 136*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="head() != 0">non-empty</DisplayString> 137*8975f5c5SAndroid Build Coastguard Worker <Expand> 138*8975f5c5SAndroid Build Coastguard Worker <LinkedListItems> 139*8975f5c5SAndroid Build Coastguard Worker <HeadPointer>head()</HeadPointer> 140*8975f5c5SAndroid Build Coastguard Worker <NextPointer>__next_</NextPointer> 141*8975f5c5SAndroid Build Coastguard Worker <ValueNode>__value_</ValueNode> 142*8975f5c5SAndroid Build Coastguard Worker </LinkedListItems> 143*8975f5c5SAndroid Build Coastguard Worker </Expand> 144*8975f5c5SAndroid Build Coastguard Worker </Type> 145*8975f5c5SAndroid Build Coastguard Worker 146*8975f5c5SAndroid Build Coastguard Worker <!-- Note: Not in Cr! But will win over the one in stl.natvis --> 147*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::initializer_list<*>"> 148*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={__size_} }}</DisplayString> 149*8975f5c5SAndroid Build Coastguard Worker <Expand> 150*8975f5c5SAndroid Build Coastguard Worker <ArrayItems> 151*8975f5c5SAndroid Build Coastguard Worker <Size>__size_</Size> 152*8975f5c5SAndroid Build Coastguard Worker <ValuePointer>__begin_</ValuePointer> 153*8975f5c5SAndroid Build Coastguard Worker </ArrayItems> 154*8975f5c5SAndroid Build Coastguard Worker </Expand> 155*8975f5c5SAndroid Build Coastguard Worker </Type> 156*8975f5c5SAndroid Build Coastguard Worker 157*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::list<*>"> 158*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="size" Expression="*(size_type*)&__size_alloc_" /> 159*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={size()} }}</DisplayString> 160*8975f5c5SAndroid Build Coastguard Worker <Expand> 161*8975f5c5SAndroid Build Coastguard Worker <LinkedListItems> 162*8975f5c5SAndroid Build Coastguard Worker <Size>size()</Size> 163*8975f5c5SAndroid Build Coastguard Worker <HeadPointer>__end_.__next_</HeadPointer> 164*8975f5c5SAndroid Build Coastguard Worker <NextPointer>__next_</NextPointer> 165*8975f5c5SAndroid Build Coastguard Worker <ValueNode> 166*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::list<$T1,$T2>::__node_pointer)this) 167*8975f5c5SAndroid Build Coastguard Worker ->__value_ 168*8975f5c5SAndroid Build Coastguard Worker </ValueNode> 169*8975f5c5SAndroid Build Coastguard Worker </LinkedListItems> 170*8975f5c5SAndroid Build Coastguard Worker </Expand> 171*8975f5c5SAndroid Build Coastguard Worker </Type> 172*8975f5c5SAndroid Build Coastguard Worker 173*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::map<*>"> 174*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="size" Expression="*(size_type*)&__tree_.__pair3_" /> 175*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={size()} }}</DisplayString> 176*8975f5c5SAndroid Build Coastguard Worker <Expand> 177*8975f5c5SAndroid Build Coastguard Worker <Item Name="[size]">size()</Item> 178*8975f5c5SAndroid Build Coastguard Worker <TreeItems> 179*8975f5c5SAndroid Build Coastguard Worker <Size>size()</Size> 180*8975f5c5SAndroid Build Coastguard Worker <HeadPointer> 181*8975f5c5SAndroid Build Coastguard Worker ((__node_pointer)&__tree_.__pair1_)->__left_ 182*8975f5c5SAndroid Build Coastguard Worker </HeadPointer> 183*8975f5c5SAndroid Build Coastguard Worker <LeftPointer> 184*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::map<$T1,$T2,$T3,$T4>::__node_pointer)this) 185*8975f5c5SAndroid Build Coastguard Worker ->__left_ 186*8975f5c5SAndroid Build Coastguard Worker </LeftPointer> 187*8975f5c5SAndroid Build Coastguard Worker <RightPointer> 188*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::map<$T1,$T2,$T3,$T4>::__node_pointer)this) 189*8975f5c5SAndroid Build Coastguard Worker ->__right_ 190*8975f5c5SAndroid Build Coastguard Worker </RightPointer> 191*8975f5c5SAndroid Build Coastguard Worker <ValueNode> 192*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::map<$T1,$T2,$T3,$T4>::__node_pointer)this) 193*8975f5c5SAndroid Build Coastguard Worker ->__value_.__cc_ 194*8975f5c5SAndroid Build Coastguard Worker </ValueNode> 195*8975f5c5SAndroid Build Coastguard Worker </TreeItems> 196*8975f5c5SAndroid Build Coastguard Worker </Expand> 197*8975f5c5SAndroid Build Coastguard Worker </Type> 198*8975f5c5SAndroid Build Coastguard Worker 199*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::multimap<*>"> 200*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="size" Expression="*(size_type*)&__tree_.__pair3_" /> 201*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={size()} }}</DisplayString> 202*8975f5c5SAndroid Build Coastguard Worker <Expand> 203*8975f5c5SAndroid Build Coastguard Worker <Item Name="[size]">size()</Item> 204*8975f5c5SAndroid Build Coastguard Worker <TreeItems> 205*8975f5c5SAndroid Build Coastguard Worker <Size>size()</Size> 206*8975f5c5SAndroid Build Coastguard Worker <HeadPointer> 207*8975f5c5SAndroid Build Coastguard Worker ((__node_pointer)&__tree_.__pair1_)->__left_ 208*8975f5c5SAndroid Build Coastguard Worker </HeadPointer> 209*8975f5c5SAndroid Build Coastguard Worker <LeftPointer> 210*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::multimap<$T1,$T2,$T3,$T4>::__node_pointer)this) 211*8975f5c5SAndroid Build Coastguard Worker ->__left_ 212*8975f5c5SAndroid Build Coastguard Worker </LeftPointer> 213*8975f5c5SAndroid Build Coastguard Worker <RightPointer> 214*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::multimap<$T1,$T2,$T3,$T4>::__node_pointer)this) 215*8975f5c5SAndroid Build Coastguard Worker ->__right_ 216*8975f5c5SAndroid Build Coastguard Worker </RightPointer> 217*8975f5c5SAndroid Build Coastguard Worker <ValueNode> 218*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::multimap<$T1,$T2,$T3,$T4>::__node_pointer)this) 219*8975f5c5SAndroid Build Coastguard Worker ->__value_.__cc_ 220*8975f5c5SAndroid Build Coastguard Worker </ValueNode> 221*8975f5c5SAndroid Build Coastguard Worker </TreeItems> 222*8975f5c5SAndroid Build Coastguard Worker </Expand> 223*8975f5c5SAndroid Build Coastguard Worker </Type> 224*8975f5c5SAndroid Build Coastguard Worker 225*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::multiset<*>"> 226*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="size" Expression="*(size_type*)&__tree_.__pair3_" /> 227*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={size()} }}</DisplayString> 228*8975f5c5SAndroid Build Coastguard Worker <Expand> 229*8975f5c5SAndroid Build Coastguard Worker <Item Name="[size]">size()</Item> 230*8975f5c5SAndroid Build Coastguard Worker <TreeItems> 231*8975f5c5SAndroid Build Coastguard Worker <Size>size()</Size> 232*8975f5c5SAndroid Build Coastguard Worker <HeadPointer> 233*8975f5c5SAndroid Build Coastguard Worker ((__base::__node_pointer)&__tree_.__pair1_)->__left_ 234*8975f5c5SAndroid Build Coastguard Worker </HeadPointer> 235*8975f5c5SAndroid Build Coastguard Worker <LeftPointer> 236*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::multiset<$T1,$T2,$T3>::__base::__node_pointer)this) 237*8975f5c5SAndroid Build Coastguard Worker ->__left_ 238*8975f5c5SAndroid Build Coastguard Worker </LeftPointer> 239*8975f5c5SAndroid Build Coastguard Worker <RightPointer> 240*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::multiset<$T1,$T2,$T3>::__base::__node_pointer)this) 241*8975f5c5SAndroid Build Coastguard Worker ->__right_ 242*8975f5c5SAndroid Build Coastguard Worker </RightPointer> 243*8975f5c5SAndroid Build Coastguard Worker <ValueNode> 244*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::multiset<$T1,$T2,$T3>::__base::__node_pointer)this) 245*8975f5c5SAndroid Build Coastguard Worker ->__value_ 246*8975f5c5SAndroid Build Coastguard Worker </ValueNode> 247*8975f5c5SAndroid Build Coastguard Worker </TreeItems> 248*8975f5c5SAndroid Build Coastguard Worker </Expand> 249*8975f5c5SAndroid Build Coastguard Worker </Type> 250*8975f5c5SAndroid Build Coastguard Worker 251*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::optional<*>"> 252*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="!__engaged_">nullopt</DisplayString> 253*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{__val_}</DisplayString> 254*8975f5c5SAndroid Build Coastguard Worker <Expand> 255*8975f5c5SAndroid Build Coastguard Worker <ExpandedItem Condition="__engaged_">__val_</ExpandedItem> 256*8975f5c5SAndroid Build Coastguard Worker </Expand> 257*8975f5c5SAndroid Build Coastguard Worker </Type> 258*8975f5c5SAndroid Build Coastguard Worker 259*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::priority_queue<*>"> 260*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{c}</DisplayString> 261*8975f5c5SAndroid Build Coastguard Worker <Expand> 262*8975f5c5SAndroid Build Coastguard Worker <ExpandedItem>c</ExpandedItem> 263*8975f5c5SAndroid Build Coastguard Worker <Item Name="[comp]">comp</Item> 264*8975f5c5SAndroid Build Coastguard Worker </Expand> 265*8975f5c5SAndroid Build Coastguard Worker </Type> 266*8975f5c5SAndroid Build Coastguard Worker 267*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::set<*>"> 268*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="size" Expression="*(size_type*)&__tree_.__pair3_" /> 269*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={size()} }}</DisplayString> 270*8975f5c5SAndroid Build Coastguard Worker <Expand> 271*8975f5c5SAndroid Build Coastguard Worker <Item Name="[size]">size()</Item> 272*8975f5c5SAndroid Build Coastguard Worker <TreeItems> 273*8975f5c5SAndroid Build Coastguard Worker <Size>size()</Size> 274*8975f5c5SAndroid Build Coastguard Worker <HeadPointer> 275*8975f5c5SAndroid Build Coastguard Worker ((__base::__node_pointer)&__tree_.__pair1_)->__left_ 276*8975f5c5SAndroid Build Coastguard Worker </HeadPointer> 277*8975f5c5SAndroid Build Coastguard Worker <LeftPointer> 278*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::set<$T1,$T2,$T3>::__base::__node_pointer)this) 279*8975f5c5SAndroid Build Coastguard Worker ->__left_ 280*8975f5c5SAndroid Build Coastguard Worker </LeftPointer> 281*8975f5c5SAndroid Build Coastguard Worker <RightPointer> 282*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::set<$T1,$T2,$T3>::__base::__node_pointer)this) 283*8975f5c5SAndroid Build Coastguard Worker ->__right_ 284*8975f5c5SAndroid Build Coastguard Worker </RightPointer> 285*8975f5c5SAndroid Build Coastguard Worker <ValueNode> 286*8975f5c5SAndroid Build Coastguard Worker ((std::__Cr::set<$T1,$T2,$T3>::__base::__node_pointer)this) 287*8975f5c5SAndroid Build Coastguard Worker ->__value_ 288*8975f5c5SAndroid Build Coastguard Worker </ValueNode> 289*8975f5c5SAndroid Build Coastguard Worker </TreeItems> 290*8975f5c5SAndroid Build Coastguard Worker </Expand> 291*8975f5c5SAndroid Build Coastguard Worker </Type> 292*8975f5c5SAndroid Build Coastguard Worker 293*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::stack<*>"> 294*8975f5c5SAndroid Build Coastguard Worker <AlternativeType Name="std::__Cr::queue<*>" /> 295*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{c}</DisplayString> 296*8975f5c5SAndroid Build Coastguard Worker <Expand> 297*8975f5c5SAndroid Build Coastguard Worker <ExpandedItem>c</ExpandedItem> 298*8975f5c5SAndroid Build Coastguard Worker </Expand> 299*8975f5c5SAndroid Build Coastguard Worker </Type> 300*8975f5c5SAndroid Build Coastguard Worker 301*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::__tuple_leaf<*,*,0>"> 302*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{__value_}</DisplayString> 303*8975f5c5SAndroid Build Coastguard Worker </Type> 304*8975f5c5SAndroid Build Coastguard Worker 305*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::tuple<>"> 306*8975f5c5SAndroid Build Coastguard Worker <DisplayString>()</DisplayString> 307*8975f5c5SAndroid Build Coastguard Worker </Type> 308*8975f5c5SAndroid Build Coastguard Worker 309*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::tuple<*>"> 310*8975f5c5SAndroid Build Coastguard Worker <DisplayString>({(std::__Cr::__tuple_leaf<0,$T1,0>)__base_})</DisplayString> 311*8975f5c5SAndroid Build Coastguard Worker <Expand> 312*8975f5c5SAndroid Build Coastguard Worker <Item Name="[0]">(std::__Cr::__tuple_leaf<0,$T1,0>)__base_</Item> 313*8975f5c5SAndroid Build Coastguard Worker </Expand> 314*8975f5c5SAndroid Build Coastguard Worker </Type> 315*8975f5c5SAndroid Build Coastguard Worker 316*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::tuple<*,*>"> 317*8975f5c5SAndroid Build Coastguard Worker <DisplayString>({(std::__Cr::__tuple_leaf<0,$T1,0>)__base_}, {(std::__Cr::__tuple_leaf<1,$T2,0>)__base_})</DisplayString> 318*8975f5c5SAndroid Build Coastguard Worker <Expand> 319*8975f5c5SAndroid Build Coastguard Worker <Item Name="[0]">(std::__Cr::__tuple_leaf<0,$T1,0>)__base_</Item> 320*8975f5c5SAndroid Build Coastguard Worker <Item Name="[1]">(std::__Cr::__tuple_leaf<1,$T2,0>)__base_</Item> 321*8975f5c5SAndroid Build Coastguard Worker </Expand> 322*8975f5c5SAndroid Build Coastguard Worker </Type> 323*8975f5c5SAndroid Build Coastguard Worker 324*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::tuple<*,*,*>"> 325*8975f5c5SAndroid Build Coastguard Worker <DisplayString>({(std::__Cr::__tuple_leaf<0,$T1,0>)__base_}, {(std::__Cr::__tuple_leaf<1,$T2,0>)__base_}, {(std::__Cr::__tuple_leaf<2,$T3,0>)__base_})</DisplayString> 326*8975f5c5SAndroid Build Coastguard Worker <Expand> 327*8975f5c5SAndroid Build Coastguard Worker <Item Name="[0]">(std::__Cr::__tuple_leaf<0,$T1,0>)__base_</Item> 328*8975f5c5SAndroid Build Coastguard Worker <Item Name="[1]">(std::__Cr::__tuple_leaf<1,$T2,0>)__base_</Item> 329*8975f5c5SAndroid Build Coastguard Worker <Item Name="[2]">(std::__Cr::__tuple_leaf<2,$T3,0>)__base_</Item> 330*8975f5c5SAndroid Build Coastguard Worker </Expand> 331*8975f5c5SAndroid Build Coastguard Worker </Type> 332*8975f5c5SAndroid Build Coastguard Worker 333*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::tuple<*,*,*,*>"> 334*8975f5c5SAndroid Build Coastguard Worker <DisplayString>({(std::__Cr::__tuple_leaf<0,$T1,0>)__base_}, {(std::__Cr::__tuple_leaf<1,$T2,0>)__base_}, {(std::__Cr::__tuple_leaf<2,$T3,0>)__base_}, {(std::__Cr::__tuple_leaf<3,$T4,0>)__base_})</DisplayString> 335*8975f5c5SAndroid Build Coastguard Worker <Expand> 336*8975f5c5SAndroid Build Coastguard Worker <Item Name="[0]">(std::__Cr::__tuple_leaf<0,$T1,0>)__base_</Item> 337*8975f5c5SAndroid Build Coastguard Worker <Item Name="[1]">(std::__Cr::__tuple_leaf<1,$T2,0>)__base_</Item> 338*8975f5c5SAndroid Build Coastguard Worker <Item Name="[2]">(std::__Cr::__tuple_leaf<2,$T3,0>)__base_</Item> 339*8975f5c5SAndroid Build Coastguard Worker <Item Name="[3]">(std::__Cr::__tuple_leaf<3,$T4,0>)__base_</Item> 340*8975f5c5SAndroid Build Coastguard Worker </Expand> 341*8975f5c5SAndroid Build Coastguard Worker </Type> 342*8975f5c5SAndroid Build Coastguard Worker 343*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::tuple<*,*,*,*,*>"> 344*8975f5c5SAndroid Build Coastguard Worker <DisplayString>({(std::__Cr::__tuple_leaf<0,$T1,0>)__base_}, {(std::__Cr::__tuple_leaf<1,$T2,0>)__base_}, {(std::__Cr::__tuple_leaf<2,$T3,0>)__base_}, {(std::__Cr::__tuple_leaf<3,$T4,0>)__base_}, {(std::__Cr::__tuple_leaf<4,$T5,0>)__base_})</DisplayString> 345*8975f5c5SAndroid Build Coastguard Worker <Expand> 346*8975f5c5SAndroid Build Coastguard Worker <Item Name="[0]">(std::__Cr::__tuple_leaf<0,$T1,0>)__base_</Item> 347*8975f5c5SAndroid Build Coastguard Worker <Item Name="[1]">(std::__Cr::__tuple_leaf<1,$T2,0>)__base_</Item> 348*8975f5c5SAndroid Build Coastguard Worker <Item Name="[2]">(std::__Cr::__tuple_leaf<2,$T3,0>)__base_</Item> 349*8975f5c5SAndroid Build Coastguard Worker <Item Name="[3]">(std::__Cr::__tuple_leaf<3,$T4,0>)__base_</Item> 350*8975f5c5SAndroid Build Coastguard Worker <Item Name="[4]">(std::__Cr::__tuple_leaf<4,$T5,0>)__base_</Item> 351*8975f5c5SAndroid Build Coastguard Worker </Expand> 352*8975f5c5SAndroid Build Coastguard Worker </Type> 353*8975f5c5SAndroid Build Coastguard Worker 354*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::tuple<*,*,*,*,*,*>"> 355*8975f5c5SAndroid Build Coastguard Worker <DisplayString>({(std::__Cr::__tuple_leaf<0,$T1,0>)__base_}, {(std::__Cr::__tuple_leaf<1,$T2,0>)__base_}, {(std::__Cr::__tuple_leaf<2,$T3,0>)__base_}, {(std::__Cr::__tuple_leaf<3,$T4,0>)__base_}, {(std::__Cr::__tuple_leaf<4,$T5,0>)__base_}, {(std::__Cr::__tuple_leaf<5,$T6,0>)__base_})</DisplayString> 356*8975f5c5SAndroid Build Coastguard Worker <Expand> 357*8975f5c5SAndroid Build Coastguard Worker <Item Name="[0]">(std::__Cr::__tuple_leaf<0,$T1,0>)__base_</Item> 358*8975f5c5SAndroid Build Coastguard Worker <Item Name="[1]">(std::__Cr::__tuple_leaf<1,$T2,0>)__base_</Item> 359*8975f5c5SAndroid Build Coastguard Worker <Item Name="[2]">(std::__Cr::__tuple_leaf<2,$T3,0>)__base_</Item> 360*8975f5c5SAndroid Build Coastguard Worker <Item Name="[3]">(std::__Cr::__tuple_leaf<3,$T4,0>)__base_</Item> 361*8975f5c5SAndroid Build Coastguard Worker <Item Name="[4]">(std::__Cr::__tuple_leaf<4,$T5,0>)__base_</Item> 362*8975f5c5SAndroid Build Coastguard Worker <Item Name="[5]">(std::__Cr::__tuple_leaf<5,$T6,0>)__base_</Item> 363*8975f5c5SAndroid Build Coastguard Worker </Expand> 364*8975f5c5SAndroid Build Coastguard Worker </Type> 365*8975f5c5SAndroid Build Coastguard Worker 366*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::tuple<*,*,*,*,*,*,*>"> 367*8975f5c5SAndroid Build Coastguard Worker <DisplayString>({(std::__Cr::__tuple_leaf<0,$T1,0>)__base_}, {(std::__Cr::__tuple_leaf<1,$T2,0>)__base_}, {(std::__Cr::__tuple_leaf<2,$T3,0>)__base_}, {(std::__Cr::__tuple_leaf<3,$T4,0>)__base_}, {(std::__Cr::__tuple_leaf<4,$T5,0>)__base_}, {(std::__Cr::__tuple_leaf<5,$T6,0>)__base_}, {(std::__Cr::__tuple_leaf<6,$T7,0>)__base_})</DisplayString> 368*8975f5c5SAndroid Build Coastguard Worker <Expand> 369*8975f5c5SAndroid Build Coastguard Worker <Item Name="[0]">(std::__Cr::__tuple_leaf<0,$T1,0>)__base_</Item> 370*8975f5c5SAndroid Build Coastguard Worker <Item Name="[1]">(std::__Cr::__tuple_leaf<1,$T2,0>)__base_</Item> 371*8975f5c5SAndroid Build Coastguard Worker <Item Name="[2]">(std::__Cr::__tuple_leaf<2,$T3,0>)__base_</Item> 372*8975f5c5SAndroid Build Coastguard Worker <Item Name="[3]">(std::__Cr::__tuple_leaf<3,$T4,0>)__base_</Item> 373*8975f5c5SAndroid Build Coastguard Worker <Item Name="[4]">(std::__Cr::__tuple_leaf<4,$T5,0>)__base_</Item> 374*8975f5c5SAndroid Build Coastguard Worker <Item Name="[5]">(std::__Cr::__tuple_leaf<5,$T6,0>)__base_</Item> 375*8975f5c5SAndroid Build Coastguard Worker <Item Name="[6]">(std::__Cr::__tuple_leaf<6,$T7,0>)__base_</Item> 376*8975f5c5SAndroid Build Coastguard Worker </Expand> 377*8975f5c5SAndroid Build Coastguard Worker </Type> 378*8975f5c5SAndroid Build Coastguard Worker 379*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::unique_ptr<*>"> 380*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="value" Expression="*($T1**)&__ptr_" /> 381*8975f5c5SAndroid Build Coastguard Worker <SmartPointer Usage="Minimal">value()</SmartPointer> 382*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="value() == 0">empty</DisplayString> 383*8975f5c5SAndroid Build Coastguard Worker <DisplayString Condition="value() != 0"> 384*8975f5c5SAndroid Build Coastguard Worker unique_ptr {value()}</DisplayString> 385*8975f5c5SAndroid Build Coastguard Worker <Expand> 386*8975f5c5SAndroid Build Coastguard Worker <Item Condition="value() != 0" Name="[ptr]">value()</Item> 387*8975f5c5SAndroid Build Coastguard Worker </Expand> 388*8975f5c5SAndroid Build Coastguard Worker </Type> 389*8975f5c5SAndroid Build Coastguard Worker 390*8975f5c5SAndroid Build Coastguard Worker<Type Name="std::__Cr::unordered_map<*>"> 391*8975f5c5SAndroid Build Coastguard Worker <AlternativeType Name="std::__Cr::unordered_multimap<*>" /> 392*8975f5c5SAndroid Build Coastguard Worker <AlternativeType Name="std::__Cr::unordered_multiset<*>" /> 393*8975f5c5SAndroid Build Coastguard Worker <AlternativeType Name="std::__Cr::unordered_set<*>" /> 394*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="size" Expression="*(size_type*)&__table_.__p2_" /> 395*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="bucket_count" 396*8975f5c5SAndroid Build Coastguard Worker Expression="*(size_type*)& 397*8975f5c5SAndroid Build Coastguard Worker ((__table::__bucket_list_deleter*) 398*8975f5c5SAndroid Build Coastguard Worker ((void**)&__table_.__bucket_list_ + 1)) 399*8975f5c5SAndroid Build Coastguard Worker ->__data_" /> 400*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={size()} }}</DisplayString> 401*8975f5c5SAndroid Build Coastguard Worker <Expand> 402*8975f5c5SAndroid Build Coastguard Worker <Item Name="[bucket_count]">bucket_count()</Item> 403*8975f5c5SAndroid Build Coastguard Worker <Item Name="[load_factor]"> 404*8975f5c5SAndroid Build Coastguard Worker bucket_count() != 0 ? (float)size() / bucket_count() : 0.f</Item> 405*8975f5c5SAndroid Build Coastguard Worker <Item Name="[max_load_factor]">*(float*)&__table_.__p3_</Item> 406*8975f5c5SAndroid Build Coastguard Worker <!-- Use CustomListItems instead of LinkedListItems because we 407*8975f5c5SAndroid Build Coastguard Worker need to cast to __table::__node_pointer and LinkedListItems 408*8975f5c5SAndroid Build Coastguard Worker evaluates <Value> in the context of the node, not of the container, 409*8975f5c5SAndroid Build Coastguard Worker so we'd have to say std::unordered_map<$T1,...>::__table::__node_pointer 410*8975f5c5SAndroid Build Coastguard Worker and then we couldn't share this <Type> between unordered_(multi)map 411*8975f5c5SAndroid Build Coastguard Worker and unordered_(multi)set. --> 412*8975f5c5SAndroid Build Coastguard Worker <CustomListItems> 413*8975f5c5SAndroid Build Coastguard Worker <Variable Name="node" 414*8975f5c5SAndroid Build Coastguard Worker InitialValue="*(__table::__next_pointer*)&__table_.__p1_" /> 415*8975f5c5SAndroid Build Coastguard Worker <Size>size()</Size> 416*8975f5c5SAndroid Build Coastguard Worker <Loop> 417*8975f5c5SAndroid Build Coastguard Worker <Item>(*(__table::__node_pointer*)&node)->__value_</Item> 418*8975f5c5SAndroid Build Coastguard Worker <Exec>node = node->__next_</Exec> 419*8975f5c5SAndroid Build Coastguard Worker </Loop> 420*8975f5c5SAndroid Build Coastguard Worker </CustomListItems> 421*8975f5c5SAndroid Build Coastguard Worker </Expand> 422*8975f5c5SAndroid Build Coastguard Worker </Type> 423*8975f5c5SAndroid Build Coastguard Worker <!-- This is the node __value_ of an unordered_(multi)map. Expand it through 424*8975f5c5SAndroid Build Coastguard Worker a separate formatter instead of in the <Item> expression above so that the 425*8975f5c5SAndroid Build Coastguard Worker same <Type> works for unordered_(multi)set and unordered_(multi)map. --> 426*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::__hash_value_type<*>"> 427*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{__cc}</DisplayString> 428*8975f5c5SAndroid Build Coastguard Worker <Expand> 429*8975f5c5SAndroid Build Coastguard Worker <ExpandedItem>__cc</ExpandedItem> 430*8975f5c5SAndroid Build Coastguard Worker </Expand> 431*8975f5c5SAndroid Build Coastguard Worker </Type> 432*8975f5c5SAndroid Build Coastguard Worker 433*8975f5c5SAndroid Build Coastguard Worker <Type Name="std::__Cr::vector<*>"> 434*8975f5c5SAndroid Build Coastguard Worker <Intrinsic Name="size" Expression="__end_ - __begin_" /> 435*8975f5c5SAndroid Build Coastguard Worker <DisplayString>{{ size={size()} }}</DisplayString> 436*8975f5c5SAndroid Build Coastguard Worker <Expand> 437*8975f5c5SAndroid Build Coastguard Worker <ArrayItems> 438*8975f5c5SAndroid Build Coastguard Worker <Size>size()</Size> 439*8975f5c5SAndroid Build Coastguard Worker <ValuePointer>__begin_</ValuePointer> 440*8975f5c5SAndroid Build Coastguard Worker </ArrayItems> 441*8975f5c5SAndroid Build Coastguard Worker </Expand> 442*8975f5c5SAndroid Build Coastguard Worker </Type> 443*8975f5c5SAndroid Build Coastguard Worker</AutoVisualizer> 444