diff options
Diffstat (limited to 'lib/src/turnsmm/turn-order.cpp')
| -rw-r--r-- | lib/src/turnsmm/turn-order.cpp | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/lib/src/turnsmm/turn-order.cpp b/lib/src/turnsmm/turn-order.cpp new file mode 100644 index 0000000..8dbcd9c --- /dev/null +++ b/lib/src/turnsmm/turn-order.cpp @@ -0,0 +1,92 @@ +#include "turnsmm/turn-order.hpp" + +#include "turns-turn-order.h" +#include "turnsmm/private/turn-order_p.hpp" + +#include <glibmm/class.h> +#include <glibmm/object.h> +#include <glibmm/objectbase.h> +#include <glibmm/private/object_p.h> +#include <glibmm/propertyproxy.h> +#include <glibmm/refptr.h> +#include <glibmm/wrap.h> + +#include <glib-object.h> + +#include <bit> + +namespace Turns +{ + + namespace + { + auto constinit _class = TurnOrder_Class{}; + } // namespace + + auto TurnOrder_Class::init() -> Glib::Class const & + { + if (!gtype_) + { + class_init_func_ = &class_init_function; + gtype_ = turns_turn_order_get_type(); + } + return *this; + } + + auto TurnOrder_Class::class_init_function(void * gclass, void * data) -> void + { + auto const klass = static_cast<BaseClassType *>(gclass); + CppClassParent::class_init_function(klass, data); + } + + auto TurnOrder_Class::wrap_new(GObject * object) -> Glib::ObjectBase * + { + return new TurnOrder(TURNS_TURN_ORDER(object)); + } + + TurnOrder::TurnOrder() + : Glib::ObjectBase{nullptr} + , Glib::Object{Glib::ConstructParams{_class.init()}} + { + } + + auto TurnOrder::gobj() noexcept -> BaseObjectType * + { + return std::bit_cast<BaseObjectType *>(gobject_); + } + + auto TurnOrder::gobj() const -> BaseObjectType const * + { + return std::bit_cast<BaseObjectType const *>(gobject_); + } + + auto TurnOrder::gobj_copy() noexcept -> BaseObjectType * + { + reference(); + return gobj(); + } + + auto TurnOrder::get_running() const noexcept -> bool + { + return turns_turn_order_get_running(const_cast<BaseObjectType *>(unwrap(this))); + } + + auto TurnOrder::property_running() const noexcept -> Glib::PropertyProxy_ReadOnly<bool> + { + return {this, "running"}; + } + + TurnOrder::TurnOrder(BaseObjectType * gobj) + : Glib::Object(G_OBJECT(gobj)) + { + } + +} // namespace Turns + +namespace Glib +{ + auto wrap(TurnsTurnOrder * object, bool copy) -> Glib::RefPtr<Turns::TurnOrder> + { + return Glib::make_refptr_for_instance<Turns::TurnOrder>(dynamic_cast<Turns::TurnOrder *>(Glib::wrap_auto(G_OBJECT(object), copy))); + } +} // namespace Glib
\ No newline at end of file |
