1#[cfg(feature = "query")]
2mod query_macro;
3#[cfg(feature = "quote")]
4mod quote_macro;
5
6#[cfg(feature = "quote")]
7use proc_macro_error2::proc_macro_error;
8
9#[cfg(feature = "query")]
10use query_macro::{QueryInput, query_impl};
11#[cfg(feature = "quote")]
12use quote_macro::{QuoteNodeKind, quote_impl};
13
14#[cfg(feature = "query")]
15#[proc_macro]
16pub fn query(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
17 let input = syn::parse_macro_input!(input as QueryInput);
18 query_impl(input, false).into()
19}
20#[cfg(feature = "query")]
21#[proc_macro]
22pub fn query_mut(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
23 let input = syn::parse_macro_input!(input as QueryInput);
24 query_impl(input, true).into()
25}
26
27#[cfg(feature = "quote")]
28#[proc_macro_error]
29#[proc_macro]
30pub fn quote_module(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
31 quote_impl(QuoteNodeKind::TranslationUnit, input.into()).into()
32}
33#[cfg(feature = "quote")]
34#[proc_macro_error]
35#[proc_macro]
36pub fn quote_import(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
37 quote_impl(QuoteNodeKind::ImportStatement, input.into()).into()
38}
39#[cfg(feature = "quote")]
40#[proc_macro_error]
41#[proc_macro]
42pub fn quote_declaration(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
43 quote_impl(QuoteNodeKind::GlobalDeclaration, input.into()).into()
44}
45#[cfg(feature = "quote")]
46#[proc_macro_error]
47#[proc_macro]
48pub fn quote_literal(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
49 quote_impl(QuoteNodeKind::Literal, input.into()).into()
50}
51#[cfg(feature = "quote")]
52#[proc_macro_error]
53#[proc_macro]
54pub fn quote_directive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
55 quote_impl(QuoteNodeKind::GlobalDirective, input.into()).into()
56}
57#[cfg(feature = "quote")]
58#[proc_macro_error]
59#[proc_macro]
60pub fn quote_expression(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
61 quote_impl(QuoteNodeKind::Expression, input.into()).into()
62}
63#[cfg(feature = "quote")]
64#[proc_macro_error]
65#[proc_macro]
66pub fn quote_statement(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
67 quote_impl(QuoteNodeKind::Statement, input.into()).into()
68}