use std::sync::Arc; use super::types::SourceSpan; #[derive(Clone, Debug, PartialEq)] pub enum Op { PushInt(i64, Option), PushFloat(f64, Option), PushStr(Arc, Option), Dup, Dupn, Drop, Swap, Over, Rot, Nip, Tuck, Dup2, Drop2, Swap2, Over2, Rev, Shuffle, Sort, RSort, Sum, Prod, Forget, Add, Sub, Mul, Div, Mod, Neg, Abs, Floor, Ceil, Round, Min, Max, Pow, Sqrt, Sin, Cos, Log, Eq, Ne, Lt, Gt, Le, Ge, And, Or, Not, Xor, Nand, Nor, IfElse, Pick, BranchIfZero(usize, Option, Option), Branch(usize), NewCmd, SetParam(&'static str), Emit, Get, Set, SetKeep, GetContext(&'static str), Rand(Option), ExpRand(Option), LogRand(Option), Seed, Cycle(Option), PCycle(Option), Choose(Option), Bounce(Option), WChoose(Option), ChanceExec(Option), ProbExec(Option), Coin(Option), Mtof, Ftom, SetTempo, Every(Option), Bjork(Option), PBjork(Option), Quotation(Arc<[Op]>, Option), When, Unless, Adsr, Ad, Apply, Ramp, Triangle, Range, Perlin, Chain, Loop, Degree(&'static [i64]), Oct, ClearCmd, SetSpeed, At, Arp, IntRange, StepRange, Generate, GeomRange, Euclid, EuclidRot, Times, Chord(&'static [i64]), // Audio-rate modulation DSL ModLfo(u8), ModSlide(u8), ModRnd(u8), ModEnv, // MIDI MidiEmit, GetMidiCC, MidiClock, MidiStart, MidiStop, MidiContinue, }