Skip to main content

fmi_schema/
variable_counts.rs

1use std::fmt::Display;
2
3/// Collects counts of variables in the model
4#[derive(Debug, Default)]
5pub struct Counts {
6    pub num_constants: usize,
7    pub num_parameters: usize,
8    pub num_discrete: usize,
9    pub num_continuous: usize,
10    pub num_inputs: usize,
11    pub num_outputs: usize,
12    pub num_local: usize,
13    pub num_independent: usize,
14    pub num_calculated_parameters: usize,
15    pub num_real_vars: usize,
16    pub num_integer_vars: usize,
17    pub num_enum_vars: usize,
18    pub num_bool_vars: usize,
19    pub num_string_vars: usize,
20}
21
22impl Display for Counts {
23    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
24        f.debug_struct("Variable Counts")
25            .field("Constants", &self.num_constants)
26            .field("Parameters", &self.num_parameters)
27            .field("Discrete", &self.num_discrete)
28            .field("Continuous", &self.num_continuous)
29            .field("Inputs", &self.num_inputs)
30            .field("Outputs", &self.num_outputs)
31            .field("Local", &self.num_local)
32            .field("Independent", &self.num_independent)
33            .field("Calculated parameters", &self.num_calculated_parameters)
34            .field("Real", &self.num_real_vars)
35            .field("Integer", &self.num_integer_vars)
36            .field("Enumeration", &self.num_enum_vars)
37            .field("Boolean", &self.num_bool_vars)
38            .field("String", &self.num_string_vars)
39            .finish()
40    }
41}
42
43pub trait VariableCounts {
44    fn model_counts(&self) -> Counts;
45}