use crsn::asm::data::literal::Value; use crsn::asm::error::CrsnError; use crsn::asm::instr::op::OpKind; use crsn::asm::parse::arg_parser::TokenParser; use crsn::module::{CrsnExtension, ParseRes}; use crsn::runtime::fault::Fault; use crsn::runtime::run_thread::{RunState, ThreadInfo}; mod defs; mod parse; mod exec; #[derive(Debug, Clone)] pub struct StackOps; impl StackOps { pub fn new() -> Box { Box::new(Self) } } impl CrsnExtension for StackOps { fn name(&self) -> &'static str { "stacks" } fn parse_op<'a>(&self, keyword: &str, args: TokenParser<'a>) -> Result, CrsnError> { parse::parse(keyword, args) } fn drop_obj(&self, _ti: &ThreadInfo, state: &mut RunState, handle: Value) -> Result, Fault> { exec::drop_obj(state, handle) } }