Skip to main content

aranya_capi_macro/
lib.rs

1//! Proc macros for the `aranya-capi-core` crate.
2
3mod error;
4mod opaque;
5
6use syn::Error;
7
8/// See `aranya_capi_core`.
9#[proc_macro_derive(ErrorCode, attributes(capi))]
10pub fn error_code(item: proc_macro::TokenStream) -> proc_macro::TokenStream {
11    error::derive(item.into())
12        .unwrap_or_else(Error::into_compile_error)
13        .into()
14}
15
16/// See `aranya_capi_core`.
17#[proc_macro_attribute]
18pub fn opaque(
19    attr: proc_macro::TokenStream,
20    item: proc_macro::TokenStream,
21) -> proc_macro::TokenStream {
22    opaque::opaque(attr.into(), item.into())
23        .unwrap_or_else(Error::into_compile_error)
24        .into()
25}
26
27// Dummy macros.
28
29/// See `aranya_capi_core`.
30#[proc_macro_attribute]
31pub fn builds(
32    _attr: proc_macro::TokenStream,
33    item: proc_macro::TokenStream,
34) -> proc_macro::TokenStream {
35    item
36}
37
38/// See `aranya_capi_core`.
39#[proc_macro_attribute]
40#[doc(hidden)]
41pub fn derive(
42    _attr: proc_macro::TokenStream,
43    item: proc_macro::TokenStream,
44) -> proc_macro::TokenStream {
45    item
46}
47
48/// See `aranya_capi_core`.
49#[proc_macro_attribute]
50#[doc(hidden)]
51pub fn generated(
52    _attr: proc_macro::TokenStream,
53    item: proc_macro::TokenStream,
54) -> proc_macro::TokenStream {
55    item
56}
57
58/// See `aranya_capi_core`.
59#[proc_macro_attribute]
60#[doc(hidden)]
61pub fn no_ext_error(
62    _attr: proc_macro::TokenStream,
63    item: proc_macro::TokenStream,
64) -> proc_macro::TokenStream {
65    item
66}