aboutsummaryrefslogtreecommitdiff
path: root/core/src/disposition.cpp
blob: 4a1a496e9885e5179ca81db578370a084590ac03 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "turns/core/disposition.hpp"

#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
  {
    switch (value)
    {
    case Disposition::neutral:
      return _("Neutral");
    case Disposition::friendly:
      return _("Friendly");
    case Disposition::hostile:
      return _("Hostile");
    case Disposition::secret:
      return _("Secret");
    default:
      return _("Unknown disposition value");
    }
  }

}  // 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