13#ifndef FC__REGISTRY_INI_H
14#define FC__REGISTRY_INI_H
33typedef const char * (*secfile_enum_name_fn_t) (
int enumerator);
43#define SPECLIST_TAG section
45#define section_list_iterate(seclist, psection) \
46 TYPED_LIST_ITERATE(struct section, seclist, psection)
47#define section_list_iterate_end LIST_ITERATE_END
48#define section_list_iterate_rev(seclist, psection) \
49 TYPED_LIST_ITERATE_REV(struct section, seclist, psection)
50#define section_list_iterate_rev_end LIST_ITERATE_REV_END
53#define SPECLIST_TAG entry
55#define entry_list_iterate(entlist, pentry) \
56 TYPED_LIST_ITERATE(struct entry, entlist, pentry)
57#define entry_list_iterate_end LIST_ITERATE_END
78 const char *path, ...)
80#define secfile_insert_bool(secfile, value, path, ...) \
81 secfile_insert_bool_full(secfile, value, nullptr, FALSE, \
83#define secfile_insert_bool_comment(secfile, value, comment, path, ...) \
84 secfile_insert_bool_full(secfile, value, comment, FALSE, \
86#define secfile_replace_bool(secfile, value, path, ...) \
87 secfile_insert_bool_full(secfile, value, nullptr, TRUE, \
89#define secfile_replace_bool_comment(secfile, value, comment, path, ...) \
90 secfile_insert_bool_full(secfile, value, comment, TRUE, \
93 const bool *values,
size_t dim,
95 const char *path, ...)
97#define secfile_insert_bool_vec(secfile, values, dim, path, ...) \
98 secfile_insert_bool_vec_full(secfile, values, dim, nullptr, FALSE, \
100#define secfile_insert_bool_vec_comment(secfile, values, dim, \
101 comment, path, ...) \
102 secfile_insert_bool_vec_full(secfile, values, dim, comment, FALSE, \
103 path, ## __VA_ARGS__)
104#define secfile_replace_bool_vec(secfile, values, dim, path, ...) \
105 secfile_insert_bool_vec_full(secfile, values, dim, nullptr, TRUE, \
106 path, ## __VA_ARGS__)
107#define secfile_replace_bool_vec_comment(secfile, values, dim, \
108 comment, path, ...) \
109 secfile_insert_bool_vec_full(secfile, values, comment, TRUE, \
110 path, ## __VA_ARGS__)
115 const char *path, ...)
117#define secfile_insert_int(secfile, value, path, ...) \
118 secfile_insert_int_full(secfile, value, nullptr, FALSE, \
119 path, ## __VA_ARGS__)
120#define secfile_insert_int_comment(secfile, value, comment, path, ...) \
121 secfile_insert_int_full(secfile, value, comment, FALSE, \
122 path, ## __VA_ARGS__)
123#define secfile_replace_int(secfile, value, path, ...) \
124 secfile_insert_int_full(secfile, value, nullptr, TRUE, \
125 path, ## __VA_ARGS__)
126#define secfile_replace_int_comment(secfile, value, comment, path, ...) \
127 secfile_insert_int_full(secfile, value, comment, TRUE, \
128 path, ## __VA_ARGS__)
130 const int *values,
size_t dim,
132 const char *path, ...)
134#define secfile_insert_int_vec(secfile, values, dim, path, ...) \
135 secfile_insert_int_vec_full(secfile, values, dim, nullptr, FALSE, \
136 path, ## __VA_ARGS__)
137#define secfile_insert_int_vec_comment(secfile, values, dim, \
138 comment, path, ...) \
139 secfile_insert_int_vec_full(secfile, values, dim, comment, FALSE, \
140 path, ## __VA_ARGS__)
141#define secfile_replace_int_vec(secfile, values, dim, path, ...) \
142 secfile_insert_int_vec_full(secfile, values, dim, nullptr, TRUE, \
143 path, ## __VA_ARGS__)
144#define secfile_replace_int_vec_comment(secfile, values, dim, \
145 comment, path, ...) \
146 secfile_insert_int_vec_full(secfile, values, dim, comment, TRUE, \
147 path, ## __VA_ARGS__)
152 const char *path, ...)
154#define secfile_insert_float(secfile, value, path, ...) \
155 secfile_insert_float_full(secfile, value, nullptr, FALSE, \
156 path, ## __VA_ARGS__)
157#define secfile_replace_float(secfile, value, path, ...) \
158 secfile_insert_float_full(secfile, value, nullptr, TRUE, \
159 path, ## __VA_ARGS__)
162 const char *filename);
165 const char *comment);
172 const char *path, ...)
174#define secfile_insert_str(secfile, string, path, ...) \
175 secfile_insert_str_full(secfile, string, nullptr, FALSE, FALSE, FALSE, \
176 path, ## __VA_ARGS__)
177#define secfile_insert_str_noescape(secfile, string, path, ...) \
178 secfile_insert_str_full(secfile, string, nullptr, FALSE, TRUE, FALSE, \
179 path, ## __VA_ARGS__)
180#define secfile_insert_str_comment(secfile, string, comment, path, ...) \
181 secfile_insert_str_full(secfile, string, comment, FALSE, TRUE, FALSE, \
182 path, ## __VA_ARGS__)
183#define secfile_insert_str_noescape_comment(secfile, string, \
184 comment, path, ...) \
185 secfile_insert_str_full(secfile, string, comment, FALSE, TRUE, FALSE, \
186 path, ## __VA_ARGS__)
187#define secfile_replace_str(secfile, string, path, ...) \
188 secfile_insert_str_full(secfile, string, nullptr, TRUE, FALSE, FALSE, \
189 path, ## __VA_ARGS__)
190#define secfile_replace_str_noescape(secfile, string, path, ...) \
191 secfile_insert_str_full(secfile, string, nullptr, TRUE, TRUE, FALSE, \
192 path, ## __VA_ARGS__)
193#define secfile_replace_str_comment(secfile, string, comment, path, ...) \
194 secfile_insert_str_full(secfile, string, comment, TRUE, TRUE, FALSE, \
195 path, ## __VA_ARGS__)
196#define secfile_replace_str_noescape_comment(secfile, string, \
197 comment, path, ...) \
198 secfile_insert_str_full(secfile, string, comment, TRUE, TRUE, FALSE, \
199 path, ## __VA_ARGS__)
205#define secfile_insert_str_vec(secfile, strings, dim, path, ...) \
206 secfile_insert_str_vec_full(secfile, strings, dim, nullptr, FALSE, FALSE, \
207 path, ## __VA_ARGS__)
208#define secfile_insert_str_vec_noescape(secfile, strings, dim, path, ...) \
209 secfile_insert_str_vec_full(secfile, strings, dim, nullptr, FALSE, TRUE, \
210 path, ## __VA_ARGS__)
211#define secfile_insert_str_vec_comment(secfile, strings, dim, \
212 comment, path, ...) \
213 secfile_insert_str_vec_full(secfile, strings, dim, comment, FALSE, TRUE, \
214 path, ## __VA_ARGS__)
215#define secfile_insert_str_vec_noescape_comment(secfile, strings, dim, \
216 comment, path, ...) \
217 secfile_insert_str_vec_full(secfile, strings, dim, comment, FALSE, TRUE, \
218 path, ## __VA_ARGS__)
219#define secfile_replace_str_vec(secfile, strings, dim, path, ...) \
220 secfile_insert_str_vec_full(secfile, strings, dim, nullptr, TRUE, FALSE, \
221 path, ## __VA_ARGS__)
222#define secfile_replace_str_vec_noescape(secfile, strings, dim, path, ...) \
223 secfile_insert_str_vec_full(secfile, strings, dim, nullptr, TRUE, TRUE, \
224 path, ## __VA_ARGS__)
225#define secfile_replace_str_vec_comment(secfile, strings, dim, \
226 comment, path, ...) \
227 secfile_insert_str_vec_full(secfile, strings, dim, comment, TRUE, TRUE, \
228 path, ## __VA_ARGS__)
229#define secfile_replace_str_vec_noescape_comment(secfile, strings, dim, \
230 comment, path, ...) \
231 secfile_insert_str_vec_full(secfile, strings, dim, comment, TRUE, TRUE, \
232 path, ## __VA_ARGS__)
239 const char *path, ...)
249 const char *path, ...)
251#define secfile_insert_enum_full(secfile, enumerator, specenum_type, \
252 comment, allow_replace, path, ...) \
253(specenum_type##_is_bitwise() \
254 ? secfile_insert_bitwise_enum_full(secfile, enumerator, \
255 (secfile_enum_name_fn_t) \
256 specenum_type##_name, \
257 (secfile_enum_iter_fn_t) \
258 specenum_type##_begin, \
259 (secfile_enum_iter_fn_t) \
260 specenum_type##_end, \
261 (secfile_enum_next_fn_t) \
262 specenum_type##_next, \
263 comment, allow_replace, \
264 path, ## __VA_ARGS__) \
265 : secfile_insert_plain_enum_full(secfile, enumerator, \
266 (secfile_enum_name_fn_t) \
267 specenum_type##_name, \
268 comment, allow_replace, \
269 path, ## __VA_ARGS__))
270#define secfile_insert_enum(secfile, enumerator, specenum_type, path, ...) \
271 secfile_insert_enum_full(secfile, enumerator, specenum_type, nullptr, FALSE, \
272 path, ## __VA_ARGS__)
273#define secfile_insert_enum_comment(secfile, enumerator, specenum_type, \
274 comment, path, ...) \
275 secfile_insert_enum_full(secfile, enumerator, specenum_type, comment, \
276 FALSE, path, ## __VA_ARGS__)
277#define secfile_replace_enum(secfile, enumerator, specenum_type, path, ...) \
278 secfile_insert_enum_full(secfile, enumerator, specenum_type, nullptr, TRUE, \
279 path, ## __VA_ARGS__)
280#define secfile_replace_enum_comment(secfile, enumerator, specenum_type, \
281 comment, path, ...) \
282 secfile_insert_enum_full(secfile, enumerator, specenum_type, comment, \
283 TRUE, path, ## __VA_ARGS__)
289 const char *path, ...)
300 const char *path, ...)
302#define secfile_insert_enum_vec_full(secfile, enumerators, dim, \
303 specenum_type, comment, allow_replace, \
305(specenum_type##_is_bitwise() \
306 ? secfile_insert_bitwise_enum_vec_full(secfile, (const int *) enumerators, \
308 (secfile_enum_name_fn_t) \
309 specenum_type##_name, \
310 (secfile_enum_iter_fn_t) \
311 specenum_type##_begin, \
312 (secfile_enum_iter_fn_t) \
313 specenum_type##_end, \
314 (secfile_enum_next_fn_t) \
315 specenum_type##_next, \
316 comment, allow_replace, \
317 path, ## __VA_ARGS__) \
318 : secfile_insert_plain_enum_vec_full(secfile, (const int *) enumerators, \
320 (secfile_enum_name_fn_t) \
321 specenum_type##_name, \
322 comment, allow_replace, \
323 path, ## __VA_ARGS__))
324#define secfile_insert_enum_vec(secfile, enumerators, dim, specenum_type, \
326 secfile_insert_enum_vec_full(secfile, enumerators, dim, specenum_type, \
327 nullptr, FALSE, path, ## __VA_ARGS__)
328#define secfile_insert_enum_vec_comment(secfile, enumerators, dim, \
329 specenum_type, comment, path, ...) \
330 secfile_insert_enum_vec_full(secfile, enumerators, dim, specenum_type, \
331 comment, FALSE, path, ## __VA_ARGS__)
332#define secfile_replace_enum_vec(secfile, enumerators, dim, specenum_type, \
334 secfile_insert_enum_vec_full(secfile, enumerators, dim, specenum_type, \
335 nullptr, TRUE, path, ## __VA_ARGS__)
336#define secfile_replace_enum_vec_comment(secfile, enumerators, dim, \
337 specenum_type, comment, path, ...) \
338 secfile_insert_enum_vec_full(secfile, enumerators, dim, specenum_type, \
339 comment, TRUE, path, ## __VA_ARGS__)
342 int value,
bool bitwise,
347 const char *path, ...)
349#define secfile_insert_enum_data(secfile, value, bitwise, name_fn, data, \
351 secfile_insert_enum_data_full(secfile, value, bitwise, name_fn, data, \
352 nullptr, FALSE, path, ## __VA_ARGS__)
353#define secfile_insert_enum_data_comment(secfile, value, bitwise, name_fn, \
355 secfile_insert_enum_data_full(secfile, value, bitwise, name_fn, data, \
356 comment, FALSE, path, ## __VA_ARGS__)
357#define secfile_replace_enum_data(secfile, value, bitwise, name_fn, data, \
359 secfile_insert_enum_data_full(secfile, value, bitwise, name_fn, data, \
360 nullptr, TRUE, path, ## __VA_ARGS__)
361#define secfile_replace_enum_data_comment(secfile, value, bitwise, name_fn, \
363 secfile_insert_enum_data_full(secfile, value, bitwise, name_fn, data, \
364 comment, TRUE, path, ## __VA_ARGS__)
366 const int *values,
size_t dim,
372 const char *path, ...)
374#define secfile_insert_enum_vec_data(secfile, values, dim, bitwise, \
375 name_fn, data, path, ...) \
376 secfile_insert_enum_vec_data_full(secfile, values, dim, bitwise, name_fn, \
377 data, nullptr, FALSE, path, ## __VA_ARGS__)
378#define secfile_insert_enum_vec_data_comment(secfile, values, dim, bitwise, \
379 name_fn, data, path, ...) \
380 secfile_insert_enum_vec_data_full(secfile, values, dim, bitwise, name_fn, \
381 data, comment, FALSE, path, \
383#define secfile_replace_enum_vec_data(secfile, values, dim, bitwise, \
384 name_fn, data, path, ...) \
385 secfile_insert_enum_vec_data_full(secfile, values, dim, bitwise, name_fn, \
386 data, nullptr, TRUE, path, ## __VA_ARGS__)
387#define secfile_replace_enum_vec_data_comment(secfile, values, dim, \
388 bitwise, name_fn, data, path, \
390 secfile_insert_enum_vec_data_full(secfile, values, dim, bitwise, name_fn, \
391 data, comment, TRUE, path, \
395 const char *filename,
396 const char *path, ...)
401 const char *path, ...)
406 const char *path, ...)
413 const char *path, ...)
418#define secfile_entry_ignore(_sfile_, _fmt_, ...) \
419 (void) secfile_entry_lookup(_sfile_, _fmt_, ## __VA_ARGS__)
420#define secfile_entry_ignore_by_path(_sfile_, _path_) \
421 (void) secfile_entry_by_path(_sfile_, _path_)
424 const char *path, ...)
428 bool def,
const char *path, ...)
437 const char *path, ...)
441 const char *path, ...)
446 const char *path, ...)
455 const char *path, ...)
459 float def,
const char *path, ...);
462 const char *path, ...)
467 const char *path, ...)
478 const char *path, ...)
485 const char *path, ...)
488#define secfile_lookup_enum(secfile, enumerator, specenum_type, path, ...) \
489(specenum_type##_is_bitwise() \
490 ? secfile_lookup_bitwise_enum_full(secfile, FC_ENUM_PTR(enumerator), \
491 (secfile_enum_is_valid_fn_t) \
492 specenum_type##_is_valid, \
493 (secfile_enum_by_name_fn_t) \
494 specenum_type##_by_name, \
495 path, ## __VA_ARGS__) \
496 : secfile_lookup_plain_enum_full(secfile, FC_ENUM_PTR(enumerator), \
497 (secfile_enum_is_valid_fn_t) \
498 specenum_type##_is_valid, \
499 (secfile_enum_by_name_fn_t) \
500 specenum_type##_by_name, \
501 path, ## __VA_ARGS__))
508 const char *path, ...)
517 const char *path, ...)
520#define secfile_lookup_enum_default(secfile, defval, specenum_type, \
522(specenum_type##_is_bitwise() \
523 ? secfile_lookup_bitwise_enum_default_full(secfile, defval, \
524 (secfile_enum_is_valid_fn_t) \
525 specenum_type##_is_valid, \
526 (secfile_enum_by_name_fn_t) \
527 specenum_type##_by_name, \
528 path, ## __VA_ARGS__) \
529 : secfile_lookup_plain_enum_default_full(secfile, defval, \
530 (secfile_enum_is_valid_fn_t) \
531 specenum_type##_is_valid, \
532 (secfile_enum_by_name_fn_t) \
533 specenum_type##_by_name, \
534 path, ## __VA_ARGS__))
541 const char *path, ...)
550 const char *path, ...)
553#define secfile_lookup_enum_vec(secfile, dim, specenum_type, \
555(specenum_type##_is_bitwise() \
556 ? (enum specenum_type *) \
557 secfile_lookup_bitwise_enum_vec_full(secfile, dim, \
558 (secfile_enum_is_valid_fn_t) \
559 specenum_type##_is_valid, \
560 (secfile_enum_by_name_fn_t) \
561 specenum_type##_by_name, \
562 path, ## __VA_ARGS__) \
563 : (enum specenum_type *) \
564 secfile_lookup_plain_enum_vec_full(secfile, dim, \
565 (secfile_enum_is_valid_fn_t) \
566 specenum_type##_is_valid, \
567 (secfile_enum_by_name_fn_t) \
568 specenum_type##_by_name, \
569 path, ## __VA_ARGS__))
572 int *pvalue,
bool bitwise,
581 const char *path, ...)
585 size_t *
dim,
bool bitwise,
595 const char *path, ...)
619 const char *path, ...)
const char * section_name(const struct section *psection)
bool bool bool * secfile_lookup_bool_vec(const struct section_file *secfile, size_t *dim, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
bool bool bool bool int int int * secfile_lookup_int_vec(const struct section_file *secfile, size_t *dim, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
bool int secfile_lookup_enum_default_data(const struct section_file *secfile, int defval, bool bitwise, secfile_enum_name_data_fn_t name_fn, secfile_data_t data, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
const char const char * secfile_lookup_str_default(const struct section_file *secfile, const char *def, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
void entry_set_comment(struct entry *pentry, const char *comment)
bool entry_bool_get(const struct entry *pentry, bool *value)
void section_destroy(struct section *psection)
bool int int * secfile_lookup_enum_vec_data(const struct section_file *secfile, size_t *dim, bool bitwise, secfile_enum_name_data_fn_t name_fn, secfile_data_t data, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
void secfile_check_unused(const struct section_file *secfile)
int entry_path(const struct entry *pentry, char *buf, size_t buf_len)
struct section * secfile_insert_long_comment(struct section_file *secfile, const char *comment)
size_t size_t secfile_insert_bitwise_enum_vec_full(struct section_file *secfile, const int *bitwise_vals, size_t dim, secfile_enum_name_fn_t name_fn, secfile_enum_iter_fn_t begin_fn, secfile_enum_iter_fn_t end_fn, secfile_enum_next_fn_t next_fn, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
int(* secfile_enum_iter_fn_t)(void)
const char const char const char bool bool secfile_lookup_bitwise_enum_full(const struct section_file *secfile, int *penumerator, secfile_enum_is_valid_fn_t is_valid_fn, secfile_enum_by_name_fn_t by_name_fn, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
int * secfile_lookup_plain_enum_vec_full(const struct section_file *secfile, size_t *dim, secfile_enum_is_valid_fn_t is_valid_fn, secfile_enum_by_name_fn_t by_name_fn, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
struct entry struct entry * secfile_insert_comment(struct section_file *secfile, const char *str, const char *path,...) fc__attribute((__format__(__printf__
const char *(* secfile_enum_name_data_fn_t)(secfile_data_t data, int enumerator)
struct entry * secfile_insert_bool_full(struct section_file *secfile, bool value, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
bool entry_str_escaped(const struct entry *pentry)
bool bool bool bool int int int bool float secfile_lookup_float_default(const struct section_file *secfile, float def, const char *path,...)
size_t secfile_insert_int_vec_full(struct section_file *secfile, const int *values, size_t dim, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
struct section * entry_section(const struct entry *pentry)
struct entry * secfile_entry_lookup(const struct section_file *secfile, const char *path,...) fc__attribute((__format__(__printf__
struct section_list * secfile_sections_by_name_prefix(const struct section_file *secfile, const char *prefix)
const struct entry_list * section_entries(const struct section *psection)
struct entry struct entry bool secfile_entry_delete(struct section_file *secfile, const char *path,...) fc__attribute((__format__(__printf__
struct section_file * secfile_load_section(const char *filename, const char *section, bool allow_duplicates)
bool entry_bool_set(struct entry *pentry, bool value)
struct section_file * secfile_from_stream(fz_FILE *stream, bool allow_duplicates)
struct entry * secfile_insert_filereference(struct section_file *secfile, const char *filename, const char *path,...) fc__attribute((__format__(__printf__
struct entry * secfile_insert_plain_enum_full(struct section_file *secfile, int enumerator, secfile_enum_name_fn_t name_fn, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
int int * secfile_lookup_bitwise_enum_vec_full(const struct section_file *secfile, size_t *dim, secfile_enum_is_valid_fn_t is_valid_fn, secfile_enum_by_name_fn_t by_name_fn, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
bool entry_float_get(const struct entry *pentry, float *value)
bool entry_str_set_escaped(struct entry *pentry, bool escaped)
struct entry struct entry bool struct entry * secfile_entry_by_path(const struct section_file *secfile, const char *path)
size_t secfile_insert_bool_vec_full(struct section_file *secfile, const bool *values, size_t dim, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
const char * entry_name(const struct entry *pentry)
const char const char const char ** secfile_lookup_str_vec(const struct section_file *secfile, size_t *dim, const char *path,...) fc__attribute((__format__(__printf__
struct entry * section_entry_float_new(struct section *psection, const char *entry_name, float value)
bool entry_str_get(const struct entry *pentry, const char **value)
bool entry_str_set_gt_marking(struct entry *pentry, bool gt_marking)
bool(* secfile_enum_is_valid_fn_t)(int enumerator)
bool secfile_save(const struct section_file *secfile, const char *filename, int compression_level, enum fz_method compression_method, bool do_formatting)
void entry_destroy(struct entry *pentry)
int int secfile_lookup_bitwise_enum_default_full(const struct section_file *secfile, int defval, secfile_enum_is_valid_fn_t is_valid_fn, secfile_enum_by_name_fn_t by_name_fn, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
bool int int struct section * secfile_section_by_name(const struct section_file *secfile, const char *section_name)
void section_clear_all(struct section *psection)
bool entry_float_set(struct entry *pentry, float value)
struct entry * secfile_insert_enum_data_full(struct section_file *secfile, int value, bool bitwise, secfile_enum_name_data_fn_t name_fn, secfile_data_t data, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
bool secfile_lookup_enum_data(const struct section_file *secfile, int *pvalue, bool bitwise, secfile_enum_name_data_fn_t name_fn, secfile_data_t data, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
struct section * secfile_insert_include(struct section_file *secfile, const char *filename)
bool entry_int_set(struct entry *pentry, int value)
const char *(* secfile_enum_name_fn_t)(int enumerator)
const char * secfile_lookup_str(const struct section_file *secfile, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
struct section * secfile_section_lookup(const struct section_file *secfile, const char *path,...) fc__attribute((__format__(__printf__
bool bool secfile_lookup_bool_default(const struct section_file *secfile, bool def, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
bool secfile_lookup_bool(const struct section_file *secfile, bool *bval, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
struct entry * section_entry_str_new(struct section *psection, const char *entry_name, const char *value, bool escaped)
int secfile_lookup_plain_enum_default_full(const struct section_file *secfile, int defval, secfile_enum_is_valid_fn_t is_valid_fn, secfile_enum_by_name_fn_t by_name_fn, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
struct entry * secfile_insert_str_full(struct section_file *secfile, const char *str, const char *comment, bool allow_replace, bool no_escape, enum entry_special_type stype, const char *path,...) fc__attribute((__format__(__printf__
bool entry_int_get(const struct entry *pentry, int *value)
struct entry * secfile_insert_int_full(struct section_file *secfile, int value, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
bool entry_set_name(struct entry *pentry, const char *entry_name)
size_t secfile_insert_str_vec_full(struct section_file *secfile, const char *const *strings, size_t dim, const char *comment, bool allow_replace, bool no_escape, const char *path,...) fc__attribute((__format__(__printf__
struct entry struct entry * section_entry_int_new(struct section *psection, const char *entry_name, int value)
const char * secfile_name(const struct section_file *secfile)
size_t secfile_insert_enum_vec_data_full(struct section_file *secfile, const int *values, size_t dim, bool bitwise, secfile_enum_name_data_fn_t name_fn, secfile_data_t data, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
const char * entry_comment(const struct entry *pentry)
const char const char const char bool secfile_lookup_plain_enum_full(const struct section_file *secfile, int *penumerator, secfile_enum_is_valid_fn_t is_valid_fn, secfile_enum_by_name_fn_t by_name_fn, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
bool bool bool bool int int secfile_lookup_int_def_min_max(const struct section_file *secfile, int defval, int minval, int maxval, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
struct entry * secfile_insert_float_full(struct section_file *secfile, float value, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
struct entry * section_entry_by_name(const struct section *psection, const char *entry_name)
bool bool bool bool int secfile_lookup_int_default(const struct section_file *secfile, int def, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
bool secfile_section_prefix_present(const struct section_file *secfile, const char *prefix)
struct entry struct entry * secfile_insert_bitwise_enum_full(struct section_file *secfile, int bitwise_val, secfile_enum_name_fn_t name_fn, secfile_enum_iter_fn_t begin_fn, secfile_enum_iter_fn_t end_fn, secfile_enum_next_fn_t next_fn, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
struct entry * section_entry_lookup(const struct section *psection, const char *path,...) fc__attribute((__format__(__printf__
struct section * secfile_section_new(struct section_file *secfile, const char *section_name)
bool entry_str_set(struct entry *pentry, const char *value)
bool bool bool bool int int int bool secfile_lookup_float(const struct section_file *secfile, float *fval, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
int(* secfile_enum_by_name_fn_t)(const char *enum_name, int(*strcmp_fn)(const char *, const char *))
struct entry * section_entry_bool_new(struct section *psection, const char *entry_name, bool value)
size_t secfile_insert_plain_enum_vec_full(struct section_file *secfile, const int *enumurators, size_t dim, secfile_enum_name_fn_t name_fn, const char *comment, bool allow_replace, const char *path,...) fc__attribute((__format__(__printf__
bool bool bool bool secfile_lookup_int(const struct section_file *secfile, int *ival, const char *path,...) fc__warn_unused_result fc__attribute((__format__(__printf__
bool section_set_name(struct section *psection, const char *section_name)
int(* secfile_enum_next_fn_t)(int enumerator)
struct section const struct section_list * secfile_sections(const struct section_file *secfile)
const void * secfile_data_t
enum entry_type entry_type_get(const struct entry *pentry)
struct section * psection
struct section_file * secfile
#define fc__warn_unused_result