melodium_engine/design/
model.rs

1use 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}