// GENERATED — DO NOT EDIT

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

///|
pub(open) trait ITextBuffer {
  fn as_text_buffer(Self) -> TextBuffer
  fn add_mark(Self, &ITextMark, TextIter) -> Unit = _
  fn add_selection_clipboard(Self, &@gdk.IClipboard) -> Unit = _
  fn apply_tag(Self, &ITextTag, TextIter, TextIter) -> Unit = _
  fn apply_tag_by_name(Self, String, TextIter, TextIter) -> Unit = _
  fn backspace(Self, TextIter, Bool, Bool) -> Bool = _
  fn begin_irreversible_action(Self) -> Unit = _
  fn begin_user_action(Self) -> Unit = _
  fn copy_clipboard(Self, &@gdk.IClipboard) -> Unit = _
  fn create_child_anchor(Self, TextIter) -> TextChildAnchor = _
  fn create_mark(Self, String?, TextIter, Bool) -> TextMark = _
  fn cut_clipboard(Self, &@gdk.IClipboard, Bool) -> Unit = _
  fn delete(Self, TextIter, TextIter) -> Unit = _
  fn delete_interactive(Self, TextIter, TextIter, Bool) -> Bool = _
  fn delete_mark(Self, &ITextMark) -> Unit = _
  fn delete_mark_by_name(Self, String) -> Unit = _
  fn delete_selection(Self, Bool, Bool) -> Bool = _
  fn end_irreversible_action(Self) -> Unit = _
  fn end_user_action(Self) -> Unit = _
  fn get_bounds(Self) -> (TextIter, TextIter) = _
  fn get_can_redo(Self) -> Bool = _
  fn get_can_undo(Self) -> Bool = _
  fn get_char_count(Self) -> Int = _
  fn get_enable_undo(Self) -> Bool = _
  fn get_end_iter(Self) -> TextIter = _
  fn get_has_selection(Self) -> Bool = _
  fn get_insert(Self) -> TextMark = _
  fn get_iter_at_child_anchor(Self, &ITextChildAnchor) -> TextIter = _
  fn get_iter_at_line(Self, Int) -> (TextIter, Bool) = _
  fn get_iter_at_line_index(Self, Int, Int) -> (TextIter, Bool) = _
  fn get_iter_at_line_offset(Self, Int, Int) -> (TextIter, Bool) = _
  fn get_iter_at_mark(Self, &ITextMark) -> TextIter = _
  fn get_iter_at_offset(Self, Int) -> TextIter = _
  fn get_line_count(Self) -> Int = _
  fn get_mark(Self, String) -> TextMark? = _
  fn get_max_undo_levels(Self) -> UInt = _
  fn get_modified(Self) -> Bool = _
  fn get_selection_bound(Self) -> TextMark = _
  fn get_selection_bounds(Self) -> (TextIter, TextIter, Bool) = _
  fn get_selection_content(Self) -> @gdk.ContentProvider = _
  fn get_slice(Self, TextIter, TextIter, Bool) -> String = _
  fn get_start_iter(Self) -> TextIter = _
  fn get_tag_table(Self) -> TextTagTable = _
  fn get_text(Self, TextIter, TextIter, Bool) -> String = _
  fn insert(Self, TextIter, String, Int) -> Unit = _
  fn insert_at_cursor(Self, String, Int) -> Unit = _
  fn insert_child_anchor(Self, TextIter, &ITextChildAnchor) -> Unit = _
  fn insert_interactive(Self, TextIter, String, Int, Bool) -> Bool = _
  fn insert_interactive_at_cursor(Self, String, Int, Bool) -> Bool = _
  fn insert_markup(Self, TextIter, String, Int) -> Unit = _
  fn insert_paintable(Self, TextIter, &@gdk.IPaintable) -> Unit = _
  fn insert_range(Self, TextIter, TextIter, TextIter) -> Unit = _
  fn insert_range_interactive(Self, TextIter, TextIter, TextIter, Bool) -> Bool = _
  fn move_mark(Self, &ITextMark, TextIter) -> Unit = _
  fn move_mark_by_name(Self, String, TextIter) -> Unit = _
  fn paste_clipboard(Self, &@gdk.IClipboard, TextIter?, Bool) -> Unit = _
  fn place_cursor(Self, TextIter) -> Unit = _
  fn redo(Self) -> Unit = _
  fn remove_all_tags(Self, TextIter, TextIter) -> Unit = _
  fn remove_commit_notify(Self, UInt) -> Unit = _
  fn remove_selection_clipboard(Self, &@gdk.IClipboard) -> Unit = _
  fn remove_tag(Self, &ITextTag, TextIter, TextIter) -> Unit = _
  fn remove_tag_by_name(Self, String, TextIter, TextIter) -> Unit = _
  fn select_range(Self, TextIter, TextIter) -> Unit = _
  fn set_enable_undo(Self, Bool) -> Unit = _
  fn set_max_undo_levels(Self, UInt) -> Unit = _
  fn set_modified(Self, Bool) -> Unit = _
  fn set_text(Self, String, Int) -> Unit = _
  fn undo(Self) -> Unit = _
  fn connect_apply_tag(Self, (TextBuffer, TextTag, TextIter, TextIter) -> Unit) -> UInt64 = _
  fn connect_begin_user_action(Self, (TextBuffer) -> Unit) -> UInt64 = _
  fn connect_changed(Self, (TextBuffer) -> Unit) -> UInt64 = _
  fn connect_delete_range(Self, (TextBuffer, TextIter, TextIter) -> Unit) -> UInt64 = _
  fn connect_end_user_action(Self, (TextBuffer) -> Unit) -> UInt64 = _
  fn connect_insert_child_anchor(
    Self,
    (TextBuffer, TextIter, TextChildAnchor) -> Unit,
  ) -> UInt64 = _
  fn connect_insert_paintable(
    Self,
    (TextBuffer, TextIter, @gdk.Paintable) -> Unit,
  ) -> UInt64 = _
  fn connect_insert_text(Self, (TextBuffer, TextIter, String, Int) -> Unit) -> UInt64 = _
  fn connect_mark_deleted(Self, (TextBuffer, TextMark) -> Unit) -> UInt64 = _
  fn connect_mark_set(Self, (TextBuffer, TextIter, TextMark) -> Unit) -> UInt64 = _
  fn connect_modified_changed(Self, (TextBuffer) -> Unit) -> UInt64 = _
  fn connect_paste_done(Self, (TextBuffer, @gdk.Clipboard) -> Unit) -> UInt64 = _
  fn connect_redo(Self, (TextBuffer) -> Unit) -> UInt64 = _
  fn connect_remove_tag(Self, (TextBuffer, TextTag, TextIter, TextIter) -> Unit) -> UInt64 = _
  fn connect_undo(Self, (TextBuffer) -> Unit) -> UInt64 = _
  fn add_commit_notify(
    Self,
    TextBufferNotifyFlags,
    (TextBuffer, TextBufferNotifyFlags, UInt, UInt) -> Unit,
  ) -> Unit = _
}

///|
pub impl ITextBuffer for TextBuffer with fn as_text_buffer(self) {
  self
}

///|
/// Implementation contract for TextBuffer.apply_tag. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferApplyTag {
  fn apply_tag(Self, TextBuffer, &ITextTag, TextIter, TextIter) -> Unit
}

///|
/// Implementation contract for TextBuffer.begin_user_action. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferBeginUserAction {
  fn begin_user_action(Self, TextBuffer) -> Unit
}

///|
/// Implementation contract for TextBuffer.changed. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferChanged {
  fn changed(Self, TextBuffer) -> Unit
}

///|
/// Implementation contract for TextBuffer.delete_range. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferDeleteRange {
  fn delete_range(Self, TextBuffer, TextIter, TextIter) -> Unit
}

