// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IFilterInputStream {
  fn as_filter_input_stream(Self) -> FilterInputStream
  fn get_base_stream(Self) -> InputStream = _
  fn get_close_base_stream(Self) -> Bool = _
  fn set_close_base_stream(Self, Bool) -> Unit = _
}

///|
pub impl IFilterInputStream for FilterInputStream with fn as_filter_input_stream(
  self,
) {
  self
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.FilterInputStream.get_base_stream.html).
#borrow(self)
pub extern "c" fn FilterInputStream::get_base_stream(
  self : FilterInputStream,
) -> InputStream = "moonbit_g_filter_input_stream_get_base_stream"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.FilterInputStream.set_close_base_stream.html).
#borrow(self)
pub extern "c" fn FilterInputStream::set_close_base_stream(
  self : FilterInputStream,
  close_base : Bool,
) = "moonbit_g_filter_input_stream_set_close_base_stream"

///|
impl IFilterInputStream with fn get_base_stream(self) -> InputStream {
  self.as_filter_input_stream().get_base_stream()
}

///|
impl IFilterInputStream with fn get_close_base_stream(self) -> Bool {
  self.as_filter_input_stream().get_close_base_stream()
}

///|
impl IFilterInputStream with fn set_close_base_stream(self, close_base) -> Unit {
  self.as_filter_input_stream().set_close_base_stream(close_base)
}

///|
pub fn FilterInputStream::as_input_stream(
  self : FilterInputStream,
) -> InputStream = "%identity"

///|
pub impl IInputStream for FilterInputStream with fn as_input_stream(self) {
  self.as_input_stream()
}

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

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