light_merkle_tree_program/
indexed_merkle_tree.rs

1pub trait IndexedMerkleTree {
2    fn get_index(&self) -> u64;
3    fn is_newest(&self) -> bool;
4    fn set_newest(&mut self, newest: bool);
5}
6
7#[macro_export]
8macro_rules! impl_indexed_merkle_tree {
9    ($strct:ident) => {
10        impl $crate::indexed_merkle_tree::IndexedMerkleTree for $strct {
11            fn get_index(&self) -> u64 {
12                self.merkle_tree_nr
13            }
14
15            fn is_newest(&self) -> bool {
16                if self.newest == 0 {
17                    return false;
18                }
19                true
20            }
21
22            fn set_newest(&mut self, newest: bool) {
23                match newest {
24                    true => self.newest = 1,
25                    false => self.newest = 0,
26                }
27            }
28        }
29    };
30}