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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#![recursion_limit="192"]
#![deny(unreachable_patterns)]
#![deny(unused_doc_comments)]
#![deny(unconditional_recursion)]
extern crate core_extensions;
extern crate proc_macro;
#[macro_use]
mod macros;
#[macro_use]
mod utils;
mod arenas;
mod attribute_parsing;
mod composite_collections;
mod common_tokens;
mod constants;
mod either;
mod get_static_equivalent;
mod ignored_wrapper;
mod datastructure;
mod fn_pointer_extractor;
mod impl_interfacetype;
mod parse_utils;
mod mangle_library_getter;
mod my_visibility;
mod gen_params_in;
mod workaround;
mod sabi_extern_fn_impl;
mod set_span_visitor;
mod lifetimes;
#[doc(hidden)]
pub mod stable_abi;
mod to_token_fn;
use proc_macro::TokenStream as TokenStream1;
use proc_macro2::TokenStream as TokenStream2;
use syn::{DeriveInput,ItemFn};
use quote::{quote, ToTokens, quote_spanned};
#[allow(unused_imports)]
use core_extensions::prelude::*;
#[allow(unused_imports)]
use crate::{
arenas::{AllocMethods, Arenas},
utils::PrintDurationOnDrop,
};
pub use self::{
sabi_extern_fn_impl::sabi_extern_fn,
mangle_library_getter::mangle_library_getter_attr,
};
#[doc(hidden)]
pub fn derive_stable_abi(input: TokenStream1) -> TokenStream1 {
let input = syn::parse::<DeriveInput>(input).unwrap();
measure!({
stable_abi::derive(input)
}).into()
}
#[doc(hidden)]
pub fn derive_stable_abi_from_str(s: &str) -> TokenStream2 {
let input = syn::parse_str::<DeriveInput>(s).unwrap();
measure!({
stable_abi::derive(input)
})
}
#[allow(non_snake_case)]
#[doc(hidden)]
pub fn impl_InterfaceType(input: TokenStream1) -> TokenStream1{
let input = syn::parse::<syn::ItemImpl>(input).unwrap();
impl_interfacetype::the_macro(input).into()
}
#[doc(hidden)]
pub mod sabi_trait;
#[doc(hidden)]
pub fn derive_sabi_trait(_attr: TokenStream1, item: TokenStream1) -> TokenStream1{
let item = syn::parse::<syn::ItemTrait>(item).unwrap();
sabi_trait::derive_sabi_trait(item).into()
}
#[doc(hidden)]
pub fn derive_sabi_trait_str(item: &str) -> TokenStream2{
let item = syn::parse_str::<syn::ItemTrait>(item).unwrap();
sabi_trait::derive_sabi_trait(item)
}
#[doc(hidden)]
pub fn derive_get_static_equivalent(input: TokenStream1) -> TokenStream1 {
let input = syn::parse::<DeriveInput>(input).unwrap();
measure!({
get_static_equivalent::derive(input)
}).into()
}