ic_stable_memory_derive/
lib.rs1use crate::as_fixed_size_bytes::derive_as_fixed_size_bytes_impl;
2use crate::candid_as_dyn_size_bytes::derive_candid_as_dyn_size_bytes_impl;
3use crate::fixed_size_as_dyn_size_bytes::derive_fixed_size_as_dyn_size_bytes_impl;
4use crate::stable_type::derive_stable_type_impl;
5use proc_macro::TokenStream as Tokens;
6use proc_macro2::{self, TokenStream};
7use quote::quote;
8use syn::{parse_macro_input, DeriveInput, Fields, Ident, Index};
9
10mod as_fixed_size_bytes;
11mod candid_as_dyn_size_bytes;
12mod fixed_size_as_dyn_size_bytes;
13mod stable_type;
14
15#[proc_macro_derive(StableType)]
17pub fn derive_stable_type(input: Tokens) -> Tokens {
18 let DeriveInput {
19 ident,
20 data,
21 generics,
22 ..
23 } = parse_macro_input!(input);
24
25 derive_stable_type_impl(&ident, &data, &generics).into()
26}
27
28#[proc_macro_derive(AsFixedSizeBytes)]
30pub fn derive_as_fixed_size_bytes(input: Tokens) -> Tokens {
31 let DeriveInput {
32 ident,
33 data,
34 generics,
35 ..
36 } = parse_macro_input!(input);
37
38 derive_as_fixed_size_bytes_impl(&ident, &data, &generics).into()
39}
40
41#[proc_macro_derive(CandidAsDynSizeBytes)]
43pub fn derive_candid_as_dyn_size_bytes(input: Tokens) -> Tokens {
44 let DeriveInput {
45 ident, generics, ..
46 } = parse_macro_input!(input);
47
48 derive_candid_as_dyn_size_bytes_impl(&ident, &generics).into()
49}
50
51#[proc_macro_derive(FixedSizeAsDynSizeBytes)]
53pub fn derive_fixed_size_as_dyn_size_bytes(input: Tokens) -> Tokens {
54 let DeriveInput {
55 ident, generics, ..
56 } = parse_macro_input!(input);
57
58 derive_fixed_size_as_dyn_size_bytes_impl(&ident, &generics).into()
59}