// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IBytesIcon {
  fn as_bytes_icon(Self) -> BytesIcon
  fn get_bytes(Self) -> Bytes = _
}

///|
pub impl IBytesIcon for BytesIcon with fn as_bytes_icon(self) {
  self
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.BytesIcon.new.html).
#borrow(bytes)
pub extern "c" fn BytesIcon::new(bytes : Bytes) -> BytesIcon = "moonbit_g_bytes_icon_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.BytesIcon.get_bytes.html).
#borrow(self)
pub extern "c" fn BytesIcon::get_bytes(self : BytesIcon) -> Bytes = "moonbit_g_bytes_icon_get_bytes"

///|
impl IBytesIcon with fn get_bytes(self) -> Bytes {
  self.as_bytes_icon().get_bytes()
}

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

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

///|
pub fn BytesIcon::as_icon(self : BytesIcon) -> Icon = "%identity"

///|
pub impl IIcon for BytesIcon with fn as_icon(self) {
  self.as_icon()
}

///|
pub fn BytesIcon::as_loadable_icon(self : BytesIcon) -> LoadableIcon = "%identity"

///|
pub impl ILoadableIcon for BytesIcon with fn as_loadable_icon(self) {
  self.as_loadable_icon()
}