#pragma once #include namespace fs = std::filesystem; #include #define CONFIG(name, ...) name parse##name(fs::path configPath); #define SECTION(name, ...) #define VAR_UINT(section, name) #define VAR_UINT_D(section, name, default) #define VAR_INT(section, name) #define VAR_INT_D(section, name, default) #define VAR_STRING(section, name) #define VAR_STRING_D(section, name, default) #define VAR_BOOL(section, name) #define VAR_BOOL_D(section, name, default) #define VAR_FLOAT(section, name) #define VAR_FLOAT_D(section, name, default) #define VAR_COLOUR(section, name) #define VAR_COLOUR_D(section, name, default) #define ENUM(name, ...) #define VAR_ENUM(section, name, enum_type) #define VAR_ENUM_D(section, name, enum_type, default) #define STRUCT_INPUT_STREAM_OP(name, ...) #define STRUCT_OUTPUT_STREAM_OP(name, ...) #define STRUCT_STREAM_OPS(name, ...) #define STRUCT(name, ...) #define VAR_STRUCT(section, name, struct_type) #define VAR_STRUCT_D(section, name, struct_type, default) #define VAR_LIST(section, name, type) #define VAR_LIST_SEP(section, name, type, sep) #define VAR_LIST_NUMBERED(section, name, type) #include #undef CONFIG #undef SECTION #undef VAR_UINT #undef VAR_UINT_D #undef VAR_INT #undef VAR_INT_D #undef VAR_STRING #undef VAR_STRING_D #undef VAR_BOOL #undef VAR_BOOL_D #undef VAR_FLOAT #undef VAR_FLOAT_D #undef VAR_COLOUR #undef VAR_COLOUR_D #undef ENUM #undef VAR_ENUM #undef VAR_ENUM_D #undef STRUCT_INPUT_STREAM_OP #undef STRUCT_OUTPUT_STREAM_OP #undef STRUCT_STREAM_OPS #undef STRUCT #undef VAR_STRUCT #undef VAR_STRUCT_D #undef VAR_LIST #undef VAR_LIST_SEP #undef VAR_LIST_NUMBERED