#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_DOM_ELEMENT_TRAVERSAL_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_DOM_ELEMENT_TRAVERSAL_H_
#include "third_party/blink/renderer/core/dom/element.h"
#include "third_party/blink/renderer/core/dom/node_traversal.h"
#include "third_party/blink/renderer/core/dom/traversal_range.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
namespace blink {
class HasTagName { … };
template <class ElementType>
class Traversal { … };
ElementTraversal;
template <class ElementType>
inline TraversalSiblingRange<Traversal<ElementType>>
Traversal<ElementType>::ChildrenOf(const Node& start) { … }
template <class ElementType>
inline TraversalDescendantRange<Traversal<ElementType>>
Traversal<ElementType>::DescendantsOf(const Node& root) { … }
template <class ElementType>
inline TraversalInclusiveDescendantRange<Traversal<ElementType>>
Traversal<ElementType>::InclusiveDescendantsOf(const ElementType& root) { … }
template <class ElementType>
inline TraversalNextRange<Traversal<ElementType>>
Traversal<ElementType>::StartsAt(const ElementType& start) { … }
template <class ElementType>
inline TraversalNextRange<Traversal<ElementType>>
Traversal<ElementType>::StartsAfter(const Node& start) { … }
template <>
template <class NodeType>
inline Element* Traversal<Element>::FirstWithinTemplate(NodeType& current) { … }
template <>
template <class NodeType>
inline Element* Traversal<Element>::NextTemplate(NodeType& current) { … }
template <>
template <class NodeType>
inline Element* Traversal<Element>::NextTemplate(NodeType& current,
const Node* stay_within) { … }
template <class ElementType>
template <class NodeType>
inline ElementType* Traversal<ElementType>::FirstChildTemplate(
NodeType& current) { … }
template <class ElementType>
template <class MatchFunc>
inline ElementType* Traversal<ElementType>::FirstChild(
const ContainerNode& current,
MatchFunc is_match) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::FirstAncestor(const Node& current) { … }
template <class ElementType>
template <class NodeType>
inline ElementType* Traversal<ElementType>::FirstAncestorOrSelfTemplate(
NodeType& current) { … }
template <class ElementType>
template <class NodeType>
inline ElementType* Traversal<ElementType>::LastChildTemplate(
NodeType& current) { … }
template <class ElementType>
template <class MatchFunc>
inline ElementType* Traversal<ElementType>::LastChild(
const ContainerNode& current,
MatchFunc is_match) { … }
template <class ElementType>
template <class NodeType>
inline ElementType* Traversal<ElementType>::FirstWithinTemplate(
NodeType& current) { … }
template <class ElementType>
template <typename MatchFunc>
inline ElementType* Traversal<ElementType>::FirstWithin(
const ContainerNode& current,
MatchFunc is_match) { … }
template <class ElementType>
template <class NodeType>
inline ElementType* Traversal<ElementType>::LastWithinTemplate(
NodeType& current) { … }
template <class ElementType>
template <class MatchFunc>
inline ElementType* Traversal<ElementType>::LastWithin(
const ContainerNode& current,
MatchFunc is_match) { … }
template <class ElementType>
inline const ElementType* Traversal<ElementType>::LastWithinOrSelf(
const ElementType& current) { … }
template <class ElementType>
template <class NodeType>
inline ElementType* Traversal<ElementType>::NextTemplate(NodeType& current) { … }
template <class ElementType>
template <class NodeType>
inline ElementType* Traversal<ElementType>::NextTemplate(
NodeType& current,
const Node* stay_within) { … }
template <class ElementType>
template <class MatchFunc>
inline ElementType* Traversal<ElementType>::Next(const ContainerNode& current,
const Node* stay_within,
MatchFunc is_match) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::Previous(const Node& current) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::Previous(const Node& current,
const Node* stay_within) { … }
template <class ElementType>
template <class MatchFunc>
inline ElementType* Traversal<ElementType>::Previous(
const ContainerNode& current,
const Node* stay_within,
MatchFunc is_match) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::NextSkippingChildren(
const Node& current) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::NextSkippingChildren(
const Node& current,
const Node* stay_within) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::PreviousIncludingPseudo(
const Node& current,
const Node* stay_within) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::NextIncludingPseudo(
const Node& current,
const Node* stay_within) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::NextIncludingPseudoSkippingChildren(
const Node& current,
const Node* stay_within) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::PseudoAwarePreviousSibling(
const Node& current) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::PreviousSibling(
const Node& current) { … }
template <class ElementType>
template <class MatchFunc>
inline ElementType* Traversal<ElementType>::PreviousSibling(
const Node& current,
MatchFunc is_match) { … }
template <class ElementType>
inline ElementType* Traversal<ElementType>::NextSibling(const Node& current) { … }
template <class ElementType>
template <class MatchFunc>
inline ElementType* Traversal<ElementType>::NextSibling(const Node& current,
MatchFunc is_match) { … }
}
#endif