// GENERATED — DO NOT EDIT

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

///|
pub(open) trait INetworkService {
  fn as_network_service(Self) -> NetworkService
  fn get_domain(Self) -> String = _
  fn get_protocol(Self) -> String = _
  fn get_scheme(Self) -> String = _
  fn get_service(Self) -> String = _
  fn set_scheme(Self, String) -> Unit = _
}

///|
pub impl INetworkService for NetworkService with fn as_network_service(self) {
  self
}

///|
#borrow(service, protocol, domain)
extern "c" fn moonbit_g_network_service_new(
  service : Bytes,
  protocol : Bytes,
  domain : Bytes,
) -> NetworkService = "moonbit_g_network_service_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.NetworkService.new.html).
pub fn NetworkService::new(
  service : String,
  protocol : String,
  domain : String,
) -> NetworkService {
  moonbit_g_network_service_new(
    @encoding/utf8.encode(service),
    @encoding/utf8.encode(protocol),
    @encoding/utf8.encode(domain),
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.NetworkService.get_domain.html).
pub fn NetworkService::get_domain(self : NetworkService) -> String {
  @encoding/utf8.decode_lossy(moonbit_g_network_service_get_domain(self))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.NetworkService.get_protocol.html).
pub fn NetworkService::get_protocol(self : NetworkService) -> String {
  @encoding/utf8.decode_lossy(moonbit_g_network_service_get_protocol(self))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.NetworkService.get_scheme.html).
pub fn NetworkService::get_scheme(self : NetworkService) -> String {
  @encoding/utf8.decode_lossy(moonbit_g_network_service_get_scheme(self))
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.NetworkService.get_service.html).
pub fn NetworkService::get_service(self : NetworkService) -> String {
  @encoding/utf8.decode_lossy(moonbit_g_network_service_get_service(self))
}

///|
#borrow(self_, scheme)
extern "c" fn moonbit_g_network_service_set_scheme(
  self_ : NetworkService,
  scheme : Bytes,
) = "moonbit_g_network_service_set_scheme"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.NetworkService.set_scheme.html).
pub fn NetworkService::set_scheme(
  self : NetworkService,
  scheme : String,
) -> Unit {
  moonbit_g_network_service_set_scheme(self, @encoding/utf8.encode(scheme))
}

///|
impl INetworkService with fn get_domain(self) -> String {
  self.as_network_service().get_domain()
}

///|
impl INetworkService with fn get_protocol(self) -> String {
  self.as_network_service().get_protocol()
}

///|
impl INetworkService with fn get_scheme(self) -> String {
  self.as_network_service().get_scheme()
}

///|
impl INetworkService with fn get_service(self) -> String {
  self.as_network_service().get_service()
}

///|
impl INetworkService with fn set_scheme(self, scheme) -> Unit {
  self.as_network_service().set_scheme(scheme)
}

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

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

///|
pub fn NetworkService::as_socket_connectable(
  self : NetworkService,
) -> SocketConnectable = "%identity"

///|
pub impl ISocketConnectable for NetworkService with fn as_socket_connectable(
  self,
) {
  self.as_socket_connectable()
}