summaryrefslogtreecommitdiff
path: root/domain/include
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2024-07-16 00:35:35 +0200
committerFelix Morgner <felix.morgner@gmail.com>2024-07-16 00:35:35 +0200
commit5845e43c503f306a653754303573af421207e90c (patch)
tree1ef94c028e5ba304dde3ab0e0cc263c9378fb823 /domain/include
parent4ca57dcae2291a09dcd84ccf056a65a2cf906c46 (diff)
downloadturns-5845e43c503f306a653754303573af421207e90c.tar.xz
turns-5845e43c503f306a653754303573af421207e90c.zip
domain: add disposition type
Diffstat (limited to 'domain/include')
-rw-r--r--domain/include/turns/domain/disposition.hpp44
1 files changed, 44 insertions, 0 deletions
diff --git a/domain/include/turns/domain/disposition.hpp b/domain/include/turns/domain/disposition.hpp
new file mode 100644
index 0000000..32f3aca
--- /dev/null
+++ b/domain/include/turns/domain/disposition.hpp
@@ -0,0 +1,44 @@
+#ifndef TURNS_DOMAIN_PARTICIPANT_HPP
+#define TURNS_DOMAIN_PARTICIPANT_HPP
+
+#include <compare>
+#include <cstdint>
+
+#include <glibmm/object.h>
+#include <glibmm/property.h>
+#include <glibmm/refptr.h>
+#include <glibmm/ustring.h>
+
+namespace turns::domain
+{
+
+ struct disposition : Glib::Object
+ {
+ enum struct values : std::uint8_t
+ {
+ neutral,
+ friendly,
+ hostile,
+ secret,
+ };
+
+ auto static create(values value) -> Glib::RefPtr<disposition>;
+
+ disposition(values value);
+
+ auto operator<=>(disposition const & other) const -> std::strong_ordering;
+
+ auto property_value() -> Glib::PropertyProxy<values>;
+ auto property_value() const -> Glib::PropertyProxy_ReadOnly<values>;
+ auto get_value() const -> values;
+ auto set_value(values value) -> void;
+
+ auto get_presentation_name() const -> Glib::ustring;
+
+ private:
+ Glib::Property<values> m_value;
+ };
+
+} // namespace turns::domain
+
+#endif \ No newline at end of file