// GENERATED — DO NOT EDIT

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/class.Coverage.html).
pub type Coverage

///|
pub(open) trait ICoverage {
  fn as_coverage(Self) -> Coverage
  fn copy(Self) -> Coverage = _
  fn get(Self, Int) -> CoverageLevel = _
  fn set(Self, Int, CoverageLevel) -> Unit = _
}

///|
pub impl ICoverage for Coverage with fn as_coverage(self) {
  self
}

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/ctor.Coverage.new.html).
pub extern "c" fn Coverage::new() -> Coverage = "moonbit_pango_coverage_new"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/method.Coverage.copy.html).
#borrow(self)
pub extern "c" fn Coverage::copy(self : Coverage) -> Coverage = "moonbit_pango_coverage_copy"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/method.Coverage.get.html).
#borrow(self)
pub extern "c" fn Coverage::get(self : Coverage, index_ : Int) -> CoverageLevel = "moonbit_pango_coverage_get"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/method.Coverage.set.html).
#borrow(self)
pub extern "c" fn Coverage::set(
  self : Coverage,
  index_ : Int,
  level : CoverageLevel,
) = "moonbit_pango_coverage_set"

///|
impl ICoverage with fn copy(self) -> Coverage {
  self.as_coverage().copy()
}

///|
impl ICoverage with fn get(self, index_) -> CoverageLevel {
  self.as_coverage().get(index_)
}

///|
impl ICoverage with fn set(self, index_, level) -> Unit {
  self.as_coverage().set(index_, level)
}

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

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