use crsn::asm::data::{Rd, RdObj, Wr}; use crsn::asm::data::literal::Value; #[derive(Clone, Debug, PartialEq)] pub enum BufValue { Zeros(Rd), Values(Vec), Chars(String), } #[derive(Clone, Debug, PartialEq)] pub enum BufOps { New { dst: Wr, value: BufValue }, // Elementary ops Read { dst: Wr, obj: RdObj, idx: Rd }, GetLen { dst: Wr, obj: RdObj }, Write { obj: RdObj, idx: Rd, value: Rd }, Insert { obj: RdObj, idx: Rd, value: Rd }, Remove { dst: Wr, obj: RdObj, idx: Rd }, // Whole buffer ops Resize { obj: RdObj, len: Rd }, Reverse { obj: RdObj }, AppendBuf { obj: RdObj, obj2: RdObj }, PrependBuf { obj: RdObj, obj2: RdObj }, // Stack-style ops Push { obj: RdObj, src: Rd }, Pop { dst: Wr, obj: RdObj }, }