json.natvis
5.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="boost::json::storage_ptr">
<DisplayString Condition="i_==0">default</DisplayString>
<DisplayString Condition="(i_&3)==1"> shared</DisplayString>
<DisplayString Condition="(i_&3)==2"> trivial</DisplayString>
<DisplayString Condition="(i_&3)==3"> shared, trivial</DisplayString>
<DisplayString>non-owning</DisplayString>
<Expand>
<Item Name="[ refs ]" Condition="(i_&1)==1">((shared_resource*)(i_&~3))->refs</Item>
<Item Name="[ resource ]" Condition="(i_&2)==1">(shared_resource*)(i_&~3)</Item>
<Item Name="[ resource ]" Condition="(i_&2)!=1">(memory_resource*)(i_&~3)</Item>
</Expand>
</Type>
<Type Name="boost::json::detail::shared_resource_impl<*>">
<DisplayString>$T1*</DisplayString>
<Expand>
<Item Name="[ refs ]">refs</Item>
</Expand>
</Type>
<Type Name="boost::json::monotonic_resource">
<DisplayString>monotonic_resource</DisplayString>
<Expand>
<Item Name="[ free ]">head_->n</Item>
</Expand>
</Type>
<Type Name="boost::json::static_resource">
<DisplayString>static_resource</DisplayString>
<Expand>
<Item Name="[ free ]">n_</Item>
</Expand>
</Type>
<Type Name="boost::json::value">
<DisplayString Condition="sca_.k==kind::null">null</DisplayString>
<DisplayString Condition="sca_.k==kind::bool_">{sca_.b}</DisplayString>
<DisplayString Condition="sca_.k==kind::int64">{sca_.i}</DisplayString>
<DisplayString Condition="sca_.k==kind::uint64">{sca_.u}u</DisplayString>
<DisplayString Condition="sca_.k==kind::double_">{sca_.d}</DisplayString>
<DisplayString Condition="sca_.k==kind::string">{((char*)(str_.impl_.p_.t+1)),[str_.impl_.p_.t->size]s}</DisplayString>
<DisplayString Condition="sca_.k==kind::string+64">{((char*)(str_.impl_.k_.s)),[str_.impl_.k_.n]s}:</DisplayString>
<DisplayString Condition="sca_.k==kind::string+128">{str_.impl_.s_.buf,[detail::string_impl::sbo_chars_-str_.impl_.s_.buf[detail::string_impl::sbo_chars_]]s}</DisplayString>
<DisplayString Condition="sca_.k==kind::array">array [{arr_.t_->size}]</DisplayString>
<DisplayString Condition="sca_.k==kind::object">object [{obj_.t_->size}]</DisplayString>
<Expand>
<ExpandedItem Condition="sca_.k==kind::string">str_</ExpandedItem>
<ExpandedItem Condition="sca_.k==kind::string+64">str_</ExpandedItem>
<ExpandedItem Condition="sca_.k==kind::string+128">str_</ExpandedItem>
<ExpandedItem Condition="sca_.k==kind::array">arr_</ExpandedItem>
<ExpandedItem Condition="sca_.k==kind::object">obj_</ExpandedItem>
</Expand>
</Type>
<Type Name="boost::json::string">
<DisplayString Condition="impl_.s_.k==kind::string">{((char*)(impl_.p_.t+1)),[impl_.p_.t->size]s}</DisplayString>
<DisplayString Condition="impl_.s_.k==kind::string+64">{((char*)(impl_.k_.s)),[impl_.k_.n]s}:</DisplayString>
<DisplayString Condition="impl_.s_.k==kind::string+128">{impl_.s_.buf,[detail::string_impl::sbo_chars_-impl_.s_.buf[detail::string_impl::sbo_chars_]]s}</DisplayString>
<Expand>
<!-- VFALCO Need to handle key string here -->
<Item Name="[size]">impl_.s_.k==kind::string?impl_.p_.t->size:detail::string_impl::sbo_chars_-impl_.s_.buf[detail::string_impl::sbo_chars_]</Item>
<Item Name="[capacity]">impl_.s_.k==kind::string?impl_.p_.t->capacity:detail::string_impl::sbo_chars_</Item>
<Item Name="[storage]">sp_</Item>
</Expand>
</Type>
<Type Name="boost::json::array">
<DisplayString>array [{t_->size}]</DisplayString>
<Expand>
<ArrayItems>
<Size>t_->size</Size>
<ValuePointer>((value*)(t_+1))</ValuePointer>
</ArrayItems>
<Item Name="[capacity]">t_->capacity</Item>
<Item Name="[storage]">sp_</Item>
</Expand>
</Type>
<Type Name="boost::json::object">
<DisplayString>object [{t_->size}]</DisplayString>
<Expand>
<ArrayItems>
<Size>t_->size</Size>
<ValuePointer>(boost::json::key_value_pair*)(t_+1)</ValuePointer>
</ArrayItems>
<Item Name="[capacity]">t_->capacity</Item>
<Item Name="[storage]">sp_</Item>
</Expand>
</Type>
<Type Name="boost::json::key_value_pair">
<DisplayString Condition="value_.sca_.k==kind::null">{{ {key_,[len_]s}, null }}</DisplayString>
<DisplayString Condition="value_.sca_.k==kind::bool_">{{ {key_,[len_]s}, {value_.sca_.b} }}</DisplayString>
<DisplayString Condition="value_.sca_.k==kind::int64">{{ {key_,[len_]s}, {value_.sca_.i} }}</DisplayString>
<DisplayString Condition="value_.sca_.k==kind::uint64">{{ {key_,[len_]s}, {value_.sca_.u} }}</DisplayString>
<DisplayString Condition="value_.sca_.k==kind::double_">{{ {key_,[len_]s}, {value_.sca_.d} }}</DisplayString>
<DisplayString Condition="value_.sca_.k==kind::string">{{ {key_,[len_]s}, {((char*)(value_.str_.impl_.p_.t+1)),[value_.str_.impl_.p_.t->size]s} }}</DisplayString>
<DisplayString Condition="value_.sca_.k==kind::string+128">{{ {key_,[len_]s}, {value_.str_.impl_.s_.buf,[detail::string_impl::sbo_chars_-value_.str_.impl_.s_.buf[detail::string_impl::sbo_chars_]]s} }}</DisplayString>
<DisplayString Condition="value_.sca_.k==kind::array">{{ {key_,[len_]s}, array [{value_.arr_.t_->size}] }}</DisplayString>
<DisplayString Condition="value_.sca_.k==kind::object">{{ {key_,[len_]s}, object [{value_.obj_.t_->size}] }}</DisplayString>
<Expand>
<ExpandedItem>&this->value_</ExpandedItem>
</Expand>
</Type>
</AutoVisualizer>