cosmwasm_schema_derive/
lib.rs1mod cw_serde;
2mod error;
3mod generate_api;
4mod query_responses;
5
6use self::error::fallible_macro;
7use quote::ToTokens;
8use syn::parse_macro_input;
9
10fallible_macro! {
11 #[proc_macro_derive(QueryResponses, attributes(returns, query_responses))]
12 pub fn query_responses_derive(
13 input: proc_macro::TokenStream,
14 ) -> syn::Result<proc_macro::TokenStream> {
15 let input = syn::parse(input)?;
16 let expanded = query_responses::query_responses_derive_impl(input)?;
17
18 Ok(expanded.into_token_stream().into())
19 }
20}
21
22#[proc_macro]
23pub fn write_api(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
24 let input = parse_macro_input!(input as generate_api::Options);
25 let expanded = generate_api::write_api_impl(input).into_token_stream();
26
27 proc_macro::TokenStream::from(expanded)
28}
29
30#[proc_macro]
31pub fn generate_api(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
32 let input = parse_macro_input!(input as generate_api::Options);
33 let expanded = generate_api::generate_api_impl(&input).into_token_stream();
34
35 proc_macro::TokenStream::from(expanded)
36}
37
38fallible_macro! {
39 #[proc_macro_attribute]
40 pub fn cw_serde(
41 attr: proc_macro::TokenStream,
42 input: proc_macro::TokenStream,
43 ) -> syn::Result<proc_macro::TokenStream> {
44 let options = syn::parse(attr)?;
45 let input = syn::parse(input)?;
46
47 let expanded = cw_serde::cw_serde_impl(options, input)?;
48
49 Ok(expanded.into_token_stream().into())
50 }
51}