neo3/neo_builder/transaction/
call_flags.rs1#[derive(Debug, Hash, Eq, PartialEq, Clone, Copy)]
2pub enum CallFlags {
3 None,
4 ReadStates,
5 WriteStates,
6 AllowCall,
7 AllowNotify,
8 States,
9 ReadOnly,
10 All,
11}
12
13impl CallFlags {
14 pub fn value(&self) -> u8 {
15 match self {
16 Self::None => 0,
17 Self::ReadStates => 0b00000001,
18 Self::WriteStates => 0b00000010,
19 Self::AllowCall => 0b00000100,
20 Self::AllowNotify => 0b00001000,
21 Self::States => Self::ReadStates.value() | Self::WriteStates.value(),
22 Self::ReadOnly => Self::ReadStates.value() | Self::AllowCall.value(),
23 Self::All => Self::States.value() | Self::AllowCall.value() | Self::AllowNotify.value(),
24 }
25 }
26
27 pub fn from_value(value: u8) -> Result<Self, &'static str> {
28 match value {
29 0 => Ok(Self::None),
30 0b00000001 => Ok(Self::ReadStates),
31 0b00000010 => Ok(Self::WriteStates),
32 0b00000100 => Ok(Self::AllowCall),
33 0b00001000 => Ok(Self::AllowNotify),
34 0b00000011 => Ok(Self::States),
35 0b00000101 => Ok(Self::ReadOnly),
36 0b00001111 => Ok(Self::All),
37 _ => Err("Invalid value"),
38 }
39 }
40}