// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IProxyAddressEnumerator {
  fn as_proxy_address_enumerator(Self) -> ProxyAddressEnumerator
}

///|
pub impl IProxyAddressEnumerator for ProxyAddressEnumerator with fn as_proxy_address_enumerator(
  self,
) {
  self
}

///|
#borrow(self_)
extern "c" fn moonbit_g_proxy_address_enumerator_get_connectable(
  self_ : ProxyAddressEnumerator,
) -> @glib.Nullable[SocketConnectable] = "moonbit_g_proxy_address_enumerator_get_connectable"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.ProxyAddressEnumerator.connectable.html).
pub fn ProxyAddressEnumerator::get_connectable(
  self : ProxyAddressEnumerator,
) -> SocketConnectable? {
  moonbit_g_proxy_address_enumerator_get_connectable(self).to_option()
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.ProxyAddressEnumerator.default-port.html).
#borrow(self_)
pub extern "c" fn ProxyAddressEnumerator::get_default_port(
  self_ : ProxyAddressEnumerator,
) -> UInt = "moonbit_g_proxy_address_enumerator_get_default_port"

///|
#borrow(self_)
extern "c" fn moonbit_g_proxy_address_enumerator_get_proxy_resolver(
  self_ : ProxyAddressEnumerator,
) -> @glib.Nullable[ProxyResolver] = "moonbit_g_proxy_address_enumerator_get_proxy_resolver"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.ProxyAddressEnumerator.proxy-resolver.html).
pub fn ProxyAddressEnumerator::get_proxy_resolver(
  self : ProxyAddressEnumerator,
) -> ProxyResolver? {
  moonbit_g_proxy_address_enumerator_get_proxy_resolver(self).to_option()
}

///|
#borrow(self_, value)
extern "c" fn moonbit_g_proxy_address_enumerator_set_proxy_resolver(
  self_ : ProxyAddressEnumerator,
  value : @glib.Nullable[ProxyResolver],
) = "moonbit_g_proxy_address_enumerator_set_proxy_resolver"

///|
pub fn ProxyAddressEnumerator::set_proxy_resolver(
  self : ProxyAddressEnumerator,
  value : ProxyResolver?,
) -> Unit {
  moonbit_g_proxy_address_enumerator_set_proxy_resolver(
    self,
    match value {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.ProxyAddressEnumerator.uri.html).
pub fn ProxyAddressEnumerator::get_uri(self : ProxyAddressEnumerator) -> String {
  @encoding/utf8.decode_lossy(moonbit_g_proxy_address_enumerator_get_uri(self))
}

///|
pub fn ProxyAddressEnumerator::as_socket_address_enumerator(
  self : ProxyAddressEnumerator,
) -> SocketAddressEnumerator = "%identity"

///|
pub impl ISocketAddressEnumerator for ProxyAddressEnumerator with fn as_socket_address_enumerator(
  self,
) {
  self.as_socket_address_enumerator()
}

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

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