Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(569)

Side by Side Diff: Source/core/xml/XPathStep.cpp

Issue 968293002: Fix template angle bracket syntax in xml (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « Source/core/xml/XPathStep.h ('k') | Source/core/xml/XSLStyleSheet.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2005 Frerich Raabe <raabe@kde.org> 2 * Copyright (C) 2005 Frerich Raabe <raabe@kde.org>
3 * Copyright (C) 2006, 2009 Apple Inc. All rights reserved. 3 * Copyright (C) 2006, 2009 Apple Inc. All rights reserved.
4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> 4 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org>
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 9 *
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
(...skipping 27 matching lines...) Expand all
38 38
39 namespace blink { 39 namespace blink {
40 namespace XPath { 40 namespace XPath {
41 41
42 Step::Step(Axis axis, const NodeTest& nodeTest) 42 Step::Step(Axis axis, const NodeTest& nodeTest)
43 : m_axis(axis) 43 : m_axis(axis)
44 , m_nodeTest(adoptPtrWillBeNoop(new NodeTest(nodeTest))) 44 , m_nodeTest(adoptPtrWillBeNoop(new NodeTest(nodeTest)))
45 { 45 {
46 } 46 }
47 47
48 Step::Step(Axis axis, const NodeTest& nodeTest, WillBeHeapVector<OwnPtrWillBeMem ber<Predicate> >& predicates) 48 Step::Step(Axis axis, const NodeTest& nodeTest, WillBeHeapVector<OwnPtrWillBeMem ber<Predicate>>& predicates)
49 : m_axis(axis) 49 : m_axis(axis)
50 , m_nodeTest(adoptPtrWillBeNoop(new NodeTest(nodeTest))) 50 , m_nodeTest(adoptPtrWillBeNoop(new NodeTest(nodeTest)))
51 { 51 {
52 m_predicates.swap(predicates); 52 m_predicates.swap(predicates);
53 } 53 }
54 54
55 Step::~Step() 55 Step::~Step()
56 { 56 {
57 } 57 }
58 58
59 DEFINE_TRACE(Step) 59 DEFINE_TRACE(Step)
60 { 60 {
61 visitor->trace(m_nodeTest); 61 visitor->trace(m_nodeTest);
62 visitor->trace(m_predicates); 62 visitor->trace(m_predicates);
63 ParseNode::trace(visitor); 63 ParseNode::trace(visitor);
64 } 64 }
65 65
66 void Step::optimize() 66 void Step::optimize()
67 { 67 {
68 // Evaluate predicates as part of node test if possible to avoid building 68 // Evaluate predicates as part of node test if possible to avoid building
69 // unnecessary NodeSets. 69 // unnecessary NodeSets.
70 // E.g., there is no need to build a set of all "foo" nodes to evaluate 70 // E.g., there is no need to build a set of all "foo" nodes to evaluate
71 // "foo[@bar]", we can check the predicate while enumerating. 71 // "foo[@bar]", we can check the predicate while enumerating.
72 // This optimization can be applied to predicates that are not context node 72 // This optimization can be applied to predicates that are not context node
73 // list sensitive, or to first predicate that is only context position 73 // list sensitive, or to first predicate that is only context position
74 // sensitive, e.g. foo[position() mod 2 = 0]. 74 // sensitive, e.g. foo[position() mod 2 = 0].
75 WillBeHeapVector<OwnPtrWillBeMember<Predicate> > remainingPredicates; 75 WillBeHeapVector<OwnPtrWillBeMember<Predicate>> remainingPredicates;
76 for (size_t i = 0; i < m_predicates.size(); ++i) { 76 for (size_t i = 0; i < m_predicates.size(); ++i) {
77 OwnPtrWillBeRawPtr<Predicate> predicate(m_predicates[i].release()); 77 OwnPtrWillBeRawPtr<Predicate> predicate(m_predicates[i].release());
78 if ((!predicate->isContextPositionSensitive() || nodeTest().mergedPredic ates().isEmpty()) && !predicate->isContextSizeSensitive() && remainingPredicates .isEmpty()) { 78 if ((!predicate->isContextPositionSensitive() || nodeTest().mergedPredic ates().isEmpty()) && !predicate->isContextSizeSensitive() && remainingPredicates .isEmpty()) {
79 nodeTest().mergedPredicates().append(predicate.release()); 79 nodeTest().mergedPredicates().append(predicate.release());
80 } else { 80 } else {
81 remainingPredicates.append(predicate.release()); 81 remainingPredicates.append(predicate.release());
82 } 82 }
83 } 83 }
84 swap(remainingPredicates, m_predicates); 84 swap(remainingPredicates, m_predicates);
85 } 85 }
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
232 } 232 }
233 233
234 static inline bool nodeMatches(EvaluationContext& evaluationContext, Node* node, Step::Axis axis, const Step::NodeTest& nodeTest) 234 static inline bool nodeMatches(EvaluationContext& evaluationContext, Node* node, Step::Axis axis, const Step::NodeTest& nodeTest)
235 { 235 {
236 if (!nodeMatchesBasicTest(node, axis, nodeTest)) 236 if (!nodeMatchesBasicTest(node, axis, nodeTest))
237 return false; 237 return false;
238 238
239 // Only the first merged predicate may depend on position. 239 // Only the first merged predicate may depend on position.
240 ++evaluationContext.position; 240 ++evaluationContext.position;
241 241
242 const WillBeHeapVector<OwnPtrWillBeMember<Predicate> >& mergedPredicates = n odeTest.mergedPredicates(); 242 const WillBeHeapVector<OwnPtrWillBeMember<Predicate>>& mergedPredicates = no deTest.mergedPredicates();
243 for (unsigned i = 0; i < mergedPredicates.size(); i++) { 243 for (unsigned i = 0; i < mergedPredicates.size(); i++) {
244 Predicate* predicate = mergedPredicates[i].get(); 244 Predicate* predicate = mergedPredicates[i].get();
245 245
246 evaluationContext.node = node; 246 evaluationContext.node = node;
247 // No need to set context size - we only get here when evaluating 247 // No need to set context size - we only get here when evaluating
248 // predicates that do not depend on it. 248 // predicates that do not depend on it.
249 if (!predicate->evaluate(evaluationContext)) 249 if (!predicate->evaluate(evaluationContext))
250 return false; 250 return false;
251 } 251 }
252 252
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 nodes.markSorted(false); 430 nodes.markSorted(false);
431 return; 431 return;
432 } 432 }
433 } 433 }
434 ASSERT_NOT_REACHED(); 434 ASSERT_NOT_REACHED();
435 } 435 }
436 436
437 } 437 }
438 438
439 } 439 }
OLDNEW
« no previous file with comments | « Source/core/xml/XPathStep.h ('k') | Source/core/xml/XSLStyleSheet.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698