dharitri_wasm_derive/
lib.rs

1#![allow(stable_features)]
2// ensure we don't run out of macro stack
3#![recursion_limit = "1024"]
4#![feature(proc_macro_quote)]
5
6#[macro_use]
7extern crate syn;
8
9#[macro_use]
10extern crate quote;
11
12mod contract_impl;
13mod format;
14mod generate;
15mod macro_contract;
16mod macro_module;
17mod macro_proxy;
18mod managed_vec_item_derive;
19mod model;
20mod parse;
21mod preprocessing;
22mod type_abi_derive;
23mod validate;
24
25#[proc_macro_attribute]
26pub fn contract(
27    args: proc_macro::TokenStream,
28    input: proc_macro::TokenStream,
29) -> proc_macro::TokenStream {
30    macro_contract::process_contract(args, input)
31}
32
33#[proc_macro_attribute]
34pub fn module(
35    args: proc_macro::TokenStream,
36    input: proc_macro::TokenStream,
37) -> proc_macro::TokenStream {
38    macro_module::process_module(args, input)
39}
40
41#[proc_macro_attribute]
42pub fn proxy(
43    args: proc_macro::TokenStream,
44    input: proc_macro::TokenStream,
45) -> proc_macro::TokenStream {
46    macro_proxy::process_proxy(args, input)
47}
48
49#[proc_macro_derive(TypeAbi)]
50pub fn type_abi_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
51    let ast = syn::parse(input).unwrap();
52
53    type_abi_derive::type_abi_derive(&ast)
54}
55
56#[proc_macro_derive(ManagedVecItem)]
57pub fn managed_vec_item_derive(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
58    let ast = syn::parse(input).unwrap();
59
60    managed_vec_item_derive::managed_vec_item_derive(&ast)
61}
62
63#[proc_macro]
64pub fn format_receiver_args(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
65    format::format_receiver_args_macro(input)
66}