// GENERATED — DO NOT EDIT

///|
#borrow(text, pbase_dir_ref, result)
extern "c" fn moonbit_pango_log2vis_get_embedding_levels(
  text : Bytes,
  length : Int,
  pbase_dir_ref : Ref[Direction],
  result : Ref[FixedArray[UInt]],
) = "moonbit_pango_log2vis_get_embedding_levels"

///|
/// [Upstream documentation](https://gnome.pages.gitlab.gnome.org/pango/Pango/func.log2vis_get_embedding_levels.html).
pub fn log2vis_get_embedding_levels(
  text : String,
  length : Int,
  pbase_dir : Direction,
) -> (Array[UInt], Direction) {
  let pbase_dir_ref = Ref(pbase_dir)
  let result_ref : Ref[FixedArray[UInt]] = Ref([])
  moonbit_pango_log2vis_get_embedding_levels(
    @encoding/utf8.encode(text),
    length,
    pbase_dir_ref,
    result_ref,
  )
  let values : Array[UInt] = Array::new(capacity=result_ref.val.length())
  for i in 0..