1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
#![allow(nonstandard_style, unused_imports)] extern crate proc_macro; use ::proc_macro::{Span, TokenStream}; #[cfg(feature = "proc_macros")] use ::{ proc_macro2::{ Span as Span2, TokenStream as TokenStream2, }, quote::{ quote, quote_spanned, ToTokens, }, syn::{*, parse::{ Parse, Parser, }, punctuated::Punctuated, spanned::Spanned, Result, }, }; macro_rules! inline_mod {($modname:ident) => ( include! { concat!(stringify!($modname), ".rs") } )} inline_mod!(utils); #[cfg(feature = "proc_macros")] inline_mod!(derives); #[cfg(feature = "proc_macros")] inline_mod!(c_str); inline_mod!(ffi_export); #[cfg(feature = "headers")] #[proc_macro_attribute] pub fn cfg_headers (attrs: TokenStream, input: TokenStream) -> TokenStream { if let Some(unexpected_tt) = attrs.into_iter().next() { return compile_error("Unexpected parameter", unexpected_tt.span()); } input } #[cfg(not(feature = "headers"))] #[proc_macro_attribute] pub fn cfg_headers (attrs: TokenStream, input: TokenStream) -> TokenStream { if let Some(unexpected_tt) = attrs.into_iter().next() { return compile_error("Unexpected parameter", unexpected_tt.span()); } let _ = input; TokenStream::new() }