annotate ini.h @ 92:4d723e81b685

Same thing for parray
author David Demelier <markand@malikania.fr>
date Tue, 03 Jan 2012 17:54:35 +0100
parents 145493469aa0
children dcaf2c61c902
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
79
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 * ini.h -- parse .ini like files
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
3 *
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 * Copyright (c) 2011, David Demelier <markand@malikania.fr>
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
5 *
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
8 * copyright notice and this permission notice appear in all copies.
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 *
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 */
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
18
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #ifndef _INI_H_
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #define _INI_H_
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 #define INI_VERBOSE (1 << 0) /* be verbose */
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 #define INI_NOREDEFINE (1 << 1) /* do not allow redefinitions */
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #define INI_FAILERROR (1 << 2) /* abort parsing on first error */
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 struct ini_config;
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 struct ini_section;
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
28
82
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
29 struct ini_handler {
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
30 const char *section; /* section to query */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
31 const char *option; /* option to check */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
32 void *dst; /* where to store */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
33
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
34 /* Conversion function */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
35 void (*handler)(void *, const char *, void *);
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
36 void *userdata; /* optional user data */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
37 };
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
38
79
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 /* --------------------------------------------------------
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 * struct ini_config functions.
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 * -------------------------------------------------------- */
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
42
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
43 struct ini_config *
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 ini_load(const char *, int);
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
45
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 char **
81
f42bcb9e7b4a Add const and little security fix with *nb pointer
David Demelier <markand@malikania.fr>
parents: 79
diff changeset
47 ini_get_sections_names(const struct ini_config *, int *);
79
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
48
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 struct ini_section **
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 ini_get_sections(const struct ini_config *, const char *, int *);
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
51
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 struct ini_section *
81
f42bcb9e7b4a Add const and little security fix with *nb pointer
David Demelier <markand@malikania.fr>
parents: 79
diff changeset
53 ini_select_section(const struct ini_config *, const char *);
79
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
54
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 char *
81
f42bcb9e7b4a Add const and little security fix with *nb pointer
David Demelier <markand@malikania.fr>
parents: 79
diff changeset
56 ini_get_option_once(const struct ini_config *, const char *, const char *);
79
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
57
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 void
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 ini_free(struct ini_config *, int, int);
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 /* --------------------------------------------------------
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 * struct ini_section functions.
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 * -------------------------------------------------------- */
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
64
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 char **
81
f42bcb9e7b4a Add const and little security fix with *nb pointer
David Demelier <markand@malikania.fr>
parents: 79
diff changeset
66 ini_get_option_names(const struct ini_section *, int *);
79
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
67
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 char *
81
f42bcb9e7b4a Add const and little security fix with *nb pointer
David Demelier <markand@malikania.fr>
parents: 79
diff changeset
69 ini_get_option(const struct ini_section *, const char *key);
79
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
82
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
71 /* --------------------------------------------------------
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
72 * convenient api to query and convert data
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
73 * -------------------------------------------------------- */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
74
90
145493469aa0 Little bit of cosmetic
David Demelier <markand@malikania.fr>
parents: 87
diff changeset
75 char *
145493469aa0 Little bit of cosmetic
David Demelier <markand@malikania.fr>
parents: 87
diff changeset
76 ini_get_error(void);
145493469aa0 Little bit of cosmetic
David Demelier <markand@malikania.fr>
parents: 87
diff changeset
77
82
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
78 /*
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
79 * For the config, read all available value and store them in
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
80 * the array ini_handler.
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
81 */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
82
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
83 void
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
84 ini_value_dispatch(struct ini_config *, struct ini_handler *, int);
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
85
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
86 /*
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
87 * Convert to bool. dst must be (char *).
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
88 * It converts "yes" "true" "1" or opposites. Only lower
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
89 * case is supported right now.
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
90 */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
91
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
92 void
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
93 ini_convert_bool(void *, const char *, void *);
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
94
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
95 /*
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
96 * Convert to a int. dst must be (int *).
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
97 */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
98
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
99 void
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
100 ini_convert_int(void *, const char *, void *);
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
101
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
102 /*
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
103 * Convert to a short. dst must be (short *).
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
104 */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
105
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
106 void
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
107 ini_convert_short(void *, const char *, void *);
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
108
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
109 /*
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
110 * Convert to a char *. dst must be (char **). This
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
111 * function use strdup() you need to free the dst
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
112 * pointer.
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
113 */
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
114
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
115 void
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
116 ini_convert_string(void *, const char *, void *);
c8bbdbedcf07 Added a little convenient API for ini
David Demelier <markand@malikania.fr>
parents: 81
diff changeset
117
79
fd817a7dbf2f Switched a lot of things in ini
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 #endif /* _INI_H_ */