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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
// --- ConfigBase Creation/Destruction ---
/**
* Creates a new config object with the specified parameters.
* Uses the platform-appropriate config implementation (wxFileConfig or wxRegConfig).
* @param app_name Application name (can be NULL to use wxApp::GetAppName()).
* @param vendor_name Vendor name (can be NULL).
* @param local_filename Local config filename (can be NULL).
* @param global_filename Global config filename (can be NULL).
* @param style Combination of wxd_ConfigStyle flags.
* @return Pointer to the new config object, or NULL on failure.
*/
WXD_EXPORTED wxd_ConfigBase_t*
;
/**
* Destroys a config object.
* @param config Pointer to the config object to destroy.
*/
WXD_EXPORTED void
;
// --- Static Functions ---
/**
* Gets the current global config object.
* If there is no current object and create_on_demand is true, creates one.
* @param create_on_demand If true, creates a config object if none exists.
* @return Pointer to the current config object, or NULL.
*/
WXD_EXPORTED wxd_ConfigBase_t*
;
/**
* Sets the global config object.
* @param config The config object to set as current (can be NULL).
* @return Pointer to the previous config object (can be NULL).
*/
WXD_EXPORTED wxd_ConfigBase_t*
;
// --- Path Management ---
/**
* Gets the current path.
* @param config Pointer to the config object.
* @param buffer Buffer to store the path.
* @param buffer_len Length of the buffer.
* @return Length of the path, or -1 on error.
*/
WXD_EXPORTED int
;
/**
* Sets the current path.
* @param config Pointer to the config object.
* @param path The path to set.
*/
WXD_EXPORTED void
;
// --- Read Operations ---
/**
* Reads a string value.
* @param config Pointer to the config object.
* @param key The key to read.
* @param buffer Buffer to store the value.
* @param buffer_len Length of the buffer.
* @param default_val Default value if key not found.
* @return Length of the value read, or -1 on error.
*/
WXD_EXPORTED int
;
/**
* Reads a long integer value.
* @param config Pointer to the config object.
* @param key The key to read.
* @param value Pointer to store the value.
* @param default_val Default value if key not found.
* @return true if value was found, false if default was used.
*/
WXD_EXPORTED bool
;
/**
* Reads a double value.
* @param config Pointer to the config object.
* @param key The key to read.
* @param value Pointer to store the value.
* @param default_val Default value if key not found.
* @return true if value was found, false if default was used.
*/
WXD_EXPORTED bool
;
/**
* Reads a boolean value.
* @param config Pointer to the config object.
* @param key The key to read.
* @param value Pointer to store the value.
* @param default_val Default value if key not found.
* @return true if value was found, false if default was used.
*/
WXD_EXPORTED bool
;
// --- Write Operations ---
/**
* Writes a string value.
* @param config Pointer to the config object.
* @param key The key to write.
* @param value The value to write.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
/**
* Writes a long integer value.
* @param config Pointer to the config object.
* @param key The key to write.
* @param value The value to write.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
/**
* Writes a double value.
* @param config Pointer to the config object.
* @param key The key to write.
* @param value The value to write.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
/**
* Writes a boolean value.
* @param config Pointer to the config object.
* @param key The key to write.
* @param value The value to write.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
// --- Existence Tests ---
/**
* Checks if an entry or group exists.
* @param config Pointer to the config object.
* @param name The name to check.
* @return true if exists, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Checks if an entry exists.
* @param config Pointer to the config object.
* @param name The entry name to check.
* @return true if exists, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Checks if a group exists.
* @param config Pointer to the config object.
* @param name The group name to check.
* @return true if exists, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Gets the type of an entry.
* @param config Pointer to the config object.
* @param name The entry name.
* @return The entry type (wxd_ConfigEntryType).
*/
WXD_EXPORTED int
;
// --- Delete Operations ---
/**
* Deletes an entry.
* @param config Pointer to the config object.
* @param key The key to delete.
* @param delete_group_if_empty If true, delete group if it becomes empty.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
/**
* Deletes a group and all its contents.
* @param config Pointer to the config object.
* @param key The group to delete.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
/**
* Deletes all entries and groups.
* @param config Pointer to the config object.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
// --- Enumeration ---
/**
* Gets the first entry in the current group.
* @param config Pointer to the config object.
* @param buffer Buffer to store the entry name.
* @param buffer_len Length of the buffer.
* @param index Pointer to store the enumeration cookie.
* @return true if an entry was found, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Gets the next entry in the current group.
* @param config Pointer to the config object.
* @param buffer Buffer to store the entry name.
* @param buffer_len Length of the buffer.
* @param index Pointer to the enumeration cookie.
* @return true if an entry was found, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Gets the first group in the current group.
* @param config Pointer to the config object.
* @param buffer Buffer to store the group name.
* @param buffer_len Length of the buffer.
* @param index Pointer to store the enumeration cookie.
* @return true if a group was found, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Gets the next group in the current group.
* @param config Pointer to the config object.
* @param buffer Buffer to store the group name.
* @param buffer_len Length of the buffer.
* @param index Pointer to the enumeration cookie.
* @return true if a group was found, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Gets the number of entries in the current group.
* @param config Pointer to the config object.
* @param recursive If true, count entries in subgroups too.
* @return Number of entries.
*/
WXD_EXPORTED size_t
;
/**
* Gets the number of groups in the current group.
* @param config Pointer to the config object.
* @param recursive If true, count groups in subgroups too.
* @return Number of groups.
*/
WXD_EXPORTED size_t
;
// --- Rename Operations ---
/**
* Renames an entry.
* @param config Pointer to the config object.
* @param old_name The current name.
* @param new_name The new name.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
/**
* Renames a group.
* @param config Pointer to the config object.
* @param old_name The current name.
* @param new_name The new name.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
// --- Miscellaneous ---
/**
* Flushes all changes to storage.
* @param config Pointer to the config object.
* @param current_only If true, only flush current group.
* @return true on success, false on failure.
*/
WXD_EXPORTED bool
;
/**
* Gets the application name.
* @param config Pointer to the config object.
* @param buffer Buffer to store the name.
* @param buffer_len Length of the buffer.
* @return Length of the name, or -1 on error.
*/
WXD_EXPORTED int
;
/**
* Gets the vendor name.
* @param config Pointer to the config object.
* @param buffer Buffer to store the name.
* @param buffer_len Length of the buffer.
* @return Length of the name, or -1 on error.
*/
WXD_EXPORTED int
;
/**
* Checks if environment variable expansion is enabled.
* @param config Pointer to the config object.
* @return true if enabled, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Sets whether to expand environment variables.
* @param config Pointer to the config object.
* @param do_it true to enable, false to disable.
*/
WXD_EXPORTED void
;
/**
* Checks if recording defaults is enabled.
* @param config Pointer to the config object.
* @return true if enabled, false otherwise.
*/
WXD_EXPORTED bool
;
/**
* Sets whether to record defaults.
* @param config Pointer to the config object.
* @param do_it true to enable, false to disable.
*/
WXD_EXPORTED void
;
// WXD_CONFIG_H