• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="utf-8"?>
2<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
3  <Type Name="Base::array_view&lt;*&gt;">
4    <DisplayString>{{size={size_}}}</DisplayString>
5    <Expand>
6      <Item Name="[size]">size_</Item>
7      <ArrayItems>
8        <Size>size_</Size>
9        <ValuePointer>begin_</ValuePointer>
10      </ArrayItems>
11    </Expand>
12  </Type>
13
14  <Type Name="Base::vector&lt;*&gt;">
15    <DisplayString>{{size={size_}}}</DisplayString>
16    <Expand>
17      <Item Name="[size]">size_</Item>
18      <Item Name="[allocator]">allocator_</Item>
19      <Item Name="[capacity]">capacity_</Item>
20      <ArrayItems>
21        <Size>size_</Size>
22        <ValuePointer>($T1*)data_</ValuePointer>
23      </ArrayItems>
24    </Expand>
25  </Type>
26
27  <Type Name="Base::basic_string&lt;*&gt;">
28    <DisplayString Condition="!data_.longString.isShort &amp;&amp; (data_.longString.size == 0)">empty</DisplayString>
29    <DisplayString Condition="!data_.longString.isShort &amp;&amp; (data_.longString.size &gt; 0)">{($T1*)(data_.longString.begin),s}</DisplayString>
30    <DisplayString Condition="data_.longString.isShort &amp;&amp; ((shortCapacity - data_.shortString.size) == 0)">empty</DisplayString>
31    <DisplayString Condition="data_.longString.isShort &amp;&amp; ((shortCapacity - data_.shortString.size) &gt; 0)">{data_.shortString.begin + 1,s}</DisplayString>
32    <StringView Condition="!data_.longString.isShort &amp;&amp; (data_.longString.size &gt; 0)">($T1*)(data_.longString.begin),s</StringView>
33    <StringView Condition="data_.longString.isShort &amp;&amp; ((shortCapacity - data_.shortString.size) &gt; 0)">data_.shortString.begin + 1,s</StringView>
34    <Expand>
35      <CustomListItems>
36        <If Condition="data_.longString.isShort">
37          <Item Name="[capacity]">shortCapacity</Item>
38          <Item Name="[size]">shortCapacity - data_.shortString.size</Item>
39          <Item Name="[ptr]">($T1*)(data_.shortString.begin + 1)</Item>
40        </If>
41        <If Condition="!data_.longString.isShort">
42          <Item Name="[capacity]">data_.longString.capacity</Item>
43          <Item Name="[size]">data_.longString.size</Item>
44          <Item Name="[ptr]">($T1*)data_.longString.begin</Item>
45        </If>
46      </CustomListItems>
47    </Expand>
48  </Type>
49  <Type Name="Base::basic_string_view&lt;*&gt;">
50    <DisplayString Condition="size_==0">empty</DisplayString>
51    <DisplayString Condition="size_>0">{begin_,[size_]}</DisplayString>
52    <StringView Condition="size_>0">begin_,[size_]</StringView>
53    <Expand>
54      <ArrayItems>
55        <Size>size_</Size>
56        <ValuePointer>($T1*)begin_</ValuePointer>
57      </ArrayItems>
58    </Expand>
59  </Type>
60  <Type Name="Base::basic_fixed_string&lt;*&gt;">
61    <DisplayString Condition="len_==0">empty</DisplayString>
62    <DisplayString Condition="len_>0">{data_,[len_]}</DisplayString>
63    <StringView Condition="len_>0">data_,[len_]</StringView>
64    <Expand>
65      <ArrayItems>
66        <Size>len_</Size>
67        <ValuePointer>($T1*)data_</ValuePointer>
68      </ArrayItems>
69    </Expand>
70  </Type>
71
72  <Type Name="Base::pair&lt;*&gt;">
73    <DisplayString>{first}, {second}</DisplayString>
74    <Expand>
75      <Item Name="first">first</Item>
76      <Item Name="second">second</Item>
77    </Expand>
78  </Type>
79
80  <Type Name="Base::unordered_map_base&lt;*&gt;">
81    <DisplayString Condition="size_==0">empty</DisplayString>
82    <DisplayString Condition="size_>0">{{size={size_}}}</DisplayString>
83    <Expand>
84      <CustomListItems MaxItemsPerView="5000" ExcludeView="Test">
85        <Variable Name="index" InitialValue="0" />
86        <Variable Name="buckets" InitialValue="buckets_.size_" />
87        <Variable Name="pBucket" InitialValue="buckets_.data_" />
88        <Variable Name="node" InitialValue="*buckets_.data_" />
89
90        <Loop>
91          <If Condition="index >= buckets">
92            <Break/>
93          </If>
94          <If Condition="pBucket[index] != nullptr">
95            <Exec>node = *(pBucket + index)</Exec>
96            <Item Name="[{node->data.first}]">node->data.second</Item>
97            <Exec>node = node->next</Exec>
98            <Loop>
99              <If Condition="node != nullptr">
100                <Item Name="[{node->data.first}]">node->data.second</Item>
101                <Exec>node = node->next</Exec>
102              </If>
103              <Else>
104                <Break/>
105              </Else>
106            </Loop>
107          </If>
108          <Exec>index+=1</Exec>
109        </Loop>
110      </CustomListItems>
111    </Expand>
112  </Type>
113
114  <Type Name="Base::unique_ptr&lt;*&gt;">
115    <DisplayString Condition="ptr_ == nullptr">null</DisplayString>
116    <DisplayString>unique_ptr {*ptr_}</DisplayString>
117    <Expand>
118      <ExpandedItem>ptr_</ExpandedItem>
119    </Expand>
120  </Type>
121
122  <Type Name="Base::Uid">
123      <DisplayString>"{(uint32_t)(data[0]&gt;&gt;32U),nvoXb}-{(uint16_t)(data[0]&gt;&gt;16),nvoXb}-{(uint16_t)(data[0]),nvoXb}-{(uint16_t)(data[1]&gt;&gt;48U),nvoXb}-{(uint16_t)((data[1]&lt;&lt;16U)&gt;&gt;48U),nvoXb}{(uint32_t)(data[1]),nvoXb}"</DisplayString>
124  </Type>
125
126</AutoVisualizer>