#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord)]
pub struct OutputModeFlagSettings
{
pub backspace_delay: Option<BackspaceDelay>,
pub carriage_return_delay: Option<CarriageReturnDelay>,
pub form_feed_delay: Option<FormFeedDelay>,
pub horizontal_tab_delay: Option<HorizontalTabDelay>,
pub new_line_delay: Option<NewLineDelay>,
pub vertical_tab_delay: Option<VerticalTabDelay>,
pub miscellaneous: MiscellaneousOutputModeFlagSettings,
}
impl Default for OutputModeFlagSettings
{
#[inline(always)]
fn default() -> Self
{
Self
{
backspace_delay: Some(BackspaceDelay::default()),
carriage_return_delay: Some(CarriageReturnDelay::default()),
form_feed_delay: Some(FormFeedDelay::default()),
horizontal_tab_delay: Some(HorizontalTabDelay::default()),
new_line_delay: Some(NewLineDelay::default()),
vertical_tab_delay: Some(VerticalTabDelay::default()),
miscellaneous: MiscellaneousOutputModeFlagSettings::default(),
}
}
}
impl OutputModeFlagSettings
{
#[inline(always)]
pub(crate) fn change_mode_flags(&self, terminal_options: &mut termios)
{
let existing_flags = terminal_options.c_oflag;
let mut new_flags = existing_flags;
new_flags = MultipleBits::change_mode_flags(self.backspace_delay, new_flags);
new_flags = MultipleBits::change_mode_flags(self.carriage_return_delay, new_flags);
new_flags = MultipleBits::change_mode_flags(self.form_feed_delay, new_flags);
new_flags = MultipleBits::change_mode_flags(self.horizontal_tab_delay, new_flags);
new_flags = MultipleBits::change_mode_flags(self.new_line_delay, new_flags);
new_flags = MultipleBits::change_mode_flags(self.vertical_tab_delay, new_flags);
new_flags = self.miscellaneous.change_mode_flags(new_flags);
terminal_options.c_oflag = new_flags;
}
}