///|
/// Implementation contract for TextBuffer.end_user_action. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferEndUserAction {
  fn end_user_action(Self, TextBuffer) -> Unit
}

///|
/// Implementation contract for TextBuffer.insert_child_anchor. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferInsertChildAnchor {
  fn insert_child_anchor(Self, TextBuffer, TextIter, &ITextChildAnchor) -> Unit
}

///|
/// Implementation contract for TextBuffer.insert_paintable. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferInsertPaintable {
  fn insert_paintable(Self, TextBuffer, TextIter, &@gdk.IPaintable) -> Unit
}

///|
/// Implementation contract for TextBuffer.insert_text. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferInsertText {
  fn insert_text(Self, TextBuffer, TextIter, String, Int) -> Unit
}

///|
/// Implementation contract for TextBuffer.mark_deleted. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferMarkDeleted {
  fn mark_deleted(Self, TextBuffer, &ITextMark) -> Unit
}

///|
/// Implementation contract for TextBuffer.mark_set. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferMarkSet {
  fn mark_set(Self, TextBuffer, TextIter, &ITextMark) -> Unit
}

///|
/// Implementation contract for TextBuffer.modified_changed. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferModifiedChanged {
  fn modified_changed(Self, TextBuffer) -> Unit
}

///|
/// Implementation contract for TextBuffer.paste_done. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferPasteDone {
  fn paste_done(Self, TextBuffer, &@gdk.IClipboard) -> Unit
}

///|
/// Implementation contract for TextBuffer.redo. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferRedo {
  fn redo(Self, TextBuffer) -> Unit
}

///|
/// Implementation contract for TextBuffer.remove_tag. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferRemoveTag {
  fn remove_tag(Self, TextBuffer, &ITextTag, TextIter, TextIter) -> Unit
}

///|
/// Implementation contract for TextBuffer.undo. Self is the retained MoonBit state; the second parameter is the invoked TextBuffer object.
pub(open) trait VTextBufferUndo {
  fn undo(Self, TextBuffer) -> Unit
}

///|
#borrow(table)
extern "c" fn moonbit_gtk_text_buffer_new(
  table : @glib.Nullable[TextTagTable],
) -> TextBuffer = "moonbit_gtk_text_buffer_new"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/ctor.TextBuffer.new.html).
pub fn TextBuffer::new(table : &ITextTagTable?) -> TextBuffer {
  moonbit_gtk_text_buffer_new(
    match table {
      Some(v) => @glib.Nullable::some(v.as_text_tag_table())
      None => @glib.Nullable::null()
    },
  )
}

///|
#borrow(self_, mark, where_)
extern "c" fn moonbit_gtk_text_buffer_add_mark(
  self_ : TextBuffer,
  mark : TextMark,
  where_ : TextIter,
) = "moonbit_gtk_text_buffer_add_mark"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.add_mark.html).
pub fn TextBuffer::add_mark(
  self : TextBuffer,
  mark : &ITextMark,
  where_ : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_add_mark(self, mark.as_text_mark(), where_)
}

///|
#borrow(self_, clipboard)
extern "c" fn moonbit_gtk_text_buffer_add_selection_clipboard(
  self_ : TextBuffer,
  clipboard : @gdk.Clipboard,
) = "moonbit_gtk_text_buffer_add_selection_clipboard"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.add_selection_clipboard.html).
pub fn TextBuffer::add_selection_clipboard(
  self : TextBuffer,
  clipboard : &@gdk.IClipboard,
) -> Unit {
  moonbit_gtk_text_buffer_add_selection_clipboard(
    self,
    clipboard.as_clipboard(),
  )
}

///|
#borrow(self_, tag, start, end)
extern "c" fn moonbit_gtk_text_buffer_apply_tag(
  self_ : TextBuffer,
  tag : TextTag,
  start : TextIter,
  end : TextIter,
) = "moonbit_gtk_text_buffer_apply_tag"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.apply_tag.html).
pub fn TextBuffer::apply_tag(
  self : TextBuffer,
  tag : &ITextTag,
  start : TextIter,
  end : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_apply_tag(self, tag.as_text_tag(), start, end)
}

///|
#borrow(self_, name, start, end)
extern "c" fn moonbit_gtk_text_buffer_apply_tag_by_name(
  self_ : TextBuffer,
  name : Bytes,
  start : TextIter,
  end : TextIter,
) = "moonbit_gtk_text_buffer_apply_tag_by_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.apply_tag_by_name.html).
pub fn TextBuffer::apply_tag_by_name(
  self : TextBuffer,
  name : String,
  start : TextIter,
  end : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_apply_tag_by_name(
    self,
    @encoding/utf8.encode(name),
    start,
    end,
  )
}

///|
#borrow(self_, iter)
extern "c" fn moonbit_gtk_text_buffer_backspace(
  self_ : TextBuffer,
  iter : TextIter,
  interactive : Bool,
  default_editable : Bool,
) -> Bool = "moonbit_gtk_text_buffer_backspace"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.backspace.html).
pub fn TextBuffer::backspace(
  self : TextBuffer,
  iter : TextIter,
  interactive : Bool,
  default_editable : Bool,
) -> Bool {
  moonbit_gtk_text_buffer_backspace(self, iter, interactive, default_editable)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.begin_irreversible_action.html).
#borrow(self)
pub extern "c" fn TextBuffer::begin_irreversible_action(self : TextBuffer) = "moonbit_gtk_text_buffer_begin_irreversible_action"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.begin_user_action.html).
#borrow(self)
pub extern "c" fn TextBuffer::begin_user_action(self : TextBuffer) = "moonbit_gtk_text_buffer_begin_user_action"

///|
#borrow(self_, clipboard)
extern "c" fn moonbit_gtk_text_buffer_copy_clipboard(
  self_ : TextBuffer,
  clipboard : @gdk.Clipboard,
) = "moonbit_gtk_text_buffer_copy_clipboard"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.copy_clipboard.html).
pub fn TextBuffer::copy_clipboard(
  self : TextBuffer,
  clipboard : &@gdk.IClipboard,
) -> Unit {
  moonbit_gtk_text_buffer_copy_clipboard(self, clipboard.as_clipboard())
}

///|
#borrow(self_, iter)
extern "c" fn moonbit_gtk_text_buffer_create_child_anchor(
  self_ : TextBuffer,
  iter : TextIter,
) -> TextChildAnchor = "moonbit_gtk_text_buffer_create_child_anchor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.create_child_anchor.html).
pub fn TextBuffer::create_child_anchor(
  self : TextBuffer,
  iter : TextIter,
) -> TextChildAnchor {
  moonbit_gtk_text_buffer_create_child_anchor(self, iter)
}

///|
#borrow(self_, mark_name, where_)
extern "c" fn moonbit_gtk_text_buffer_create_mark(
  self_ : TextBuffer,
  mark_name : @glib.Nullable[Bytes],
  where_ : TextIter,
  left_gravity : Bool,
) -> TextMark = "moonbit_gtk_text_buffer_create_mark"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.create_mark.html).
pub fn TextBuffer::create_mark(
  self : TextBuffer,
  mark_name : String?,
  where_ : TextIter,
  left_gravity : Bool,
) -> TextMark {
  moonbit_gtk_text_buffer_create_mark(
    self,
    match mark_name {
      Some(s) => @glib.Nullable::some(@encoding/utf8.encode(s))
      None => @glib.Nullable::null()
    },
    where_,
    left_gravity,
  )
}

