///|
pub let array_view_methods : Map[String, RuntimeFunction] = {
"length": array_view_length_fn,
"swap": array_view_swap_fn,
}
///| 数组长度
let array_view_length_fn : RuntimeFunction = ctx => match ctx.arguments {
[{ val: ArrayView(arr), .. }, ..] => Int(arr.length())
_ => Unit
}
///| 数组交换
let array_view_swap_fn : RuntimeFunction = ctx => match ctx.arguments {
[{ val: ArrayView(arr), .. }, { val: Int(i), .. }, { val: Int(j), .. }, ..] => {
arr.swap(i, j)
Unit
}
_ => Unit
}
///|
fn[T] ArrayView::buf(self : ArrayView[T]) -> UninitializedArray[T] = "%arrayview.buf"
///|
fn[T] ArrayView::start(self : ArrayView[T]) -> Int = "%arrayview.start"
///|
fn[T] ArrayView::len(self : ArrayView[T]) -> Int = "%arrayview.len"
///| ArrayView start 方法 - 返回起始索引
let array_view_buf_fn : RuntimeFunction = ctx => match ctx.arguments {
[{ val: ArrayView(arr), .. }, ..] => UninitializedArray(arr.buf())
_ => Unit
}
///| ArrayView start 方法 - 返回起始索引
let array_view_start_fn : RuntimeFunction = ctx => match ctx.arguments {
[{ val: ArrayView(arr), .. }, ..] => Int(arr.start())
_ => Unit
}
///| ArrayView len 方法
let array_view_len_fn : RuntimeFunction = ctx => match ctx.arguments {
[{ val: ArrayView(arr), .. }, ..] => Int(arr.len())
_ => Unit
}