osuplusplus/include/osuparser.hpp
jacekpoz c5491dbc9f
refactor a huge part of the code
this allows for creating only input and output streams and allows me to
finally print out the generated config struct
2024-04-20 13:37:06 +02:00

83 lines
1.6 KiB
C++

#pragma once
#include <filesystem>
namespace fs = std::filesystem;
#include <config.hpp>
#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 <config_def.hpp>
#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