use crate::dsl::ast::BindingModifier;
use crate::kernel::GkProgram;
use crate::node::PortType;
#[derive(Debug, Clone)]
pub struct ManifestEntry {
pub name: String,
pub port_type: PortType,
pub modifier: BindingModifier,
}
pub fn extract_manifest(program: &GkProgram) -> Vec<ManifestEntry> {
(0..program.output_count())
.map(|i| {
let name = program.output_name(i).to_string();
let (ni, pi) = program.resolve_output_by_index(i);
let port_type = program.node_meta(ni).outs[pi].typ;
let modifier = program.output_modifier(&name);
ManifestEntry { name, port_type, modifier }
})
.collect()
}