Skip to main content

nil_num_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
7mod big_int;
8mod ops;
9
10use proc_macro::TokenStream;
11use syn::DeriveInput;
12
13#[proc_macro_derive(BigIntU64)]
14pub fn derive_big_int_u64(input: TokenStream) -> TokenStream {
15  let ast = syn::parse::<DeriveInput>(input).unwrap();
16  big_int::impl_big_int_u64(&ast)
17}
18
19#[proc_macro_derive(BigIntUsize)]
20pub fn derive_big_int_usize(input: TokenStream) -> TokenStream {
21  let ast = syn::parse::<DeriveInput>(input).unwrap();
22  big_int::impl_big_int_usize(&ast)
23}
24
25#[proc_macro_derive(F64Ops)]
26pub fn derive_f64_ops(input: TokenStream) -> TokenStream {
27  let ast = syn::parse::<DeriveInput>(input).unwrap();
28  ops::impl_f64_ops(&ast)
29}
30
31#[proc_macro_derive(F64Add)]
32pub fn derive_f64_add(input: TokenStream) -> TokenStream {
33  let ast = syn::parse::<DeriveInput>(input).unwrap();
34  ops::impl_f64_add(&ast)
35}
36
37#[proc_macro_derive(F64Sub)]
38pub fn derive_f64_sub(input: TokenStream) -> TokenStream {
39  let ast = syn::parse::<DeriveInput>(input).unwrap();
40  ops::impl_f64_sub(&ast)
41}
42
43#[proc_macro_derive(F64Mul)]
44pub fn derive_f64_mul(input: TokenStream) -> TokenStream {
45  let ast = syn::parse::<DeriveInput>(input).unwrap();
46  ops::impl_f64_mul(&ast)
47}
48
49#[proc_macro_derive(F64Div)]
50pub fn derive_f64_div(input: TokenStream) -> TokenStream {
51  let ast = syn::parse::<DeriveInput>(input).unwrap();
52  ops::impl_f64_div(&ast)
53}