1// cmakedefine — value is null (undefined) → /* #undef */
2#cmakedefine NOVAL unreachable
3
4// cmakedefine — value is true → #define ... 1
5#cmakedefine TRUEVAL 1
6
7// cmakedefine — value is false → /* #undef */
8#cmakedefine FALSEVAL unreachable
9
10// cmakedefine — value is 0 (falsy) → /* #undef */
11#cmakedefine ZEROVAL unreachable
12
13// cmakedefine — value is 1 (truthy) → #define ... 1
14#cmakedefine ONEVAL 1
15
16// cmakedefine — value is 10 (truthy) → #define ... 1
17#cmakedefine TENVAL 1
18
19// cmakedefine — value is non-empty string (truthy) → #define ... 1
20#cmakedefine STRINGVAL 1
21
22// cmakedefine — leading whitespace preserved in output
23 #cmakedefine STRINGVAL 1
24 #cmakedefine STRINGVAL 1
25
26
27// cmakedefine01 — value is {} (defined, no value) → 0
28#cmakedefine01 BOOLNOVAL
29
30// cmakedefine01 — value is true → 1
31#cmakedefine01 BOOLTRUEVAL
32
33// cmakedefine01 — value is false → 0
34#cmakedefine01 BOOLFALSEVAL
35
36// cmakedefine01 — value is 0 (falsy) → 0
37#cmakedefine01 BOOLZEROVAL
38
39// cmakedefine01 — value is 1 (truthy) → 1
40#cmakedefine01 BOOLONEVAL
41
42// cmakedefine01 — value is 10 (truthy) → 1
43#cmakedefine01 BOOLTENVAL
44
45// cmakedefine01 — value is non-empty string (truthy) → 1
46#cmakedefine01 BOOLSTRINGVAL
47
48
49// @-substitution — value is null → empty string
50// @NOVAL@
51
52// @-substitution — null values produce nothing even when packed
53// @NOVAL@@NOVAL@
54
55// @-substitution — null values produce nothing even when separated
56// @NOVAL@.@NOVAL@
57
58// @-substitution — value is true → "1"
59// @TRUEVAL@
60
61// @-substitution — value is false → "0"
62// @FALSEVAL@
63
64// @-substitution — true + false packed → "10"
65// @TRUEVAL@@FALSEVAL@
66
67// @-substitution — false + true separated → "0.1"
68// @FALSEVAL@.@TRUEVAL@
69
70// @-substitution — value is 0 → "0"
71// @ZEROVAL@
72
73// @-substitution — value is 1 → "1"
74// @ONEVAL@
75
76// @-substitution — value is 10 → "10"
77// @TENVAL@
78
79// @-substitution — 0 + 1 packed → "01"
80// @ZEROVAL@@ONEVAL@
81
82// @-substitution — 0 + 10 separated → "0.10"
83// @ZEROVAL@.@TENVAL@
84
85// @-substitution — value is string "test" → "test"
86// @STRINGVAL@
87
88// @-substitution — strings packed → "testtest"
89// @STRINGVAL@@STRINGVAL@
90
91// @-substitution — strings separated → "test.test"
92// @STRINGVAL@.@STRINGVAL@
93
94// @-substitution — mixed null/string/true/zero → "test10"
95// @NOVAL@@STRINGVAL@@TRUEVAL@@ZEROVAL@
96
97// dollar-curly substitution — value is null → empty string
98// ${NOVAL}
99
100// dollar-curly substitution — null values produce nothing even when packed
101// ${NOVAL}${NOVAL}
102
103// dollar-curly substitution — null values produce nothing even when separated
104// ${NOVAL}.${NOVAL}
105
106// dollar-curly substitution — value is true → "1"
107// ${TRUEVAL}
108
109// dollar-curly substitution — value is false → "0"
110// ${FALSEVAL}
111
112// dollar-curly substitution — true + false packed → "10"
113// ${TRUEVAL}${FALSEVAL}
114
115// dollar-curly substitution — false + true separated → "0.1"
116// ${FALSEVAL}.${TRUEVAL}
117
118// dollar-curly substitution — value is 0 → "0"
119// ${ZEROVAL}
120
121// dollar-curly substitution — value is 1 → "1"
122// ${ONEVAL}
123
124// dollar-curly substitution — value is 10 → "10"
125// ${TENVAL}
126
127// dollar-curly substitution — 0 + 1 packed → "01"
128// ${ZEROVAL}${ONEVAL}
129
130// dollar-curly substitution — 0 + 10 separated → "0.10"
131// ${ZEROVAL}.${TENVAL}
132
133// dollar-curly substitution — value is string "test" → "test"
134// ${STRINGVAL}
135
136// dollar-curly substitution — strings packed → "testtest"
137// ${STRINGVAL}${STRINGVAL}
138
139// dollar-curly substitution — strings separated → "test.test"
140// ${STRINGVAL}.${STRINGVAL}
141
142// dollar-curly substitution — mixed null/string/true/zero → "test10"
143// ${NOVAL}${STRINGVAL}${TRUEVAL}${ZEROVAL}