use proc_macro::TokenStream;
mod derive_pagable;
mod derive_pagable_panic;
mod derive_pagable_tagged;
mod typetag;
#[proc_macro_derive(Pagable, attributes(pagable))]
pub fn derive_pagable(input: TokenStream) -> TokenStream {
derive_pagable::derive_pagable(input, true, true)
}
#[proc_macro_derive(PagablePanic, attributes(pagable))]
pub fn derive_pagable_panic(input: TokenStream) -> TokenStream {
derive_pagable_panic::derive_pagable_panic(input)
}
#[proc_macro_derive(PagableSerialize, attributes(pagable))]
pub fn derive_pagable_serialize(input: TokenStream) -> TokenStream {
derive_pagable::derive_pagable(input, true, false)
}
#[proc_macro_derive(PagableDeserialize, attributes(pagable))]
pub fn derive_pagable_deserialize(input: TokenStream) -> TokenStream {
derive_pagable::derive_pagable(input, false, true)
}
#[proc_macro_attribute]
pub fn pagable_tagged(attr: TokenStream, item: TokenStream) -> TokenStream {
derive_pagable_tagged::pagable_tagged_impl(attr, item)
}
#[proc_macro_attribute]
pub fn pagable_typetag(attr: TokenStream, item: TokenStream) -> TokenStream {
typetag::pagable_typetag_impl(attr, item)
}