1use proc_macro::TokenStream;
2use proc_macro_error::proc_macro_error;
3
4mod bitsize;
5mod bitsize_internal;
6mod debug_bits;
7mod default_bits;
8mod fmt_bits;
9mod from_bits;
10mod try_from_bits;
11
12mod shared;
13
14#[proc_macro_error]
21#[proc_macro_attribute]
22pub fn bitsize(args: TokenStream, item: TokenStream) -> TokenStream {
23 bitsize::bitsize(args.into(), item.into()).into()
24}
25
26#[proc_macro_error]
29#[proc_macro_attribute]
30pub fn bitsize_internal(args: TokenStream, item: TokenStream) -> TokenStream {
31 bitsize_internal::bitsize_internal(args.into(), item.into()).into()
32}
33
34#[proc_macro_error]
39#[proc_macro_derive(TryFromBits, attributes(bitsize_internal, fallback))]
40pub fn derive_try_from_bits(item: TokenStream) -> TokenStream {
41 try_from_bits::try_from_bits(item.into()).into()
42}
43
44#[proc_macro_error]
50#[proc_macro_derive(FromBits, attributes(bitsize_internal, fallback))]
51pub fn derive_from_bits(item: TokenStream) -> TokenStream {
52 from_bits::from_bits(item.into()).into()
53}
54
55#[proc_macro_error]
59#[proc_macro_derive(DebugBits, attributes(bitsize_internal))]
60pub fn debug_bits(item: TokenStream) -> TokenStream {
61 debug_bits::debug_bits(item.into()).into()
62}
63
64#[proc_macro_error]
66#[proc_macro_derive(BinaryBits)]
67pub fn derive_binary_bits(item: TokenStream) -> TokenStream {
68 fmt_bits::binary(item.into()).into()
69}
70
71#[proc_macro_error]
73#[proc_macro_derive(DefaultBits)]
74pub fn derive_default_bits(item: TokenStream) -> TokenStream {
75 default_bits::default_bits(item.into()).into()
76}