summaryrefslogtreecommitdiff
path: root/lib/src/turns-turn-order.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src/turns-turn-order.cpp')
-rw-r--r--lib/src/turns-turn-order.cpp80
1 files changed, 80 insertions, 0 deletions
diff --git a/lib/src/turns-turn-order.cpp b/lib/src/turns-turn-order.cpp
new file mode 100644
index 0000000..538ff11
--- /dev/null
+++ b/lib/src/turns-turn-order.cpp
@@ -0,0 +1,80 @@
+#include "turns-turn-order.h"
+
+#include <glib-object.h>
+#include <glib.h>
+
+#include <array>
+#include <cstddef>
+
+G_BEGIN_DECLS
+
+struct _TurnsTurnOrder
+{
+ GObject parent_instance;
+
+ gboolean running;
+};
+
+G_DEFINE_FINAL_TYPE(TurnsTurnOrder, turns_turn_order, G_TYPE_OBJECT);
+
+G_END_DECLS
+
+namespace
+{
+ enum struct property
+ {
+ Running = 1,
+ N_PROPERTIES,
+ };
+
+ auto static constinit properties = std::array<GParamSpec *, static_cast<std::size_t>(property::N_PROPERTIES)>{};
+
+ auto get_property(GObject * self, guint id, GValue * value, GParamSpec * specification) -> void
+ {
+ auto instance = TURNS_TURN_ORDER(self);
+
+ switch (static_cast<property>(id))
+ {
+ case property::Running:
+ return g_value_set_boolean(value, turns_turn_order_get_running(instance));
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(self, id, specification);
+ }
+ }
+
+} // namespace
+
+G_BEGIN_DECLS
+
+static void turns_turn_order_class_init(TurnsTurnOrderClass * klass)
+{
+ auto object_class = G_OBJECT_CLASS(klass);
+
+ object_class->get_property = get_property;
+
+ properties[static_cast<std::size_t>(property::Running)] =
+ g_param_spec_boolean("running",
+ "Running",
+ "Whether or not the turn order is running (e.g. has been started)",
+ false,
+ static_cast<GParamFlags>(G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY));
+
+ g_object_class_install_properties(object_class, properties.size(), properties.data());
+}
+
+static void turns_turn_order_init(TurnsTurnOrder *)
+{
+}
+
+TurnsTurnOrder * turns_turn_order_new()
+{
+ return TURNS_TURN_ORDER(g_object_new(TURNS_TYPE_TURN_ORDER, nullptr));
+}
+
+gboolean turns_turn_order_get_running(TurnsTurnOrder const * self)
+{
+ g_return_val_if_fail(TURNS_IS_TURN_ORDER(const_cast<TurnsTurnOrder *>(self)), false);
+ return self->running;
+}
+
+G_END_DECLS \ No newline at end of file