#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_DOM_NODE_TRAVERSAL_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_DOM_NODE_TRAVERSAL_H_
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/dom/container_node.h"
#include "third_party/blink/renderer/core/dom/node.h"
#include "third_party/blink/renderer/core/dom/traversal_range.h"
#include "third_party/blink/renderer/platform/wtf/allocator/allocator.h"
namespace blink {
class CORE_EXPORT NodeTraversal { … };
inline TraversalAncestorRange<NodeTraversal> NodeTraversal::AncestorsOf(
const Node& node) { … }
inline TraversalAncestorRange<NodeTraversal>
NodeTraversal::InclusiveAncestorsOf(const Node& node) { … }
inline TraversalSiblingRange<NodeTraversal> NodeTraversal::ChildrenOf(
const Node& parent) { … }
inline TraversalDescendantRange<NodeTraversal> NodeTraversal::DescendantsOf(
const Node& root) { … }
inline TraversalInclusiveDescendantRange<NodeTraversal>
NodeTraversal::InclusiveDescendantsOf(const Node& root) { … }
inline TraversalNextRange<NodeTraversal> NodeTraversal::StartsAt(
const Node& start) { … }
inline TraversalNextRange<NodeTraversal> NodeTraversal::StartsAfter(
const Node& start) { … }
template <class NodeType>
inline Node* NodeTraversal::TraverseNextTemplate(NodeType& current) { … }
template <class NodeType>
inline Node* NodeTraversal::TraverseNextTemplate(NodeType& current,
const Node* stay_within) { … }
inline Node* NodeTraversal::NextSkippingChildren(const Node& current) { … }
inline Node* NodeTraversal::NextSkippingChildren(const Node& current,
const Node* stay_within) { … }
inline Node& NodeTraversal::HighestAncestorOrSelf(const Node& current) { … }
template <class NodeType>
inline Node* NodeTraversal::ChildAtTemplate(NodeType& parent, unsigned index) { … }
}
#endif