snarkvm_console_program/data/future/
to_bits.rs1use super::*;
17
18impl<N: Network> ToBits for Future<N> {
19 #[inline]
22 fn write_bits_le(&self, vec: &mut Vec<bool>) {
23 let program_id_bits = self.program_id.to_bits_le();
25 u16::try_from(program_id_bits.len()).or_halt_with::<N>("Program ID exceeds u16::MAX bits").write_bits_le(vec);
26 vec.extend_from_slice(&program_id_bits);
27
28 let function_name_bits = self.function_name.to_bits_le();
30 u16::try_from(function_name_bits.len())
31 .or_halt_with::<N>("Function name exceeds u16::MAX bits")
32 .write_bits_le(vec);
33 vec.extend_from_slice(&function_name_bits);
34
35 u8::try_from(self.arguments.len()).or_halt_with::<N>("arguments exceed u8::MAX").write_bits_le(vec);
37
38 for argument in &self.arguments {
40 let argument_bits = argument.to_bits_le();
41
42 let argument_length = argument_bits.len();
44 match argument_length <= u16::MAX as usize {
45 true => u16::try_from(argument_length)
46 .or_halt_with::<N>("argument exceeds u16::MAX bits")
47 .write_bits_le(vec),
48 false => u32::try_from(argument_length)
49 .or_halt_with::<N>("argument exceeds u32::MAX bits")
50 .write_bits_le(vec),
51 }
52
53 vec.extend_from_slice(&argument_bits);
55 }
56 }
57
58 #[inline]
61 fn write_bits_be(&self, vec: &mut Vec<bool>) {
62 let program_id_bits = self.program_id.to_bits_be();
64 u16::try_from(program_id_bits.len()).or_halt_with::<N>("Program ID exceeds u16::MAX bits").write_bits_be(vec);
65 vec.extend_from_slice(&program_id_bits);
66
67 let function_name_bits = self.function_name.to_bits_be();
69 u16::try_from(function_name_bits.len())
70 .or_halt_with::<N>("Function name exceeds u16::MAX bits")
71 .write_bits_be(vec);
72 vec.extend_from_slice(&function_name_bits);
73
74 u8::try_from(self.arguments.len()).or_halt_with::<N>("arguments exceed u8::MAX").write_bits_be(vec);
76
77 for argument in &self.arguments {
79 let argument_bits = argument.to_bits_be();
80
81 let argument_length = argument_bits.len();
83 match argument_length <= u16::MAX as usize {
84 true => u16::try_from(argument_length)
85 .or_halt_with::<N>("argument exceeds u16::MAX bits")
86 .write_bits_be(vec),
87 false => u32::try_from(argument_length)
88 .or_halt_with::<N>("argument exceeds u32::MAX bits")
89 .write_bits_be(vec),
90 }
91
92 vec.extend_from_slice(&argument_bits);
94 }
95 }
96}