summaryrefslogtreecommitdiff
path: root/src/lib/efreet/efreet_ini.h
blob: e028caefaabe577081a5ea59ab07b9900a3e1adf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
#ifndef EFREET_INI_H
#define EFREET_INI_H

/**
 * @internal
 * @file efreet_ini.h
 * @brief A simple and fast INI parser
 * @addtogroup Efreet_Ini Efreet_Ini: An INI parser
 * @ingroup Efreet
 *
 * @{
 */

/**
 * Efreet_Ini
 */
typedef struct Efreet_Ini Efreet_Ini;

/**
 * Efreet_Ini
 * @brief Contains all the information about an ini file.
 */
struct Efreet_Ini
{
  Eina_Hash *data;     /**< Hash of string => (Hash of string => string) */
  Eina_Hash *section;  /**< currently selected section */
};


/**
 * @param file The file to parse
 * @return Returns a new Efreet_Ini structure initialized with the contents
 * of @a file, or NULL on memory allocation failure
 * @brief Creates and initializes a new Ini structure with the contents of
 * @a file, or NULL on failure
 */
EFREET_API Efreet_Ini  *efreet_ini_new(const char *file);

/**
 * @param ini The Efreet_Ini to work with
 * @return Returns no value
 * @brief Frees the given Efree_Ini structure.
 */
EFREET_API void         efreet_ini_free(Efreet_Ini *ini);

/**
 * @param ini The Efreet_Ini to work with
 * @param file The file to load
 * @return Returns no value
 * @brief Saves the given Efree_Ini structure.
 */
EFREET_API int          efreet_ini_save(Efreet_Ini *ini, const char *path);


/**
 * @param ini The Efreet_Ini to work with
 * @param section The section of the ini file we want to get values from
 * @return Returns 1 if the section exists, otherwise 0
 * @brief Sets the current working section of the ini file to @a section
 */
EFREET_API int          efreet_ini_section_set(Efreet_Ini *ini, const char *section);

/**
 * @param ini The Efreet_Ini to work with
 * @param section The section of the ini file we want to add
 * @return Returns no value
 * @brief Adds a new working section of the ini file to @a section
 */
EFREET_API void         efreet_ini_section_add(Efreet_Ini *ini, const char *section);


/**
 * @param ini The Efree_Ini to work with
 * @param key The key to lookup
 * @return Returns the string associated with the given key or NULL if not
 * found.
 * @brief Retrieves the value for the given key or NULL if none found.
 */
EFREET_API const char  *efreet_ini_string_get(Efreet_Ini *ini, const char *key);

/**
 * @param ini The Efree_Ini to work with
 * @param key The key to use
 * @param value The value to set
 * @return Returns no value
 * @brief Sets the value for the given key
 */
EFREET_API void         efreet_ini_string_set(Efreet_Ini *ini, const char *key,
                                                    const char *value);


/**
 * @param ini The ini struct to work with
 * @param key The key to search for
 * @return Returns the utf8 encoded string associated with @a key, or NULL
 *         if none found
 * @brief Retrieves the utf8 encoded string associated with @a key in the current locale or NULL if none found
 */
EFREET_API const char  *efreet_ini_localestring_get(Efreet_Ini *ini, const char *key);

/**
 * @param ini The ini struct to work with
 * @param key The key to use
 * @param value The value to set
 * @return Returns no value
 * @brief Sets the value for the given key
 */
EFREET_API void         efreet_ini_localestring_set(Efreet_Ini *ini, const char *key,
                                                    const char *value);


/**
 * @param ini The ini struct to work with
 * @param key The key to search for
 * @return Returns 1 if the boolean is true, 0 otherwise
 * @brief Retrieves the boolean value at key @a key from the ini @a ini
 */
EFREET_API unsigned int efreet_ini_boolean_get(Efreet_Ini *ini, const char *key);

/**
 * @param ini The ini struct to work with
 * @param key The key to use
 * @param value The value to set
 * @return Returns no value
 * @brief Sets the value for the given key
 */
EFREET_API void         efreet_ini_boolean_set(Efreet_Ini *ini, const char *key,
                                                    unsigned int value);


/**
 * @param ini The Efree_Ini to work with
 * @param key The key to lookup
 * @return Returns the integer associated with the given key or -1 if not
 * found.
 * @brief Retrieves the value for the given key or -1 if none found.
 */
EFREET_API int          efreet_ini_int_get(Efreet_Ini *ini, const char *key);

/**
 * @param ini The Efree_Ini to work with
 * @param key The key to use
 * @param value The value to set
 * @return Returns no value
 * @brief Sets the value for the given key
 */
EFREET_API void         efreet_ini_int_set(Efreet_Ini *ini, const char *key, int value);


/**
 * @param ini The Efree_Ini to work with
 * @param key The key to lookup
 * @return Returns the double associated with the given key or -1 if not
 * found.
 * @brief Retrieves the value for the given key or -1 if none found.
 */
EFREET_API double       efreet_ini_double_get(Efreet_Ini *ini, const char *key);

/**
 * @param ini The Efree_Ini to work with
 * @param key The key to use
 * @param value The value to set
 * @return Returns no value
 * @brief Sets the value for the given key
 */
EFREET_API void         efreet_ini_double_set(Efreet_Ini *ini, const char *key,
                                                    double value);


/**
 * @param ini The ini struct to work with
 * @param key The key to remove
 * @return Returns no value
 * @brief Remove the given key from the ini struct
 */
EFREET_API void         efreet_ini_key_unset(Efreet_Ini *ini, const char *key);

/**
 * @}
 */

#endif