diff options
Diffstat (limited to 'src/utils')
-rw-r--r-- | src/utils/is_one_of.hpp | 17 | ||||
-rw-r--r-- | src/utils/optional_bool.cpp | 8 | ||||
-rw-r--r-- | src/utils/optional_bool.hpp | 4 |
3 files changed, 28 insertions, 1 deletions
diff --git a/src/utils/is_one_of.hpp b/src/utils/is_one_of.hpp new file mode 100644 index 0000000..4d6770e --- /dev/null +++ b/src/utils/is_one_of.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include <type_traits> + +template <typename...> +struct is_one_of_implem { + static constexpr bool value = false; +}; + +template <typename F, typename S, typename... T> +struct is_one_of_implem<F, S, T...> { + static constexpr bool value = + std::is_same<F, S>::value || is_one_of_implem<F, T...>::value; +}; + +template<typename... T> +constexpr bool is_one_of = is_one_of_implem<T...>::value; diff --git a/src/utils/optional_bool.cpp b/src/utils/optional_bool.cpp new file mode 100644 index 0000000..56fdca2 --- /dev/null +++ b/src/utils/optional_bool.cpp @@ -0,0 +1,8 @@ +#include <utils/optional_bool.hpp> + + +std::ostream& operator<<(std::ostream& os, const OptionalBool& o) +{ + os << o.to_string(); + return os; +} diff --git a/src/utils/optional_bool.hpp b/src/utils/optional_bool.hpp index 59bbbab..867aca2 100644 --- a/src/utils/optional_bool.hpp +++ b/src/utils/optional_bool.hpp @@ -20,7 +20,7 @@ struct OptionalBool this->is_set = false; } - std::string to_string() + std::string to_string() const { if (this->is_set == false) return "unset"; @@ -33,3 +33,5 @@ struct OptionalBool bool is_set{false}; bool value{false}; }; + +std::ostream& operator<<(std::ostream& os, const OptionalBool& o); |