1use ink_codegen::generate_code;
16use ink_ir::{
17 marker::{
18 SelectorBytes,
19 SelectorId,
20 },
21 SelectorMacro,
22};
23use proc_macro2::TokenStream as TokenStream2;
24use syn::Result;
25
26pub fn generate_selector_id(input: TokenStream2) -> TokenStream2 {
27 match generate_selector_id_or_err(input) {
28 Ok(tokens) => tokens,
29 Err(err) => err.to_compile_error(),
30 }
31}
32
33pub fn generate_selector_id_or_err(input: TokenStream2) -> Result<TokenStream2> {
34 let selector = SelectorMacro::<SelectorId>::try_from(input)?;
35 Ok(generate_code(&selector))
36}
37
38pub fn generate_selector_bytes(input: TokenStream2) -> TokenStream2 {
39 match generate_selector_bytes_or_err(input) {
40 Ok(tokens) => tokens,
41 Err(err) => err.to_compile_error(),
42 }
43}
44
45pub fn generate_selector_bytes_or_err(input: TokenStream2) -> Result<TokenStream2> {
46 let selector = SelectorMacro::<SelectorBytes>::try_from(input)?;
47 Ok(generate_code(&selector))
48}