///|
#borrow(self_, clipboard)
extern "c" fn moonbit_gtk_text_buffer_cut_clipboard(
  self_ : TextBuffer,
  clipboard : @gdk.Clipboard,
  default_editable : Bool,
) = "moonbit_gtk_text_buffer_cut_clipboard"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.cut_clipboard.html).
pub fn TextBuffer::cut_clipboard(
  self : TextBuffer,
  clipboard : &@gdk.IClipboard,
  default_editable : Bool,
) -> Unit {
  moonbit_gtk_text_buffer_cut_clipboard(
    self,
    clipboard.as_clipboard(),
    default_editable,
  )
}

///|
#borrow(self_, start, end)
extern "c" fn moonbit_gtk_text_buffer_delete(
  self_ : TextBuffer,
  start : TextIter,
  end : TextIter,
) = "moonbit_gtk_text_buffer_delete"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.delete.html).
pub fn TextBuffer::delete(
  self : TextBuffer,
  start : TextIter,
  end : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_delete(self, start, end)
}

///|
#borrow(self_, start_iter, end_iter)
extern "c" fn moonbit_gtk_text_buffer_delete_interactive(
  self_ : TextBuffer,
  start_iter : TextIter,
  end_iter : TextIter,
  default_editable : Bool,
) -> Bool = "moonbit_gtk_text_buffer_delete_interactive"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.delete_interactive.html).
pub fn TextBuffer::delete_interactive(
  self : TextBuffer,
  start_iter : TextIter,
  end_iter : TextIter,
  default_editable : Bool,
) -> Bool {
  moonbit_gtk_text_buffer_delete_interactive(
    self, start_iter, end_iter, default_editable,
  )
}

///|
#borrow(self_, mark)
extern "c" fn moonbit_gtk_text_buffer_delete_mark(
  self_ : TextBuffer,
  mark : TextMark,
) = "moonbit_gtk_text_buffer_delete_mark"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.delete_mark.html).
pub fn TextBuffer::delete_mark(self : TextBuffer, mark : &ITextMark) -> Unit {
  moonbit_gtk_text_buffer_delete_mark(self, mark.as_text_mark())
}

///|
#borrow(self_, name)
extern "c" fn moonbit_gtk_text_buffer_delete_mark_by_name(
  self_ : TextBuffer,
  name : Bytes,
) = "moonbit_gtk_text_buffer_delete_mark_by_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.delete_mark_by_name.html).
pub fn TextBuffer::delete_mark_by_name(
  self : TextBuffer,
  name : String,
) -> Unit {
  moonbit_gtk_text_buffer_delete_mark_by_name(self, @encoding/utf8.encode(name))
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.delete_selection.html).
#borrow(self)
pub extern "c" fn TextBuffer::delete_selection(
  self : TextBuffer,
  interactive : Bool,
  default_editable : Bool,
) -> Bool = "moonbit_gtk_text_buffer_delete_selection"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.end_irreversible_action.html).
#borrow(self)
pub extern "c" fn TextBuffer::end_irreversible_action(self : TextBuffer) = "moonbit_gtk_text_buffer_end_irreversible_action"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.end_user_action.html).
#borrow(self)
pub extern "c" fn TextBuffer::end_user_action(self : TextBuffer) = "moonbit_gtk_text_buffer_end_user_action"

///|
#borrow(self_, __out_end)
extern "c" fn moonbit_gtk_text_buffer_get_bounds(
  self_ : TextBuffer,
  __out_end : Ref[TextIter],
) -> TextIter = "moonbit_gtk_text_buffer_get_bounds"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_bounds.html).
pub fn TextBuffer::get_bounds(self : TextBuffer) -> (TextIter, TextIter) {
  let __out_end = Ref(TextIter::_zero())
  let __result = moonbit_gtk_text_buffer_get_bounds(self, __out_end)
  (__result, __out_end.val)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_can_redo.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_can_redo(self : TextBuffer) -> Bool = "moonbit_gtk_text_buffer_get_can_redo"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_can_undo.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_can_undo(self : TextBuffer) -> Bool = "moonbit_gtk_text_buffer_get_can_undo"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_char_count.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_char_count(self : TextBuffer) -> Int = "moonbit_gtk_text_buffer_get_char_count"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_enable_undo.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_enable_undo(self : TextBuffer) -> Bool = "moonbit_gtk_text_buffer_get_enable_undo"

///|
#borrow(self_)
extern "c" fn moonbit_gtk_text_buffer_get_end_iter(
  self_ : TextBuffer,
) -> TextIter = "moonbit_gtk_text_buffer_get_end_iter"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_end_iter.html).
pub fn TextBuffer::get_end_iter(self : TextBuffer) -> TextIter {
  let __result = moonbit_gtk_text_buffer_get_end_iter(self)
  __result
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_has_selection.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_has_selection(self : TextBuffer) -> Bool = "moonbit_gtk_text_buffer_get_has_selection"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_insert.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_insert(self : TextBuffer) -> TextMark = "moonbit_gtk_text_buffer_get_insert"

///|
#borrow(self_, anchor)
extern "c" fn moonbit_gtk_text_buffer_get_iter_at_child_anchor(
  self_ : TextBuffer,
  anchor : TextChildAnchor,
) -> TextIter = "moonbit_gtk_text_buffer_get_iter_at_child_anchor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_iter_at_child_anchor.html).
pub fn TextBuffer::get_iter_at_child_anchor(
  self : TextBuffer,
  anchor : &ITextChildAnchor,
) -> TextIter {
  let __result = moonbit_gtk_text_buffer_get_iter_at_child_anchor(
    self,
    anchor.as_text_child_anchor(),
  )
  __result
}

///|
#borrow(self_, native_result)
extern "c" fn moonbit_gtk_text_buffer_get_iter_at_line(
  self_ : TextBuffer,
  line_number : Int,
  native_result : Ref[Int],
) -> TextIter = "moonbit_gtk_text_buffer_get_iter_at_line"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_iter_at_line.html).
pub fn TextBuffer::get_iter_at_line(
  self : TextBuffer,
  line_number : Int,
) -> (TextIter, Bool) {
  let native_result = Ref(0)
  let __result = moonbit_gtk_text_buffer_get_iter_at_line(
    self, line_number, native_result,
  )
  (__result, native_result.val != 0)
}

///|
#borrow(self_, native_result)
extern "c" fn moonbit_gtk_text_buffer_get_iter_at_line_index(
  self_ : TextBuffer,
  line_number : Int,
  byte_index : Int,
  native_result : Ref[Int],
) -> TextIter = "moonbit_gtk_text_buffer_get_iter_at_line_index"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_iter_at_line_index.html).
pub fn TextBuffer::get_iter_at_line_index(
  self : TextBuffer,
  line_number : Int,
  byte_index : Int,
) -> (TextIter, Bool) {
  let native_result = Ref(0)
  let __result = moonbit_gtk_text_buffer_get_iter_at_line_index(
    self, line_number, byte_index, native_result,
  )
  (__result, native_result.val != 0)
}

///|
#borrow(self_, native_result)
extern "c" fn moonbit_gtk_text_buffer_get_iter_at_line_offset(
  self_ : TextBuffer,
  line_number : Int,
  char_offset : Int,
  native_result : Ref[Int],
) -> TextIter = "moonbit_gtk_text_buffer_get_iter_at_line_offset"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_iter_at_line_offset.html).
pub fn TextBuffer::get_iter_at_line_offset(
  self : TextBuffer,
  line_number : Int,
  char_offset : Int,
) -> (TextIter, Bool) {
  let native_result = Ref(0)
  let __result = moonbit_gtk_text_buffer_get_iter_at_line_offset(
    self, line_number, char_offset, native_result,
  )
  (__result, native_result.val != 0)
}

