mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
selectors: Reformat some signatures in selectors::matching.
This commit is contained in:
parent
6a5576085c
commit
bcfe523c99
1 changed files with 76 additions and 60 deletions
|
@ -159,11 +159,13 @@ impl<'a, 'b, Impl> LocalMatchingContext<'a, 'b, Impl>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn matches_selector_list<E>(selector_list: &SelectorList<E::Impl>,
|
pub fn matches_selector_list<E>(
|
||||||
|
selector_list: &SelectorList<E::Impl>,
|
||||||
element: &E,
|
element: &E,
|
||||||
context: &mut MatchingContext)
|
context: &mut MatchingContext,
|
||||||
-> bool
|
) -> bool
|
||||||
where E: Element
|
where
|
||||||
|
E: Element
|
||||||
{
|
{
|
||||||
selector_list.0.iter().any(|selector| {
|
selector_list.0.iter().any(|selector| {
|
||||||
matches_selector(selector,
|
matches_selector(selector,
|
||||||
|
@ -176,10 +178,9 @@ pub fn matches_selector_list<E>(selector_list: &SelectorList<E::Impl>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
fn may_match<E>(hashes: &AncestorHashes,
|
fn may_match<E>(hashes: &AncestorHashes, bf: &BloomFilter) -> bool
|
||||||
bf: &BloomFilter)
|
where
|
||||||
-> bool
|
E: Element,
|
||||||
where E: Element,
|
|
||||||
{
|
{
|
||||||
// Check the first three hashes. Note that we can check for zero before
|
// Check the first three hashes. Note that we can check for zero before
|
||||||
// masking off the high bits, since if any of the first three hashes is
|
// masking off the high bits, since if any of the first three hashes is
|
||||||
|
@ -370,14 +371,16 @@ enum SelectorMatchingResult {
|
||||||
/// unncessary cache miss for cases when we can fast-reject with AncestorHashes
|
/// unncessary cache miss for cases when we can fast-reject with AncestorHashes
|
||||||
/// (which the caller can store inline with the selector pointer).
|
/// (which the caller can store inline with the selector pointer).
|
||||||
#[inline(always)]
|
#[inline(always)]
|
||||||
pub fn matches_selector<E, F>(selector: &Selector<E::Impl>,
|
pub fn matches_selector<E, F>(
|
||||||
|
selector: &Selector<E::Impl>,
|
||||||
offset: usize,
|
offset: usize,
|
||||||
hashes: Option<&AncestorHashes>,
|
hashes: Option<&AncestorHashes>,
|
||||||
element: &E,
|
element: &E,
|
||||||
context: &mut MatchingContext,
|
context: &mut MatchingContext,
|
||||||
flags_setter: &mut F)
|
flags_setter: &mut F,
|
||||||
-> bool
|
) -> bool
|
||||||
where E: Element,
|
where
|
||||||
|
E: Element,
|
||||||
F: FnMut(&E, ElementSelectorFlags),
|
F: FnMut(&E, ElementSelectorFlags),
|
||||||
{
|
{
|
||||||
// Use the bloom filter to fast-reject.
|
// Use the bloom filter to fast-reject.
|
||||||
|
@ -457,12 +460,14 @@ where
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Matches a complex selector.
|
/// Matches a complex selector.
|
||||||
pub fn matches_complex_selector<E, F>(mut iter: SelectorIter<E::Impl>,
|
pub fn matches_complex_selector<E, F>(
|
||||||
|
mut iter: SelectorIter<E::Impl>,
|
||||||
element: &E,
|
element: &E,
|
||||||
context: &mut LocalMatchingContext<E::Impl>,
|
context: &mut LocalMatchingContext<E::Impl>,
|
||||||
flags_setter: &mut F)
|
flags_setter: &mut F,
|
||||||
-> bool
|
) -> bool
|
||||||
where E: Element,
|
where
|
||||||
|
E: Element,
|
||||||
F: FnMut(&E, ElementSelectorFlags),
|
F: FnMut(&E, ElementSelectorFlags),
|
||||||
{
|
{
|
||||||
if cfg!(debug_assertions) {
|
if cfg!(debug_assertions) {
|
||||||
|
@ -499,23 +504,29 @@ pub fn matches_complex_selector<E, F>(mut iter: SelectorIter<E::Impl>,
|
||||||
context.note_position(&iter);
|
context.note_position(&iter);
|
||||||
}
|
}
|
||||||
|
|
||||||
match matches_complex_selector_internal(iter,
|
let result = matches_complex_selector_internal(
|
||||||
|
iter,
|
||||||
element,
|
element,
|
||||||
context,
|
context,
|
||||||
&mut RelevantLinkStatus::Looking,
|
&mut RelevantLinkStatus::Looking,
|
||||||
flags_setter) {
|
flags_setter,
|
||||||
|
);
|
||||||
|
|
||||||
|
match result {
|
||||||
SelectorMatchingResult::Matched => true,
|
SelectorMatchingResult::Matched => true,
|
||||||
_ => false
|
_ => false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn matches_complex_selector_internal<E, F>(mut selector_iter: SelectorIter<E::Impl>,
|
fn matches_complex_selector_internal<E, F>(
|
||||||
|
mut selector_iter: SelectorIter<E::Impl>,
|
||||||
element: &E,
|
element: &E,
|
||||||
context: &mut LocalMatchingContext<E::Impl>,
|
context: &mut LocalMatchingContext<E::Impl>,
|
||||||
relevant_link: &mut RelevantLinkStatus,
|
relevant_link: &mut RelevantLinkStatus,
|
||||||
flags_setter: &mut F)
|
flags_setter: &mut F
|
||||||
-> SelectorMatchingResult
|
) -> SelectorMatchingResult
|
||||||
where E: Element,
|
where
|
||||||
|
E: Element,
|
||||||
F: FnMut(&E, ElementSelectorFlags),
|
F: FnMut(&E, ElementSelectorFlags),
|
||||||
{
|
{
|
||||||
*relevant_link = relevant_link.examine_potential_link(element, &mut context.shared);
|
*relevant_link = relevant_link.examine_potential_link(element, &mut context.shared);
|
||||||
|
@ -618,9 +629,10 @@ fn matches_simple_selector<E, F>(
|
||||||
element: &E,
|
element: &E,
|
||||||
context: &mut LocalMatchingContext<E::Impl>,
|
context: &mut LocalMatchingContext<E::Impl>,
|
||||||
relevant_link: &RelevantLinkStatus,
|
relevant_link: &RelevantLinkStatus,
|
||||||
flags_setter: &mut F)
|
flags_setter: &mut F,
|
||||||
-> bool
|
) -> bool
|
||||||
where E: Element,
|
where
|
||||||
|
E: Element,
|
||||||
F: FnMut(&E, ElementSelectorFlags),
|
F: FnMut(&E, ElementSelectorFlags),
|
||||||
{
|
{
|
||||||
match *selector {
|
match *selector {
|
||||||
|
@ -773,15 +785,17 @@ fn select_name<'a, T>(is_html: bool, local_name: &'a T, local_name_lower: &'a T)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn matches_generic_nth_child<E, F>(element: &E,
|
fn matches_generic_nth_child<E, F>(
|
||||||
|
element: &E,
|
||||||
context: &mut LocalMatchingContext<E::Impl>,
|
context: &mut LocalMatchingContext<E::Impl>,
|
||||||
a: i32,
|
a: i32,
|
||||||
b: i32,
|
b: i32,
|
||||||
is_of_type: bool,
|
is_of_type: bool,
|
||||||
is_from_end: bool,
|
is_from_end: bool,
|
||||||
flags_setter: &mut F)
|
flags_setter: &mut F,
|
||||||
-> bool
|
) -> bool
|
||||||
where E: Element,
|
where
|
||||||
|
E: Element,
|
||||||
F: FnMut(&E, ElementSelectorFlags),
|
F: FnMut(&E, ElementSelectorFlags),
|
||||||
{
|
{
|
||||||
if element.ignores_nth_child_selectors() {
|
if element.ignores_nth_child_selectors() {
|
||||||
|
@ -880,7 +894,8 @@ where
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn matches_first_child<E, F>(element: &E, flags_setter: &mut F) -> bool
|
fn matches_first_child<E, F>(element: &E, flags_setter: &mut F) -> bool
|
||||||
where E: Element,
|
where
|
||||||
|
E: Element,
|
||||||
F: FnMut(&E, ElementSelectorFlags),
|
F: FnMut(&E, ElementSelectorFlags),
|
||||||
{
|
{
|
||||||
flags_setter(element, HAS_EDGE_CHILD_SELECTOR);
|
flags_setter(element, HAS_EDGE_CHILD_SELECTOR);
|
||||||
|
@ -889,7 +904,8 @@ fn matches_first_child<E, F>(element: &E, flags_setter: &mut F) -> bool
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
fn matches_last_child<E, F>(element: &E, flags_setter: &mut F) -> bool
|
fn matches_last_child<E, F>(element: &E, flags_setter: &mut F) -> bool
|
||||||
where E: Element,
|
where
|
||||||
|
E: Element,
|
||||||
F: FnMut(&E, ElementSelectorFlags),
|
F: FnMut(&E, ElementSelectorFlags),
|
||||||
{
|
{
|
||||||
flags_setter(element, HAS_EDGE_CHILD_SELECTOR);
|
flags_setter(element, HAS_EDGE_CHILD_SELECTOR);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue