#[derive(Debug, Clone, PartialEq)]
pub enum CoreOp {
PushConst(f64),
PushVar(u8), PushDoubleVar(u8),
Add,
Sub,
Mul,
Div,
Mod,
Neg,
Power,
Eq,
Ne,
Lt,
Le,
Gt,
Ge,
And,
Or,
Not,
BitAnd,
BitOr,
BitXor,
BitNot,
Shl,
Shr,
ShrLogical,
CondIf,
CondElse,
CondEnd,
Abs,
Sqrt,
Exp,
Log10,
LogE,
Log2,
Sin,
Cos,
Tan,
Asin,
Acos,
Atan,
Sinh,
Cosh,
Tanh,
Ceil,
Floor,
Nint,
IsNan(u8), IsInf,
Finite(u8),
Atan2,
Fmod,
Max(u8), Min(u8),
MaxVal, MinVal,
Pi,
D2R,
R2D,
Random,
NormalRandom,
FetchVal,
StoreVar(u8), StoreDoubleVar(u8),
End,
}
#[derive(Debug, Clone, PartialEq)]
pub enum StringOp {
PushString(String),
PushStringVar(u8), StoreStringVar(u8), ToString, ToDouble, Len, Byte, TrEsc,
Esc,
Printf,
Sscanf,
BinRead,
BinWrite,
Crc16,
Crc16Append, Lrc,
LrcAppend, Xor8,
Xor8Append, Subrange, Replace, SubLast, }
#[derive(Debug, Clone, PartialEq)]
pub enum ControlOp {
Until(usize), UntilEnd(usize), }
#[derive(Debug, Clone, PartialEq)]
pub enum ArrayOp {
ConstIndex, ToArray, ToDouble, Average,
StdDev,
Fwhm,
ArraySum,
ArrayMax,
ArrayMin,
IndexMax,
IndexMin,
IndexZero,
IndexNonZero,
Smooth,
NSmooth,
Deriv,
NDeriv,
Cum,
Cat,
ArrayRandom,
ArraySubrange,
ArraySubrangeInPlace,
FitPoly,
FitMPoly,
FitQ,
FitMQ,
}
#[derive(Debug, Clone, PartialEq)]
pub enum Opcode {
Core(CoreOp),
String(StringOp),
Control(ControlOp),
Array(ArrayOp),
}