1use proc_macro::TokenStream;
2mod accounts;
3mod borsh_size;
4mod compute_record_hash;
5mod compute_record_hash_v2;
6mod declare_id_with_central_state;
7mod wrapped_pod;
8
9#[proc_macro_derive(InstructionsAccount, attributes(cons))]
10pub fn derive_instructions_account(item: TokenStream) -> TokenStream {
11 let ast = syn::parse(item).unwrap();
12 accounts::process(ast)
13}
14
15#[proc_macro_derive(BorshSize, attributes(cons))]
16pub fn derive_borsh_size(item: TokenStream) -> TokenStream {
17 let ast = syn::parse(item).unwrap();
18 borsh_size::process(ast).into()
19}
20
21#[proc_macro_derive(WrappedPod)]
22pub fn derive_wrapped_pod(item: TokenStream) -> TokenStream {
23 let ast = syn::parse(item).unwrap();
24 wrapped_pod::process(ast, false).into()
25}
26
27#[proc_macro_derive(WrappedPodMut)]
28pub fn derive_wrapped_pod_mut(item: TokenStream) -> TokenStream {
29 let ast = syn::parse(item).unwrap();
30 wrapped_pod::process(ast, true).into()
31}
32
33#[proc_macro]
34pub fn declare_id_with_central_state(item: TokenStream) -> TokenStream {
35 declare_id_with_central_state::process(item.into()).into()
36}
37
38#[proc_macro]
39pub fn compute_hashv(item: TokenStream) -> TokenStream {
40 compute_record_hash::process(item.into()).into()
41}
42
43#[proc_macro]
44pub fn compute_record_hash_v2(item: TokenStream) -> TokenStream {
45 compute_record_hash_v2::process(item.into()).into()
46}