neo3/neo_builder/transaction/
call_flags.rs

1#[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}