Chromium Code Reviews| 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 26 matching lines...) Expand all Loading... | |
| 37 // First or last ElementType child of the node. | 37 // First or last ElementType child of the node. |
| 38 static ElementType* firstChild(const ContainerNode& current) { return firstC hildTemplate(current); } | 38 static ElementType* firstChild(const ContainerNode& current) { return firstC hildTemplate(current); } |
| 39 static ElementType* firstChild(const Node& current) { return firstChildTempl ate(current); } | 39 static ElementType* firstChild(const Node& current) { return firstChildTempl ate(current); } |
| 40 static ElementType* lastChild(const ContainerNode& current) { return lastChi ldTemplate(current); } | 40 static ElementType* lastChild(const ContainerNode& current) { return lastChi ldTemplate(current); } |
| 41 static ElementType* lastChild(const Node& current) { return lastChildTemplat e(current); } | 41 static ElementType* lastChild(const Node& current) { return lastChildTemplat e(current); } |
| 42 | 42 |
| 43 // First ElementType ancestor of the node. | 43 // First ElementType ancestor of the node. |
| 44 static ElementType* firstAncestor(const Node& current); | 44 static ElementType* firstAncestor(const Node& current); |
| 45 static ElementType* firstAncestorOrSelf(Node& current) { return firstAncesto rOrSelfTemplate(current); } | 45 static ElementType* firstAncestorOrSelf(Node& current) { return firstAncesto rOrSelfTemplate(current); } |
| 46 static ElementType* firstAncestorOrSelf(Element& current) { return firstAnce storOrSelfTemplate(current); } | 46 static ElementType* firstAncestorOrSelf(Element& current) { return firstAnce storOrSelfTemplate(current); } |
| 47 static const ElementType* firstAncestorOrSelf(const Node& current) { return firstAncestorOrSelfTemplate(const_cast<Node&>(current)); } | |
| 48 static const ElementType* firstAncestorOrSelf(const Element& current) { retu rn firstAncestorOrSelfTemplate(const_cast<Element&>(current)); } | |
| 47 | 49 |
| 48 // First or last ElementType descendant of the node. | 50 // First or last ElementType descendant of the node. |
| 49 // For Elements firstWithin() is always the same as firstChild(). | 51 // For Elements firstWithin() is always the same as firstChild(). |
| 50 static ElementType* firstWithin(const ContainerNode& current) { return first WithinTemplate(current); } | 52 static ElementType* firstWithin(const ContainerNode& current) { return first WithinTemplate(current); } |
| 51 static ElementType* firstWithin(const Node& current) { return firstWithinTem plate(current); } | 53 static ElementType* firstWithin(const Node& current) { return firstWithinTem plate(current); } |
| 52 static ElementType* lastWithin(const ContainerNode& current) { return lastWi thinTemplate(current); } | 54 static ElementType* lastWithin(const ContainerNode& current) { return lastWi thinTemplate(current); } |
| 53 static ElementType* lastWithin(const Node& current) { return lastWithinTempl ate(current); } | 55 static ElementType* lastWithin(const Node& current) { return lastWithinTempl ate(current); } |
| 54 | 56 |
| 55 // Pre-order traversal skipping non-element nodes. | 57 // Pre-order traversal skipping non-element nodes. |
| 56 static ElementType* next(const ContainerNode& current) { return nextTemplate (current); } | 58 static ElementType* next(const ContainerNode& current) { return nextTemplate (current); } |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 182 ContainerNode* ancestor = current.parentNode(); | 184 ContainerNode* ancestor = current.parentNode(); |
| 183 while (ancestor && !isElementOfType<const ElementType>(*ancestor)) | 185 while (ancestor && !isElementOfType<const ElementType>(*ancestor)) |
| 184 ancestor = ancestor->parentNode(); | 186 ancestor = ancestor->parentNode(); |
| 185 return toElement<ElementType>(ancestor); | 187 return toElement<ElementType>(ancestor); |
| 186 } | 188 } |
| 187 | 189 |
| 188 template <class ElementType> | 190 template <class ElementType> |
| 189 template <class NodeType> | 191 template <class NodeType> |
| 190 inline ElementType* Traversal<ElementType>::firstAncestorOrSelfTemplate(NodeType & current) | 192 inline ElementType* Traversal<ElementType>::firstAncestorOrSelfTemplate(NodeType & current) |
| 191 { | 193 { |
| 192 if (isElementOfType<const ElementType>(current)) | 194 if (isElementOfType<const ElementType>(current)) |
|
Inactive
2014/07/19 00:02:53
The reason there is an Element overload is to avoi
| |
| 193 return &toElement<ElementType>(current); | 195 return &toElement<ElementType>(current); |
| 194 return firstAncestor(current); | 196 return firstAncestor(current); |
| 195 } | 197 } |
| 196 | 198 |
| 197 template <class ElementType> | 199 template <class ElementType> |
| 198 template <class NodeType> | 200 template <class NodeType> |
| 199 inline ElementType* Traversal<ElementType>::lastChildTemplate(NodeType& current) | 201 inline ElementType* Traversal<ElementType>::lastChildTemplate(NodeType& current) |
| 200 { | 202 { |
| 201 Node* node = current.lastChild(); | 203 Node* node = current.lastChild(); |
| 202 while (node && !isElementOfType<const ElementType>(*node)) | 204 while (node && !isElementOfType<const ElementType>(*node)) |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 334 { | 336 { |
| 335 Node* node = current.nextSibling(); | 337 Node* node = current.nextSibling(); |
| 336 while (node && !isElementOfType<const ElementType>(*node)) | 338 while (node && !isElementOfType<const ElementType>(*node)) |
| 337 node = node->nextSibling(); | 339 node = node->nextSibling(); |
| 338 return toElement<ElementType>(node); | 340 return toElement<ElementType>(node); |
| 339 } | 341 } |
| 340 | 342 |
| 341 } // namespace WebCore | 343 } // namespace WebCore |
| 342 | 344 |
| 343 #endif | 345 #endif |
| OLD | NEW |