tiberius_ng_macros/
lib.rs1extern crate proc_macro;
4
5#[macro_use]
6extern crate quote;
7#[macro_use]
8extern crate syn;
9
10use proc_macro::TokenStream;
11
12macro_rules! sp_quote {
13 ($($t:tt)*) => (quote_spanned!(proc_macro2::Span::call_site() => $($t)*))
14}
15
16mod attr;
17mod table_value_param;
18
19#[proc_macro_derive(TableValueRow, attributes(colname))]
38pub fn table_value_param(input: TokenStream) -> TokenStream {
39 let ast: syn::DeriveInput = syn::parse(input).expect("Couldn't parse item");
40 let result = match ast.data {
41 syn::Data::Enum(_) => panic!("n/a for enums, makes sense for structs only"),
42 syn::Data::Struct(ref s) => table_value_param::for_struct(&ast, &s.fields),
43 syn::Data::Union(_) => panic!("doesn't work with unions"),
44 };
45 result.into()
46}