// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IZlibCompressor {
  fn as_zlib_compressor(Self) -> ZlibCompressor
  fn get_file_info(Self) -> FileInfo? = _
  fn get_os(Self) -> Int = _
  fn set_file_info(Self, &IFileInfo?) -> Unit = _
  fn set_os(Self, Int) -> Unit = _
}

///|
pub impl IZlibCompressor for ZlibCompressor with fn as_zlib_compressor(self) {
  self
}

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

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

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.ZlibCompressor.get_os.html).
#borrow(self)
pub extern "c" fn ZlibCompressor::get_os(self : ZlibCompressor) -> Int = "moonbit_g_zlib_compressor_get_os"

///|
#borrow(self_, file_info)
extern "c" fn moonbit_g_zlib_compressor_set_file_info(
  self_ : ZlibCompressor,
  file_info : @glib.Nullable[FileInfo],
) = "moonbit_g_zlib_compressor_set_file_info"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.ZlibCompressor.set_file_info.html).
pub fn ZlibCompressor::set_file_info(
  self : ZlibCompressor,
  file_info : &IFileInfo?,
) -> Unit {
  moonbit_g_zlib_compressor_set_file_info(
    self,
    match file_info {
      Some(v) => @glib.Nullable::some(v.as_file_info())
      None => @glib.Nullable::null()
    },
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.ZlibCompressor.set_os.html).
#borrow(self)
pub extern "c" fn ZlibCompressor::set_os(self : ZlibCompressor, os : Int) = "moonbit_g_zlib_compressor_set_os"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/property.ZlibCompressor.level.html).
#borrow(self_)
pub extern "c" fn ZlibCompressor::get_level(self_ : ZlibCompressor) -> Int = "moonbit_g_zlib_compressor_get_level"

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

///|
impl IZlibCompressor with fn get_os(self) -> Int {
  self.as_zlib_compressor().get_os()
}

///|
impl IZlibCompressor with fn set_file_info(self, file_info) -> Unit {
  self.as_zlib_compressor().set_file_info(file_info)
}

///|
impl IZlibCompressor with fn set_os(self, os) -> Unit {
  self.as_zlib_compressor().set_os(os)
}

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

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

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

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