Skip to content

Commit 94dc661

Browse files
committed
feat: add Header, CHeader, and CppHeader components
1 parent a020cd0 commit 94dc661

7 files changed

Lines changed: 241 additions & 193 deletions

File tree

src/components/CHeader.astro

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
import Header from "./Header.astro";
3+
import type { Props as HeaderProps } from "./Header.astro";
4+
5+
type Props = Omit<HeaderProps, "lang">;
6+
---
7+
8+
<Header lang="C" {...Astro.props} />

src/components/CppHeader.astro

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
---
2+
import Header from "./Header.astro";
3+
import type { Props as HeaderProps } from "./Header.astro";
4+
5+
type Props = Omit<HeaderProps, "lang">;
6+
---
7+
8+
<Header lang="C++" {...Astro.props} />

src/components/Header.astro

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
import type { Language } from "@src/types";
3+
import DocLink from "./DocLink.astro";
4+
5+
export interface Props {
6+
lang: Language;
7+
name: string;
8+
displayName?: string;
9+
nolink?: boolean;
10+
}
11+
12+
const { lang, name, displayName, nolink } = Astro.props;
13+
const dest = `${lang}.headers.${name}`;
14+
15+
const extension = lang === "C" ? ".h" : "";
16+
const text = displayName ?? `<${name}${extension}>`;
17+
18+
const As = nolink ? Fragment : DocLink;
19+
const asProps = nolink ? {} : { dest };
20+
---
21+
22+
<As {...asProps}>
23+
<code>{text}</code>
24+
</As>

src/content/docs/c/library/headers/index.mdx

Lines changed: 56 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ cppdoc:
55
keys: ["c.library.headers"]
66
---
77

8+
import CHeader from "@components/CHeader.astro";
89
import FeatureTestMacro, {
910
FeatureTestMacroValue
1011
} from "@components/FeatureTestMacro.astro";
@@ -14,43 +15,43 @@ import Revision from "@components/Revision.astro";
1415
The interface of C standard library is defined by the following collection of headers.
1516

1617
<dl>
17-
<dt><Missing>`<assert.h>`</Missing></dt>
18+
<dt><CHeader name="assert" /></dt>
1819
<dd>Conditionally compiled macro that compares its argument to zero</dd>
1920

20-
<dt><Revision noborder since="C99"><Missing>`<complex.h>`</Missing></Revision></dt>
21+
<dt><Revision noborder since="C99"><CHeader name="complex" /></Revision></dt>
2122
<dd>Complex number arithmetic</dd>
2223

23-
<dt><Missing>`<ctype.h>`</Missing></dt>
24+
<dt><CHeader name="ctype" /></dt>
2425
<dd>Functions to determine the type contained in character data</dd>
2526

26-
<dt><Missing>`<errno.h>`</Missing></dt>
27+
<dt><CHeader name="errno" /></dt>
2728
<dd>Macros reporting error conditions</dd>
2829

29-
<dt><Revision noborder since="C99"><Missing>`<fenv.h>`</Missing></Revision></dt>
30+
<dt><Revision noborder since="C99"><CHeader name="fenv" /></Revision></dt>
3031
<dd>Floating-point environment</dd>
3132

32-
<dt><Missing>`<float.h>`</Missing></dt>
33+
<dt><CHeader name="float" /></dt>
3334
<dd>Limits of floating-point types</dd>
3435

35-
<dt><Revision noborder since="C99"><Missing>`<inttypes.h>`</Missing></Revision></dt>
36+
<dt><Revision noborder since="C99"><CHeader name="inttypes" /></Revision></dt>
3637
<dd>Format conversion of integer types</dd>
3738

38-
<dt><Revision noborder since="C95"><Missing>`<iso646.h>`</Missing></Revision></dt>
39+
<dt><Revision noborder since="C95"><CHeader name="iso646" /></Revision></dt>
3940
<dd>Alternative operator spellings</dd>
4041

41-
<dt><Missing>`<limits.h>`</Missing></dt>
42+
<dt><CHeader name="limits" /></dt>
4243
<dd>Ranges of integer types</dd>
4344

44-
<dt><Missing>`<locale.h>`</Missing></dt>
45+
<dt><CHeader name="locale" /></dt>
4546
<dd>Localization utilities</dd>
4647

47-
<dt><Missing>`<math.h>`</Missing></dt>
48+
<dt><CHeader name="math" /></dt>
4849
<dd>Common mathematics functions</dd>
4950

50-
<dt><Missing>`<setjmp.h>`</Missing></dt>
51+
<dt><CHeader name="setjmp" /></dt>
5152
<dd>Nonlocal jumps</dd>
5253

53-
<dt><Missing>`<signal.h>`</Missing></dt>
54+
<dt><CHeader name="signal" /></dt>
5455
<dd>Signal handling</dd>
5556

5657
<dt>
@@ -59,18 +60,18 @@ The interface of C standard library is defined by the following collection of he
5960
since="C11"
6061
traits={[ { trait: "deprecated", since: "C23" } ]}
6162
>
62-
<Missing>`<signal.h>`</Missing>
63+
<CHeader name="signal" />
6364
</Revision>
6465
</dt>
6566
<dd>alignas and alignof convenience macros</dd>
6667

67-
<dt><Missing>`<stdarg.h>`</Missing></dt>
68+
<dt><CHeader name="stdarg" /></dt>
6869
<dd>Variable arguments</dd>
6970

70-
<dt><Revision noborder since="C11"><Missing>`<stdatomic.h>`</Missing></Revision></dt>
71+
<dt><Revision noborder since="C11"><CHeader name="stdatomic" /></Revision></dt>
7172
<dd>Atomic operations</dd>
7273

73-
<dt><Revision noborder since="C23"><Missing>`<stdbit.h>`</Missing></Revision></dt>
74+
<dt><Revision noborder since="C23"><CHeader name="stdbit" /></Revision></dt>
7475
<dd>Macros to work with the byte and bit representations of types</dd>
7576

7677
<dt>
@@ -79,27 +80,27 @@ The interface of C standard library is defined by the following collection of he
7980
since="C99"
8081
traits={[ { trait: "deprecated", since: "C23" } ]}
8182
>
82-
<Missing>`<stdbool.h>`</Missing>
83+
<CHeader name="stdbool" />
8384
</Revision>
8485
</dt>
8586
<dd>Macros for boolean type</dd>
8687

87-
<dt><Revision noborder since="C23"><Missing>`<stdckdint.h>`</Missing></Revision></dt>
88+
<dt><Revision noborder since="C23"><CHeader name="stdckdint" /></Revision></dt>
8889
<dd>Macros for performing checked integer arithmetic</dd>
8990

90-
<dt><Missing>`<stddef.h>`</Missing></dt>
91+
<dt><CHeader name="stddef" /></dt>
9192
<dd>Common macro definitions</dd>
9293

93-
<dt><Revision noborder since="C99"><Missing>`<stdint.h>`</Missing></Revision></dt>
94+
<dt><Revision noborder since="C99"><CHeader name="stdint" /></Revision></dt>
9495
<dd>Fixed-width integer types</dd>
9596

96-
<dt><Missing>`<stdio.h>`</Missing></dt>
97+
<dt><CHeader name="stdio" /></dt>
9798
<dd>Input/output</dd>
9899

99-
<dt><Missing>`<stdlib.h>`</Missing></dt>
100+
<dt><CHeader name="stdlib" /></dt>
100101
<dd>General utilities: <Missing>memory management</Missing>, <Missing>program utilities</Missing>, <Missing>string conversions</Missing>, <Missing>random numbers</Missing>, <Missing>algorithms</Missing></dd>
101102

102-
<dt><Revision noborder since="C29"><Missing>`<stdmchar.h>`</Missing></Revision></dt>
103+
<dt><Revision noborder since="C29"><CHeader name="stdmchar" /></Revision></dt>
103104
<dd>Text transcode</dd>
104105

105106
<dt>
@@ -108,164 +109,164 @@ The interface of C standard library is defined by the following collection of he
108109
since="C11"
109110
traits={[ { trait: "deprecated", since: "C23" } ]}
110111
>
111-
<Missing>`<stdnoreturn.h>`</Missing>
112+
<CHeader name="stdnoreturn" />
112113
</Revision>
113114
</dt>
114115
<dd><Missing>noreturn</Missing> convenience macro</dd>
115116

116-
<dt><Missing>`<string.h>`</Missing></dt>
117+
<dt><CHeader name="string" /></dt>
117118
<dd>String handling</dd>
118119

119-
<dt><Revision noborder since="C99"><Missing>`<tgmath.h>`</Missing></Revision></dt>
120-
<dd>Type-generic math (macros wrapping <Missing>`<math.h>`</Missing> and <Missing>`<complex.h>`</Missing>)</dd>
120+
<dt><Revision noborder since="C99"><CHeader name="tgmath" /></Revision></dt>
121+
<dd>Type-generic math (macros wrapping <CHeader name="math" /> and <CHeader name="complex" />)</dd>
121122

