use indexmap::map::IndexMap as HashMap;
use syn::Ident;
use crate::conversion::api::ApiName;
use crate::conversion::apivec::ApiVec;
use crate::types::Namespace;
use crate::{conversion::api::Api, known_types::known_types, types::QualifiedName};
use super::deps::HasDependencies;
use super::fun::FnPhase;
pub(crate) fn append_ctype_information(apis: &mut ApiVec<FnPhase>) {
let ctypes: HashMap<Ident, QualifiedName> = apis
.iter()
.flat_map(|api| api.deps())
.filter(|ty| known_types().is_ctype(ty))
.map(|ty| (ty.get_final_ident(), ty.clone()))
.collect();
for (id, typename) in ctypes {
apis.push(Api::CType {
name: ApiName::new(&Namespace::new(), id),
typename,
});
}
}