///|
/// 持有一个 native `EditLine*` 及其线程局部 UTF-8 locale。
///
/// C finalizer 会先释放编辑器,再释放 locale。公开 API 无法显式关闭或检查该 owner。
priv type EditorOwner
///|
/// 创建并完整配置一个 native 编辑器 owner。
///
/// 字节数组只在本次调用期间被借用。native 代码会检查 NUL 并复制临时 C 字符串,绝不
/// 保留任何 MoonBit 缓冲区。构造成功后,owner 会强引用所连接的 History owner。
#borrow(application_name, editrc_path, history_owner)
extern "C" fn EditorOwner::new(
application_name : Bytes,
editrc_kind : Int,
editrc_path : Bytes,
editing_mode : Int,
history_owner : HistoryOwner,
) -> EditorOwner = "readline_mbt_editor_owner_new"
///|
/// 返回编辑器 owner 中保存的稳定构造状态。
#borrow(self)
extern "C" fn EditorOwner::status(self : EditorOwner) -> Int = "readline_mbt_editor_owner_status"
///|
/// 同步读取一行,并返回在下一次底层调用前复制出的 MoonBit-owned 字节。
///
/// prompt 缓冲区只在本次调用期间被借用;读取结果的含义由随后查询的稳定状态决定。
#borrow(self, prompt)
extern "C" fn EditorOwner::read(self : EditorOwner, prompt : Bytes) -> Bytes = "readline_mbt_editor_owner_read"
///|
/// 返回最近一次读取的稳定状态。
#borrow(self)
extern "C" fn EditorOwner::read_status(self : EditorOwner) -> Int = "readline_mbt_editor_owner_read_status"
///|
/// 返回最近一次读取失败时立即保存的 OS error code。
#borrow(self)
extern "C" fn EditorOwner::read_errno(self : EditorOwner) -> Int = "readline_mbt_editor_owner_read_errno"