1#![deny(missing_docs)]
2
3mod actors;
6mod core;
7
8extern crate proc_macro;
9
10use proc_macro::TokenStream;
11use quote::quote;
12
13#[allow(missing_docs)]
16#[proc_macro_attribute]
17pub fn actor_outputs(attr: TokenStream, item: TokenStream) -> TokenStream {
18 core::actor_outputs_impl(
19 proc_macro2::TokenStream::from(attr),
20 proc_macro2::TokenStream::from(item),
21 )
22 .into()
23}
24
25#[allow(missing_docs)]
27#[proc_macro_attribute]
28pub fn actor_out_requests(attr: TokenStream, item: TokenStream) -> TokenStream {
29 core::actor_out_requests_impl(
30 proc_macro2::TokenStream::from(attr),
31 proc_macro2::TokenStream::from(item),
32 )
33 .into()
34}
35
36#[allow(missing_docs)]
38#[proc_macro_attribute]
39pub fn actor_inputs(args: TokenStream, inbound: TokenStream) -> TokenStream {
40 core::actor_inputs_impl(
41 proc_macro2::TokenStream::from(args),
42 proc_macro2::TokenStream::from(inbound),
43 )
44 .into()
45}
46
47#[allow(missing_docs)]
49#[proc_macro_attribute]
50pub fn actor_in_requests(attr: TokenStream, item: TokenStream) -> TokenStream {
51 core::actor_in_requests_impl(
52 proc_macro2::TokenStream::from(attr),
53 proc_macro2::TokenStream::from(item),
54 )
55 .into()
56}
57
58#[allow(missing_docs)]
60#[proc_macro_attribute]
61pub fn actor(attr: TokenStream, item: TokenStream) -> TokenStream {
62 core::actor_impl(
63 proc_macro2::TokenStream::from(attr),
64 proc_macro2::TokenStream::from(item),
65 )
66 .into()
67}
68
69#[allow(missing_docs)]
71#[proc_macro]
72pub fn zip_n(input: TokenStream) -> TokenStream {
73 let parsed = proc_macro2::TokenStream::from(input.clone());
74 let parsed2 = parsed.clone();
75 let parsed3 = parsed.clone();
76 let parsed4 = parsed.clone();
77 let parsed5 = parsed.clone();
78 let parsed6 = parsed.clone();
79 let parsed7 = parsed.clone();
80
81 let output_tuple_n = actors::zip::tuple_n_impl(parsed);
82 let output_zip_outbound_n = actors::zip::zip_outbound_n_impl(parsed2);
83 let output_zip_state_n = actors::zip::zip_state_n_impl(parsed3);
84 let output_inbound_message_n = actors::zip::zip_inbound_message_n_impl(parsed4);
85 let output_zip_n = actors::zip::zip_n_impl(parsed5);
86 let output_zip_inbound_n = actors::zip::zip_inbound_n_impl(parsed6);
87 let output_zip_onmessage_n_new = actors::zip::zip_onmessage_n_impl(parsed7);
88
89 let combined_output = quote! {
90 #output_tuple_n
91 #output_zip_outbound_n
92 #output_zip_state_n
93 #output_inbound_message_n
94 #output_zip_n
95 #output_zip_inbound_n
96 #output_zip_onmessage_n_new
97 };
98
99 TokenStream::from(combined_output)
100}