#[derive(Default, Debug, PartialEq)]
pub struct EventFlags {
pub discrete_states_need_update: bool,
pub terminate_simulation: bool,
pub nominals_of_continuous_states_changed: bool,
pub values_of_continuous_states_changed: bool,
pub next_event_time: Option<f64>,
}
impl EventFlags {
pub fn reset(&mut self) {
self.discrete_states_need_update = false;
self.terminate_simulation = false;
self.nominals_of_continuous_states_changed = false;
self.values_of_continuous_states_changed = false;
self.next_event_time = None;
}
#[cfg(feature = "fmi2")]
pub(crate) fn update_from_fmi2_event_info(
&mut self,
event_info: crate::fmi2::binding::fmi2EventInfo,
) {
self.discrete_states_need_update = event_info.newDiscreteStatesNeeded != 0;
self.terminate_simulation = event_info.terminateSimulation != 0;
self.nominals_of_continuous_states_changed =
event_info.nominalsOfContinuousStatesChanged != 0;
self.values_of_continuous_states_changed = event_info.valuesOfContinuousStatesChanged != 0;
self.next_event_time = if event_info.nextEventTimeDefined != 0 {
Some(event_info.nextEventTime)
} else {
None
};
}
}