// GENERATED — DO NOT EDIT

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

///|
pub(open) trait ITlsBackend {
  fn as_tls_backend(Self) -> TlsBackend
  fn get_default_database(Self) -> TlsDatabase = _
  fn set_default_database(Self, &ITlsDatabase?) -> Unit = _
  fn supports_dtls(Self) -> Bool = _
  fn supports_tls(Self) -> Bool = _
}

///|
pub impl ITlsBackend for TlsBackend with fn as_tls_backend(self) {
  self
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/type_func.TlsBackend.get_default.html).
pub extern "c" fn TlsBackend::get_default() -> TlsBackend = "moonbit_g_tls_backend_get_default"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.TlsBackend.get_default_database.html).
#borrow(self)
pub extern "c" fn TlsBackend::get_default_database(
  self : TlsBackend,
) -> TlsDatabase = "moonbit_g_tls_backend_get_default_database"

///|
#borrow(self_, database)
extern "c" fn moonbit_g_tls_backend_set_default_database(
  self_ : TlsBackend,
  database : @glib.Nullable[TlsDatabase],
) = "moonbit_g_tls_backend_set_default_database"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.TlsBackend.set_default_database.html).
pub fn TlsBackend::set_default_database(
  self : TlsBackend,
  database : &ITlsDatabase?,
) -> Unit {
  moonbit_g_tls_backend_set_default_database(
    self,
    match database {
      Some(v) => @glib.Nullable::some(v.as_tls_database())
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.TlsBackend.supports_dtls.html).
#borrow(self)
pub extern "c" fn TlsBackend::supports_dtls(self : TlsBackend) -> Bool = "moonbit_g_tls_backend_supports_dtls"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.TlsBackend.supports_tls.html).
#borrow(self)
pub extern "c" fn TlsBackend::supports_tls(self : TlsBackend) -> Bool = "moonbit_g_tls_backend_supports_tls"

///|
impl ITlsBackend with fn get_default_database(self) -> TlsDatabase {
  self.as_tls_backend().get_default_database()
}

///|
impl ITlsBackend with fn set_default_database(self, database) -> Unit {
  self.as_tls_backend().set_default_database(database)
}

///|
impl ITlsBackend with fn supports_dtls(self) -> Bool {
  self.as_tls_backend().supports_dtls()
}

///|
impl ITlsBackend with fn supports_tls(self) -> Bool {
  self.as_tls_backend().supports_tls()
}