hydro2_operator/
opcode.rs

1// ---------------- [ File: src/opcode.rs ]
2crate::ix!();
3
4pub trait OpCode: Send + Sync {
5    fn val(&self) -> u64;
6}
7
8/// High-level codes for each stage/operator in the pipeline.
9#[derive(Debug, Clone, PartialEq, Eq, Hash)]
10pub enum BasicOpCode {
11    Foo,
12    Nothing,
13    Sink,
14    TestOp,
15    MultiThing,
16    NoOp,
17    FailingOp,
18    StreamTestOp,
19    SingleValueTestOp,
20    AddOp,
21    MultiplyOp,
22    ToStringOp,
23    ConstantOp,
24    IncrementOperator,
25    SingleChannelPassthrough,
26    DoubleToTriOp,
27    DoubleOp,
28    DoubleToTriTwoGenericsOp,
29    Merge2Op,
30    DoubleOutOp,
31    QuadToQuadOp,
32    SingleToTriOp,
33    TriToQuadOp,
34    TriToSingleOp,
35    SplitAndDoubleOp,
36}
37
38unsafe impl Send for BasicOpCode {}
39unsafe impl Sync for BasicOpCode {}
40
41impl OpCode for BasicOpCode {
42    fn val(&self) -> u64 {
43        use BasicOpCode::*;
44        match self {
45            Foo                      => 0,
46            Nothing                  => 1,
47            Sink                     => 2,
48            TestOp                   => 3,
49            MultiThing               => 4,
50            NoOp                     => 5,
51            FailingOp                => 6,
52            StreamTestOp             => 7,
53            SingleValueTestOp        => 8,
54            AddOp                    => 9,
55            MultiplyOp               => 10,
56            ToStringOp               => 11,
57            ConstantOp               => 12,
58            IncrementOperator        => 13,
59            SingleChannelPassthrough => 14,
60            DoubleToTriOp            => 15,
61            DoubleOp                 => 16,
62            DoubleToTriTwoGenericsOp => 17,
63            Merge2Op                 => 18,
64            DoubleOutOp              => 19,
65            QuadToQuadOp             => 20,
66            SingleToTriOp            => 21,
67            TriToQuadOp              => 22,
68            TriToSingleOp            => 23,
69            SplitAndDoubleOp         => 24,
70        }
71    }
72}