use crate::context::LlamaContext;
use crate::error::Result;
impl LlamaContext<'_> {
pub fn seq_rm(&self, seq_id: i32, p0: i32, p1: i32) -> Result<()> {
let mem = unsafe { llama_crab_sys::llama_get_memory(self.raw_handle()) };
if mem.is_null() {
return Err(crate::error::LlamaError::Batch(
"context has no memory (n_seq_max == 0?)".into(),
));
}
let _ = unsafe { llama_crab_sys::llama_memory_seq_rm(mem, seq_id, p0, p1) };
Ok(())
}
pub fn seq_cp(&self, src_seq: i32, dst_seq: i32, p0: i32, p1: i32) -> Result<()> {
let mem = unsafe { llama_crab_sys::llama_get_memory(self.raw_handle()) };
if mem.is_null() {
return Err(crate::error::LlamaError::Batch(
"context has no memory (n_seq_max == 0?)".into(),
));
}
unsafe { llama_crab_sys::llama_memory_seq_cp(mem, src_seq, dst_seq, p0, p1) };
Ok(())
}
pub fn seq_keep(&self, seq_id: i32) -> Result<()> {
let mem = unsafe { llama_crab_sys::llama_get_memory(self.raw_handle()) };
if mem.is_null() {
return Err(crate::error::LlamaError::Batch(
"context has no memory (n_seq_max == 0?)".into(),
));
}
unsafe { llama_crab_sys::llama_memory_seq_keep(mem, seq_id) };
Ok(())
}
pub fn seq_add(&self, seq_id: i32, p0: i32, p1: i32, shift: i32) -> Result<()> {
let mem = unsafe { llama_crab_sys::llama_get_memory(self.raw_handle()) };
if mem.is_null() {
return Err(crate::error::LlamaError::Batch(
"context has no memory (n_seq_max == 0?)".into(),
));
}
unsafe { llama_crab_sys::llama_memory_seq_add(mem, seq_id, p0, p1, shift) };
Ok(())
}
pub fn seq_div(&self, seq_id: i32, p0: i32, p1: i32, d: i32) -> Result<()> {
let mem = unsafe { llama_crab_sys::llama_get_memory(self.raw_handle()) };
if mem.is_null() {
return Err(crate::error::LlamaError::Batch(
"context has no memory (n_seq_max == 0?)".into(),
));
}
unsafe { llama_crab_sys::llama_memory_seq_div(mem, seq_id, p0, p1, d) };
Ok(())
}
#[must_use]
pub fn seq_pos_min(&self, seq_id: i32) -> i32 {
let mem = unsafe { llama_crab_sys::llama_get_memory(self.raw_handle()) };
if mem.is_null() {
return -1;
}
unsafe { llama_crab_sys::llama_memory_seq_pos_min(mem, seq_id) }
}
#[must_use]
pub fn seq_pos_max(&self, seq_id: i32) -> i32 {
let mem = unsafe { llama_crab_sys::llama_get_memory(self.raw_handle()) };
if mem.is_null() {
return -1;
}
unsafe { llama_crab_sys::llama_memory_seq_pos_max(mem, seq_id) }
}
}