1#![feature(extract_if)]
2#![allow(dead_code)]
3
4use proc_macro::TokenStream;
5
6mod util;
7
8mod archetype;
9mod comp;
10mod comps;
11mod discrim;
12mod entity_ref;
13mod global;
14mod system;
15mod tracer;
16mod tracer_def;
17mod zip;
18
19#[proc_macro]
20pub fn zip(input: TokenStream) -> TokenStream {
21 zip::imp(input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
22}
23
24#[proc_macro]
25pub fn archetype(input: TokenStream) -> TokenStream {
26 archetype::imp(input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
27}
28
29#[proc_macro_attribute]
30pub fn comp(args: TokenStream, input: TokenStream) -> TokenStream {
31 comp::imp(args.into(), input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
32}
33
34#[proc_macro]
35pub fn comps(input: TokenStream) -> TokenStream {
36 comps::imp(input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
37}
38
39#[proc_macro_attribute]
40pub fn global(args: TokenStream, input: TokenStream) -> TokenStream {
41 global::imp(args.into(), input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
42}
43
44#[proc_macro_derive(EntityRef, attributes(entity, not_entity))]
45pub fn entity_ref(input: TokenStream) -> TokenStream {
46 entity_ref::derive(input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
47}
48
49#[proc_macro_derive(Discrim, attributes(dynec))]
50pub fn discrim(input: TokenStream) -> TokenStream {
51 discrim::derive(input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
52}
53
54#[proc_macro_attribute]
55pub fn system(args: TokenStream, input: TokenStream) -> TokenStream {
56 system::imp(args.into(), input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
57}
58
59#[proc_macro_attribute]
60pub fn tracer(args: TokenStream, input: TokenStream) -> TokenStream {
61 tracer::api(args.into(), input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
62}
63
64#[proc_macro]
65pub fn polyfill_tracer_proc(input: TokenStream) -> TokenStream {
66 tracer::polyfill(input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
67}
68
69#[proc_macro_attribute]
70pub fn tracer_def(args: TokenStream, input: TokenStream) -> TokenStream {
71 tracer_def::imp(args.into(), input.into()).unwrap_or_else(|err| err.to_compile_error()).into()
72}