nekopas2rust_macros/
lib.rs1mod components;
2use components::prelude::*;
3
4#[proc_macro_derive(Builder, attributes(opt))]
5pub fn builder(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
6 let input = parse_macro_input!(input as DeriveInput);
7 let generate = build_app(&input);
8 generate.into()
9}
10
11#[proc_macro_derive(Print, attributes(transporter))]
12pub fn print(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
13 let input = parse_macro_input!(input as DeriveInput);
14 let mut expanded = proc_macro2::TokenStream::new().into();
15 for_extend_token_stream(
16 &mut expanded,
17 vec![print_by_field(&input), print_method(&input)],
18 );
19 expanded.into()
20}
21
22#[proc_macro_derive(Math)]
23pub fn math(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
24 let input = parse_macro_input!(input as DeriveInput);
25
26 let generate_math = math_app(&input);
27 generate_math.into()
28}
29
30#[proc_macro_derive(Cipher, attributes(opt))]
31pub fn cipher(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
32 let input = parse_macro_input!(input as DeriveInput);
33
34 let generate_cipher = cipher_app(&input);
35 generate_cipher.into()
36}
37
38#[proc_macro_derive(Sphere, attributes(opt, transporter))]
39pub fn sphere(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
40 let b = builder(input.clone()).into();
41 let p = print(input.clone()).into();
42 let m = math(input.clone()).into();
43 let c = cipher(input).into();
44 let mut expanded = proc_macro2::TokenStream::new().into();
45 for_extend_token_stream(&mut expanded, vec![b, p, m, c]);
46 expanded.into()
47}