// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IZlibDecompressor {
  fn as_zlib_decompressor(Self) -> ZlibDecompressor
  fn get_file_info(Self) -> FileInfo? = _
}

///|
pub impl IZlibDecompressor for ZlibDecompressor with fn as_zlib_decompressor(
  self,
) {
  self
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.ZlibDecompressor.new.html).
pub extern "c" fn ZlibDecompressor::new(
  format : ZlibCompressorFormat,
) -> ZlibDecompressor = "moonbit_g_zlib_decompressor_new"

///|
#borrow(self_)
extern "c" fn moonbit_g_zlib_decompressor_get_file_info(
  self_ : ZlibDecompressor,
) -> @glib.Nullable[FileInfo] = "moonbit_g_zlib_decompressor_get_file_info"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.ZlibDecompressor.get_file_info.html).
pub fn ZlibDecompressor::get_file_info(self : ZlibDecompressor) -> FileInfo? {
  let raw_result = moonbit_g_zlib_decompressor_get_file_info(self)
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.ZlibDecompressor.format.html).
#borrow(self_)
pub extern "c" fn ZlibDecompressor::get_format(
  self_ : ZlibDecompressor,
) -> ZlibCompressorFormat = "moonbit_g_zlib_decompressor_get_format"

///|
impl IZlibDecompressor with fn get_file_info(self) -> FileInfo? {
  self.as_zlib_decompressor().get_file_info()
}

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

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

///|
pub fn ZlibDecompressor::as_converter(self : ZlibDecompressor) -> Converter = "%identity"

///|
pub impl IConverter for ZlibDecompressor with fn as_converter(self) {
  self.as_converter()
}