///|
#borrow(self_, mark)
extern "c" fn moonbit_gtk_text_buffer_get_iter_at_mark(
  self_ : TextBuffer,
  mark : TextMark,
) -> TextIter = "moonbit_gtk_text_buffer_get_iter_at_mark"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_iter_at_mark.html).
pub fn TextBuffer::get_iter_at_mark(
  self : TextBuffer,
  mark : &ITextMark,
) -> TextIter {
  let __result = moonbit_gtk_text_buffer_get_iter_at_mark(
    self,
    mark.as_text_mark(),
  )
  __result
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_text_buffer_get_iter_at_offset(
  self_ : TextBuffer,
  char_offset : Int,
) -> TextIter = "moonbit_gtk_text_buffer_get_iter_at_offset"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_iter_at_offset.html).
pub fn TextBuffer::get_iter_at_offset(
  self : TextBuffer,
  char_offset : Int,
) -> TextIter {
  let __result = moonbit_gtk_text_buffer_get_iter_at_offset(self, char_offset)
  __result
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_line_count.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_line_count(self : TextBuffer) -> Int = "moonbit_gtk_text_buffer_get_line_count"

///|
#borrow(self_, name)
extern "c" fn moonbit_gtk_text_buffer_get_mark(
  self_ : TextBuffer,
  name : Bytes,
) -> @glib.Nullable[TextMark] = "moonbit_gtk_text_buffer_get_mark"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_mark.html).
pub fn TextBuffer::get_mark(self : TextBuffer, name : String) -> TextMark? {
  let raw_result = moonbit_gtk_text_buffer_get_mark(
    self,
    @encoding/utf8.encode(name),
  )
  raw_result.to_option()
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_max_undo_levels.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_max_undo_levels(self : TextBuffer) -> UInt = "moonbit_gtk_text_buffer_get_max_undo_levels"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_modified.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_modified(self : TextBuffer) -> Bool = "moonbit_gtk_text_buffer_get_modified"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_selection_bound.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_selection_bound(
  self : TextBuffer,
) -> TextMark = "moonbit_gtk_text_buffer_get_selection_bound"

///|
#borrow(self_, __out_end, native_result)
extern "c" fn moonbit_gtk_text_buffer_get_selection_bounds(
  self_ : TextBuffer,
  __out_end : Ref[TextIter],
  native_result : Ref[Int],
) -> TextIter = "moonbit_gtk_text_buffer_get_selection_bounds"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_selection_bounds.html).
pub fn TextBuffer::get_selection_bounds(
  self : TextBuffer,
) -> (TextIter, TextIter, Bool) {
  let __out_end = Ref(TextIter::_zero())
  let native_result = Ref(0)
  let __result = moonbit_gtk_text_buffer_get_selection_bounds(
    self, __out_end, native_result,
  )
  (__result, __out_end.val, native_result.val != 0)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_selection_content.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_selection_content(
  self : TextBuffer,
) -> @gdk.ContentProvider = "moonbit_gtk_text_buffer_get_selection_content"

///|
#borrow(self_, start, end)
extern "c" fn moonbit_gtk_text_buffer_get_slice(
  self_ : TextBuffer,
  start : TextIter,
  end : TextIter,
  include_hidden_chars : Bool,
) -> Bytes = "moonbit_gtk_text_buffer_get_slice"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_slice.html).
pub fn TextBuffer::get_slice(
  self : TextBuffer,
  start : TextIter,
  end : TextIter,
  include_hidden_chars : Bool,
) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_text_buffer_get_slice(self, start, end, include_hidden_chars),
  )
}

///|
#borrow(self_)
extern "c" fn moonbit_gtk_text_buffer_get_start_iter(
  self_ : TextBuffer,
) -> TextIter = "moonbit_gtk_text_buffer_get_start_iter"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_start_iter.html).
pub fn TextBuffer::get_start_iter(self : TextBuffer) -> TextIter {
  let __result = moonbit_gtk_text_buffer_get_start_iter(self)
  __result
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_tag_table.html).
#borrow(self)
pub extern "c" fn TextBuffer::get_tag_table(self : TextBuffer) -> TextTagTable = "moonbit_gtk_text_buffer_get_tag_table"

///|
#borrow(self_, start, end)
extern "c" fn moonbit_gtk_text_buffer_get_text(
  self_ : TextBuffer,
  start : TextIter,
  end : TextIter,
  include_hidden_chars : Bool,
) -> Bytes = "moonbit_gtk_text_buffer_get_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.get_text.html).
pub fn TextBuffer::get_text(
  self : TextBuffer,
  start : TextIter,
  end : TextIter,
  include_hidden_chars : Bool,
) -> String {
  @encoding/utf8.decode_lossy(
    moonbit_gtk_text_buffer_get_text(self, start, end, include_hidden_chars),
  )
}

///|
#borrow(self_, iter, text)
extern "c" fn moonbit_gtk_text_buffer_insert(
  self_ : TextBuffer,
  iter : TextIter,
  text : Bytes,
  len : Int,
) = "moonbit_gtk_text_buffer_insert"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert.html).
pub fn TextBuffer::insert(
  self : TextBuffer,
  iter : TextIter,
  text : String,
  len : Int,
) -> Unit {
  moonbit_gtk_text_buffer_insert(self, iter, @encoding/utf8.encode(text), len)
}

///|
#borrow(self_, text)
extern "c" fn moonbit_gtk_text_buffer_insert_at_cursor(
  self_ : TextBuffer,
  text : Bytes,
  len : Int,
) = "moonbit_gtk_text_buffer_insert_at_cursor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert_at_cursor.html).
pub fn TextBuffer::insert_at_cursor(
  self : TextBuffer,
  text : String,
  len : Int,
) -> Unit {
  moonbit_gtk_text_buffer_insert_at_cursor(
    self,
    @encoding/utf8.encode(text),
    len,
  )
}

///|
#borrow(self_, iter, anchor)
extern "c" fn moonbit_gtk_text_buffer_insert_child_anchor(
  self_ : TextBuffer,
  iter : TextIter,
  anchor : TextChildAnchor,
) = "moonbit_gtk_text_buffer_insert_child_anchor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert_child_anchor.html).
pub fn TextBuffer::insert_child_anchor(
  self : TextBuffer,
  iter : TextIter,
  anchor : &ITextChildAnchor,
) -> Unit {
  moonbit_gtk_text_buffer_insert_child_anchor(
    self,
    iter,
    anchor.as_text_child_anchor(),
  )
}

///|
#borrow(self_, iter, text)
extern "c" fn moonbit_gtk_text_buffer_insert_interactive(
  self_ : TextBuffer,
  iter : TextIter,
  text : Bytes,
  len : Int,
  default_editable : Bool,
) -> Bool = "moonbit_gtk_text_buffer_insert_interactive"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert_interactive.html).
pub fn TextBuffer::insert_interactive(
  self : TextBuffer,
  iter : TextIter,
  text : String,
  len : Int,
  default_editable : Bool,
) -> Bool {
  moonbit_gtk_text_buffer_insert_interactive(
    self,
    iter,
    @encoding/utf8.encode(text),
    len,
    default_editable,
  )
}

///|
#borrow(self_, text)
extern "c" fn moonbit_gtk_text_buffer_insert_interactive_at_cursor(
  self_ : TextBuffer,
  text : Bytes,
  len : Int,
  default_editable : Bool,
) -> Bool = "moonbit_gtk_text_buffer_insert_interactive_at_cursor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert_interactive_at_cursor.html).
pub fn TextBuffer::insert_interactive_at_cursor(
  self : TextBuffer,
  text : String,
  len : Int,
  default_editable : Bool,
) -> Bool {
  moonbit_gtk_text_buffer_insert_interactive_at_cursor(
    self,
    @encoding/utf8.encode(text),
    len,
    default_editable,
  )
}

