// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IFileIcon {
  fn as_file_icon(Self) -> FileIcon
  fn get_file(Self) -> File = _
}

///|
pub impl IFileIcon for FileIcon with fn as_file_icon(self) {
  self
}

///|
#borrow(file)
extern "c" fn moonbit_g_file_icon_new(file : File) -> FileIcon = "moonbit_g_file_icon_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.FileIcon.new.html).
pub fn FileIcon::new(file : &IFile) -> FileIcon {
  moonbit_g_file_icon_new(file.as_file())
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.FileIcon.get_file.html).
#borrow(self)
pub extern "c" fn FileIcon::get_file(self : FileIcon) -> File = "moonbit_g_file_icon_get_file"

///|
impl IFileIcon with fn get_file(self) -> File {
  self.as_file_icon().get_file()
}

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

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

///|
pub fn FileIcon::as_icon(self : FileIcon) -> Icon = "%identity"

///|
pub impl IIcon for FileIcon with fn as_icon(self) {
  self.as_icon()
}

///|
pub fn FileIcon::as_loadable_icon(self : FileIcon) -> LoadableIcon = "%identity"

///|
pub impl ILoadableIcon for FileIcon with fn as_loadable_icon(self) {
  self.as_loadable_icon()
}