Skip to main content

accepts_macros/
lib.rs

1#[cfg(any(feature = "internal-codegen", feature = "codegen"))]
2use accepts_codegen::acceptor::{accepts_auto_impl, linear, next_acceptors_auto_impl};
3
4#[cfg(feature = "internal-codegen")]
5use accepts_codegen::common::context::INTERNAL_CONTEXT;
6
7#[cfg(feature = "codegen")]
8use accepts_codegen::common::context::PUBLIC_CONTEXT;
9
10//===============linear_accepts===============
11#[cfg(feature = "internal-codegen")]
12#[proc_macro]
13pub fn generate_linear_acceptor_internal(
14    input: proc_macro::TokenStream,
15) -> proc_macro::TokenStream {
16    linear::expand(&INTERNAL_CONTEXT, input.into()).into()
17}
18
19#[cfg(feature = "codegen")]
20#[proc_macro]
21pub fn generate_linear_acceptor(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
22    linear::expand(&PUBLIC_CONTEXT, input.into()).into()
23}
24
25//===============auto_impl===============
26
27#[cfg(feature = "internal-codegen")]
28#[proc_macro_attribute]
29pub fn auto_impl_async_internal(
30    attr: proc_macro::TokenStream,
31    item: proc_macro::TokenStream,
32) -> proc_macro::TokenStream {
33    accepts_auto_impl::expand_async_impl(&INTERNAL_CONTEXT, attr.into(), item.into()).into()
34}
35
36#[cfg(feature = "codegen")]
37#[proc_macro_attribute]
38pub fn auto_impl_async(
39    attr: proc_macro::TokenStream,
40    item: proc_macro::TokenStream,
41) -> proc_macro::TokenStream {
42    accepts_auto_impl::expand_async_impl(&PUBLIC_CONTEXT, attr.into(), item.into()).into()
43}
44
45#[cfg(feature = "internal-codegen")]
46#[proc_macro_attribute]
47pub fn auto_impl_dyn_internal(
48    attr: proc_macro::TokenStream,
49    item: proc_macro::TokenStream,
50) -> proc_macro::TokenStream {
51    accepts_auto_impl::expand_dyn_impl(&INTERNAL_CONTEXT, attr.into(), item.into()).into()
52}
53
54#[cfg(feature = "codegen")]
55#[proc_macro_attribute]
56pub fn auto_impl_dyn(
57    attr: proc_macro::TokenStream,
58    item: proc_macro::TokenStream,
59) -> proc_macro::TokenStream {
60    accepts_auto_impl::expand_dyn_impl(&PUBLIC_CONTEXT, attr.into(), item.into()).into()
61}
62
63//===============derive NextAcceptors===============
64
65#[cfg(feature = "internal-codegen")]
66#[proc_macro_derive(NextAcceptorsInternal, attributes(next_acceptor))]
67pub fn next_acceptors_internal(item: proc_macro::TokenStream) -> proc_macro::TokenStream {
68    next_acceptors_auto_impl::expand(&INTERNAL_CONTEXT, item.into()).into()
69}
70
71#[cfg(feature = "codegen")]
72#[proc_macro_derive(NextAcceptors, attributes(next_acceptor))]
73pub fn next_acceptors(item: proc_macro::TokenStream) -> proc_macro::TokenStream {
74    next_acceptors_auto_impl::expand(&PUBLIC_CONTEXT, item.into()).into()
75}