forked from AutoHotkey/AutoHotkey
-
Notifications
You must be signed in to change notification settings - Fork 11
/
debug.natvis
112 lines (112 loc) · 5.95 KB
/
debug.natvis
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
110
111
112
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="Line">
<DisplayString>{(enum_act)mActionType} ln {mLineNumber}</DisplayString>
<Expand>
<Item Name="act">(enum_act)mActionType</Item>
<Item Name="file">sSourceFile[mFileIndex],sub</Item>
<Item Name="line">mLineNumber,d</Item>
<Item Name="args">mArg,[mArgc]</Item>
<Item Name="func" Condition="mActionType == ACT_BLOCK_BEGIN">(UserFunc*)mAttribute</Item>
</Expand>
</Type>
<Type Name="ArgStruct">
<DisplayString Condition="is_expression || !postfix">{text,sub}</DisplayString>
<DisplayString Condition="!is_expression && postfix">{text,su}</DisplayString>
</Type>
<Type Name="ExprTokenType">
<DisplayString Condition="symbol == SYM_STRING">{marker}</DisplayString>
<DisplayString Condition="symbol == SYM_INTEGER">{value_int64}</DisplayString>
<DisplayString Condition="symbol == SYM_FLOAT">{value_double}</DisplayString>
<DisplayString Condition="symbol == SYM_OBJECT">{object}</DisplayString>
<DisplayString Condition="symbol == SYM_VAR && (*(UINT*)var->mName & 0xffffff00) != 0xcdcdcd00">{*var}</DisplayString>
<DisplayString Condition="symbol == SYM_VAR && var_deref->type == 0 && (UINT)var_deref->marker != 0xcdcdcdcd">{*var_deref}</DisplayString>
<DisplayString Condition="symbol == SYM_COUNT">(end marker)</DisplayString>
<DisplayString Condition="symbol >= SYM_OPERAND_END">{symbol,en} {error_reporting_marker,sub}</DisplayString>
<DisplayString>{symbol,en}</DisplayString>
<Expand>
<Item Name="value" Condition="symbol == SYM_STRING">marker</Item>
<Item Name="length" Condition="symbol == SYM_STRING">marker_length</Item>
<Item Name="value" Condition="symbol == SYM_INTEGER">value_int64</Item>
<Item Name="value" Condition="symbol == SYM_FLOAT">value_double</Item>
<Item Name="object" Condition="symbol == SYM_OBJECT">object</Item>
<Item Name="var" Condition="symbol == SYM_VAR && (*(UINT*)var->mName & 0xffffff00) != 0xcdcdcd00">var</Item>
<Item Name="var_deref" Condition="symbol == SYM_VAR && var_deref->type == 0 && (UINT)var_deref->marker != 0xcdcdcdcd">var_deref</Item>
<Item Name="callsite" Condition="symbol == SYM_FUNC">callsite</Item>
<Item Name="marker" Condition="symbol == SYM_OPAREN">marker</Item>
</Expand>
</Type>
<Type Name="Var">
<DisplayString Condition="mAttrib & 0x10">{mName,sub} = {mContentsInt64}</DisplayString>
<DisplayString Condition="mAttrib & 0x20">{mName,sub} = {mContentsDouble}</DisplayString>
<DisplayString Condition="mAttrib & 0x40">{mName,sub} = {mObject}</DisplayString>
<DisplayString Condition="mType == VAR_ALIAS">{mName,sub} -> {mAliasFor}</DisplayString>
<DisplayString Condition="mAttrib & 0x02">{mName,sub} is unset</DisplayString>
<DisplayString>{mName,sub} = {mCharContents,su}</DisplayString>
<Expand>
<Item Name="object" Condition="mAttrib & 0x40">mObject</Item>
</Expand>
</Type>
<Type Name="DerefType">
<DisplayString>{marker,[length]sub}</DisplayString>
</Type>
<Type Name="Func">
<DisplayString>{mName,sub}()</DisplayString>
</Type>
<Type Name="Object">
<DisplayString Condition="mFields.data->length >= 4">{((FieldType *)(mFields.data + 1))[0]}, {((FieldType *)(mFields.data + 1))[1]}, {((FieldType *)(mFields.data + 1))[2]}, {((FieldType *)(mFields.data + 1))[3]}</DisplayString>
<DisplayString Condition="mFields.data->length == 3">{((FieldType *)(mFields.data + 1))[0]}, {((FieldType *)(mFields.data + 1))[1]}, {((FieldType *)(mFields.data + 1))[2]}</DisplayString>
<DisplayString Condition="mFields.data->length == 2">{((FieldType *)(mFields.data + 1))[0]}, {((FieldType *)(mFields.data + 1))[1]}</DisplayString>
<DisplayString Condition="mFields.data->length == 1">{((FieldType *)(mFields.data + 1))[0]}</DisplayString>
<DisplayString>(no properties)</DisplayString>
<Expand>
<Synthetic Name="Properties">
<Expand>
<ArrayItems>
<Size>mFields.data->length</Size>
<ValuePointer>(FieldType *)(mFields.data + 1)</ValuePointer>
</ArrayItems>
</Expand>
</Synthetic>
</Expand>
</Type>
<Type Name="Object::Variant">
<DisplayString Condition="symbol == SYM_STRING">{string}</DisplayString>
<DisplayString Condition="symbol == SYM_INTEGER">{n_int64}</DisplayString>
<DisplayString Condition="symbol == SYM_FLOAT">{n_double}</DisplayString>
<DisplayString Condition="symbol == SYM_OBJECT">{{{*object}}}</DisplayString>
<DisplayString Condition="symbol == SYM_DYNAMIC">{*prop}</DisplayString>
<DisplayString Condition="symbol == SYM_MISSING">unset</DisplayString>
<DisplayString>(bad symbol: {symbol})</DisplayString>
</Type>
<Type Name="Object::FieldType">
<DisplayString>{name,sub} = {*(Variant *)this,nd}</DisplayString>
<Expand>
<Item Name="name">name,sub</Item>
<Item Name="value" Condition="symbol == SYM_STRING">string</Item>
<Item Name="value" Condition="symbol == SYM_INTEGER">n_int64</Item>
<Item Name="value" Condition="symbol == SYM_FLOAT">n_double</Item>
<Item Name="value" Condition="symbol == SYM_OBJECT">*object</Item>
<Item Name="value" Condition="symbol == SYM_DYNAMIC">*prop</Item>
<Item Name="raw">*(Variant *)this,nd</Item>
</Expand>
</Type>
<Type Name="Property">
<Expand>
<Item Name="get" Condition="mGet">*mGet</Item>
<Item Name="set" Condition="mSet">*mSet</Item>
<Item Name="call" Condition="mCall">*mCall</Item>
</Expand>
</Type>
<Type Name="Array">
<Expand>
<ArrayItems>
<Size>mLength</Size>
<ValuePointer>mItem</ValuePointer>
</ArrayItems>
</Expand>
</Type>
<Type Name="FlatVector<wchar_t,unsigned __int64>">
<DisplayString>{(wchar_t*)(data + 1),su}</DisplayString>
</Type>
</AutoVisualizer>