use crate::string::KString;
#[derive(Debug, Clone)]
pub enum KNode<'a> {
Null,
Bool(bool),
Number(&'a [u8]), String(KString<'a>),
Array { start_idx: usize, len: usize },
Object { start_idx: usize, len: usize },
}
pub struct KView<'a> {
pub source: &'a [u8],
pub tape: &'a [u32],
}
impl<'a> KView<'a> {
#[inline(always)]
pub fn new(source: &'a [u8], tape: &'a [u32]) -> Self {
Self { source, tape }
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_view_initialization() {
let json = b"{\"key\":\"value\"}";
let tape = vec![0, 1, 5, 6, 7, 13, 14];
let view = KView::new(json, &tape);
assert_eq!(view.source.len(), 15);
assert_eq!(view.tape.len(), 7);
}
}