diff --git a/src/builder_type_t.rs b/src/builder_type_t.rs new file mode 100644 index 0000000..caacc5b --- /dev/null +++ b/src/builder_type_t.rs @@ -0,0 +1,58 @@ +#[macro_export] +macro_rules! builder_type_t { + ( + $name:ident + $(< + $generic0Name:ty $(, $genericNName:ty)* + >)? + + ) => { + $name + < + 'source, 'pos, 'builder, C, P, CS + $(, $generic0Name $(, $genericNName)*)? + > + + }; + ( + $name:ident + < + $lifetime0Name:lifetime $(, $lifetimeNName:lifetime)* + $(, $genericNName:ty)* + > + ) => { + $name + < + 'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*, + C, P, CS $(, $genericNName)* + > + }; + + ( + impl $name:ident + $(< + $generic0Name:ty $(, $genericNName:ty)* + >)? + + ) => { + impl $name + < + 'source, 'pos, 'builder, C, P, CS + $(, $generic0Name $(, $genericNName)*)? + > + + }; + ( + impl $name:ident + < + $lifetime0Name:lifetime $(, $lifetimeNName:lifetime)* + $(, $genericNName:ty)* + > + ) => { + impl $name + < + 'source, 'pos, 'builder, $lifetime0Name $(, $lifetimeNName)*, + C, P, CS $(, $genericNName)* + > + }; +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index a669efb..a0ac0a3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,6 @@ mod _keyword_impls; mod parser_func; +mod builder_type_t; pub trait Predicate { fn check(&mut self, chr: C) -> bool;