mirror of
https://github.com/servo/servo.git
synced 2025-08-09 23:45:35 +01:00
style: Use an enumerated array for per-pseudo maps.
This avoids random HashMaps. MozReview-Commit-ID: LQeZrLsoOnl Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
This commit is contained in:
parent
69f02f4f7f
commit
faa8646e0f
6 changed files with 294 additions and 155 deletions
|
@ -64,6 +64,10 @@ pub enum PseudoElement {
|
|||
ServoInlineAbsolute,
|
||||
}
|
||||
|
||||
/// The count of simple (non-functional) pseudo-elements (that is, all
|
||||
/// pseudo-elements for now).
|
||||
pub const SIMPLE_PSEUDO_COUNT: usize = PseudoElement::ServoInlineAbsolute as usize + 1;
|
||||
|
||||
impl ::selectors::parser::PseudoElement for PseudoElement {
|
||||
type Impl = SelectorImpl;
|
||||
|
||||
|
@ -106,6 +110,17 @@ impl PseudoElement {
|
|||
self.clone() as usize
|
||||
}
|
||||
|
||||
/// An index for this pseudo-element to be indexed in an enumerated array.
|
||||
#[inline]
|
||||
pub fn simple_index(&self) -> Option<usize> {
|
||||
Some(self.clone() as usize)
|
||||
}
|
||||
|
||||
/// An array of `None`, one per simple pseudo-element.
|
||||
pub fn simple_pseudo_none_array<T>() -> [Option<T>; SIMPLE_PSEUDO_COUNT] {
|
||||
Default::default()
|
||||
}
|
||||
|
||||
/// Creates a pseudo-element from an eager index.
|
||||
#[inline]
|
||||
pub fn from_eager_index(i: usize) -> Self {
|
||||
|
@ -535,28 +550,6 @@ impl SelectorImpl {
|
|||
}
|
||||
}
|
||||
|
||||
/// Executes `fun` for each pseudo-element.
|
||||
#[inline]
|
||||
pub fn each_simple_pseudo_element<F>(mut fun: F)
|
||||
where F: FnMut(PseudoElement),
|
||||
{
|
||||
fun(PseudoElement::Before);
|
||||
fun(PseudoElement::After);
|
||||
fun(PseudoElement::DetailsContent);
|
||||
fun(PseudoElement::DetailsSummary);
|
||||
fun(PseudoElement::Selection);
|
||||
fun(PseudoElement::ServoText);
|
||||
fun(PseudoElement::ServoInputText);
|
||||
fun(PseudoElement::ServoTableWrapper);
|
||||
fun(PseudoElement::ServoAnonymousTableWrapper);
|
||||
fun(PseudoElement::ServoAnonymousTable);
|
||||
fun(PseudoElement::ServoAnonymousTableRow);
|
||||
fun(PseudoElement::ServoAnonymousTableCell);
|
||||
fun(PseudoElement::ServoAnonymousBlock);
|
||||
fun(PseudoElement::ServoInlineBlockWrapper);
|
||||
fun(PseudoElement::ServoInlineAbsolute);
|
||||
}
|
||||
|
||||
/// Returns the pseudo-class state flag for selector matching.
|
||||
#[inline]
|
||||
pub fn pseudo_class_state_flag(pc: &NonTSPseudoClass) -> ElementState {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue