24 lines
811 B
Rust
24 lines
811 B
Rust
//! This crate provides procedural macros for the nixjit project.
|
|
use proc_macro::TokenStream;
|
|
|
|
mod builtins;
|
|
mod ir;
|
|
|
|
/// A procedural macro to reduce boilerplate when defining an Intermediate Representation (IR).
|
|
///
|
|
/// It generates an enum for the IR, along with `Ref` and `Mut` variants,
|
|
/// `From` implementations, and a `ToIr` trait.
|
|
#[proc_macro]
|
|
pub fn ir(input: TokenStream) -> TokenStream {
|
|
ir::ir_impl(input)
|
|
}
|
|
|
|
/// A procedural macro attribute to simplify the definition of built-in functions.
|
|
///
|
|
/// It generates the necessary boilerplate to wrap functions and expose them
|
|
/// to the evaluation engine, handling argument type conversions and arity checking.
|
|
#[proc_macro_attribute]
|
|
pub fn builtins(_attr: TokenStream, input: TokenStream) -> TokenStream {
|
|
builtins::builtins_impl(input)
|
|
}
|