regs-macros 0.1.0

Low-level utilities for defining and accessing memory-mapped registers
Documentation
use proc_macro::TokenStream;
use syn::parse_macro_input;

mod spec;

/// Defines the layout and access rules to a memory-mapped register.
///
/// This macros does not define the memory-mapped register itself.
/// It generates type definitions for its layout and access rules.
/// Use the [`reg`] macro to define memory-mapped registers based on type definitions.
///
/// # Examples
/// ```
/// use regs_macros::*;
///
/// regspec!(CR as u32, bits {
///     EN[31],
///     RYD[24, ro],
///     STAT[16;2],
/// });
/// ```
#[proc_macro]
pub fn regspec(input: TokenStream) -> TokenStream {
    let input = parse_macro_input!(input as spec::RegSpec);
    input.into_token_stream()
}