melodium-engine 0.10.0

Mélodium core engine and executor implementation
Documentation
use super::Parameter;
use crate::descriptor::Model as ModelDescriptor;
use core::fmt::Debug;
use melodium_common::descriptor::Identifier;
use std::collections::HashMap;
use std::sync::Weak;

#[derive(Debug, Clone)]
pub struct Model {
    pub descriptor: Weak<ModelDescriptor>,
    pub parameters: HashMap<String, Parameter>,
}

impl Model {
    pub fn make_use(&self, identifier: &Identifier) -> bool {
        self.parameters
            .iter()
            .any(|(_, parameter)| parameter.make_use(identifier))
    }

    pub fn uses(&self) -> Vec<Identifier> {
        let mut uses = vec![];
        uses.extend(
            self.parameters
                .iter()
                .flat_map(|(_, parameter)| parameter.uses()),
        );
        uses
    }
}