diff options
Diffstat (limited to 'vendor/anstyle-parse/src/params.rs')
-rw-r--r-- | vendor/anstyle-parse/src/params.rs | 143 |
1 files changed, 0 insertions, 143 deletions
diff --git a/vendor/anstyle-parse/src/params.rs b/vendor/anstyle-parse/src/params.rs deleted file mode 100644 index 7cc146f..0000000 --- a/vendor/anstyle-parse/src/params.rs +++ /dev/null @@ -1,143 +0,0 @@ -//! Fixed size parameters list with optional subparameters. - -use core::fmt::{self, Debug, Formatter}; - -pub(crate) const MAX_PARAMS: usize = 32; - -#[derive(Default, Clone, PartialEq, Eq)] -pub struct Params { - /// Number of subparameters for each parameter. - /// - /// For each entry in the `params` slice, this stores the length of the param as number of - /// subparams at the same index as the param in the `params` slice. - /// - /// At the subparam positions the length will always be `0`. - subparams: [u8; MAX_PARAMS], - - /// All parameters and subparameters. - params: [u16; MAX_PARAMS], - - /// Number of suparameters in the current parameter. - current_subparams: u8, - - /// Total number of parameters and subparameters. - len: usize, -} - -impl Params { - /// Returns the number of parameters. - #[inline] - pub fn len(&self) -> usize { - self.len - } - - /// Returns `true` if there are no parameters present. - #[inline] - pub fn is_empty(&self) -> bool { - self.len == 0 - } - - /// Returns an iterator over all parameters and subparameters. - #[inline] - pub fn iter(&self) -> ParamsIter<'_> { - ParamsIter::new(self) - } - - /// Returns `true` if there is no more space for additional parameters. - #[inline] - pub(crate) fn is_full(&self) -> bool { - self.len == MAX_PARAMS - } - - /// Clear all parameters. - #[inline] - pub(crate) fn clear(&mut self) { - self.current_subparams = 0; - self.len = 0; - } - - /// Add an additional parameter. - #[inline] - pub(crate) fn push(&mut self, item: u16) { - self.subparams[self.len - self.current_subparams as usize] = self.current_subparams + 1; - self.params[self.len] = item; - self.current_subparams = 0; - self.len += 1; - } - - /// Add an additional subparameter to the current parameter. - #[inline] - pub(crate) fn extend(&mut self, item: u16) { - self.subparams[self.len - self.current_subparams as usize] = self.current_subparams + 1; - self.params[self.len] = item; - self.current_subparams += 1; - self.len += 1; - } -} - -impl<'a> IntoIterator for &'a Params { - type IntoIter = ParamsIter<'a>; - type Item = &'a [u16]; - - fn into_iter(self) -> Self::IntoIter { - self.iter() - } -} - -/// Immutable subparameter iterator. -pub struct ParamsIter<'a> { - params: &'a Params, - index: usize, -} - -impl<'a> ParamsIter<'a> { - fn new(params: &'a Params) -> Self { - Self { params, index: 0 } - } -} - -impl<'a> Iterator for ParamsIter<'a> { - type Item = &'a [u16]; - - fn next(&mut self) -> Option<Self::Item> { - if self.index >= self.params.len() { - return None; - } - - // Get all subparameters for the current parameter. - let num_subparams = self.params.subparams[self.index]; - let param = &self.params.params[self.index..self.index + num_subparams as usize]; - - // Jump to the next parameter. - self.index += num_subparams as usize; - - Some(param) - } - - fn size_hint(&self) -> (usize, Option<usize>) { - let remaining = self.params.len() - self.index; - (remaining, Some(remaining)) - } -} - -impl Debug for Params { - fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { - write!(f, "[")?; - - for (i, param) in self.iter().enumerate() { - if i != 0 { - write!(f, ";")?; - } - - for (i, subparam) in param.iter().enumerate() { - if i != 0 { - write!(f, ":")?; - } - - subparam.fmt(f)?; - } - } - - write!(f, "]") - } -} |