122-
<dt><Revision noborder since="C11"><Missing>`<threads.h>`</Missing></Revision></dt>
123+
<dt><Revision noborder since="C11"><CHeader name="threads" /></Revision></dt>
123124
<dd>Thread library</dd>
124125

125-
<dt><Missing>`<time.h>`</Missing></dt>
126+
<dt><CHeader name="time" /></dt>
126127
<dd>Time/date utilities</dd>
127128

128-
<dt><Revision noborder since="C11"><Missing>`<uchar.h>`</Missing></Revision></dt>
129+
<dt><Revision noborder since="C11"><CHeader name="uchar" /></Revision></dt>
129130
<dd>UTF-16 and UTF-32 character utilities</dd>
130131

131-
<dt><Revision noborder since="C95"><Missing>`<wchar.h>`</Missing></Revision></dt>
132+
<dt><Revision noborder since="C95"><CHeader name="wchar" /></Revision></dt>
132133
<dd>Extended multibyte and wide character utilities</dd>
133134

134-
<dt><Revision noborder since="C95"><Missing>`<wctype.h>`</Missing></Revision></dt>
135+
<dt><Revision noborder since="C95"><CHeader name="wctype" /></Revision></dt>
135136
<dd>Functions to determine the type contained in wide character data</dd>
136137
</dl>
137138

138139
## Feature test macros :badge[C23]
139140

140141
<FeatureTestMacro name="__STDC_VERSION_ASSERT_H__">
141142
<FeatureTestMacroValue value="202311L" since="C23">
142-
<Missing>`<assert.h>`</Missing>
143+
<CHeader name="assert" />
143144
</FeatureTestMacroValue>
144145
</FeatureTestMacro>
145146

146147
<FeatureTestMacro name="__STDC_VERSION_COMPLEX_H__">
147148
<FeatureTestMacroValue value="202311L" since="C23">
148-
<Missing>`<complex.h>`</Missing>
149+
<CHeader name="complex" />
149150
</FeatureTestMacroValue>
150151
</FeatureTestMacro>
151152

152153
<FeatureTestMacro name="__STDC_VERSION_FENV_H__">
153154
<FeatureTestMacroValue value="202311L" since="C23">
154-
<Missing>`<fenv.h>`</Missing>
155+
<CHeader name="fenv" />
155156
</FeatureTestMacroValue>
156157
</FeatureTestMacro>
157158

158159
<FeatureTestMacro name="__STDC_VERSION_FLOAT_H__">
159160
<FeatureTestMacroValue value="202311L" since="C23">
160-
<Missing>`<float.h>`</Missing>
161+
<CHeader name="float" />
161162
</FeatureTestMacroValue>
162163
</FeatureTestMacro>
163164

164165
<FeatureTestMacro name="__STDC_VERSION_INTTYPES_H__">
165166
<FeatureTestMacroValue value="202311L" since="C23">
166-
<Missing>`<inttypes.h>`</Missing>
167+
<CHeader name="inttypes" />
167168
</FeatureTestMacroValue>
168169
</FeatureTestMacro>
169170

170171
<FeatureTestMacro name="__STDC_VERSION_LIMITS_H__">
171172
<FeatureTestMacroValue value="202311L" since="C23">
172-
<Missing>`<limits.h>`</Missing>
173+
<CHeader name="limits" />
173174
</FeatureTestMacroValue>
174175
</FeatureTestMacro>
175176

176177
<FeatureTestMacro name="__STDC_VERSION_MATH_H__">
177178
<FeatureTestMacroValue value="202311L" since="C23">
178-
<Missing>`<math.h>`</Missing>
179+
<CHeader name="math" />
179180
</FeatureTestMacroValue>
180181
</FeatureTestMacro>
181182

182183
<FeatureTestMacro name="__STDC_VERSION_SETJMP_H__">
183184
<FeatureTestMacroValue value="202311L" since="C23">
184-
<Missing>`<setjmp.h>`</Missing>
185+
<CHeader name="setjmp" />
185186
</FeatureTestMacroValue>
186187
</FeatureTestMacro>
187188

188189
<FeatureTestMacro name="__STDC_VERSION_STDARG_H__">
189190
<FeatureTestMacroValue value="202311L" since="C23">
190-
<Missing>`<stdarg.h>`</Missing>
191+
<CHeader name="stdarg" />
191192
</FeatureTestMacroValue>
192193
</FeatureTestMacro>
193194

