llama_cpp_2/
token_type.rs1use enumflags2::{bitflags, BitFlags};
3use std::ops::{Deref, DerefMut};
4
5#[derive(Eq, PartialEq, Debug, Clone, Copy)]
7#[bitflags]
8#[repr(u32)]
9#[allow(clippy::module_name_repetitions, missing_docs)]
10pub enum LlamaTokenAttr {
11 Unknown = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_UNKNOWN as _,
12 Unused = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_UNUSED as _,
13 Normal = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_NORMAL as _,
14 Control = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_CONTROL as _,
15 UserDefined = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_USER_DEFINED as _,
16 Byte = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_BYTE as _,
17 Normalized = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_NORMALIZED as _,
18 LStrip = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_LSTRIP as _,
19 RStrip = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_RSTRIP as _,
20 SingleWord = llama_cpp_sys_2::LLAMA_TOKEN_ATTR_SINGLE_WORD as _,
21}
22
23#[derive(Debug, Clone, Copy, PartialEq, Eq)]
25pub struct LlamaTokenAttrs(pub BitFlags<LlamaTokenAttr>);
26
27impl Deref for LlamaTokenAttrs {
28 type Target = BitFlags<LlamaTokenAttr>;
29
30 fn deref(&self) -> &Self::Target {
31 &self.0
32 }
33}
34
35impl DerefMut for LlamaTokenAttrs {
36 fn deref_mut(&mut self) -> &mut Self::Target {
37 &mut self.0
38 }
39}
40
41impl TryFrom<llama_cpp_sys_2::llama_token_type> for LlamaTokenAttrs {
42 type Error = LlamaTokenTypeFromIntError;
43
44 fn try_from(value: llama_cpp_sys_2::llama_vocab_type) -> Result<Self, Self::Error> {
45 Ok(Self(BitFlags::from_bits(value as _).map_err(|e| {
46 LlamaTokenTypeFromIntError::UnknownValue(e.invalid_bits())
47 })?))
48 }
49}
50
51#[derive(thiserror::Error, Debug, Eq, PartialEq)]
53pub enum LlamaTokenTypeFromIntError {
54 #[error("Unknown Value {0}")]
56 UnknownValue(std::ffi::c_uint),
57}