use proc_macro2::TokenStream as TokenStream2;
use quote::quote;
use crate::parser::command_spec::{DocIdentifier, Enumeration};
impl Enumeration {
pub fn to_c(&self) -> TokenStream2 {
let ident = &self.identifier.to_c();
let doc_comments: TokenStream2 = self
.attributes
.iter()
.map(|attr| attr.to_rust(&self.identifier))
.collect();
let states: Vec<TokenStream2> = self.states.iter().map(DocIdentifier::to_rust).collect();
let paired_type = self.identifier.to_rust_paired();
let convertible = &self.derive_from_c_paried_rust(&paired_type);
quote! {
#doc_comments
#[allow(non_camel_case_types)]
#[repr(C)]
#[derive(Debug)]
pub enum #ident {
#(#states),*
}
#convertible
}
}
}