#ifndef COMET_CONFIG_H #define COMET_CONFIG_H #include #include #include "block.h" typedef enum { CONFIG_STRING, CONFIG_INT, CONFIG_UINT, CONFIG_DOUBLE, CONFIG_BOOL, CONFIG_COLOR, } config_type_t; typedef struct { const char *key; config_type_t type; size_t offset; } config_entry_t; typedef bool (*config_block_apply_t)(block_t *block, void *result); typedef struct { const char *type_name; size_t type_size; block_t base; const config_entry_t *entries; config_block_apply_t apply; } config_block_t; typedef struct { size_t n_blocks; block_t *blocks; char *font; char *monitor; uint32_t height; uint32_t width; bool override_redirect; color_t background; } config_t; void config_init(config_t *config); void config_read(config_t *config, FILE *file); void config_resolve(config_t *config, block_t *block); void config_free(config_t *config); #endif