Skip to main content

asn1_compiler/generator/asn/types/base/
boolean.rs

1//! Generator code for 'Asn1ResolvedBoolean'.
2
3use 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}