///|
#borrow(self_, iter, markup)
extern "c" fn moonbit_gtk_text_buffer_insert_markup(
  self_ : TextBuffer,
  iter : TextIter,
  markup : Bytes,
  len : Int,
) = "moonbit_gtk_text_buffer_insert_markup"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert_markup.html).
pub fn TextBuffer::insert_markup(
  self : TextBuffer,
  iter : TextIter,
  markup : String,
  len : Int,
) -> Unit {
  moonbit_gtk_text_buffer_insert_markup(
    self,
    iter,
    @encoding/utf8.encode(markup),
    len,
  )
}

///|
#borrow(self_, iter, paintable)
extern "c" fn moonbit_gtk_text_buffer_insert_paintable(
  self_ : TextBuffer,
  iter : TextIter,
  paintable : @gdk.Paintable,
) = "moonbit_gtk_text_buffer_insert_paintable"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert_paintable.html).
pub fn TextBuffer::insert_paintable(
  self : TextBuffer,
  iter : TextIter,
  paintable : &@gdk.IPaintable,
) -> Unit {
  moonbit_gtk_text_buffer_insert_paintable(self, iter, paintable.as_paintable())
}

///|
#borrow(self_, iter, start, end)
extern "c" fn moonbit_gtk_text_buffer_insert_range(
  self_ : TextBuffer,
  iter : TextIter,
  start : TextIter,
  end : TextIter,
) = "moonbit_gtk_text_buffer_insert_range"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert_range.html).
pub fn TextBuffer::insert_range(
  self : TextBuffer,
  iter : TextIter,
  start : TextIter,
  end : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_insert_range(self, iter, start, end)
}

///|
#borrow(self_, iter, start, end)
extern "c" fn moonbit_gtk_text_buffer_insert_range_interactive(
  self_ : TextBuffer,
  iter : TextIter,
  start : TextIter,
  end : TextIter,
  default_editable : Bool,
) -> Bool = "moonbit_gtk_text_buffer_insert_range_interactive"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.insert_range_interactive.html).
pub fn TextBuffer::insert_range_interactive(
  self : TextBuffer,
  iter : TextIter,
  start : TextIter,
  end : TextIter,
  default_editable : Bool,
) -> Bool {
  moonbit_gtk_text_buffer_insert_range_interactive(
    self, iter, start, end, default_editable,
  )
}

///|
#borrow(self_, mark, where_)
extern "c" fn moonbit_gtk_text_buffer_move_mark(
  self_ : TextBuffer,
  mark : TextMark,
  where_ : TextIter,
) = "moonbit_gtk_text_buffer_move_mark"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.move_mark.html).
pub fn TextBuffer::move_mark(
  self : TextBuffer,
  mark : &ITextMark,
  where_ : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_move_mark(self, mark.as_text_mark(), where_)
}

///|
#borrow(self_, name, where_)
extern "c" fn moonbit_gtk_text_buffer_move_mark_by_name(
  self_ : TextBuffer,
  name : Bytes,
  where_ : TextIter,
) = "moonbit_gtk_text_buffer_move_mark_by_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.move_mark_by_name.html).
pub fn TextBuffer::move_mark_by_name(
  self : TextBuffer,
  name : String,
  where_ : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_move_mark_by_name(
    self,
    @encoding/utf8.encode(name),
    where_,
  )
}

///|
#borrow(self_, clipboard, override_location)
extern "c" fn moonbit_gtk_text_buffer_paste_clipboard(
  self_ : TextBuffer,
  clipboard : @gdk.Clipboard,
  override_location : @glib.Nullable[TextIter],
  default_editable : Bool,
) = "moonbit_gtk_text_buffer_paste_clipboard"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.paste_clipboard.html).
pub fn TextBuffer::paste_clipboard(
  self : TextBuffer,
  clipboard : &@gdk.IClipboard,
  override_location : TextIter?,
  default_editable : Bool,
) -> Unit {
  moonbit_gtk_text_buffer_paste_clipboard(
    self,
    clipboard.as_clipboard(),
    match override_location {
      Some(v) => @glib.Nullable::some(v)
      None => @glib.Nullable::null()
    },
    default_editable,
  )
}

///|
#borrow(self_, where_)
extern "c" fn moonbit_gtk_text_buffer_place_cursor(
  self_ : TextBuffer,
  where_ : TextIter,
) = "moonbit_gtk_text_buffer_place_cursor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.place_cursor.html).
pub fn TextBuffer::place_cursor(self : TextBuffer, where_ : TextIter) -> Unit {
  moonbit_gtk_text_buffer_place_cursor(self, where_)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.redo.html).
#borrow(self)
pub extern "c" fn TextBuffer::redo(self : TextBuffer) = "moonbit_gtk_text_buffer_redo"

///|
#borrow(self_, start, end)
extern "c" fn moonbit_gtk_text_buffer_remove_all_tags(
  self_ : TextBuffer,
  start : TextIter,
  end : TextIter,
) = "moonbit_gtk_text_buffer_remove_all_tags"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.remove_all_tags.html).
pub fn TextBuffer::remove_all_tags(
  self : TextBuffer,
  start : TextIter,
  end : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_remove_all_tags(self, start, end)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.remove_commit_notify.html).
#borrow(self)
pub extern "c" fn TextBuffer::remove_commit_notify(
  self : TextBuffer,
  commit_notify_handler : UInt,
) = "moonbit_gtk_text_buffer_remove_commit_notify"

///|
#borrow(self_, clipboard)
extern "c" fn moonbit_gtk_text_buffer_remove_selection_clipboard(
  self_ : TextBuffer,
  clipboard : @gdk.Clipboard,
) = "moonbit_gtk_text_buffer_remove_selection_clipboard"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.remove_selection_clipboard.html).
pub fn TextBuffer::remove_selection_clipboard(
  self : TextBuffer,
  clipboard : &@gdk.IClipboard,
) -> Unit {
  moonbit_gtk_text_buffer_remove_selection_clipboard(
    self,
    clipboard.as_clipboard(),
  )
}

///|
#borrow(self_, tag, start, end)
extern "c" fn moonbit_gtk_text_buffer_remove_tag(
  self_ : TextBuffer,
  tag : TextTag,
  start : TextIter,
  end : TextIter,
) = "moonbit_gtk_text_buffer_remove_tag"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.remove_tag.html).
pub fn TextBuffer::remove_tag(
  self : TextBuffer,
  tag : &ITextTag,
  start : TextIter,
  end : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_remove_tag(self, tag.as_text_tag(), start, end)
}

///|
#borrow(self_, name, start, end)
extern "c" fn moonbit_gtk_text_buffer_remove_tag_by_name(
  self_ : TextBuffer,
  name : Bytes,
  start : TextIter,
  end : TextIter,
) = "moonbit_gtk_text_buffer_remove_tag_by_name"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.remove_tag_by_name.html).
pub fn TextBuffer::remove_tag_by_name(
  self : TextBuffer,
  name : String,
  start : TextIter,
  end : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_remove_tag_by_name(
    self,
    @encoding/utf8.encode(name),
    start,
    end,
  )
}

///|
#borrow(self_, ins, bound)
extern "c" fn moonbit_gtk_text_buffer_select_range(
  self_ : TextBuffer,
  ins : TextIter,
  bound : TextIter,
) = "moonbit_gtk_text_buffer_select_range"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.select_range.html).
pub fn TextBuffer::select_range(
  self : TextBuffer,
  ins : TextIter,
  bound : TextIter,
) -> Unit {
  moonbit_gtk_text_buffer_select_range(self, ins, bound)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.set_enable_undo.html).
#borrow(self)
pub extern "c" fn TextBuffer::set_enable_undo(
  self : TextBuffer,
  enable_undo : Bool,
) = "moonbit_gtk_text_buffer_set_enable_undo"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.set_max_undo_levels.html).
#borrow(self)
pub extern "c" fn TextBuffer::set_max_undo_levels(
  self : TextBuffer,
  max_undo_levels : UInt,
) = "moonbit_gtk_text_buffer_set_max_undo_levels"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.set_modified.html).
#borrow(self)
pub extern "c" fn TextBuffer::set_modified(self : TextBuffer, setting : Bool) = "moonbit_gtk_text_buffer_set_modified"

