| Index: Source/core/dom/NodeTraversal.h
|
| diff --git a/Source/core/dom/NodeTraversal.h b/Source/core/dom/NodeTraversal.h
|
| index b1ac348d61b08b46132162434bd84b0b79b3fe45..9bca2665b2e6214d6530cc0046712082f7a3c9eb 100644
|
| --- a/Source/core/dom/NodeTraversal.h
|
| +++ b/Source/core/dom/NodeTraversal.h
|
| @@ -102,72 +102,79 @@ private:
|
|
|
| template <class Iterator>
|
| class TraversalRange {
|
| + STACK_ALLOCATED();
|
| public:
|
| using StartNodeType = typename Iterator::StartNodeType;
|
| explicit TraversalRange(const StartNodeType* start) : m_start(start) { }
|
| Iterator begin() { return Iterator(m_start); }
|
| Iterator end() { return Iterator::end(); }
|
| private:
|
| - const StartNodeType* m_start;
|
| + RawPtrWillBeMember<const StartNodeType> m_start;
|
| };
|
|
|
| template <class TraversalNext>
|
| class TraversalIteratorBase {
|
| + STACK_ALLOCATED();
|
| public:
|
| using NodeType = typename TraversalNext::TraversalNodeType;
|
| NodeType& operator*() { return *m_current; }
|
| bool operator!=(const TraversalIteratorBase& rval) const { return m_current != rval.m_current ; }
|
| protected:
|
| - explicit TraversalIteratorBase(NodeType* current) : m_current(current) { };
|
| - NodeType* m_current;
|
| + explicit TraversalIteratorBase(NodeType* current) : m_current(current) { }
|
| +
|
| + RawPtrWillBeMember<NodeType> m_current;
|
| };
|
|
|
| template <class TraversalNext>
|
| class TraversalChildrenIterator : public TraversalIteratorBase<TraversalNext> {
|
| + STACK_ALLOCATED();
|
| public:
|
| using StartNodeType = Node;
|
| using TraversalIteratorBase<TraversalNext>::m_current;
|
| - explicit TraversalChildrenIterator(const StartNodeType* start) : TraversalIteratorBase<TraversalNext>(TraversalNext::firstWithin(*start)) { };
|
| - void operator++() { m_current = TraversalNext::nextSibling(*m_current); };
|
| - static TraversalChildrenIterator end() { return TraversalChildrenIterator(); };
|
| + explicit TraversalChildrenIterator(const StartNodeType* start) : TraversalIteratorBase<TraversalNext>(TraversalNext::firstWithin(*start)) { }
|
| + void operator++() { m_current = TraversalNext::nextSibling(*m_current); }
|
| + static TraversalChildrenIterator end() { return TraversalChildrenIterator(); }
|
| private:
|
| - TraversalChildrenIterator() : TraversalIteratorBase<TraversalNext>(nullptr) { };
|
| + TraversalChildrenIterator() : TraversalIteratorBase<TraversalNext>(nullptr) { }
|
| };
|
|
|
| template <class TraversalNext>
|
| class TraversalNextIterator : public TraversalIteratorBase<TraversalNext> {
|
| + STACK_ALLOCATED();
|
| public:
|
| using StartNodeType = typename TraversalNext::TraversalNodeType;
|
| using TraversalIteratorBase<TraversalNext>::m_current;
|
| - explicit TraversalNextIterator(const StartNodeType* start) : TraversalIteratorBase<TraversalNext>(const_cast<StartNodeType*>(start)) { };
|
| + explicit TraversalNextIterator(const StartNodeType* start) : TraversalIteratorBase<TraversalNext>(const_cast<StartNodeType*>(start)) { }
|
| void operator++() { m_current = TraversalNext::next(*m_current); }
|
| - static TraversalNextIterator end() { return TraversalNextIterator(nullptr); };
|
| + static TraversalNextIterator end() { return TraversalNextIterator(nullptr); }
|
| };
|
|
|
| template <class TraversalNext>
|
| class TraversalDescendantIterator : public TraversalIteratorBase<TraversalNext> {
|
| + STACK_ALLOCATED();
|
| public:
|
| using StartNodeType = Node;
|
| using TraversalIteratorBase<TraversalNext>::m_current;
|
| - explicit TraversalDescendantIterator(const StartNodeType* start) : TraversalIteratorBase<TraversalNext>(TraversalNext::firstWithin(*start)), m_root(start) { };
|
| + explicit TraversalDescendantIterator(const StartNodeType* start) : TraversalIteratorBase<TraversalNext>(TraversalNext::firstWithin(*start)), m_root(start) { }
|
| void operator++() { m_current = TraversalNext::next(*m_current, m_root); }
|
| - static TraversalDescendantIterator end() { return TraversalDescendantIterator(); };
|
| + static TraversalDescendantIterator end() { return TraversalDescendantIterator(); }
|
| private:
|
| - TraversalDescendantIterator() : TraversalIteratorBase<TraversalNext>(nullptr), m_root(nullptr) { };
|
| - const Node* m_root;
|
| + TraversalDescendantIterator() : TraversalIteratorBase<TraversalNext>(nullptr), m_root(nullptr) { }
|
| + RawPtrWillBeMember<const Node> m_root;
|
| };
|
|
|
| template <class TraversalNext>
|
| class TraversalInclusiveDescendantIterator : public TraversalIteratorBase<TraversalNext> {
|
| + STACK_ALLOCATED();
|
| public:
|
| using StartNodeType = typename TraversalNext::TraversalNodeType;
|
| using NodeType = typename TraversalNext::TraversalNodeType;
|
| using TraversalIteratorBase<TraversalNext>::m_current;
|
| - explicit TraversalInclusiveDescendantIterator(const StartNodeType* start) : TraversalIteratorBase<TraversalNext>(const_cast<NodeType*>(start)), m_root(start) { };
|
| + explicit TraversalInclusiveDescendantIterator(const StartNodeType* start) : TraversalIteratorBase<TraversalNext>(const_cast<NodeType*>(start)), m_root(start) { }
|
| void operator++() { m_current = TraversalNext::next(*m_current, m_root); }
|
| - static TraversalInclusiveDescendantIterator end() { return TraversalInclusiveDescendantIterator(nullptr); };
|
| + static TraversalInclusiveDescendantIterator end() { return TraversalInclusiveDescendantIterator(nullptr); }
|
| private:
|
| - const StartNodeType* m_root;
|
| + RawPtrWillBeMember<const StartNodeType> m_root;
|
| };
|
|
|
| inline TraversalRange<TraversalChildrenIterator<NodeTraversal>> NodeTraversal::childrenOf(const Node& parent)
|
|
|