#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct TerminalSettings
{
pub input_mode_settings: Option<InputModeFlagSettings>,
pub output_mode_settings: Option<OutputModeFlagSettings>,
pub control_mode_settings: Option<ControlModeFlagSettings>,
pub local_mode_settings: Option<LocalModeFlagSettings>,
pub character_settings: Option<CharacterSettings>,
pub baud_rate: Option<BaudRate>,
}
impl TerminalSettings
{
#[inline(always)]
pub(crate) fn change_settings(&self, mut terminal_options: &mut termios)
{
if let Some(ref input_mode_settings) = self.input_mode_settings
{
input_mode_settings.change_mode_flags(&mut terminal_options);
}
if let Some(ref output_mode_settings) = self.output_mode_settings
{
output_mode_settings.change_mode_flags(&mut terminal_options);
}
if let Some(ref control_mode_settings) = self.control_mode_settings
{
control_mode_settings.change_mode_flags(&mut terminal_options);
}
if let Some(ref local_mode_settings) = self.local_mode_settings
{
local_mode_settings.change_mode_flags(&mut terminal_options);
}
if let Some(ref character_settings) = self.character_settings
{
character_settings.change_character_settings(&mut terminal_options);
}
if let Some(ref baud_rate) = self.baud_rate
{
baud_rate.set_terminal_input_and_output_speed(&mut terminal_options);
}
}
}