summaryrefslogtreecommitdiff
path: root/lib/include/turns-turn-order.h
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2025-05-23 13:51:10 +0200
committerFelix Morgner <felix.morgner@gmail.com>2025-05-23 13:51:10 +0200
commitc45004b73bb045328a724d1d860df6d1515af6d4 (patch)
tree4ce448eeb947e87f0447e9be20d90151a26421c9 /lib/include/turns-turn-order.h
parent14db127b26bc47861b6c41f144fe6e3b4ce283a0 (diff)
downloadturns-c45004b73bb045328a724d1d860df6d1515af6d4.tar.xz
turns-c45004b73bb045328a724d1d860df6d1515af6d4.zip
lib: split out header files
Diffstat (limited to 'lib/include/turns-turn-order.h')
-rw-r--r--lib/include/turns-turn-order.h125
1 files changed, 125 insertions, 0 deletions
diff --git a/lib/include/turns-turn-order.h b/lib/include/turns-turn-order.h
new file mode 100644
index 0000000..5e34405
--- /dev/null
+++ b/lib/include/turns-turn-order.h
@@ -0,0 +1,125 @@
+/*
+ * SPDX-FileCopyrightText: 2025 Felix Morgner <felix.morgner@gmail.com>
+ * SPDX-License-Identifier: LGPL-2.1-only
+ */
+
+#ifndef TURNS_TURN_ORDER_H
+#define TURNS_TURN_ORDER_H
+
+#include "turns-participant.h"
+
+#include <glib-object.h>
+#include <glib.h>
+
+G_BEGIN_DECLS
+
+/**
+ * TurnsTurnOrderSortMode:
+ * @TURNS_TURN_ORDER_SORT_MODE_DESCENDING: Sort higher priorities before lower ones
+ * @TURNS_TURN_ORDER_SORT_MODE_ASCENDING: Sort higher priorities after lower ones
+ *
+ * Orderings that can be applied to the turn order.
+ *
+ * See [property@Turns.TurnOrder.sort-mode]
+ */
+typedef enum
+{
+ TURNS_TURN_ORDER_SORT_MODE_DESCENDING,
+ TURNS_TURN_ORDER_SORT_MODE_ASCENDING,
+} TurnsTurnOrderSortMode;
+
+GType turns_turn_order_sort_mode_get_type(void) G_GNUC_CONST;
+#define TURNS_TYPE_TURN_ORDER_SORT_MODE (turns_turn_order_sort_mode_get_type())
+
+#define TURNS_TYPE_TURN_ORDER turns_turn_order_get_type()
+G_DECLARE_FINAL_TYPE(TurnsTurnOrder, turns_turn_order, TURNS, TURN_ORDER, GObject)
+
+/**
+ * TurnsTurnOrder:
+ *
+ * Manages the order of turns for a given set of `TurnsParticipant`s.
+ */
+
+/**
+ * turns_turn_order_new:
+ *
+ * Creates a new turn order.
+ *
+ * Returns: (transfer full): a new `TurnsTurnOrder`.
+ */
+G_GNUC_WARN_UNUSED_RESULT
+TurnsTurnOrder * turns_turn_order_new(void);
+
+/**
+ * turns_turn_order_add:
+ * @self: a turn order.
+ * @participant: (transfer full): A participant to be added.
+ *
+ * Adds a participant to a turn-order.
+ */
+void turns_turn_order_add(TurnsTurnOrder * self, TurnsParticipant * participant);
+
+/**
+ * turns_turn_order_clear:
+ * @self: a turn order
+ *
+ * Removes all participants from a turn order.
+ */
+void turns_turn_order_clear(TurnsTurnOrder * self);
+
+/**
+ * turns_turn_order_remove_at:
+ * @self: a turn order
+ *
+ * Removes the participant at the given position.
+ */
+void turns_turn_order_remove_at(TurnsTurnOrder * self, guint position);
+
+/**
+ * turns_turn_order_get_empty: (get-property empty):
+ * @self: a turn order.
+ *
+ * Gets whether the turn order is empty.
+ */
+G_GNUC_WARN_UNUSED_RESULT
+gboolean turns_turn_order_get_empty(TurnsTurnOrder const * self);
+
+/**
+ * turns_turn_order_get_participant_count:
+ * @self: a turn order.
+ *
+ * Gets the number of participants in the turn order.
+ */
+G_GNUC_WARN_UNUSED_RESULT
+gsize turns_turn_order_get_participant_count(TurnsTurnOrder const * self);
+
+/**
+ * turns_turn_order_get_running: (get-property running):
+ * @self: a turn order.
+ *
+ * Gets whether the turn order is currently running.
+ */
+G_GNUC_WARN_UNUSED_RESULT
+gboolean turns_turn_order_get_running(TurnsTurnOrder const * self);
+
+/**
+ * turns_turn_order_get_sort_mode: (get-property sort-mode):
+ * @self: a turn order.
+ *
+ * Gets whether higher priority values are sorted before or after lower ones.
+ */
+G_GNUC_WARN_UNUSED_RESULT
+TurnsTurnOrderSortMode turns_turn_order_get_sort_mode(TurnsTurnOrder const * self);
+
+/**
+ * turns_turn_order_set_sort_mode: (set-property sort-mode):
+ * @self: a turn order.
+ * @sort_mode: whether higher priorities should be sorted before or after lower ones.
+ *
+ * Sets whether higher priority values are sorted before or after lower ones.
+ */
+void turns_turn_order_set_sort_mode(TurnsTurnOrder * self, TurnsTurnOrderSortMode sort_mode);
+
+G_END_DECLS
+
+#endif