diff options
| author | Felix Morgner <felix.morgner@gmail.com> | 2025-05-13 14:19:42 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@gmail.com> | 2025-05-13 14:19:42 +0200 |
| commit | 661e98cf8bb61f29049d405aef9cdaace1449ac8 (patch) | |
| tree | c7217b59a5fe544ce620483cc08f21b94406d218 /lib/src/turnsmm/enums.cpp | |
| parent | fb015121f064f2be12d1e28cdc7c54e074ed0411 (diff) | |
| download | turns-661e98cf8bb61f29049d405aef9cdaace1449ac8.tar.xz turns-661e98cf8bb61f29049d405aef9cdaace1449ac8.zip | |
libmm: add tests
Diffstat (limited to 'lib/src/turnsmm/enums.cpp')
| -rw-r--r-- | lib/src/turnsmm/enums.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/lib/src/turnsmm/enums.cpp b/lib/src/turnsmm/enums.cpp new file mode 100644 index 0000000..91d6eb3 --- /dev/null +++ b/lib/src/turnsmm/enums.cpp @@ -0,0 +1,38 @@ +#include "turnsmm/enums.hpp" + +#include "turns-disposition.h" +#include "turns-enums.h" // IWYU pragma: keep + +#include <glib-object.h> + +#include <type_traits> + +namespace +{ + template<auto Wrapped, auto Unwrapped> + auto constexpr matches = + static_cast<std::underlying_type_t<decltype(Wrapped)>>(Wrapped) == static_cast<std::underlying_type_t<decltype(Unwrapped)>>(Unwrapped); +} // namespace + +namespace Turns +{ + + static_assert(matches<Disposition::Neutral, TURNS_DISPOSITION_NEUTRAL>); + static_assert(matches<Disposition::Friendly, TURNS_DISPOSITION_FRIENDLY>); + static_assert(matches<Disposition::Hostile, TURNS_DISPOSITION_HOSTILE>); + static_assert(matches<Disposition::Secret, TURNS_DISPOSITION_SECRET>); + +} // namespace Turns + +namespace Glib +{ +#define VALUE_SPECIALIZATION(Enum, TurnsEnumName) \ + auto Value<Turns::Enum>::value_type() -> GType \ + { \ + return turns_##TurnsEnumName##_get_type(); \ + } + + VALUE_SPECIALIZATION(Disposition, disposition) + +#undef VALUE_SPECIALIZATION +} // namespace Glib
\ No newline at end of file |
