// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IEmblem {
  fn as_emblem(Self) -> Emblem
  fn get_icon(Self) -> Icon = _
  fn get_origin(Self) -> EmblemOrigin = _
}

///|
pub impl IEmblem for Emblem with fn as_emblem(self) {
  self
}

///|
#borrow(icon)
extern "c" fn moonbit_g_emblem_new(icon : Icon) -> Emblem = "moonbit_g_emblem_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.Emblem.new.html).
pub fn Emblem::new(icon : &IIcon) -> Emblem {
  moonbit_g_emblem_new(icon.as_icon())
}

///|
#borrow(icon)
extern "c" fn moonbit_g_emblem_new_with_origin(
  icon : Icon,
  origin : EmblemOrigin,
) -> Emblem = "moonbit_g_emblem_new_with_origin"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/ctor.Emblem.new_with_origin.html).
pub fn Emblem::new_with_origin(icon : &IIcon, origin : EmblemOrigin) -> Emblem {
  moonbit_g_emblem_new_with_origin(icon.as_icon(), origin)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Emblem.get_icon.html).
#borrow(self)
pub extern "c" fn Emblem::get_icon(self : Emblem) -> Icon = "moonbit_g_emblem_get_icon"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.Emblem.get_origin.html).
#borrow(self)
pub extern "c" fn Emblem::get_origin(self : Emblem) -> EmblemOrigin = "moonbit_g_emblem_get_origin"

///|
impl IEmblem with fn get_icon(self) -> Icon {
  self.as_emblem().get_icon()
}

///|
impl IEmblem with fn get_origin(self) -> EmblemOrigin {
  self.as_emblem().get_origin()
}

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

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

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

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