// GENERATED — DO NOT EDIT

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

///|
pub(open) trait ISocketControlMessage {
  fn as_socket_control_message(Self) -> SocketControlMessage
  fn get_level(Self) -> Int = _
  fn get_msg_type(Self) -> Int = _
  fn get_size(Self) -> UInt64 = _
}

///|
pub impl ISocketControlMessage for SocketControlMessage with fn as_socket_control_message(
  self,
) {
  self
}

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

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

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

///|
impl ISocketControlMessage with fn get_level(self) -> Int {
  self.as_socket_control_message().get_level()
}

///|
impl ISocketControlMessage with fn get_msg_type(self) -> Int {
  self.as_socket_control_message().get_msg_type()
}

///|
impl ISocketControlMessage with fn get_size(self) -> UInt64 {
  self.as_socket_control_message().get_size()
}

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

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