// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IVfs {
  fn as_vfs(Self) -> Vfs
  fn get_file_for_path(Self, String) -> File = _
  fn get_file_for_uri(Self, String) -> File = _
  fn is_active(Self) -> Bool = _
  fn parse_name(Self, String) -> File = _
  fn unregister_uri_scheme(Self, String) -> Bool = _
}

///|
pub impl IVfs for Vfs with fn as_vfs(self) {
  self
}

///|
/// Implementation contract for Vfs.local_file_moved. Self is the retained MoonBit state; the second parameter is the invoked Vfs object.
pub(open) trait VVfsLocalFileMoved {
  fn local_file_moved(Self, Vfs, String, String) -> Unit
}

///|
/// Implementation contract for Vfs.local_file_removed. Self is the retained MoonBit state; the second parameter is the invoked Vfs object.
pub(open) trait VVfsLocalFileRemoved {
  fn local_file_removed(Self, Vfs, String) -> Unit
}

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

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

///|
#borrow(self_, path)
extern "c" fn moonbit_g_vfs_get_file_for_path(
  self_ : Vfs,
  path : Bytes,
) -> File = "moonbit_g_vfs_get_file_for_path"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Vfs.get_file_for_path.html).
pub fn Vfs::get_file_for_path(self : Vfs, path : String) -> File {
  moonbit_g_vfs_get_file_for_path(self, @encoding/utf8.encode(path))
}

///|
#borrow(self_, uri)
extern "c" fn moonbit_g_vfs_get_file_for_uri(self_ : Vfs, uri : Bytes) -> File = "moonbit_g_vfs_get_file_for_uri"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Vfs.get_file_for_uri.html).
pub fn Vfs::get_file_for_uri(self : Vfs, uri : String) -> File {
  moonbit_g_vfs_get_file_for_uri(self, @encoding/utf8.encode(uri))
}

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

///|
#borrow(self_, parse_name)
extern "c" fn moonbit_g_vfs_parse_name(self_ : Vfs, parse_name : Bytes) -> File = "moonbit_g_vfs_parse_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Vfs.parse_name.html).
pub fn Vfs::parse_name(self : Vfs, parse_name : String) -> File {
  moonbit_g_vfs_parse_name(self, @encoding/utf8.encode(parse_name))
}

///|
#borrow(self_, scheme)
extern "c" fn moonbit_g_vfs_unregister_uri_scheme(
  self_ : Vfs,
  scheme : Bytes,
) -> Bool = "moonbit_g_vfs_unregister_uri_scheme"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Vfs.unregister_uri_scheme.html).
pub fn Vfs::unregister_uri_scheme(self : Vfs, scheme : String) -> Bool {
  moonbit_g_vfs_unregister_uri_scheme(self, @encoding/utf8.encode(scheme))
}

///|
impl IVfs with fn get_file_for_path(self, path) -> File {
  self.as_vfs().get_file_for_path(path)
}

///|
impl IVfs with fn get_file_for_uri(self, uri) -> File {
  self.as_vfs().get_file_for_uri(uri)
}

///|
impl IVfs with fn is_active(self) -> Bool {
  self.as_vfs().is_active()
}

///|
impl IVfs with fn parse_name(self, parse_name) -> File {
  self.as_vfs().parse_name(parse_name)
}

///|
impl IVfs with fn unregister_uri_scheme(self, scheme) -> Bool {
  self.as_vfs().unregister_uri_scheme(scheme)
}

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

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