diff options
author | Aqua-sama <aqua@iserlohn-fortress.net> | 2019-11-03 09:38:02 +0200 |
---|---|---|
committer | Aqua-sama <aqua@iserlohn-fortress.net> | 2019-11-03 09:38:02 +0200 |
commit | 30b42a9617f5047cbaee13860b3f8b6ddf14a968 (patch) | |
tree | 89d40b7a00114c7ba6e64b9e019a74caebbd2a58 /lib/configuration/configuration.h | |
parent | Make gtest optional dependency and remove -Dtesting (diff) | |
download | smolbote-30b42a9617f5047cbaee13860b3f8b6ddf14a968.tar.xz |
Fix gcc compile errors and warnings
Diffstat (limited to 'lib/configuration/configuration.h')
-rw-r--r-- | lib/configuration/configuration.h | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/lib/configuration/configuration.h b/lib/configuration/configuration.h index bc8f52e..b77685a 100644 --- a/lib/configuration/configuration.h +++ b/lib/configuration/configuration.h @@ -19,27 +19,39 @@ #include <QAction> #include <QString> +#if defined (__clang__) +#define consumable(X) [[clang::consumable(X)]] +#define return_typestate(X) [[clang::return_typestate(X)]] +#define callable_when(X) [[clang::callable_when(X)]] +#define param_typestate(X) [[clang::param_typestate(X)]] +#else +#define consumable(X) +#define return_typestate(X) +#define callable_when(X) +#define param_typestate(X) +#endif + typedef std::variant<std::string, int, bool> conf_value_t; -class [[clang::consumable(unconsumed)]] Configuration : private std::unordered_map<std::string, conf_value_t> +class consumable(unconsumed) Configuration : private std::unordered_map<std::string, conf_value_t> { public: - [[clang::return_typestate(unconsumed)]] + return_typestate(unconsumed) explicit Configuration(); - [[clang::return_typestate(unconsumed)]] + return_typestate(unconsumed) explicit Configuration(std::initializer_list<std::pair<std::string, conf_value_t>> l) noexcept; - explicit Configuration(Configuration &&other [[clang::param_typestate(unconsumed)]]) = default; + explicit Configuration(Configuration &&other param_typestate(unconsumed)) = default; ~Configuration() = default; - [[clang::callable_when(unconsumed)]] + callable_when(unconsumed) void read(std::basic_istream<char> &input); template <typename T> - [[clang::callable_when(unconsumed)]] std::optional<T> value(const char *path) const + callable_when(unconsumed) std::optional<T> value(const char *path) const { if(use_global) return instance()->value<T>(path); |