1mod primitive;
2mod complex;
3mod helper;
4mod resource;
5mod backbone;
6mod element;
7
8use proc_macro::TokenStream;
9
10#[proc_macro_derive(Element, attributes(fhir))]
11pub fn derive_element(item: TokenStream) -> TokenStream {
12 let st = syn::parse_macro_input!(item as syn::DeriveInput);
13
14 element::expand_derive_element(&st)
15 .unwrap_or_else(syn::Error::into_compile_error)
16 .into()
17}
18
19#[proc_macro_derive(Primitive, attributes(fhir))]
20pub fn derive_primitive(item: TokenStream) -> TokenStream {
21 let st = syn::parse_macro_input!(item as syn::DeriveInput);
22
23 primitive::expand_derive_primitive(&st)
24 .unwrap_or_else(syn::Error::into_compile_error)
25 .into()
26}
27
28#[proc_macro_derive(Complex, attributes(fhir))]
29pub fn derive_complex(item: TokenStream) -> TokenStream {
30 let st = syn::parse_macro_input!(item as syn::DeriveInput);
31
32 complex::expand_derive_complex(&st)
33 .unwrap_or_else(syn::Error::into_compile_error)
34 .into()
35}
36
37#[proc_macro_derive(Resource, attributes(fhir))]
38pub fn derive_resource(item: TokenStream) -> TokenStream {
39 let st = syn::parse_macro_input!(item as syn::DeriveInput);
40
41 resource::expand_derive_resource(&st)
42 .unwrap_or_else(syn::Error::into_compile_error)
43 .into()
44}
45
46#[proc_macro_derive(BackboneElement, attributes(fhir))]
47pub fn derive_backbone_element(item: TokenStream) -> TokenStream {
48 let st = syn::parse_macro_input!(item as syn::DeriveInput);
49
50 backbone::expand_derive_backbone(&st)
51 .unwrap_or_else(syn::Error::into_compile_error)
52 .into()
53}