| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2001 Dirk Mueller (mueller@kde.org) | 4 * (C) 2001 Dirk Mueller (mueller@kde.org) |
| 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc.
All rights reserved. |
| 6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) | 6 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
| 7 * Copyright (C) 2014 Samsung Electronics. All rights reserved. | 7 * Copyright (C) 2014 Samsung Electronics. All rights reserved. |
| 8 * | 8 * |
| 9 * This library is free software; you can redistribute it and/or | 9 * This library is free software; you can redistribute it and/or |
| 10 * modify it under the terms of the GNU Library General Public | 10 * modify it under the terms of the GNU Library General Public |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 | 117 |
| 118 template <class Iterator> | 118 template <class Iterator> |
| 119 class TraversalRange { | 119 class TraversalRange { |
| 120 STACK_ALLOCATED(); | 120 STACK_ALLOCATED(); |
| 121 public: | 121 public: |
| 122 using StartNodeType = typename Iterator::StartNodeType; | 122 using StartNodeType = typename Iterator::StartNodeType; |
| 123 explicit TraversalRange(const StartNodeType* start) : m_start(start) { } | 123 explicit TraversalRange(const StartNodeType* start) : m_start(start) { } |
| 124 Iterator begin() { return Iterator(m_start); } | 124 Iterator begin() { return Iterator(m_start); } |
| 125 Iterator end() { return Iterator::end(); } | 125 Iterator end() { return Iterator::end(); } |
| 126 private: | 126 private: |
| 127 RawPtrWillBeMember<const StartNodeType> m_start; | 127 Member<const StartNodeType> m_start; |
| 128 }; | 128 }; |
| 129 | 129 |
| 130 template <class TraversalNext> | 130 template <class TraversalNext> |
| 131 class TraversalIteratorBase { | 131 class TraversalIteratorBase { |
| 132 STACK_ALLOCATED(); | 132 STACK_ALLOCATED(); |
| 133 public: | 133 public: |
| 134 using NodeType = typename TraversalNext::TraversalNodeType; | 134 using NodeType = typename TraversalNext::TraversalNodeType; |
| 135 NodeType& operator*() { return *m_current; } | 135 NodeType& operator*() { return *m_current; } |
| 136 bool operator!=(const TraversalIteratorBase& rval) const { return m_current
!= rval.m_current ; } | 136 bool operator!=(const TraversalIteratorBase& rval) const { return m_current
!= rval.m_current ; } |
| 137 protected: | 137 protected: |
| 138 explicit TraversalIteratorBase(NodeType* current) : m_current(current) { } | 138 explicit TraversalIteratorBase(NodeType* current) : m_current(current) { } |
| 139 | 139 |
| 140 RawPtrWillBeMember<NodeType> m_current; | 140 Member<NodeType> m_current; |
| 141 }; | 141 }; |
| 142 | 142 |
| 143 template <class TraversalNext> | 143 template <class TraversalNext> |
| 144 class TraversalChildrenIterator : public TraversalIteratorBase<TraversalNext> { | 144 class TraversalChildrenIterator : public TraversalIteratorBase<TraversalNext> { |
| 145 STACK_ALLOCATED(); | 145 STACK_ALLOCATED(); |
| 146 public: | 146 public: |
| 147 using StartNodeType = Node; | 147 using StartNodeType = Node; |
| 148 using TraversalIteratorBase<TraversalNext>::m_current; | 148 using TraversalIteratorBase<TraversalNext>::m_current; |
| 149 explicit TraversalChildrenIterator(const StartNodeType* start) : TraversalIt
eratorBase<TraversalNext>(TraversalNext::firstWithin(*start)) { } | 149 explicit TraversalChildrenIterator(const StartNodeType* start) : TraversalIt
eratorBase<TraversalNext>(TraversalNext::firstWithin(*start)) { } |
| 150 void operator++() { m_current = TraversalNext::nextSibling(*m_current); } | 150 void operator++() { m_current = TraversalNext::nextSibling(*m_current); } |
| (...skipping 17 matching lines...) Expand all Loading... |
| 168 class TraversalDescendantIterator : public TraversalIteratorBase<TraversalNext>
{ | 168 class TraversalDescendantIterator : public TraversalIteratorBase<TraversalNext>
{ |
| 169 STACK_ALLOCATED(); | 169 STACK_ALLOCATED(); |
| 170 public: | 170 public: |
| 171 using StartNodeType = Node; | 171 using StartNodeType = Node; |
| 172 using TraversalIteratorBase<TraversalNext>::m_current; | 172 using TraversalIteratorBase<TraversalNext>::m_current; |
| 173 explicit TraversalDescendantIterator(const StartNodeType* start) : Traversal
IteratorBase<TraversalNext>(TraversalNext::firstWithin(*start)), m_root(start) {
} | 173 explicit TraversalDescendantIterator(const StartNodeType* start) : Traversal
IteratorBase<TraversalNext>(TraversalNext::firstWithin(*start)), m_root(start) {
} |
| 174 void operator++() { m_current = TraversalNext::next(*m_current, m_root); } | 174 void operator++() { m_current = TraversalNext::next(*m_current, m_root); } |
| 175 static TraversalDescendantIterator end() { return TraversalDescendantIterato
r(); } | 175 static TraversalDescendantIterator end() { return TraversalDescendantIterato
r(); } |
| 176 private: | 176 private: |
| 177 TraversalDescendantIterator() : TraversalIteratorBase<TraversalNext>(nullptr
), m_root(nullptr) { } | 177 TraversalDescendantIterator() : TraversalIteratorBase<TraversalNext>(nullptr
), m_root(nullptr) { } |
| 178 RawPtrWillBeMember<const Node> m_root; | 178 Member<const Node> m_root; |
| 179 }; | 179 }; |
| 180 | 180 |
| 181 template <class TraversalNext> | 181 template <class TraversalNext> |
| 182 class TraversalInclusiveDescendantIterator : public TraversalIteratorBase<Traver
salNext> { | 182 class TraversalInclusiveDescendantIterator : public TraversalIteratorBase<Traver
salNext> { |
| 183 STACK_ALLOCATED(); | 183 STACK_ALLOCATED(); |
| 184 public: | 184 public: |
| 185 using StartNodeType = typename TraversalNext::TraversalNodeType; | 185 using StartNodeType = typename TraversalNext::TraversalNodeType; |
| 186 using NodeType = typename TraversalNext::TraversalNodeType; | 186 using NodeType = typename TraversalNext::TraversalNodeType; |
| 187 using TraversalIteratorBase<TraversalNext>::m_current; | 187 using TraversalIteratorBase<TraversalNext>::m_current; |
| 188 explicit TraversalInclusiveDescendantIterator(const StartNodeType* start) :
TraversalIteratorBase<TraversalNext>(const_cast<NodeType*>(start)), m_root(start
) { } | 188 explicit TraversalInclusiveDescendantIterator(const StartNodeType* start) :
TraversalIteratorBase<TraversalNext>(const_cast<NodeType*>(start)), m_root(start
) { } |
| 189 void operator++() { m_current = TraversalNext::next(*m_current, m_root); } | 189 void operator++() { m_current = TraversalNext::next(*m_current, m_root); } |
| 190 static TraversalInclusiveDescendantIterator end() { return TraversalInclusiv
eDescendantIterator(nullptr); } | 190 static TraversalInclusiveDescendantIterator end() { return TraversalInclusiv
eDescendantIterator(nullptr); } |
| 191 private: | 191 private: |
| 192 RawPtrWillBeMember<const StartNodeType> m_root; | 192 Member<const StartNodeType> m_root; |
| 193 }; | 193 }; |
| 194 | 194 |
| 195 inline TraversalRange<TraversalChildrenIterator<NodeTraversal>> NodeTraversal::c
hildrenOf(const Node& parent) | 195 inline TraversalRange<TraversalChildrenIterator<NodeTraversal>> NodeTraversal::c
hildrenOf(const Node& parent) |
| 196 { | 196 { |
| 197 return TraversalRange<TraversalChildrenIterator<NodeTraversal>>(&parent); | 197 return TraversalRange<TraversalChildrenIterator<NodeTraversal>>(&parent); |
| 198 } | 198 } |
| 199 | 199 |
| 200 inline TraversalRange<TraversalDescendantIterator<NodeTraversal>> NodeTraversal:
:descendantsOf(const Node& root) | 200 inline TraversalRange<TraversalDescendantIterator<NodeTraversal>> NodeTraversal:
:descendantsOf(const Node& root) |
| 201 { | 201 { |
| 202 return TraversalRange<TraversalDescendantIterator<NodeTraversal>>(&root); | 202 return TraversalRange<TraversalDescendantIterator<NodeTraversal>>(&root); |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 { | 268 { |
| 269 Node* child = parent.firstChild(); | 269 Node* child = parent.firstChild(); |
| 270 while (child && index--) | 270 while (child && index--) |
| 271 child = child->nextSibling(); | 271 child = child->nextSibling(); |
| 272 return child; | 272 return child; |
| 273 } | 273 } |
| 274 | 274 |
| 275 } // namespace blink | 275 } // namespace blink |
| 276 | 276 |
| 277 #endif | 277 #endif |
| OLD | NEW |