aboutsummaryrefslogtreecommitdiff
path: root/core/src/disposition.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/disposition.cpp')
-rw-r--r--core/src/disposition.cpp37
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