#ifndef LIBADWAITAMM_APPLICATION_HPP #define LIBADWAITAMM_APPLICATION_HPP #include "adwaitamm/helpers/gobj_mixin.hpp" #include #include #include #include #include using AdwApplication = struct _AdwApplication; using AdwApplicationClass = struct _AdwApplicationClass; namespace Adwaita { struct Application : Gtk::Application, helpers::gobj_mixin { struct Class : Glib::Class { using BaseClassParent = GtkApplicationClass; using BaseClassType = AdwApplicationClass; using BaseObjectType = AdwApplication; using CppClassParent = struct Gtk::Application_Class; using CppObjectType = Application; auto init() -> Glib::Class const &; auto static class_init_function(void * gclass, void * data) -> void; auto static wrap_new(GObject * object) -> Glib::ObjectBase *; }; using BaseObjectType = Class::BaseObjectType; using BaseClassType = Class::BaseClassType; using CppObjectType = Class::CppObjectType; using CppClassType = Class; using helpers::gobj_mixin::gobj; using helpers::gobj_mixin::gobj_copy; Application(Application const & other) = delete; Application(Application && other) noexcept = default; auto operator=(Application const & other) noexcept -> Application & = delete; auto operator=(Application && other) noexcept -> Application & = default; auto static create(Glib::ustring const & id = {}, Gio::Application::Flags flags = Gio::Application::Flags::NONE) -> Glib::RefPtr; auto static get_type() -> GType; auto static get_base_type() -> GType; protected: explicit Application(Glib::ConstructParams const & params); explicit Application(BaseObjectType * gobj); explicit Application(Glib::ustring const & id = {}, Gio::Application::Flags flags = Gio::Application::Flags::NONE); private: Glib::Class const & custom_class_init(); }; } // namespace Adwaita namespace Glib { auto wrap(AdwApplication * object, bool copy = false) -> Glib::RefPtr; } // namespace Glib #endif