robusta_codegen/
lib.rs

1use proc_macro::TokenStream;
2
3use proc_macro_error::proc_macro_error;
4use syn::{parse_macro_input, DeriveInput};
5
6use validation::JNIBridgeModule;
7
8use crate::derive::convert::{
9    from_java_value_macro_derive, into_java_value_macro_derive, tryfrom_java_value_macro_derive,
10    tryinto_java_value_macro_derive,
11};
12use crate::transformation::ModTransformer;
13use derive::signature::signature_macro_derive;
14
15mod derive;
16mod transformation;
17mod utils;
18mod validation;
19
20#[proc_macro_error]
21#[proc_macro_attribute]
22pub fn bridge(_args: TokenStream, raw_input: TokenStream) -> TokenStream {
23    let module_data = parse_macro_input!(raw_input as JNIBridgeModule);
24
25    let mut transformer = ModTransformer::new(module_data);
26    let tokens = transformer.transform_module();
27
28    tokens.into()
29}
30
31#[proc_macro_error]
32#[proc_macro_derive(Signature, attributes(package))]
33pub fn signature_derive(raw_input: TokenStream) -> TokenStream {
34    let input = parse_macro_input!(raw_input as DeriveInput);
35
36    signature_macro_derive(input).into()
37}
38
39#[proc_macro_error]
40#[proc_macro_derive(IntoJavaValue, attributes(package, instance, field))]
41pub fn into_java_value_derive(raw_input: TokenStream) -> TokenStream {
42    let input = parse_macro_input!(raw_input as DeriveInput);
43
44    into_java_value_macro_derive(input).into()
45}
46
47#[proc_macro_error]
48#[proc_macro_derive(TryIntoJavaValue, attributes(package, instance, field))]
49pub fn tryinto_java_value_derive(raw_input: TokenStream) -> TokenStream {
50    let input = parse_macro_input!(raw_input as DeriveInput);
51
52    tryinto_java_value_macro_derive(input).into()
53}
54
55#[proc_macro_error]
56#[proc_macro_derive(FromJavaValue, attributes(package, instance, field))]
57pub fn from_java_value_derive(raw_input: TokenStream) -> TokenStream {
58    let input = parse_macro_input!(raw_input as DeriveInput);
59
60    from_java_value_macro_derive(input).into()
61}
62
63#[proc_macro_error]
64#[proc_macro_derive(TryFromJavaValue, attributes(package, instance, field))]
65pub fn tryfrom_java_value_derive(raw_input: TokenStream) -> TokenStream {
66    let input = parse_macro_input!(raw_input as DeriveInput);
67
68    tryfrom_java_value_macro_derive(input).into()
69}