// GENERATED — DO NOT EDIT

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

///|
pub(open) trait IMenuAttributeIter {
  fn as_menu_attribute_iter(Self) -> MenuAttributeIter
  fn get_name(Self) -> String = _
  fn get_value(Self) -> @glib.Variant = _
  fn next(Self) -> Bool = _
}

///|
pub impl IMenuAttributeIter for MenuAttributeIter with fn as_menu_attribute_iter(
  self,
) {
  self
}

///|
#borrow(self_)
extern "c" fn moonbit_g_menu_attribute_iter_get_name(
  self_ : MenuAttributeIter,
) -> Bytes = "moonbit_g_menu_attribute_iter_get_name"

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

///|
/// [Upstream documentation](https://docs.gtk.org/gio/method.MenuAttributeIter.get_value.html).
#borrow(self)
pub extern "c" fn MenuAttributeIter::get_value(
  self : MenuAttributeIter,
) -> @glib.Variant = "moonbit_g_menu_attribute_iter_get_value"

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

///|
impl IMenuAttributeIter with fn get_name(self) -> String {
  self.as_menu_attribute_iter().get_name()
}

///|
impl IMenuAttributeIter with fn get_value(self) -> @glib.Variant {
  self.as_menu_attribute_iter().get_value()
}

///|
impl IMenuAttributeIter with fn next(self) -> Bool {
  self.as_menu_attribute_iter().next()
}

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

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