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 building;
9mod mine;
10mod precursor;
11mod report;
12mod storage;
13mod unit;
14
15use proc_macro::TokenStream;
16
17#[proc_macro_derive(Building)]
18pub fn derive_building(input: TokenStream) -> TokenStream {
19  building::impl_building(&syn::parse(input).unwrap())
20}
21
22#[proc_macro_derive(Mine)]
23pub fn derive_mine(input: TokenStream) -> TokenStream {
24  mine::impl_mine(&syn::parse(input).unwrap())
25}
26
27#[proc_macro_derive(Precursor)]
28pub fn derive_precursor(input: TokenStream) -> TokenStream {
29  precursor::impl_precursor(&syn::parse(input).unwrap())
30}
31
32#[proc_macro_derive(Report)]
33pub fn derive_report(input: TokenStream) -> TokenStream {
34  report::impl_report(&syn::parse(input).unwrap())
35}
36
37#[proc_macro_derive(Storage)]
38pub fn derive_storage(input: TokenStream) -> TokenStream {
39  storage::impl_storage(&syn::parse(input).unwrap())
40}
41
42#[proc_macro_derive(Unit)]
43pub fn derive_unit(input: TokenStream) -> TokenStream {
44  unit::impl_unit(&syn::parse(input).unwrap())
45}