diff options
Diffstat (limited to 'core/src/disposition.cpp')
| -rw-r--r-- | core/src/disposition.cpp | 37 |
1 files changed, 31 insertions, 6 deletions
diff --git a/core/src/disposition.cpp b/core/src/disposition.cpp index 81fb410..4a1a496 100644 --- a/core/src/disposition.cpp +++ b/core/src/disposition.cpp @@ -3,24 +3,49 @@ #include <glibmm/i18n.h> #include <glibmm/ustring.h> +#include <glib-object.h> + +#include <array> +#include <atomic> + namespace turns::core { - auto presentation_name_for(disposition value) -> Glib::ustring + auto presentation_name_for(Disposition value) -> Glib::ustring { switch (value) { - case disposition::neutral: + case Disposition::neutral: return _("Neutral"); - case disposition::friendly: + case Disposition::friendly: return _("Friendly"); - case disposition::hostile: + case Disposition::hostile: return _("Hostile"); - case disposition::secret: + case Disposition::secret: return _("Secret"); default: return _("Unknown disposition value"); } } -} // namespace turns::core
\ No newline at end of file +} // namespace turns::core + +namespace Glib +{ + auto Value<turns::core::Disposition>::value_type() -> GType + { + auto static is_initialized = std::atomic_flag{false}; + auto static const values = std::array{ + GEnumValue{static_cast<int>(turns::core::Disposition::neutral), "TURNS_DISPOSITION_NEUTRAL", "neutral" }, + GEnumValue{static_cast<int>(turns::core::Disposition::friendly), "TURNS_DISPOSITION_FRIENDLY", "friendly"}, + GEnumValue{static_cast<int>(turns::core::Disposition::hostile), "TURNS_DISPOSITION_HOSTILE", "hostile" }, + GEnumValue{static_cast<int>(turns::core::Disposition::secret), "TURNS_DISPOSITION_SECRET", "secret" }, + GEnumValue{0, nullptr, nullptr }, + }; + if (!is_initialized.test_and_set()) + { + gtype_ = g_enum_register_static("TurnsDisposition", values.data()); + } + return gtype_; + } +} // namespace Glib
\ No newline at end of file |
