xref: /freebsd/lib/libbsdconf/bsdconf_formats.h (revision 3fe5961a0b708da599d42cbb6b5e4f030c28ea45)
1*3fe5961aSDevin Teske /*
2*3fe5961aSDevin Teske  * Copyright (c) 2013-2026 Devin Teske <dteske@FreeBSD.org>
3*3fe5961aSDevin Teske  * Copyright (c) 2021-2026 Faraz Vahedi <kfv@FreeBSD.org>
4*3fe5961aSDevin Teske  *
5*3fe5961aSDevin Teske  * SPDX-License-Identifier: BSD-2-Clause
6*3fe5961aSDevin Teske  */
7*3fe5961aSDevin Teske 
8*3fe5961aSDevin Teske #ifndef _BSDCONF_FORMATS_H_
9*3fe5961aSDevin Teske #define _BSDCONF_FORMATS_H_
10*3fe5961aSDevin Teske 
11*3fe5961aSDevin Teske #include "bsdconf.h"
12*3fe5961aSDevin Teske 
13*3fe5961aSDevin Teske /*
14*3fe5961aSDevin Teske  * The built-in format descriptors, one translation unit per format.
15*3fe5961aSDevin Teske  * This header is deliberately not installed.
16*3fe5961aSDevin Teske  *
17*3fe5961aSDevin Teske  * Every format is a self-contained bsdconf_format_<keyword>.c defining a
18*3fe5961aSDevin Teske  * single descriptor; the registry in bsdconf_format.c does nothing but
19*3fe5961aSDevin Teske  * collect them into the table indexed by enum bsdconf_format. Adding a
20*3fe5961aSDevin Teske  * format to the library therefore touches no existing parsing or writing
21*3fe5961aSDevin Teske  * code: drop in the new file, declare its descriptor here, append one
22*3fe5961aSDevin Teske  * enum constant in bsdconf.h and one pointer to the registry table, and
23*3fe5961aSDevin Teske  * list the file in the Makefile.
24*3fe5961aSDevin Teske  *
25*3fe5961aSDevin Teske  * A candidate format whose syntax the existing processing/put flags cannot
26*3fe5961aSDevin Teske  * express (for example, brace-grouped statement blocks) is handled by
27*3fe5961aSDevin Teske  * teaching the shared engine (bsdconf.c and bsdconf_put.c) a new flag that
28*3fe5961aSDevin Teske  * the new descriptor is first to set, so the capability composes with
29*3fe5961aSDevin Teske  * every other format rather than living in a private parser.
30*3fe5961aSDevin Teske  */
31*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_generic_def;
32*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_loader_def;
33*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_make_def;
34*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_src_def;
35*3fe5961aSDevin Teske extern const struct bsdconf_format_def bsdconf_format_sysctl_def;
36*3fe5961aSDevin Teske 
37*3fe5961aSDevin Teske #endif /* !_BSDCONF_FORMATS_H_ */
38