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)),
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}