Skip to main content

nil_core_macros/
lib.rs

1// Copyright (C) Call of Nil contributors
2// SPDX-License-Identifier: AGPL-3.0-only
3
4#![cfg_attr(docsrs, feature(doc_cfg))]
5#![doc(html_favicon_url = "https://nil.dev.br/favicon.png")]
6#![feature(trim_prefix_suffix)]
7
8mod infrastructure;
9mod npc;
10mod report;
11mod unit;
12
13use proc_macro::TokenStream;
14
15#[proc_macro_derive(Building)]
16pub fn derive_building(input: TokenStream) -> TokenStream {
17  infrastructure::impl_building(&syn::parse(input).unwrap())
18}
19
20#[proc_macro_derive(Mine)]
21pub fn derive_mine(input: TokenStream) -> TokenStream {
22  infrastructure::impl_mine(&syn::parse(input).unwrap())
23}
24
25#[proc_macro_derive(Precursor)]
26pub fn derive_precursor(input: TokenStream) -> TokenStream {
27  npc::impl_precursor(&syn::parse(input).unwrap())
28}
29
30#[proc_macro_derive(Report)]
31pub fn derive_report(input: TokenStream) -> TokenStream {
32  report::impl_report(&syn::parse(input).unwrap())
33}
34
35#[proc_macro_derive(Storage)]
36pub fn derive_storage(input: TokenStream) -> TokenStream {
37  infrastructure::impl_storage(&syn::parse(input).unwrap())
38}
39
40#[proc_macro_derive(Unit)]
41pub fn derive_unit(input: TokenStream) -> TokenStream {
42  unit::impl_unit(&syn::parse(input).unwrap())
43}