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#[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#[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#[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}