// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IMenuLinkIter {
  fn as_menu_link_iter(Self) -> MenuLinkIter
  fn get_name(Self) -> String = _
  fn get_value(Self) -> MenuModel = _
  fn next(Self) -> Bool = _
}

///|
pub impl IMenuLinkIter for MenuLinkIter with fn as_menu_link_iter(self) {
  self
}

///|
#borrow(self_)
extern "c" fn moonbit_g_menu_link_iter_get_name(self_ : MenuLinkIter) -> Bytes = "moonbit_g_menu_link_iter_get_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.MenuLinkIter.get_name.html).
pub fn MenuLinkIter::get_name(self : MenuLinkIter) -> String {
  @encoding/utf8.decode_lossy(moonbit_g_menu_link_iter_get_name(self))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.MenuLinkIter.get_value.html).
#borrow(self)
pub extern "c" fn MenuLinkIter::get_value(self : MenuLinkIter) -> MenuModel = "moonbit_g_menu_link_iter_get_value"

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

///|
impl IMenuLinkIter with fn get_name(self) -> String {
  self.as_menu_link_iter().get_name()
}

///|
impl IMenuLinkIter with fn get_value(self) -> MenuModel {
  self.as_menu_link_iter().get_value()
}

///|
impl IMenuLinkIter with fn next(self) -> Bool {
  self.as_menu_link_iter().next()
}

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

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