|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- #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_ConfigTransformer;
-
- struct INI_ConfigItem;
-
- typedef void INI_ConfigTypeLoad(struct INI_ConfigItem*, const char*);
-
- typedef enum {
- INI_CONFIG_SAVE_ITEM_ERROR = -1,
- INI_CONFIG_SAVE_ITEM_OK,
- } INI_ConfigSaveItemResult;
-
- typedef INI_ConfigSaveItemResult INI_ConfigTypeSave(struct INI_ConfigItem*, const char*);
-
- typedef void INI_ConfigTypeOverride(struct INI_ConfigItem*, uint8_t, const char*[]);
- typedef struct {
- size_t size;
- INI_ConfigTypeLoad* load;
- INI_ConfigTypeSave* save;
- INI_ConfigTypeOverride* override;
- } INI_ConfigType;
-
- typedef struct INI_ConfigItem {
- INI_ConfigType type;
- const char* section;
- const char* key;
- const char* cmdline_option;
- const void* default_value;
- void* validator;
- INI_ConfigTransformer 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_ConfigLoadU32(INI_ConfigItem*, const char*);
- void INI_ConfigLoadI8(INI_ConfigItem*, const char*);
- void INI_ConfigLoadI16(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_ConfigSaveU32(INI_ConfigItem*, const char*);
- INI_ConfigSaveItemResult INI_ConfigSaveI8(INI_ConfigItem*, const char*);
- INI_ConfigSaveItemResult INI_ConfigSaveI16(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_ConfigOverrideU32(INI_ConfigItem*, uint8_t, const char*[]);
- void INI_ConfigOverrideI8(INI_ConfigItem*, uint8_t, const char*[]);
- void INI_ConfigOverrideI16(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_U8 (INI_ConfigType) { \
- .size = sizeof(uint8_t), \
- .load = INI_ConfigLoadU8, \
- .save = INI_ConfigSaveU8, \
- .override = INI_ConfigOverrideU8, \
- }
-
- #define INI_CONFIG_TYPE_U16 (INI_ConfigType) { \
- .size = sizeof(uint16_t), \
- .load = INI_ConfigLoadU16, \
- .save = INI_ConfigSaveU16, \
- .override = INI_ConfigOverrideU16, \
- }
-
- #define INI_CONFIG_TYPE_U32 (INI_ConfigType) { \
- .size = sizeof(uint32_t), \
- .load = INI_ConfigLoadU32, \
- .save = INI_ConfigSaveU32, \
- .override = INI_ConfigOverrideU32, \
- }
-
- #define INI_CONFIG_TYPE_I8 (INI_ConfigType) { \
- .size = sizeof(int8_t), \
- .load = INI_ConfigLoadI8, \
- .save = INI_ConfigSaveI8, \
- .override = INI_ConfigOverrideI8, \
- }
-
- #define INI_CONFIG_TYPE_I16 (INI_ConfigType) { \
- .size = sizeof(int16_t), \
- .load = INI_ConfigLoadI16, \
- .save = INI_ConfigSaveI16, \
- .override = INI_ConfigOverrideI16, \
- }
-
- #define INI_CONFIG_TYPE_I32 (INI_ConfigType) { \
- .size = sizeof(int32_t), \
- .load = INI_ConfigLoadI32, \
- .save = INI_ConfigSaveI32, \
- .override = INI_ConfigOverrideI32, \
- }
-
- #define INI_CONFIG_TYPE_FNS_STRING(X) (INI_ConfigType) { \
- .size = (sizeof(char) * X), \
- .load = INI_ConfigLoadString, \
- .save = INI_ConfigSaveString, \
- .override = INI_ConfigOverrideString, \
- }
-
- #define INI_CONFIG_TRANSFORMER_NONE (INI_ConfigTransformer) { \
- .serialize = NULL, \
- .deserialize = NULL, \
- }
-
- #define INI_CONFIG_ITEM_NULL (INI_ConfigItem) { \
- (INI_ConfigType) { \
- .size = 0, \
- .load = NULL, \
- .save = NULL, \
- .override = NULL, \
- }, \
- NULL, \
- NULL, \
- NULL, \
- NULL, \
- NULL, \
- INI_CONFIG_TRANSFORMER_NONE, \
- NULL, \
- }
-
- #endif
|