From f61df0b33ea2a2de064f1fa2a9cde191b790a5ba Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 19 May 2025 16:28:02 +0200 Subject: lib: rescope enums --- lib/src/turnsmm/enum_helpers.hpp | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lib/src/turnsmm/enum_helpers.hpp (limited to 'lib/src/turnsmm/enum_helpers.hpp') diff --git a/lib/src/turnsmm/enum_helpers.hpp b/lib/src/turnsmm/enum_helpers.hpp new file mode 100644 index 0000000..a3f1455 --- /dev/null +++ b/lib/src/turnsmm/enum_helpers.hpp @@ -0,0 +1,34 @@ +#ifndef TURNSMM_ENUM_HELPERS_HPP +#define TURNSMM_ENUM_HELPERS_HPP + +#include + +#include +#include + +#include + +#define TURNS_DECLARE_ENUM_VALUE_SPECIALIZATION(Enum) \ + template<> \ + class Value<::Turns::Enum> : public Glib::Value_Enum<::Turns::Enum> \ + { \ + public: \ + auto static value_type() -> GType; \ + } + +#define TURNS_DEFINE_VALUE_SPECIALIZATION(Enum, TurnsEnumName) \ + auto Value<::Turns::Enum>::value_type() -> GType \ + { \ + return ::turns_##TurnsEnumName##_get_type(); \ + } + +namespace Turns +{ + + template + auto constexpr enum_matches = + static_cast>(Wrapped) == static_cast>(Unwrapped); + +} // namespace Turns + +#endif \ No newline at end of file -- cgit v1.2.3