melodium_engine/design/
model.rs1use super::Parameter;
2use crate::descriptor::Model as ModelDescriptor;
3use core::fmt::Debug;
4use melodium_common::descriptor::Identifier;
5use std::collections::HashMap;
6use std::sync::Weak;
7
8#[derive(Debug, Clone)]
9pub struct Model {
10 pub descriptor: Weak<ModelDescriptor>,
11 pub parameters: HashMap<String, Parameter>,
12}
13
14impl Model {
15 pub fn make_use(&self, identifier: &Identifier) -> bool {
16 self.parameters
17 .iter()
18 .any(|(_, parameter)| parameter.make_use(identifier))
19 }
20
21 pub fn uses(&self) -> Vec<Identifier> {
22 let mut uses = vec![];
23 uses.extend(
24 self.parameters
25 .iter()
26 .flat_map(|(_, parameter)| parameter.uses()),
27 );
28 uses
29 }
30}