// GENERATED — DO NOT EDIT

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

///|
pub(open) trait ITcpWrapperConnection {
  fn as_tcp_wrapper_connection(Self) -> TcpWrapperConnection
  fn get_base_io_stream(Self) -> IOStream = _
}

///|
pub impl ITcpWrapperConnection for TcpWrapperConnection with fn as_tcp_wrapper_connection(
  self,
) {
  self
}

///|
#borrow(base_io_stream, socket)
extern "c" fn moonbit_g_tcp_wrapper_connection_new(
  base_io_stream : IOStream,
  socket : Socket,
) -> TcpWrapperConnection = "moonbit_g_tcp_wrapper_connection_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.TcpWrapperConnection.new.html).
pub fn TcpWrapperConnection::new(
  base_io_stream : &IIOStream,
  socket : &ISocket,
) -> TcpWrapperConnection {
  moonbit_g_tcp_wrapper_connection_new(
    base_io_stream.as_io_stream(),
    socket.as_socket(),
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.TcpWrapperConnection.get_base_io_stream.html).
#borrow(self)
pub extern "c" fn TcpWrapperConnection::get_base_io_stream(
  self : TcpWrapperConnection,
) -> IOStream = "moonbit_g_tcp_wrapper_connection_get_base_io_stream"

///|
impl ITcpWrapperConnection with fn get_base_io_stream(self) -> IOStream {
  self.as_tcp_wrapper_connection().get_base_io_stream()
}

///|
pub fn TcpWrapperConnection::as_tcp_connection(
  self : TcpWrapperConnection,
) -> TcpConnection = "%identity"

///|
pub impl ITcpConnection for TcpWrapperConnection with fn as_tcp_connection(self) {
  self.as_tcp_connection()
}

///|
pub fn TcpWrapperConnection::as_socket_connection(
  self : TcpWrapperConnection,
) -> SocketConnection = "%identity"

///|
pub impl ISocketConnection for TcpWrapperConnection with fn as_socket_connection(
  self,
) {
  self.as_socket_connection()
}

///|
pub fn TcpWrapperConnection::as_io_stream(
  self : TcpWrapperConnection,
) -> IOStream = "%identity"

///|
pub impl IIOStream for TcpWrapperConnection with fn as_io_stream(self) {
  self.as_io_stream()
}

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

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