///|
#borrow(self_, text)
extern "c" fn moonbit_gtk_text_buffer_set_text(
  self_ : TextBuffer,
  text : Bytes,
  len : Int,
) = "moonbit_gtk_text_buffer_set_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.set_text.html).
pub fn TextBuffer::set_text(
  self : TextBuffer,
  text : String,
  len : Int,
) -> Unit {
  moonbit_gtk_text_buffer_set_text(self, @encoding/utf8.encode(text), len)
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.undo.html).
#borrow(self)
pub extern "c" fn TextBuffer::undo(self : TextBuffer) = "moonbit_gtk_text_buffer_undo"

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_apply_tag(
  instance : TextBuffer,
  function : FuncRef[
    (
      TextBuffer,
      TextTag,
      TextIter,
      TextIter,
      (TextBuffer, TextTag, TextIter, TextIter) -> Unit,
    ) -> Unit,
  ],
  closure : (TextBuffer, TextTag, TextIter, TextIter) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_apply_tag"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.apply-tag.html).
pub fn TextBuffer::connect_apply_tag(
  self : TextBuffer,
  f : (TextBuffer, TextTag, TextIter, TextIter) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_apply_tag(
    self,
    fn(instance_, tag, start, end, f) { f(instance_, tag, start, end) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_begin_user_action(
  instance : TextBuffer,
  function : FuncRef[(TextBuffer, (TextBuffer) -> Unit) -> Unit],
  closure : (TextBuffer) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_begin_user_action"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.begin-user-action.html).
pub fn TextBuffer::connect_begin_user_action(
  self : TextBuffer,
  f : (TextBuffer) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_begin_user_action(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_changed(
  instance : TextBuffer,
  function : FuncRef[(TextBuffer, (TextBuffer) -> Unit) -> Unit],
  closure : (TextBuffer) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_changed"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.changed.html).
pub fn TextBuffer::connect_changed(
  self : TextBuffer,
  f : (TextBuffer) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_changed(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_delete_range(
  instance : TextBuffer,
  function : FuncRef[
    (TextBuffer, TextIter, TextIter, (TextBuffer, TextIter, TextIter) -> Unit) -> Unit,
  ],
  closure : (TextBuffer, TextIter, TextIter) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_delete_range"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.delete-range.html).
pub fn TextBuffer::connect_delete_range(
  self : TextBuffer,
  f : (TextBuffer, TextIter, TextIter) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_delete_range(
    self,
    fn(instance_, start, end, f) { f(instance_, start, end) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_end_user_action(
  instance : TextBuffer,
  function : FuncRef[(TextBuffer, (TextBuffer) -> Unit) -> Unit],
  closure : (TextBuffer) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_end_user_action"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.end-user-action.html).
pub fn TextBuffer::connect_end_user_action(
  self : TextBuffer,
  f : (TextBuffer) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_end_user_action(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_insert_child_anchor(
  instance : TextBuffer,
  function : FuncRef[
    (
      TextBuffer,
      TextIter,
      TextChildAnchor,
      (TextBuffer, TextIter, TextChildAnchor) -> Unit,
    ) -> Unit,
  ],
  closure : (TextBuffer, TextIter, TextChildAnchor) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_insert_child_anchor"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.insert-child-anchor.html).
pub fn TextBuffer::connect_insert_child_anchor(
  self : TextBuffer,
  f : (TextBuffer, TextIter, TextChildAnchor) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_insert_child_anchor(
    self,
    fn(instance_, location, anchor, f) { f(instance_, location, anchor) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_insert_paintable(
  instance : TextBuffer,
  function : FuncRef[
    (
      TextBuffer,
      TextIter,
      @gdk.Paintable,
      (TextBuffer, TextIter, @gdk.Paintable) -> Unit,
    ) -> Unit,
  ],
  closure : (TextBuffer, TextIter, @gdk.Paintable) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_insert_paintable"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.insert-paintable.html).
pub fn TextBuffer::connect_insert_paintable(
  self : TextBuffer,
  f : (TextBuffer, TextIter, @gdk.Paintable) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_insert_paintable(
    self,
    fn(instance_, location, paintable, f) { f(instance_, location, paintable) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_insert_text(
  instance : TextBuffer,
  function : FuncRef[
    (
      TextBuffer,
      TextIter,
      Bytes,
      Int,
      (TextBuffer, TextIter, String, Int) -> Unit,
    ) -> Unit,
  ],
  closure : (TextBuffer, TextIter, String, Int) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_insert_text"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.insert-text.html).
pub fn TextBuffer::connect_insert_text(
  self : TextBuffer,
  f : (TextBuffer, TextIter, String, Int) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_insert_text(
    self,
    fn(instance_, location, text, len, f) {
      f(instance_, location, @encoding/utf8.decode_lossy(text), len)
    },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_mark_deleted(
  instance : TextBuffer,
  function : FuncRef[
    (TextBuffer, TextMark, (TextBuffer, TextMark) -> Unit) -> Unit,
  ],
  closure : (TextBuffer, TextMark) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_mark_deleted"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.mark-deleted.html).
pub fn TextBuffer::connect_mark_deleted(
  self : TextBuffer,
  f : (TextBuffer, TextMark) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_mark_deleted(
    self,
    fn(instance_, mark, f) { f(instance_, mark) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_mark_set(
  instance : TextBuffer,
  function : FuncRef[
    (TextBuffer, TextIter, TextMark, (TextBuffer, TextIter, TextMark) -> Unit) -> Unit,
  ],
  closure : (TextBuffer, TextIter, TextMark) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_mark_set"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.mark-set.html).
pub fn TextBuffer::connect_mark_set(
  self : TextBuffer,
  f : (TextBuffer, TextIter, TextMark) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_mark_set(
    self,
    fn(instance_, location, mark, f) { f(instance_, location, mark) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_modified_changed(
  instance : TextBuffer,
  function : FuncRef[(TextBuffer, (TextBuffer) -> Unit) -> Unit],
  closure : (TextBuffer) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_modified_changed"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.modified-changed.html).
pub fn TextBuffer::connect_modified_changed(
  self : TextBuffer,
  f : (TextBuffer) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_modified_changed(
    self,
    fn(instance_, f) { f(instance_) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_paste_done(
  instance : TextBuffer,
  function : FuncRef[
    (TextBuffer, @gdk.Clipboard, (TextBuffer, @gdk.Clipboard) -> Unit) -> Unit,
  ],
  closure : (TextBuffer, @gdk.Clipboard) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_paste_done"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.paste-done.html).
pub fn TextBuffer::connect_paste_done(
  self : TextBuffer,
  f : (TextBuffer, @gdk.Clipboard) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_paste_done(
    self,
    fn(instance_, clipboard, f) { f(instance_, clipboard) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_redo(
  instance : TextBuffer,
  function : FuncRef[(TextBuffer, (TextBuffer) -> Unit) -> Unit],
  closure : (TextBuffer) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_redo"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.redo.html).
pub fn TextBuffer::connect_redo(
  self : TextBuffer,
  f : (TextBuffer) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_redo(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_remove_tag(
  instance : TextBuffer,
  function : FuncRef[
    (
      TextBuffer,
      TextTag,
      TextIter,
      TextIter,
      (TextBuffer, TextTag, TextIter, TextIter) -> Unit,
    ) -> Unit,
  ],
  closure : (TextBuffer, TextTag, TextIter, TextIter) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_remove_tag"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.remove-tag.html).
pub fn TextBuffer::connect_remove_tag(
  self : TextBuffer,
  f : (TextBuffer, TextTag, TextIter, TextIter) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_remove_tag(
    self,
    fn(instance_, tag, start, end, f) { f(instance_, tag, start, end) },
    f,
  )
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_connect_undo(
  instance : TextBuffer,
  function : FuncRef[(TextBuffer, (TextBuffer) -> Unit) -> Unit],
  closure : (TextBuffer) -> Unit,
) -> UInt64 = "moonbit_gtk_text_buffer_connect_undo"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/signal.TextBuffer.undo.html).
pub fn TextBuffer::connect_undo(
  self : TextBuffer,
  f : (TextBuffer) -> Unit,
) -> UInt64 {
  gtk_text_buffer_connect_undo(self, fn(instance_, f) { f(instance_) }, f)
}

///|
#borrow(instance)
extern "c" fn gtk_text_buffer_add_commit_notify(
  instance : TextBuffer,
  flags : Int,
  function : FuncRef[
    (
      TextBuffer,
      Int,
      UInt,
      UInt,
      (TextBuffer, TextBufferNotifyFlags, UInt, UInt) -> Unit,
    ) -> Unit,
  ],
  closure : (TextBuffer, TextBufferNotifyFlags, UInt, UInt) -> Unit,
) -> Unit = "moonbit_gtk_text_buffer_add_commit_notify"

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/method.TextBuffer.add_commit_notify.html).
pub fn TextBuffer::add_commit_notify(
  self : TextBuffer,
  flags : TextBufferNotifyFlags,
  callback : (TextBuffer, TextBufferNotifyFlags, UInt, UInt) -> Unit,
) -> Unit {
  gtk_text_buffer_add_commit_notify(
    self,
    flags.to_int(),
    fn(buffer, flags, position, length, f) {
      f(buffer, TextBufferNotifyFlags::from_int(flags), position, length)
    },
    callback,
  )
}

///|
/// [Upstream documentation](https://docs.gtk.org/gtk4/property.TextBuffer.cursor-position.html).
#borrow(self_)
pub extern "c" fn TextBuffer::get_cursor_position(self_ : TextBuffer) -> Int = "moonbit_gtk_text_buffer_get_cursor_position"

///|
impl ITextBuffer with fn add_mark(self, mark, where_) -> Unit {
  self.as_text_buffer().add_mark(mark, where_)
}

///|
impl ITextBuffer with fn add_selection_clipboard(self, clipboard) -> Unit {
  self.as_text_buffer().add_selection_clipboard(clipboard)
}

///|
impl ITextBuffer with fn apply_tag(self, tag, start, end) -> Unit {
  self.as_text_buffer().apply_tag(tag, start, end)
}

///|
impl ITextBuffer with fn apply_tag_by_name(self, name, start, end) -> Unit {
  self.as_text_buffer().apply_tag_by_name(name, start, end)
}

///|
impl ITextBuffer with fn backspace(self, iter, interactive, default_editable) -> Bool {
  self.as_text_buffer().backspace(iter, interactive, default_editable)
}

///|
impl ITextBuffer with fn begin_irreversible_action(self) -> Unit {
  self.as_text_buffer().begin_irreversible_action()
}

///|
impl ITextBuffer with fn begin_user_action(self) -> Unit {
  self.as_text_buffer().begin_user_action()
}

///|
impl ITextBuffer with fn copy_clipboard(self, clipboard) -> Unit {
  self.as_text_buffer().copy_clipboard(clipboard)
}

///|
impl ITextBuffer with fn create_child_anchor(self, iter) -> TextChildAnchor {
  self.as_text_buffer().create_child_anchor(iter)
}

///|
impl ITextBuffer with fn create_mark(self, mark_name, where_, left_gravity) -> TextMark {
  self.as_text_buffer().create_mark(mark_name, where_, left_gravity)
}

///|
impl ITextBuffer with fn cut_clipboard(self, clipboard, default_editable) -> Unit {
  self.as_text_buffer().cut_clipboard(clipboard, default_editable)
}

///|
impl ITextBuffer with fn delete(self, start, end) -> Unit {
  self.as_text_buffer().delete(start, end)
}

///|
impl ITextBuffer with fn delete_interactive(
  self,
  start_iter,
  end_iter,
  default_editable,
) -> Bool {
  self
  .as_text_buffer()
  .delete_interactive(start_iter, end_iter, default_editable)
}

///|
impl ITextBuffer with fn delete_mark(self, mark) -> Unit {
  self.as_text_buffer().delete_mark(mark)
}

///|
impl ITextBuffer with fn delete_mark_by_name(self, name) -> Unit {
  self.as_text_buffer().delete_mark_by_name(name)
}

///|
impl ITextBuffer with fn delete_selection(self, interactive, default_editable) -> Bool {
  self.as_text_buffer().delete_selection(interactive, default_editable)
}

///|
impl ITextBuffer with fn end_irreversible_action(self) -> Unit {
  self.as_text_buffer().end_irreversible_action()
}

///|
impl ITextBuffer with fn end_user_action(self) -> Unit {
  self.as_text_buffer().end_user_action()
}

///|
impl ITextBuffer with fn get_bounds(self) -> (TextIter, TextIter) {
  self.as_text_buffer().get_bounds()
}

///|
impl ITextBuffer with fn get_can_redo(self) -> Bool {
  self.as_text_buffer().get_can_redo()
}

///|
impl ITextBuffer with fn get_can_undo(self) -> Bool {
  self.as_text_buffer().get_can_undo()
}

///|
impl ITextBuffer with fn get_char_count(self) -> Int {
  self.as_text_buffer().get_char_count()
}

///|
impl ITextBuffer with fn get_enable_undo(self) -> Bool {
  self.as_text_buffer().get_enable_undo()
}

///|
impl ITextBuffer with fn get_end_iter(self) -> TextIter {
  self.as_text_buffer().get_end_iter()
}

///|
impl ITextBuffer with fn get_has_selection(self) -> Bool {
  self.as_text_buffer().get_has_selection()
}

///|
impl ITextBuffer with fn get_insert(self) -> TextMark {
  self.as_text_buffer().get_insert()
}

///|
impl ITextBuffer with fn get_iter_at_child_anchor(self, anchor) -> TextIter {
  self.as_text_buffer().get_iter_at_child_anchor(anchor)
}

///|
impl ITextBuffer with fn get_iter_at_line(self, line_number) -> (TextIter, Bool) {
  self.as_text_buffer().get_iter_at_line(line_number)
}

///|
impl ITextBuffer with fn get_iter_at_line_index(self, line_number, byte_index) -> (
  TextIter,
  Bool,
) {
  self.as_text_buffer().get_iter_at_line_index(line_number, byte_index)
}

///|
impl ITextBuffer with fn get_iter_at_line_offset(self, line_number, char_offset) -> (
  TextIter,
  Bool,
) {
  self.as_text_buffer().get_iter_at_line_offset(line_number, char_offset)
}

///|
impl ITextBuffer with fn get_iter_at_mark(self, mark) -> TextIter {
  self.as_text_buffer().get_iter_at_mark(mark)
}

///|
impl ITextBuffer with fn get_iter_at_offset(self, char_offset) -> TextIter {
  self.as_text_buffer().get_iter_at_offset(char_offset)
}

///|
impl ITextBuffer with fn get_line_count(self) -> Int {
  self.as_text_buffer().get_line_count()
}

///|
impl ITextBuffer with fn get_mark(self, name) -> TextMark? {
  self.as_text_buffer().get_mark(name)
}

///|
impl ITextBuffer with fn get_max_undo_levels(self) -> UInt {
  self.as_text_buffer().get_max_undo_levels()
}

///|
impl ITextBuffer with fn get_modified(self) -> Bool {
  self.as_text_buffer().get_modified()
}

///|
impl ITextBuffer with fn get_selection_bound(self) -> TextMark {
  self.as_text_buffer().get_selection_bound()
}

///|
impl ITextBuffer with fn get_selection_bounds(self) -> (
  TextIter,
  TextIter,
  Bool,
) {
  self.as_text_buffer().get_selection_bounds()
}

///|
impl ITextBuffer with fn get_selection_content(self) -> @gdk.ContentProvider {
  self.as_text_buffer().get_selection_content()
}

///|
impl ITextBuffer with fn get_slice(self, start, end, include_hidden_chars) -> String {
  self.as_text_buffer().get_slice(start, end, include_hidden_chars)
}

///|
impl ITextBuffer with fn get_start_iter(self) -> TextIter {
  self.as_text_buffer().get_start_iter()
}

///|
impl ITextBuffer with fn get_tag_table(self) -> TextTagTable {
  self.as_text_buffer().get_tag_table()
}

///|
impl ITextBuffer with fn get_text(self, start, end, include_hidden_chars) -> String {
  self.as_text_buffer().get_text(start, end, include_hidden_chars)
}

///|
impl ITextBuffer with fn insert(self, iter, text, len) -> Unit {
  self.as_text_buffer().insert(iter, text, len)
}

///|
impl ITextBuffer with fn insert_at_cursor(self, text, len) -> Unit {
  self.as_text_buffer().insert_at_cursor(text, len)
}

///|
impl ITextBuffer with fn insert_child_anchor(self, iter, anchor) -> Unit {
  self.as_text_buffer().insert_child_anchor(iter, anchor)
}

///|
impl ITextBuffer with fn insert_interactive(
  self,
  iter,
  text,
  len,
  default_editable,
) -> Bool {
  self.as_text_buffer().insert_interactive(iter, text, len, default_editable)
}

///|
impl ITextBuffer with fn insert_interactive_at_cursor(
  self,
  text,
  len,
  default_editable,
) -> Bool {
  self
  .as_text_buffer()
  .insert_interactive_at_cursor(text, len, default_editable)
}

///|
impl ITextBuffer with fn insert_markup(self, iter, markup, len) -> Unit {
  self.as_text_buffer().insert_markup(iter, markup, len)
}

///|
impl ITextBuffer with fn insert_paintable(self, iter, paintable) -> Unit {
  self.as_text_buffer().insert_paintable(iter, paintable)
}

///|
impl ITextBuffer with fn insert_range(self, iter, start, end) -> Unit {
  self.as_text_buffer().insert_range(iter, start, end)
}

///|
impl ITextBuffer with fn insert_range_interactive(
  self,
  iter,
  start,
  end,
  default_editable,
) -> Bool {
  self
  .as_text_buffer()
  .insert_range_interactive(iter, start, end, default_editable)
}

///|
impl ITextBuffer with fn move_mark(self, mark, where_) -> Unit {
  self.as_text_buffer().move_mark(mark, where_)
}

///|
impl ITextBuffer with fn move_mark_by_name(self, name, where_) -> Unit {
  self.as_text_buffer().move_mark_by_name(name, where_)
}

///|
impl ITextBuffer with fn paste_clipboard(
  self,
  clipboard,
  override_location,
  default_editable,
) -> Unit {
  self
  .as_text_buffer()
  .paste_clipboard(clipboard, override_location, default_editable)
}

///|
impl ITextBuffer with fn place_cursor(self, where_) -> Unit {
  self.as_text_buffer().place_cursor(where_)
}

///|
impl ITextBuffer with fn redo(self) -> Unit {
  self.as_text_buffer().redo()
}

///|
impl ITextBuffer with fn remove_all_tags(self, start, end) -> Unit {
  self.as_text_buffer().remove_all_tags(start, end)
}

///|
impl ITextBuffer with fn remove_commit_notify(self, commit_notify_handler) -> Unit {
  self.as_text_buffer().remove_commit_notify(commit_notify_handler)
}

///|
impl ITextBuffer with fn remove_selection_clipboard(self, clipboard) -> Unit {
  self.as_text_buffer().remove_selection_clipboard(clipboard)
}

///|
impl ITextBuffer with fn remove_tag(self, tag, start, end) -> Unit {
  self.as_text_buffer().remove_tag(tag, start, end)
}

///|
impl ITextBuffer with fn remove_tag_by_name(self, name, start, end) -> Unit {
  self.as_text_buffer().remove_tag_by_name(name, start, end)
}

///|
impl ITextBuffer with fn select_range(self, ins, bound) -> Unit {
  self.as_text_buffer().select_range(ins, bound)
}

///|
impl ITextBuffer with fn set_enable_undo(self, enable_undo) -> Unit {
  self.as_text_buffer().set_enable_undo(enable_undo)
}

///|
impl ITextBuffer with fn set_max_undo_levels(self, max_undo_levels) -> Unit {
  self.as_text_buffer().set_max_undo_levels(max_undo_levels)
}

///|
impl ITextBuffer with fn set_modified(self, setting) -> Unit {
  self.as_text_buffer().set_modified(setting)
}

///|
impl ITextBuffer with fn set_text(self, text, len) -> Unit {
  self.as_text_buffer().set_text(text, len)
}

///|
impl ITextBuffer with fn undo(self) -> Unit {
  self.as_text_buffer().undo()
}

///|
impl ITextBuffer with fn connect_apply_tag(self, f) -> UInt64 {
  self.as_text_buffer().connect_apply_tag(f)
}

///|
impl ITextBuffer with fn connect_begin_user_action(self, f) -> UInt64 {
  self.as_text_buffer().connect_begin_user_action(f)
}

///|
impl ITextBuffer with fn connect_changed(self, f) -> UInt64 {
  self.as_text_buffer().connect_changed(f)
}

///|
impl ITextBuffer with fn connect_delete_range(self, f) -> UInt64 {
  self.as_text_buffer().connect_delete_range(f)
}

///|
impl ITextBuffer with fn connect_end_user_action(self, f) -> UInt64 {
  self.as_text_buffer().connect_end_user_action(f)
}

///|
impl ITextBuffer with fn connect_insert_child_anchor(self, f) -> UInt64 {
  self.as_text_buffer().connect_insert_child_anchor(f)
}

///|
impl ITextBuffer with fn connect_insert_paintable(self, f) -> UInt64 {
  self.as_text_buffer().connect_insert_paintable(f)
}

///|
impl ITextBuffer with fn connect_insert_text(self, f) -> UInt64 {
  self.as_text_buffer().connect_insert_text(f)
}

///|
impl ITextBuffer with fn connect_mark_deleted(self, f) -> UInt64 {
  self.as_text_buffer().connect_mark_deleted(f)
}

///|
impl ITextBuffer with fn connect_mark_set(self, f) -> UInt64 {
  self.as_text_buffer().connect_mark_set(f)
}

///|
impl ITextBuffer with fn connect_modified_changed(self, f) -> UInt64 {
  self.as_text_buffer().connect_modified_changed(f)
}

///|
impl ITextBuffer with fn connect_paste_done(self, f) -> UInt64 {
  self.as_text_buffer().connect_paste_done(f)
}

///|
impl ITextBuffer with fn connect_redo(self, f) -> UInt64 {
  self.as_text_buffer().connect_redo(f)
}

///|
impl ITextBuffer with fn connect_remove_tag(self, f) -> UInt64 {
  self.as_text_buffer().connect_remove_tag(f)
}

///|
impl ITextBuffer with fn connect_undo(self, f) -> UInt64 {
  self.as_text_buffer().connect_undo(f)
}

///|
impl ITextBuffer with fn add_commit_notify(self, flags, callback) -> Unit {
  self.as_text_buffer().add_commit_notify(flags, callback)
}

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

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