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, 2013 Appl
e Inc. All rights reserved. | 5 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Appl
e 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 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
91 static ElementType* previousSibling(const Node&); | 91 static ElementType* previousSibling(const Node&); |
92 template <class MatchFunc> | 92 template <class MatchFunc> |
93 static ElementType* previousSibling(const Node&, MatchFunc); | 93 static ElementType* previousSibling(const Node&, MatchFunc); |
94 static ElementType* nextSibling(const Node&); | 94 static ElementType* nextSibling(const Node&); |
95 template <class MatchFunc> | 95 template <class MatchFunc> |
96 static ElementType* nextSibling(const Node&, MatchFunc); | 96 static ElementType* nextSibling(const Node&, MatchFunc); |
97 | 97 |
98 static TraversalRange<TraversalChildrenIterator<Traversal<ElementType>>> chi
ldrenOf(const Node&); | 98 static TraversalRange<TraversalChildrenIterator<Traversal<ElementType>>> chi
ldrenOf(const Node&); |
99 static TraversalRange<TraversalDescendantIterator<Traversal<ElementType>>> d
escendantsOf(const Node&); | 99 static TraversalRange<TraversalDescendantIterator<Traversal<ElementType>>> d
escendantsOf(const Node&); |
100 static TraversalRange<TraversalInclusiveDescendantIterator<Traversal<Element
Type>>> inclusiveDescendantsOf(const ElementType&); | 100 static TraversalRange<TraversalInclusiveDescendantIterator<Traversal<Element
Type>>> inclusiveDescendantsOf(const ElementType&); |
101 static TraversalRange<TraversalInclusiveNextIterator<Traversal<ElementType>>
> from(const ElementType*); | 101 static TraversalRange<TraversalNextIterator<Traversal<ElementType>>> startsA
t(const ElementType*); |
102 static TraversalRange<TraversalNextIterator<Traversal<ElementType>>> fromNex
t(const Node&); | 102 static TraversalRange<TraversalNextIterator<Traversal<ElementType>>> startsA
fter(const Node&); |
103 | 103 |
104 private: | 104 private: |
105 template <class NodeType> | 105 template <class NodeType> |
106 static ElementType* firstChildTemplate(NodeType&); | 106 static ElementType* firstChildTemplate(NodeType&); |
107 template <class NodeType> | 107 template <class NodeType> |
108 static ElementType* lastChildTemplate(NodeType&); | 108 static ElementType* lastChildTemplate(NodeType&); |
109 template <class NodeType> | 109 template <class NodeType> |
110 static ElementType* firstAncestorOrSelfTemplate(NodeType&); | 110 static ElementType* firstAncestorOrSelfTemplate(NodeType&); |
111 template <class NodeType> | 111 template <class NodeType> |
112 static ElementType* firstWithinTemplate(NodeType&); | 112 static ElementType* firstWithinTemplate(NodeType&); |
(...skipping 19 matching lines...) Expand all Loading... |
132 return TraversalRange<TraversalDescendantIterator<Traversal<ElementType>>>(&
root); | 132 return TraversalRange<TraversalDescendantIterator<Traversal<ElementType>>>(&
root); |
133 }; | 133 }; |
134 | 134 |
135 template <class ElementType> | 135 template <class ElementType> |
136 inline TraversalRange<TraversalInclusiveDescendantIterator<Traversal<ElementType
>>> Traversal<ElementType>::inclusiveDescendantsOf(const ElementType& root) | 136 inline TraversalRange<TraversalInclusiveDescendantIterator<Traversal<ElementType
>>> Traversal<ElementType>::inclusiveDescendantsOf(const ElementType& root) |
137 { | 137 { |
138 return TraversalRange<TraversalInclusiveDescendantIterator<Traversal<Element
Type>>>(&root); | 138 return TraversalRange<TraversalInclusiveDescendantIterator<Traversal<Element
Type>>>(&root); |
139 }; | 139 }; |
140 | 140 |
141 template <class ElementType> | 141 template <class ElementType> |
142 inline TraversalRange<TraversalInclusiveNextIterator<Traversal<ElementType>>> Tr
aversal<ElementType>::from(const ElementType* start) | 142 inline TraversalRange<TraversalNextIterator<Traversal<ElementType>>> Traversal<E
lementType>::startsAt(const ElementType* start) |
143 { | 143 { |
144 return TraversalRange<TraversalInclusiveNextIterator<Traversal<ElementType>>
>(start); | 144 return TraversalRange<TraversalNextIterator<Traversal<ElementType>>>(start); |
145 }; | 145 }; |
146 | 146 |
147 template <class ElementType> | 147 template <class ElementType> |
148 inline TraversalRange<TraversalNextIterator<Traversal<ElementType>>> Traversal<E
lementType>::fromNext(const Node& start) | 148 inline TraversalRange<TraversalNextIterator<Traversal<ElementType>>> Traversal<E
lementType>::startsAfter(const Node& start) |
149 { | 149 { |
150 return TraversalRange<TraversalNextIterator<Traversal<ElementType>>>(&start)
; | 150 return startsAt(Traversal<ElementType>::next(start)); |
151 }; | 151 }; |
152 | 152 |
153 // Specialized for pure Element to exploit the fact that Elements parent is alwa
ys either another Element or the root. | 153 // Specialized for pure Element to exploit the fact that Elements parent is alwa
ys either another Element or the root. |
154 template <> | 154 template <> |
155 template <class NodeType> | 155 template <class NodeType> |
156 inline Element* Traversal<Element>::firstWithinTemplate(NodeType& current) | 156 inline Element* Traversal<Element>::firstWithinTemplate(NodeType& current) |
157 { | 157 { |
158 return firstChildTemplate(current); | 158 return firstChildTemplate(current); |
159 } | 159 } |
160 | 160 |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
423 { | 423 { |
424 ElementType* element = Traversal<ElementType>::nextSibling(current); | 424 ElementType* element = Traversal<ElementType>::nextSibling(current); |
425 while (element && !isMatch(*element)) | 425 while (element && !isMatch(*element)) |
426 element = Traversal<ElementType>::nextSibling(*element); | 426 element = Traversal<ElementType>::nextSibling(*element); |
427 return element; | 427 return element; |
428 } | 428 } |
429 | 429 |
430 } // namespace blink | 430 } // namespace blink |
431 | 431 |
432 #endif | 432 #endif |
OLD | NEW |