annotate th_config.h @ 771:c17eadc60c3d

Rename th_ioctx struct to th_ioctx_t, for consistency. Breaks API.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 20 Feb 2023 23:33:45 +0200
parents 31bc1ed07cf5
children 4744e64ffa3a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 /*
10
a25f5d22483e Updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
2 * Very simple configuration file handling
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3 * Programmed and designed by Matti 'ccr' Hamalainen
726
29e44a58bc73 Bump copyrights.
Matti Hamalainen <ccr@tnsp.org>
parents: 722
diff changeset
4 * (C) Copyright 2004-2022 Tecnic Software productions (TNSP)
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
5 *
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
6 * Please read file 'COPYING' for information on license and distribution.
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 */
622
6d99150a8f89 Some more slight Doxygenisation.
Matti Hamalainen <ccr@tnsp.org>
parents: 604
diff changeset
8 /// @file
6d99150a8f89 Some more slight Doxygenisation.
Matti Hamalainen <ccr@tnsp.org>
parents: 604
diff changeset
9 /// @brief Configuration file handling functionality.
49
598609fb49b0 Change how "config.h" is included, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
10 #ifndef TH_CONFIG_H
598609fb49b0 Change how "config.h" is included, etc.
Matti Hamalainen <ccr@tnsp.org>
parents: 22
diff changeset
11 #define TH_CONFIG_H
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12
270
6cfa9bc91ee6 Remember to include th_datastruct.h where needed.
Matti Hamalainen <ccr@tnsp.org>
parents: 203
diff changeset
13 #include "th_datastruct.h"
153
4cd94649475d Move header includes before C++ guard.
Matti Hamalainen <ccr@tnsp.org>
parents: 152
diff changeset
14 #include "th_ioctx.h"
4cd94649475d Move header includes before C++ guard.
Matti Hamalainen <ccr@tnsp.org>
parents: 152
diff changeset
15
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
16 #ifdef __cplusplus
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
17 extern "C" {
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 #endif
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19
604
e789accfca87 Comment cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 553
diff changeset
20 //
e789accfca87 Comment cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 553
diff changeset
21 // Definitions
e789accfca87 Comment cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 553
diff changeset
22 //
69
28156333ef4c Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 66
diff changeset
23 enum ITEM_TYPE
28156333ef4c Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 66
diff changeset
24 {
16
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
25 ITEM_SECTION = 1,
11
e467b3586e4d Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 10
diff changeset
26 ITEM_COMMENT,
496
8c837a33cfb6 Add argument names to some function prototypes.
Matti Hamalainen <ccr@tnsp.org>
parents: 457
diff changeset
27
10
a25f5d22483e Updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
28 ITEM_STRING,
a25f5d22483e Updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
29 ITEM_INT,
a25f5d22483e Updates.
Matti Hamalainen <ccr@tnsp.org>
parents: 3
diff changeset
30 ITEM_UINT,
735
31bc1ed07cf5 Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents: 726
diff changeset
31 ITEM_bool,
11
e467b3586e4d Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 10
diff changeset
32 ITEM_FLOAT,
16
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
33 ITEM_HEX_TRIPLET,
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
34
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
35 ITEM_STRING_LIST,
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
36 ITEM_HEX_TRIPLET_LIST
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
37 };
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
38
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
39
654
1092eb33bd59 Doxygen fix.
Matti Hamalainen <ccr@tnsp.org>
parents: 623
diff changeset
40 typedef struct th_cfgitem_t
70
a0e1b29be35d Refactor configuration file handling module rather thoroughly. The API is
Matti Hamalainen <ccr@tnsp.org>
parents: 69
diff changeset
41 {
500
25fc4ab342d3 Add a comment about struct aliasing.
Matti Hamalainen <ccr@tnsp.org>
parents: 499
diff changeset
42 // th_llist_t must be the first item, as this
25fc4ab342d3 Add a comment about struct aliasing.
Matti Hamalainen <ccr@tnsp.org>
parents: 499
diff changeset
43 // is used to alias th_cfgitem_t to llist nodes
155
23a79bd6c9d6 Use th_llist for th_config module as well instead of duped linked list
Matti Hamalainen <ccr@tnsp.org>
parents: 153
diff changeset
44 th_llist_t node;
23a79bd6c9d6 Use th_llist for th_config module as well instead of duped linked list
Matti Hamalainen <ccr@tnsp.org>
parents: 153
diff changeset
45
15
Matti Hamalainen <ccr@tnsp.org>
parents: 11
diff changeset
46 int type;
11
e467b3586e4d Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 10
diff changeset
47 char *name;
15
Matti Hamalainen <ccr@tnsp.org>
parents: 11
diff changeset
48 union {
Matti Hamalainen <ccr@tnsp.org>
parents: 11
diff changeset
49 int *val_int;
Matti Hamalainen <ccr@tnsp.org>
parents: 11
diff changeset
50 unsigned int *val_uint;
16
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
51 char **val_str;
735
31bc1ed07cf5 Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents: 726
diff changeset
52 bool *val_bool;
172
eb2c073d93b3 Adding floating point configuration item support.
Matti Hamalainen <ccr@tnsp.org>
parents: 170
diff changeset
53 float *val_float;
16
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
54
Matti Hamalainen <ccr@tnsp.org>
parents: 15
diff changeset
55 void *data;
152
b4e1b15a64e1 Rename qlist_t doubly linked list structure to th_llist_t.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
56 th_llist_t **list;
654
1092eb33bd59 Doxygen fix.
Matti Hamalainen <ccr@tnsp.org>
parents: 623
diff changeset
57 struct th_cfgitem_t *section;
22
1ac2449c4df7 ISO C99 compatibility fixes.
Matti Hamalainen <ccr@tnsp.org>
parents: 16
diff changeset
58 } v;
70
a0e1b29be35d Refactor configuration file handling module rather thoroughly. The API is
Matti Hamalainen <ccr@tnsp.org>
parents: 69
diff changeset
59 } th_cfgitem_t;
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
60
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
61
604
e789accfca87 Comment cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 553
diff changeset
62 //
e789accfca87 Comment cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 553
diff changeset
63 // Functions
e789accfca87 Comment cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 553
diff changeset
64 //
771
c17eadc60c3d Rename th_ioctx struct to th_ioctx_t, for consistency. Breaks API.
Matti Hamalainen <ccr@tnsp.org>
parents: 735
diff changeset
65 int th_cfg_read(th_ioctx_t *fh, th_cfgitem_t *cfg /*, TODO XXX const int flags (for controlling things like "error out on unknown items or ignore" etc */);
708
a34715d51ea4 Add support for deallocator function in th_cfg_free() for freeing the values.
Matti Hamalainen <ccr@tnsp.org>
parents: 654
diff changeset
66 void th_cfg_free(th_cfgitem_t *cfg, void (*freefunc)(th_cfgitem_t *));
771
c17eadc60c3d Rename th_ioctx struct to th_ioctx_t, for consistency. Breaks API.
Matti Hamalainen <ccr@tnsp.org>
parents: 735
diff changeset
67 int th_cfg_write(th_ioctx_t *fh, const th_cfgitem_t *cfg);
70
a0e1b29be35d Refactor configuration file handling module rather thoroughly. The API is
Matti Hamalainen <ccr@tnsp.org>
parents: 69
diff changeset
68
a0e1b29be35d Refactor configuration file handling module rather thoroughly. The API is
Matti Hamalainen <ccr@tnsp.org>
parents: 69
diff changeset
69 int th_cfg_add_comment(th_cfgitem_t **cfg, const char *comment);
499
836e16f27b34 Cleanup.
Matti Hamalainen <ccr@tnsp.org>
parents: 498
diff changeset
70 int th_cfg_add_section(th_cfgitem_t **cfg, const char *name, th_cfgitem_t *sect);
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71
170
8e69e07e5aac Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 155
diff changeset
72 int th_cfg_add_int(th_cfgitem_t **cfg, const char *name, int *data, int defValue);
8e69e07e5aac Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 155
diff changeset
73 int th_cfg_add_uint(th_cfgitem_t **cfg, const char *name, unsigned int *data, unsigned int defValue);
8e69e07e5aac Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 155
diff changeset
74 int th_cfg_add_float(th_cfgitem_t **cfg, const char *name, float *data, float defValue);
8e69e07e5aac Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 155
diff changeset
75 int th_cfg_add_string(th_cfgitem_t **cfg, const char *name, char **data, char *defValue);
735
31bc1ed07cf5 Renaming BOOL->bool and TRUE/FALSE to true/false, and using stdbool.h if available.
Matti Hamalainen <ccr@tnsp.org>
parents: 726
diff changeset
76 int th_cfg_add_bool(th_cfgitem_t **cfg, const char *name, bool *data, bool defValue);
170
8e69e07e5aac Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 155
diff changeset
77 int th_cfg_add_float(th_cfgitem_t **cfg, const char *name, float *data, float defValue);
498
1dbd9259c3b8 Change hexvalue type to unsigned.
Matti Hamalainen <ccr@tnsp.org>
parents: 496
diff changeset
78 int th_cfg_add_hexvalue(th_cfgitem_t **cfg, const char *name, unsigned int *data, unsigned int defValue);
152
b4e1b15a64e1 Rename qlist_t doubly linked list structure to th_llist_t.
Matti Hamalainen <ccr@tnsp.org>
parents: 144
diff changeset
79 int th_cfg_add_string_list(th_cfgitem_t **cfg, const char *name, th_llist_t **list);
15
Matti Hamalainen <ccr@tnsp.org>
parents: 11
diff changeset
80
83
50006067bcd1 Add new function, th_cfg_find().
Matti Hamalainen <ccr@tnsp.org>
parents: 70
diff changeset
81 th_cfgitem_t *th_cfg_find(th_cfgitem_t *cfg, const char *section, const char *name, const int type);
0
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
82
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83 #ifdef __cplusplus
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
84 }
bd61a80a6c54 Initial import into Mercurial repository. Discarding old cvs/svn history
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85 #endif
129
aa2d608fb3f3 Cosmetics.
Matti Hamalainen <ccr@tnsp.org>
parents: 83
diff changeset
86 #endif // TH_CONFIG_H