1use std::str::FromStr;
2
3use kconfig_compiler::{kcfg_to_tokenstream, kcfgc::Kcfgc};
4use syn::{parse_macro_input, ExprLit, Lit};
5
6#[proc_macro]
7pub fn kcfg_inline(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
8 let input = parse_macro_input!(input as ExprLit);
9 match input.lit {
10 Lit::Str(xml) => kcfg_to_tokenstream(&Kcfgc::default(), xml.value().as_str())
11 .unwrap()
12 .into(),
13 _ => panic!("Not valid Input"),
14 }
15}
16
17#[proc_macro]
18pub fn kcfgc_inline(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
19 let input = parse_macro_input!(input as ExprLit);
20 let x = match input.lit {
21 Lit::Str(kcfgc) => Kcfgc::from_str(kcfgc.value().as_str()).unwrap(),
22 _ => panic!("Invalid Input for kcfgc"),
23 };
24 let kcfg = x.get_kcfg_contents().unwrap();
25 kcfg_to_tokenstream(&x, &kcfg).unwrap().into()
26}
27
28#[proc_macro]
29pub fn kcfgc(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
30 let input = parse_macro_input!(input as ExprLit);
31 let x = match input.lit {
32 Lit::Str(file) => Kcfgc::from_file(file.value().as_str()).unwrap(),
33 _ => panic!("Invalid Input for kcfgc"),
34 };
35 let kcfg = x.get_kcfg_contents().unwrap();
36 kcfg_to_tokenstream(&x, &kcfg).unwrap().into()
37}