mazzaroth_rs/abi/
encoder.rs1use xdr_rs_serialize::ser::XDROut;
4
5pub struct Encoder {
9 values: Vec<u8>,
10}
11
12impl Default for Encoder {
13 fn default() -> Self {
14 Encoder { values: Vec::new() }
15 }
16}
17
18impl Encoder {
19 pub fn push<T: XDROut>(&mut self, val: T, typ: &'static str) {
21 let mut val_bytes: Vec<u8> = Vec::new();
22 val.write_json(&mut val_bytes).unwrap();
23
24 match typ {
26 "String" | "u64" | "i64" => self
27 .values_mut()
28 .extend_from_slice(&val_bytes[1..val_bytes.len() - 1]),
29 _ => self.values_mut().extend_from_slice(&val_bytes),
30 };
31 }
32
33 pub fn values_mut(&mut self) -> &mut Vec<u8> {
35 &mut self.values
36 }
37
38 pub fn values(self) -> Vec<u8> {
40 self.values
41 }
42}