asn1_compiler/generator/asn/types/base/
boolean.rs1use proc_macro2::{Ident, TokenStream};
4use quote::quote;
5
6use crate::generator::Generator;
7use crate::resolver::asn::structs::types::base::Asn1ResolvedBoolean;
8use anyhow::Result;
9
10impl Asn1ResolvedBoolean {
11 pub(crate) fn generate(&self, name: &str, generator: &mut Generator) -> Result<TokenStream> {
12 let type_name = generator.to_type_ident(name);
13
14 let vis = generator.get_visibility_tokens();
15 let dir = generator.generate_derive_tokens();
16
17 Ok(quote! {
18 #dir
19 #[asn(type = "BOOLEAN")]
20 #vis struct #type_name(#vis bool);
21 })
22 }
23
24 pub(crate) fn generate_ident_and_aux_type(
25 &self,
26 generator: &mut Generator,
27 input: Option<&String>,
28 ) -> Result<Ident> {
29 let unique_name = if let Some(unique_name) = input {
30 unique_name.to_string()
31 } else {
32 generator.get_unique_name("BOOLEAN")
33 };
34
35 let item = self.generate(&unique_name, generator)?;
36 generator.aux_items.push(item);
37
38 Ok(generator.to_type_ident(&unique_name))
39 }
40}