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