From fb015121f064f2be12d1e28cdc7c54e074ed0411 Mon Sep 17 00:00:00 2001 From: Felix Morgner Date: Mon, 12 May 2025 17:53:49 +0200 Subject: lib: begin basic C++ wrapper --- lib/src/turnsmm/participant.cpp | 142 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 lib/src/turnsmm/participant.cpp (limited to 'lib/src/turnsmm/participant.cpp') diff --git a/lib/src/turnsmm/participant.cpp b/lib/src/turnsmm/participant.cpp new file mode 100644 index 0000000..0086ada --- /dev/null +++ b/lib/src/turnsmm/participant.cpp @@ -0,0 +1,142 @@ +#include "turnsmm/participant.hpp" + +#include "turns-disposition.h" +#include "turns-participant.h" +#include "turnsmm/private/participant_p.hpp" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +namespace Turns +{ + + namespace + { + auto constinit _class = Participant_Class{}; + + auto constexpr type_name = "TurnsParticipant"; + } // namespace + + auto Participant_Class::init() -> Glib::Class const & + { + if (!gtype_) + { + class_init_func_ = &class_init_function; + gtype_ = turns_participant_get_type(); + } + return *this; + } + + auto Participant_Class::class_init_function(void * gclass, void * data) -> void + { + auto const klass = static_cast(gclass); + CppClassParent::class_init_function(klass, data); + } + + auto Participant_Class::wrap_new(GObject * object) -> Glib::ObjectBase * + { + return new Participant(TURNS_PARTICIPANT(object)); + } + + Participant::Participant() + : Glib::ObjectBase{type_name} + , Glib::Object{Glib::ConstructParams{_class.init()}} + { + } + + Participant::Participant(Glib::ustring const & name, float priority, int disposition) + : Glib::ObjectBase{type_name} + , Glib::Object{Glib::ConstructParams{_class.init(), "name", name.c_str(), "priority", priority, "disposition", disposition, nullptr}} + { + } + + auto Participant::gobj() noexcept -> BaseObjectType * + { + return std::bit_cast(gobject_); + } + + auto Participant::gobj() const -> BaseObjectType const * + { + return std::bit_cast(gobject_); + } + + auto Participant::gobj_copy() noexcept -> BaseObjectType * + { + reference(); + return gobj(); + } + + auto Participant::get_active() const noexcept -> bool + { + return turns_participant_get_active(const_cast(unwrap(this))); + } + + auto Participant::get_defeated() const noexcept -> bool + { + return turns_participant_get_defeated(const_cast(unwrap(this))); + } + + auto Participant::get_disposition() const noexcept -> int + { + return turns_participant_get_disposition(const_cast(unwrap(this))); + } + + auto Participant::get_name() const -> Glib::ustring + { + return turns_participant_get_name(const_cast(unwrap(this))); + } + + auto Participant::get_priority() const noexcept -> float + { + return turns_participant_get_priority(const_cast(unwrap(this))); + } + + auto Participant::set_active(bool value) noexcept -> void + { + return turns_participant_set_active(unwrap(this), value); + } + + auto Participant::set_defeated(bool value) noexcept -> void + { + return turns_participant_set_defeated(unwrap(this), value); + } + + auto Participant::set_disposition(int value) noexcept -> void + { + return turns_participant_set_disposition(unwrap(this), static_cast(value)); + } + + auto Participant::set_name(Glib::ustring const & value) noexcept -> void + { + return turns_participant_set_name(unwrap(this), value.c_str()); + } + + auto Participant::set_priority(float value) noexcept -> void + { + return turns_participant_set_priority(unwrap(this), value); + } + + Participant::Participant(BaseObjectType * gobj) + : Glib::Object((GObject *)gobj) + { + } + +} // namespace Turns + +namespace Glib +{ + auto wrap(TurnsParticipant * object, bool copy) -> Glib::RefPtr + { + return Glib::make_refptr_for_instance(dynamic_cast(Glib::wrap_auto(G_OBJECT(object), copy))); + } +} // namespace Glib \ No newline at end of file -- cgit v1.2.3