use std::collections::{HashMap, HashSet};
use syn::Ident;
use crate::{conversion::api::Api, known_types::KNOWN_TYPES, types::TypeName};
use crate::{
conversion::api::ApiDetail,
types::{make_ident, Namespace},
};
use super::fun::FnAnalysis;
pub(crate) fn append_ctype_information(apis: &mut Vec<Api<FnAnalysis>>) {
let ctypes: HashMap<Ident, TypeName> = apis
.iter()
.map(|api| api.deps.iter())
.flatten()
.filter(|ty| KNOWN_TYPES.is_ctype(ty))
.map(|ty| (make_ident(ty.get_final_ident()), ty.clone()))
.collect();
for (id, tn) in ctypes {
apis.push(Api {
ns: Namespace::new(),
id,
deps: HashSet::new(),
detail: ApiDetail::CType { typename: tn },
});
}
}