#[derive(Default, Debug, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)]
pub struct PropertyDeclarations<I: HasImportance>(pub Vec<PropertyDeclaration<I>>);
impl<I: HasImportance> ToCss for PropertyDeclarations<I>
{
fn to_css<W: fmt::Write>(&self, dest: &mut W) -> fmt::Result
{
let length = self.0.len();
if length != 0
{
for index in 0..(length - 1)
{
(unsafe { self.0.get_unchecked(index) }).to_css(dest)?;
}
(unsafe { self.0.get_unchecked(length -1) }).to_css_without_trailing_semicolon(dest)
}
else
{
Ok(())
}
}
}
impl<I: HasImportance> HasPropertyDeclarations<I> for PropertyDeclarations<I>
{
#[inline(always)]
fn property_declarations(&self) -> &PropertyDeclarations<I>
{
self
}
#[inline(always)]
fn property_declarations_mut(&mut self) -> &mut PropertyDeclarations<I>
{
self
}
#[inline(always)]
fn property_declarations_slice(&self) -> &[PropertyDeclaration<I>]
{
&self.0[..]
}
#[inline(always)]
fn property_declarations_vec(&self) -> &Vec<PropertyDeclaration<I>>
{
&self.0
}
#[inline(always)]
fn property_declarations_vec_mut(&mut self) -> &mut Vec<PropertyDeclaration<I>>
{
&mut self.0
}
}
impl<I: HasImportance> PropertyDeclarations<I>
{
#[inline(always)]
pub fn is_empty(&self) -> bool
{
self.0.is_empty()
}
pub(crate) fn parse_property_declaration_list<'i: 't, 't>(context: &ParserContext, input: &mut Parser<'i, 't>) -> Result<PropertyDeclarations<I>, ParseError<'i, CustomParseError<'i>>>
{
let mut propertyDeclarations = Vec::new();
let mut parsedPropertyDeclarations = DeclarationListParser::new(input, PropertyDeclarationParser
{
context,
marker: PhantomData,
});
while let Some(propertyDeclaration) = parsedPropertyDeclarations.next()
{
match propertyDeclaration
{
Ok(propertyDeclaration) => propertyDeclarations.push(propertyDeclaration),
Err(preciseParseError) => return Err(preciseParseError.error),
}
}
Ok(PropertyDeclarations(propertyDeclarations))
}
}