use manyhow::manyhow;
use proc_macro2::TokenStream;
mod bitsize;
mod bitsize_internal;
mod debug_bits;
mod default_bits;
mod fmt_bits;
mod from_bits;
#[cfg(feature = "schemars")]
#[cfg_attr(docsrs, doc(cfg(feature = "schemars")))]
mod schemars_bits;
#[cfg(feature = "serde")]
#[cfg_attr(docsrs, doc(cfg(feature = "serde")))]
mod serde_bits;
mod try_from_bits;
mod shared;
#[manyhow]
#[proc_macro_attribute]
pub fn bitsize(args: TokenStream, item: TokenStream) -> manyhow::Result {
bitsize::bitsize(args, item)
}
#[doc(hidden)]
#[manyhow]
#[proc_macro_attribute]
pub fn bitsize_internal(args: TokenStream, item: TokenStream) -> manyhow::Result {
bitsize_internal::bitsize_internal(args, item)
}
#[manyhow]
#[proc_macro_derive(TryFromBits, attributes(bitsize_internal, fallback))]
pub fn derive_try_from_bits(item: TokenStream) -> manyhow::Result {
try_from_bits::try_from_bits(item)
}
#[manyhow]
#[proc_macro_derive(FromBits, attributes(bitsize_internal, fallback))]
pub fn derive_from_bits(item: TokenStream) -> manyhow::Result {
from_bits::from_bits(item)
}
#[manyhow]
#[proc_macro_derive(DebugBits, attributes(bitsize_internal))]
pub fn debug_bits(item: TokenStream) -> manyhow::Result {
debug_bits::debug_bits(item)
}
#[manyhow]
#[proc_macro_derive(BinaryBits, attributes(bitsize_internal, fallback))]
pub fn derive_binary_bits(item: TokenStream) -> manyhow::Result {
fmt_bits::binary(item)
}
#[manyhow]
#[proc_macro_derive(DefaultBits, attributes(bitsize_internal))]
pub fn derive_default_bits(item: TokenStream) -> manyhow::Result {
default_bits::default_bits(item)
}
#[cfg(feature = "schemars")]
#[manyhow]
#[proc_macro_derive(JsonSchemaBits, attributes(bitsize_internal))]
pub fn json_schema_bits(item: TokenStream) -> manyhow::Result {
schemars_bits::json_schema_bits(item)
}
#[cfg(feature = "serde")]
#[manyhow]
#[proc_macro_derive(SerializeBits, attributes(bitsize_internal))]
pub fn serialize_bits(item: TokenStream) -> manyhow::Result {
serde_bits::serialize_bits(item)
}
#[cfg(feature = "serde")]
#[manyhow]
#[proc_macro_derive(DeserializeBits, attributes(bitsize_internal))]
pub fn deserialize_bits(item: TokenStream) -> manyhow::Result {
serde_bits::deserialize_bits(item)
}