-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathvariant_natvis.sh
More file actions
81 lines (66 loc) · 1.34 KB
/
Copy pathvariant_natvis.sh
File metadata and controls
81 lines (66 loc) · 1.34 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
#!/bin/bash
_IFS=$IFS
IFS=''
read -d '' INTRO << 'INTRO'
<?xml version='1.0' encoding='utf-8'?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
INTRO
read -d '' OUTRO << 'OUTRO'
</AutoVisualizer>
OUTRO
read -d '' TYPE_BEGIN << 'TYPE_BEGIN'
<Intrinsic Name=\"which\" Expression=\"(int)whichValue\"/>
TYPE_BEGIN
read -d '' TYPE_END << 'TYPE_END'
</Type>
TYPE_END
IFS=$_IFS
function asterisks() {
echo -n "*"
for k in $(seq $[$1-1])
do
echo -n ",*"
done
}
function typeVariadicHeader() {
echo -n ' <Type Name="variant17::Variant<'
asterisks $i
echo '>">'
}
function viewer()
{
echo -n "*(\$T$1 *)&(m)"
}
function displayStrings()
{
num=$1
for j in $(seq $num)
do
echo -n " <DisplayString Condition=\"which() == $[j-1]\" >"
echo -n "{" $(viewer $j) "}"
echo " </DisplayString>"
done
}
function expansion()
{
num=$1
echo " <Expand>"
echo " <Item Name=\"which\">which()</Item>"
for j in $(seq $num)
do
echo -n " <Item Name=\"[value]\" Condition=\"which() == $[j-1]\" >"
viewer $j
echo "</Item>"
done
echo " </Expand>"
}
echo "$INTRO"
for i in $(seq 32)
do
typeVariadicHeader $i
echo "$TYPE_BEGIN"
displayStrings $i
expansion $i
echo "$TYPE_END"
done
echo "$OUTRO"