// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://docs.gtk.org/gio/class.DBusObjectManagerServer.html).
pub type DBusObjectManagerServer

///|
pub(open) trait IDBusObjectManagerServer {
  fn as_dbus_object_manager_server(Self) -> DBusObjectManagerServer
  fn export_(Self, &IDBusObjectSkeleton) -> Unit = _
  fn export_uniquely(Self, &IDBusObjectSkeleton) -> Unit = _
  fn get_connection(Self) -> DBusConnection? = _
  fn is_exported(Self, &IDBusObjectSkeleton) -> Bool = _
  fn set_connection(Self, &IDBusConnection?) -> Unit = _
  fn unexport(Self, String) -> Bool = _
}

///|
pub impl IDBusObjectManagerServer for DBusObjectManagerServer with fn as_dbus_object_manager_server(
  self,
) {
  self
}

///|
#borrow(object_path)
extern "c" fn moonbit_g_dbus_object_manager_server_new(
  object_path : Bytes,
) -> DBusObjectManagerServer = "moonbit_g_dbus_object_manager_server_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.DBusObjectManagerServer.new.html).
pub fn DBusObjectManagerServer::new(
  object_path : String,
) -> DBusObjectManagerServer {
  moonbit_g_dbus_object_manager_server_new(@encoding/utf8.encode(object_path))
}

///|
#borrow(self_, object)
extern "c" fn moonbit_g_dbus_object_manager_server_export(
  self_ : DBusObjectManagerServer,
  object : DBusObjectSkeleton,
) = "moonbit_g_dbus_object_manager_server_export"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.DBusObjectManagerServer.export.html).
pub fn DBusObjectManagerServer::export_(
  self : DBusObjectManagerServer,
  object : &IDBusObjectSkeleton,
) -> Unit {
  moonbit_g_dbus_object_manager_server_export(
    self,
    object.as_dbus_object_skeleton(),
  )
}

///|
#borrow(self_, object)
extern "c" fn moonbit_g_dbus_object_manager_server_export_uniquely(
  self_ : DBusObjectManagerServer,
  object : DBusObjectSkeleton,
) = "moonbit_g_dbus_object_manager_server_export_uniquely"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.DBusObjectManagerServer.export_uniquely.html).
pub fn DBusObjectManagerServer::export_uniquely(
  self : DBusObjectManagerServer,
  object : &IDBusObjectSkeleton,
) -> Unit {
  moonbit_g_dbus_object_manager_server_export_uniquely(
    self,
    object.as_dbus_object_skeleton(),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_g_dbus_object_manager_server_get_connection(
  self_ : DBusObjectManagerServer,
) -> @glib.Nullable[DBusConnection] = "moonbit_g_dbus_object_manager_server_get_connection"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.DBusObjectManagerServer.get_connection.html).
pub fn DBusObjectManagerServer::get_connection(
  self : DBusObjectManagerServer,
) -> DBusConnection? {
  let raw_result = moonbit_g_dbus_object_manager_server_get_connection(self)
  raw_result.to_option()
}

///|
#borrow(self_, object)
extern "c" fn moonbit_g_dbus_object_manager_server_is_exported(
  self_ : DBusObjectManagerServer,
  object : DBusObjectSkeleton,
) -> Bool = "moonbit_g_dbus_object_manager_server_is_exported"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.DBusObjectManagerServer.is_exported.html).
pub fn DBusObjectManagerServer::is_exported(
  self : DBusObjectManagerServer,
  object : &IDBusObjectSkeleton,
) -> Bool {
  moonbit_g_dbus_object_manager_server_is_exported(
    self,
    object.as_dbus_object_skeleton(),
  )
}

///|
#borrow(self_, connection)
extern "c" fn moonbit_g_dbus_object_manager_server_set_connection(
  self_ : DBusObjectManagerServer,
  connection : @glib.Nullable[DBusConnection],
) = "moonbit_g_dbus_object_manager_server_set_connection"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.DBusObjectManagerServer.set_connection.html).
pub fn DBusObjectManagerServer::set_connection(
  self : DBusObjectManagerServer,
  connection : &IDBusConnection?,
) -> Unit {
  moonbit_g_dbus_object_manager_server_set_connection(
    self,
    match connection {
      Some(v) => @glib.Nullable::some(v.as_dbus_connection())
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, object_path)
extern "c" fn moonbit_g_dbus_object_manager_server_unexport(
  self_ : DBusObjectManagerServer,
  object_path : Bytes,
) -> Bool = "moonbit_g_dbus_object_manager_server_unexport"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.DBusObjectManagerServer.unexport.html).
pub fn DBusObjectManagerServer::unexport(
  self : DBusObjectManagerServer,
  object_path : String,
) -> Bool {
  moonbit_g_dbus_object_manager_server_unexport(
    self,
    @encoding/utf8.encode(object_path),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gd_bus_object_manager_server_get_object_path(
  self_ : DBusObjectManagerServer,
) -> Bytes = "moonbit_gd_bus_object_manager_server_get_object_path"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.DBusObjectManagerServer.object-path.html).
pub fn DBusObjectManagerServer::get_object_path(
  self : DBusObjectManagerServer,
) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gd_bus_object_manager_server_get_object_path(self),
  )
}

///|
impl IDBusObjectManagerServer with fn export_(self, object) -> Unit {
  self.as_dbus_object_manager_server().export_(object)
}

///|
impl IDBusObjectManagerServer with fn export_uniquely(self, object) -> Unit {
  self.as_dbus_object_manager_server().export_uniquely(object)
}

///|
impl IDBusObjectManagerServer with fn get_connection(self) -> DBusConnection? {
  self.as_dbus_object_manager_server().get_connection()
}

///|
impl IDBusObjectManagerServer with fn is_exported(self, object) -> Bool {
  self.as_dbus_object_manager_server().is_exported(object)
}

///|
impl IDBusObjectManagerServer with fn set_connection(self, connection) -> Unit {
  self.as_dbus_object_manager_server().set_connection(connection)
}

///|
impl IDBusObjectManagerServer with fn unexport(self, object_path) -> Bool {
  self.as_dbus_object_manager_server().unexport(object_path)
}

///|
pub fn DBusObjectManagerServer::as_gobject_object(
  self : DBusObjectManagerServer,
) -> @gobject.Object = "%identity"

///|
pub impl @gobject.IObject for DBusObjectManagerServer with fn as_object(self) {
  self.as_gobject_object()
}

///|
pub fn DBusObjectManagerServer::as_dbus_object_manager(
  self : DBusObjectManagerServer,
) -> DBusObjectManager = "%identity"

///|
pub impl IDBusObjectManager for DBusObjectManagerServer with fn as_dbus_object_manager(
  self,
) {
  self.as_dbus_object_manager()
}