dynec_codegen/
lib.rs

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}