qqx_macro/lib.rs
1#![feature(const_panic)]
2
3mod polygon;
4mod callback;
5mod tls;
6
7use proc_macro::TokenStream;
8
9#[proc_macro_attribute]
10pub fn qqx(attribute: TokenStream, input: TokenStream) -> TokenStream {
11 let attribute = attribute.to_string();
12
13 if let Some(x) = tls::take(&attribute, "polygon(..)") {
14 polygon::polygon(x, input)
15 } else if let Some(x) = tls::take(&attribute, "callback(..)") {
16 callback::callback(x, input)
17 } else {
18 panic!("Unknown attribute `{}`", attribute)
19 }
20}