// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IBufferedOutputStream {
  fn as_buffered_output_stream(Self) -> BufferedOutputStream
  fn get_auto_grow(Self) -> Bool = _
  fn get_buffer_size(Self) -> UInt64 = _
  fn set_auto_grow(Self, Bool) -> Unit = _
  fn set_buffer_size(Self, UInt64) -> Unit = _
}

///|
pub impl IBufferedOutputStream for BufferedOutputStream with fn as_buffered_output_stream(
  self,
) {
  self
}

///|
#borrow(base_stream)
extern "c" fn moonbit_g_buffered_output_stream_new(
  base_stream : OutputStream,
) -> BufferedOutputStream = "moonbit_g_buffered_output_stream_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.BufferedOutputStream.new.html).
pub fn BufferedOutputStream::new(
  base_stream : &IOutputStream,
) -> BufferedOutputStream {
  moonbit_g_buffered_output_stream_new(base_stream.as_output_stream())
}

///|
#borrow(base_stream)
extern "c" fn moonbit_g_buffered_output_stream_new_sized(
  base_stream : OutputStream,
  size : UInt64,
) -> BufferedOutputStream = "moonbit_g_buffered_output_stream_new_sized"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.BufferedOutputStream.new_sized.html).
pub fn BufferedOutputStream::new_sized(
  base_stream : &IOutputStream,
  size : UInt64,
) -> BufferedOutputStream {
  moonbit_g_buffered_output_stream_new_sized(
    base_stream.as_output_stream(),
    size,
  )
}

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.BufferedOutputStream.get_buffer_size.html).
#borrow(self)
pub extern "c" fn BufferedOutputStream::get_buffer_size(
  self : BufferedOutputStream,
) -> UInt64 = "moonbit_g_buffered_output_stream_get_buffer_size"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.BufferedOutputStream.set_auto_grow.html).
#borrow(self)
pub extern "c" fn BufferedOutputStream::set_auto_grow(
  self : BufferedOutputStream,
  auto_grow : Bool,
) = "moonbit_g_buffered_output_stream_set_auto_grow"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.BufferedOutputStream.set_buffer_size.html).
#borrow(self)
pub extern "c" fn BufferedOutputStream::set_buffer_size(
  self : BufferedOutputStream,
  size : UInt64,
) = "moonbit_g_buffered_output_stream_set_buffer_size"

///|
impl IBufferedOutputStream with fn get_auto_grow(self) -> Bool {
  self.as_buffered_output_stream().get_auto_grow()
}

///|
impl IBufferedOutputStream with fn get_buffer_size(self) -> UInt64 {
  self.as_buffered_output_stream().get_buffer_size()
}

///|
impl IBufferedOutputStream with fn set_auto_grow(self, auto_grow) -> Unit {
  self.as_buffered_output_stream().set_auto_grow(auto_grow)
}

///|
impl IBufferedOutputStream with fn set_buffer_size(self, size) -> Unit {
  self.as_buffered_output_stream().set_buffer_size(size)
}

///|
pub fn BufferedOutputStream::as_filter_output_stream(
  self : BufferedOutputStream,
) -> FilterOutputStream = "%identity"

///|
pub impl IFilterOutputStream for BufferedOutputStream with fn as_filter_output_stream(
  self,
) {
  self.as_filter_output_stream()
}

///|
pub fn BufferedOutputStream::as_output_stream(
  self : BufferedOutputStream,
) -> OutputStream = "%identity"

///|
pub impl IOutputStream for BufferedOutputStream with fn as_output_stream(self) {
  self.as_output_stream()
}

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

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

///|
pub fn BufferedOutputStream::as_seekable(
  self : BufferedOutputStream,
) -> Seekable = "%identity"

///|
pub impl ISeekable for BufferedOutputStream with fn as_seekable(self) {
  self.as_seekable()
}