1use manyhow::manyhow;
2use proc_macro2::TokenStream;
3
4mod bitsize;
5mod bitsize_internal;
6mod debug_bits;
7mod default_bits;
8mod fmt_bits;
9mod from_bits;
10#[cfg(feature = "schemars")]
11#[cfg_attr(docsrs, doc(cfg(feature = "schemars")))]
12mod schemars_bits;
13#[cfg(feature = "serde")]
14#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
15mod serde_bits;
16mod try_from_bits;
17
18mod shared;
19
20#[manyhow]
40#[proc_macro_attribute]
41pub fn bitsize(args: TokenStream, item: TokenStream) -> manyhow::Result {
42 bitsize::bitsize(args, item)
43}
44
45#[doc(hidden)]
48#[manyhow]
49#[proc_macro_attribute]
50pub fn bitsize_internal(args: TokenStream, item: TokenStream) -> manyhow::Result {
51 bitsize_internal::bitsize_internal(args, item)
52}
53
54#[manyhow]
59#[proc_macro_derive(TryFromBits, attributes(bitsize_internal, fallback))]
60pub fn derive_try_from_bits(item: TokenStream) -> manyhow::Result {
61 try_from_bits::try_from_bits(item)
62}
63
64#[manyhow]
70#[proc_macro_derive(FromBits, attributes(bitsize_internal, fallback))]
71pub fn derive_from_bits(item: TokenStream) -> manyhow::Result {
72 from_bits::from_bits(item)
73}
74
75#[manyhow]
79#[proc_macro_derive(DebugBits, attributes(bitsize_internal))]
80pub fn debug_bits(item: TokenStream) -> manyhow::Result {
81 debug_bits::debug_bits(item)
82}
83
84#[manyhow]
86#[proc_macro_derive(BinaryBits, attributes(bitsize_internal, fallback))]
87pub fn derive_binary_bits(item: TokenStream) -> manyhow::Result {
88 fmt_bits::binary(item)
89}
90
91#[manyhow]
93#[proc_macro_derive(DefaultBits, attributes(bitsize_internal))]
94pub fn derive_default_bits(item: TokenStream) -> manyhow::Result {
95 default_bits::default_bits(item)
96}
97
98#[cfg(feature = "schemars")]
102#[manyhow]
103#[proc_macro_derive(JsonSchemaBits, attributes(bitsize_internal))]
104pub fn json_schema_bits(item: TokenStream) -> manyhow::Result {
105 schemars_bits::json_schema_bits(item)
106}
107
108#[cfg(feature = "serde")]
112#[manyhow]
113#[proc_macro_derive(SerializeBits, attributes(bitsize_internal))]
114pub fn serialize_bits(item: TokenStream) -> manyhow::Result {
115 serde_bits::serialize_bits(item)
116}
117
118#[cfg(feature = "serde")]
122#[manyhow]
123#[proc_macro_derive(DeserializeBits, attributes(bitsize_internal))]
124pub fn deserialize_bits(item: TokenStream) -> manyhow::Result {
125 serde_bits::deserialize_bits(item)
126}