use std::collections::HashSet;
use crate::{conversion::api::Api, known_types::KNOWN_TYPES};
use crate::{
conversion::{
api::{ApiDetail, Use},
codegen_cpp::AdditionalNeed,
},
types::{make_ident, Namespace},
};
use super::fun::FnAnalysis;
pub(crate) fn append_ctype_information(apis: &mut Vec<Api<FnAnalysis>>) {
let ctypes: HashSet<_> = apis
.iter()
.map(|api| api.deps.iter())
.flatten()
.filter(|ty| KNOWN_TYPES.is_ctype(ty))
.cloned()
.collect();
for ctype in ctypes {
let id = make_ident(ctype.get_final_ident());
apis.push(Api {
ns: Namespace::new(),
id: id.clone(),
use_stmt: Use::Unused,
deps: HashSet::new(),
additional_cpp: Some(AdditionalNeed::CTypeTypedef(ctype.clone())),
detail: ApiDetail::CType { id },
});
}
}