bitbash_macros/
lib.rs

1extern crate proc_macro;
2use proc_macro::TokenStream;
3use proc_macro2::Span;
4use syn::Token;
5
6mod bitenum;
7mod bitfield;
8
9fn constness(use_const: bool) -> Option<Token![const]> {
10    match use_const {
11        true => Some(Token![const](Span::call_site())),
12        false => None,
13    }
14}
15
16#[proc_macro_derive(BitEnumConst)]
17pub fn bitenum_const(input: TokenStream) -> TokenStream {
18    bitenum::bitenum(input, true)
19}
20
21#[proc_macro_derive(BitEnumNonConst)]
22pub fn bitenum_nonconst(input: TokenStream) -> TokenStream {
23    bitenum::bitenum(input, false)
24}
25
26#[proc_macro]
27pub fn bitfield_const(input: TokenStream) -> TokenStream {
28    bitfield::bitfield(input, true)
29}
30
31#[proc_macro]
32pub fn bitfield_nonconst(input: TokenStream) -> TokenStream {
33    bitfield::bitfield(input, false)
34}