cgp_component_macro/
lib.rs

1#![no_std]
2
3/*!
4   This crate provides the proc macros used for defining CGP components.
5*/
6
7extern crate proc_macro;
8
9use proc_macro::TokenStream;
10
11#[proc_macro_attribute]
12pub fn cgp_component(attr: TokenStream, item: TokenStream) -> TokenStream {
13    cgp_component_macro_lib::derive_component(attr.into(), item.into())
14        .unwrap_or_else(syn::Error::into_compile_error)
15        .into()
16}
17
18#[proc_macro_attribute]
19pub fn cgp_getter(attr: TokenStream, item: TokenStream) -> TokenStream {
20    cgp_component_macro_lib::derive_getter_component(attr.into(), item.into())
21        .unwrap_or_else(syn::Error::into_compile_error)
22        .into()
23}
24
25#[proc_macro_attribute]
26pub fn cgp_auto_getter(attr: TokenStream, item: TokenStream) -> TokenStream {
27    cgp_component_macro_lib::derive_auto_getter_component(attr.into(), item.into())
28        .unwrap_or_else(syn::Error::into_compile_error)
29        .into()
30}
31
32#[proc_macro]
33pub fn delegate_components(body: TokenStream) -> TokenStream {
34    cgp_component_macro_lib::delegate_components(body.into())
35        .unwrap_or_else(syn::Error::into_compile_error)
36        .into()
37}
38
39#[proc_macro]
40pub fn cgp_preset(body: TokenStream) -> TokenStream {
41    cgp_component_macro_lib::define_preset(body.into())
42        .unwrap_or_else(syn::Error::into_compile_error)
43        .into()
44}
45
46#[proc_macro]
47pub fn cgp_type(body: TokenStream) -> TokenStream {
48    cgp_component_macro_lib::derive_type_component(body.into())
49        .unwrap_or_else(syn::Error::into_compile_error)
50        .into()
51}
52
53#[proc_macro]
54pub fn for_each_replace(body: TokenStream) -> TokenStream {
55    cgp_component_macro_lib::handle_for_each_replace(body.into())
56        .unwrap_or_else(syn::Error::into_compile_error)
57        .into()
58}
59
60#[proc_macro]
61pub fn replace_with(body: TokenStream) -> TokenStream {
62    cgp_component_macro_lib::handle_replace(body.into())
63        .unwrap_or_else(syn::Error::into_compile_error)
64        .into()
65}