194195
<FeatureTestMacro name="__STDC_VERSION_STDATOMIC_H__">
195196
<FeatureTestMacroValue value="202311L" since="C23">
196-
<Missing>`<stdatomic.h>`</Missing>
197+
<CHeader name="stdatomic" />
197198
</FeatureTestMacroValue>
198199
</FeatureTestMacro>
199200

200201
<FeatureTestMacro name="__STDC_VERSION_STDBIT_H__">
201202
<FeatureTestMacroValue value="202311L" since="C23">
202-
<Missing>`<stdbit.h>`</Missing>
203+
<CHeader name="stdbit" />
203204
</FeatureTestMacroValue>
204205
</FeatureTestMacro>
205206

206207
<FeatureTestMacro name="__STDC_VERSION_STDCKDINT_H__">
207208
<FeatureTestMacroValue value="202311L" since="C23">
208-
<Missing>`<stdckdint.h>`</Missing>
209+
<CHeader name="stdckdint" />
209210
</FeatureTestMacroValue>
210211
</FeatureTestMacro>
211212

212213
<FeatureTestMacro name="__STDC_VERSION_STDDEF_H__">
213214
<FeatureTestMacroValue value="202311L" since="C23">
214-
<Missing>`<stddef.h>`</Missing>
215+
<CHeader name="stddef" />
215216
</FeatureTestMacroValue>
216217
</FeatureTestMacro>
217218

218219
<FeatureTestMacro name="__STDC_VERSION_STDINT_H__">
219220
<FeatureTestMacroValue value="202311L" since="C23">
220-
<Missing>`<stdint.h>`</Missing>
221+
<CHeader name="stdint" />
221222
</FeatureTestMacroValue>
222223
</FeatureTestMacro>
223224

224225
<FeatureTestMacro name="__STDC_VERSION_STDIO_H__">
225226
<FeatureTestMacroValue value="202311L" since="C23">
226-
<Missing>`<stdio.h>`</Missing>
227+
<CHeader name="stdio" />
227228
</FeatureTestMacroValue>
228229
</FeatureTestMacro>
229230

230231
<FeatureTestMacro name="__STDC_VERSION_STDLIB_H__">
231232
<FeatureTestMacroValue value="202311L" since="C23">
232-
<Missing>`<stdlib.h>`</Missing>
233+
<CHeader name="stdlib" />
233234
</FeatureTestMacroValue>
234235
</FeatureTestMacro>
235236

236237
<FeatureTestMacro name="__STDC_VERSION_STDMCHAR_H__">
237238
<FeatureTestMacroValue value="202311L" since="C23">
238-
<Missing>`<stdmchar.h>`</Missing>
239+
<CHeader name="stdmchar" />
239240
</FeatureTestMacroValue>
240241
</FeatureTestMacro>
241242

242243
<FeatureTestMacro name="__STDC_VERSION_STRING_H__">
243244
<FeatureTestMacroValue value="202311L" since="C23">
244-
<Missing>`<string.h>`</Missing>
245+
<CHeader name="string" />
245246
</FeatureTestMacroValue>
246247
</FeatureTestMacro>
247248

248249
<FeatureTestMacro name="__STDC_VERSION_TGMATH_H__">
249250
<FeatureTestMacroValue value="202311L" since="C23">
250-
<Missing>`<tgmath.h>`</Missing>
251+
<CHeader name="tgmath" />
251252
</FeatureTestMacroValue>
252253
</FeatureTestMacro>
253254

254255
<FeatureTestMacro name="__STDC_VERSION_TIME_H__">
255256
<FeatureTestMacroValue value="202311L" since="C23">
256-
<Missing>`<time.h>`</Missing>
257+
<CHeader name="time" />
257258
</FeatureTestMacroValue>
258259
</FeatureTestMacro>
259260

260261
<FeatureTestMacro name="__STDC_VERSION_UCHAR_H__">
261262
<FeatureTestMacroValue value="202311L" since="C23">
262-
<Missing>`<uchar.h>`</Missing>
263+
<CHeader name="uchar" />
263264
</FeatureTestMacroValue>
264265
</FeatureTestMacro>
265266

266267
<FeatureTestMacro name="__STDC_VERSION_WCHAR_H__">
267268
<FeatureTestMacroValue value="202311L" since="C23">
268-
<Missing>`<wchar.h>`</Missing>
269+
<CHeader name="wchar" />
269270
</FeatureTestMacroValue>
270271
</FeatureTestMacro>
271272

0 commit comments

Comments
 (0)