|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #ifndef INI_CONFIG_H
- #define INI_CONFIG_H
-
- #include <stdlib.h>
- #include <string.h>
- #include <stdint.h>
- #include <stdbool.h>
- #include <minIni.h>
-
- typedef struct {
- void* serialize;
- void* deserialize;
- } INI_ConfigSerializerPair;
-
- struct INI_ConfigItem;
-
- typedef void INI_ConfigLoadType(struct INI_ConfigItem*, const char*);
-
- typedef enum {
- INI_CONFIG_SAVE_ITEM_ERROR = -1,
- INI_CONFIG_SAVE_ITEM_OK,
- } INI_ConfigSaveItemResult;
-
- typedef INI_ConfigSaveItemResult INI_ConfigSaveType(struct INI_ConfigItem*, const char*);
-
- typedef void INI_ConfigOverrideType(struct INI_ConfigItem*, uint8_t, const char*[]);
- typedef struct {
- size_t size;
- INI_ConfigLoadType* load;
- INI_ConfigSaveType* save;
- INI_ConfigOverrideType* override;
- } INI_ConfigTypeFns;
-
- typedef struct INI_ConfigItem {
- INI_ConfigTypeFns fns;
- const char* section;
- const char* key;
- const char* cmdline_option;
- const void* default_value;
- void* validator;
- INI_ConfigSerializerPair transformer;
- void* dest;
- } INI_ConfigItem;
-
- void INI_ConfigGetDefaultPath(char*, size_t);
-
- const char* INI_ConfigGetCommandlineOption(uint8_t, const char*[], const char*);
-
- typedef enum {
- INI_CONFIG_INITIALIZE_RESULT_ERROR = -1,
- INI_CONFIG_INITIALIZE_RESULT_OK,
- INI_CONFIG_INITIALIZE_RESULT_WARNING
- } INI_ConfigInitializeResult;
-
- INI_ConfigInitializeResult INI_ConfigInitialize(INI_ConfigItem[], const char*, uint8_t, const char*[]);
-
- typedef int32_t INI_ConfigSaveResult;
-
- INI_ConfigSaveResult INI_ConfigSave(INI_ConfigItem[], const char*);
-
- void INI_ConfigLoadU8(INI_ConfigItem*, const char*);
- void INI_ConfigLoadU16(INI_ConfigItem*, const char*);
- void INI_ConfigLoadI32(INI_ConfigItem*, const char*);
- void INI_ConfigLoadString(INI_ConfigItem*, const char*);
-
- INI_ConfigSaveItemResult INI_ConfigSaveU8(INI_ConfigItem*, const char*);
- INI_ConfigSaveItemResult INI_ConfigSaveU16(INI_ConfigItem*, const char*);
- INI_ConfigSaveItemResult INI_ConfigSaveI32(INI_ConfigItem*, const char*);
- INI_ConfigSaveItemResult INI_ConfigSaveString(INI_ConfigItem*, const char*);
-
- void INI_ConfigOverrideU8(INI_ConfigItem*, uint8_t, const char*[]);
- void INI_ConfigOverrideU16(INI_ConfigItem*, uint8_t, const char*[]);
- void INI_ConfigOverrideI32(INI_ConfigItem*, uint8_t, const char*[]);
- void INI_ConfigOverrideString(INI_ConfigItem*, uint8_t, const char*[]);
-
- #define INI_CONFIG_TYPE_FNS_I32 (INI_ConfigTypeFns) { \
- .size = sizeof(int32_t), \
- .load = INI_ConfigLoadI32, \
- .save = INI_ConfigSaveI32, \
- .override = INI_ConfigOverrideI32, \
- }
-
- #define INI_CONFIG_TYPE_FNS_U16 (INI_ConfigTypeFns) { \
- .size = sizeof(uint16_t), \
- .load = INI_ConfigLoadU16, \
- .save = INI_ConfigSaveU16, \
- .override = INI_ConfigOverrideU16, \
- }
-
- #define INI_CONFIG_TYPE_FNS_U8 (INI_ConfigTypeFns) { \
- .size = sizeof(uint8_t), \
- .load = INI_ConfigLoadU8, \
- .save = INI_ConfigSaveU8, \
- .override = INI_ConfigOverrideU8, \
- }
-
- #define INI_CONFIG_TYPE_FNS_VOID (INI_ConfigTypeFns) { \
- .size = 0, \
- .load = NULL, \
- .save = NULL, \
- .override = NULL, \
- }
-
- #define INI_CONFIG_TYPE_FNS_STRING(X) (INI_ConfigTypeFns) { \
- .size = (X), \
- .load = INI_ConfigLoadString, \
- .save = INI_ConfigSaveString, \
- .override = INI_ConfigOverrideString, \
- }
-
- #define INI_CONFIG_ITEM_NULL (INI_ConfigItem) { \
- INI_CONFIG_TYPE_FNS_VOID, \
- NULL, \
- NULL, \
- NULL, \
- NULL, \
- NULL, \
- { \
- .serialize = NULL, \
- .deserialize = NULL, \
- }, \
- NULL, \
- }
-
- #endif
|