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

Side by Side Diff: Source/core/css/CSSSelectorList.h

Issue 149513011: Pass around CSSSelector by reference instead of pointer (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 10 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/css/CSSSelector.cpp ('k') | Source/core/css/CSSSelectorList.cpp » ('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) 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 27 matching lines...) Expand all
38 CSSSelectorList() : m_selectorArray(0) { } 38 CSSSelectorList() : m_selectorArray(0) { }
39 CSSSelectorList(const CSSSelectorList&); 39 CSSSelectorList(const CSSSelectorList&);
40 40
41 ~CSSSelectorList(); 41 ~CSSSelectorList();
42 42
43 void adopt(CSSSelectorList& list); 43 void adopt(CSSSelectorList& list);
44 void adoptSelectorVector(Vector<OwnPtr<CSSParserSelector> >& selectorVector) ; 44 void adoptSelectorVector(Vector<OwnPtr<CSSParserSelector> >& selectorVector) ;
45 45
46 bool isValid() const { return !!m_selectorArray; } 46 bool isValid() const { return !!m_selectorArray; }
47 const CSSSelector* first() const { return m_selectorArray; } 47 const CSSSelector* first() const { return m_selectorArray; }
48 static const CSSSelector* next(const CSSSelector*); 48 static const CSSSelector* next(const CSSSelector&);
49 bool hasOneSelector() const { return m_selectorArray && !next(m_selectorArra y); } 49 bool hasOneSelector() const { return m_selectorArray && !next(*m_selectorArr ay); }
50 const CSSSelector* selectorAt(size_t index) const { return &m_selectorArray[ index]; } 50 const CSSSelector& selectorAt(size_t index) const { return m_selectorArray[i ndex]; }
51 51
52 size_t indexOfNextSelectorAfter(size_t index) const 52 size_t indexOfNextSelectorAfter(size_t index) const
53 { 53 {
54 const CSSSelector* current = selectorAt(index); 54 const CSSSelector& current = selectorAt(index);
55 current = next(current); 55 const CSSSelector* next = this->next(current);
56 if (!current) 56 if (!next)
57 return kNotFound; 57 return kNotFound;
58 return current - m_selectorArray; 58 return next - m_selectorArray;
59 } 59 }
60 60
61 bool selectorsNeedNamespaceResolution(); 61 bool selectorsNeedNamespaceResolution();
62 62
63 bool hasShadowDistributedAt(size_t index) const; 63 bool hasShadowDistributedAt(size_t index) const;
64 bool hasCombinatorCrossingTreeBoundaryAt(size_t index) const; 64 bool hasCombinatorCrossingTreeBoundaryAt(size_t index) const;
65 65
66 String selectorsText() const; 66 String selectorsText() const;
67 67
68 private: 68 private:
69 unsigned length() const; 69 unsigned length() const;
70 void deleteSelectors(); 70 void deleteSelectors();
71 71
72 // Hide. 72 // Hide.
73 CSSSelectorList& operator=(const CSSSelectorList&); 73 CSSSelectorList& operator=(const CSSSelectorList&);
74 74
75 // End of a multipart selector is indicated by m_isLastInTagHistory bit in t he last item. 75 // End of a multipart selector is indicated by m_isLastInTagHistory bit in t he last item.
76 // End of the array is indicated by m_isLastInSelectorList bit in the last i tem. 76 // End of the array is indicated by m_isLastInSelectorList bit in the last i tem.
77 CSSSelector* m_selectorArray; 77 CSSSelector* m_selectorArray;
78 }; 78 };
79 79
80 inline const CSSSelector* CSSSelectorList::next(const CSSSelector* current) 80 inline const CSSSelector* CSSSelectorList::next(const CSSSelector& current)
81 { 81 {
82 // Skip subparts of compound selectors. 82 // Skip subparts of compound selectors.
83 while (!current->isLastInTagHistory()) 83 const CSSSelector* last = &current;
84 current++; 84 while (!last->isLastInTagHistory())
85 return current->isLastInSelectorList() ? 0 : current + 1; 85 last++;
86 return last->isLastInSelectorList() ? 0 : last + 1;
86 } 87 }
87 88
88 } // namespace WebCore 89 } // namespace WebCore
89 90
90 #endif // CSSSelectorList_h 91 #endif // CSSSelectorList_h
OLDNEW
« no previous file with comments | « Source/core/css/CSSSelector.cpp ('k') | Source/core/css/CSSSelectorList.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698