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

Side by Side Diff: Source/core/css/parser/CSSParserSelector.h

Issue 1317743006: Move CSSParserSelector out of CSSParserValues.h/cpp (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 3 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/parser/CSSParserImpl.cpp ('k') | Source/core/css/parser/CSSParserSelector.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) 2003 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2003 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights reserv ed. 3 * Copyright (C) 2004, 2005, 2006, 2008, 2009, 2010 Apple Inc. All rights reserv ed.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details. 13 * Library General Public License for more details.
14 * 14 *
15 * You should have received a copy of the GNU Library General Public License 15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to 16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA. 18 * Boston, MA 02110-1301, USA.
19 */ 19 */
20 20
21 #ifndef CSSParserValues_h 21 #ifndef CSSParserSelector_h
22 #define CSSParserValues_h 22 #define CSSParserSelector_h
23 23
24 #include "core/CSSValueKeywords.h"
25 #include "core/css/CSSPrimitiveValue.h"
26 #include "core/css/CSSSelector.h" 24 #include "core/css/CSSSelector.h"
27 #include "core/css/CSSValueList.h"
28 #include "core/css/parser/CSSParserString.h"
29 #include "core/css/parser/CSSParserTokenRange.h"
30 #include "wtf/Allocator.h"
31 25
32 namespace blink { 26 namespace blink {
33 27
34 class QualifiedName;
35
36 struct CSSParserFunction;
37 struct CSSParserCalcFunction;
38 class CSSParserValueList;
39
40 struct CSSParserValue {
41 ALLOW_ONLY_INLINE_ALLOCATION();
42 CSSValueID id;
43 bool isInt;
44 union {
45 double fValue;
46 int iValue;
47 CSSParserString string;
48 CSSParserFunction* function;
49 CSSParserCalcFunction* calcFunction;
50 CSSParserValueList* valueList;
51 struct {
52 UChar32 start;
53 UChar32 end;
54 } m_unicodeRange;
55 };
56 enum {
57 Operator = 0x100000,
58 Function = 0x100001,
59 CalcFunction = 0x100002,
60 ValueList = 0x100003,
61 HexColor = 0x100004,
62 Identifier = 0x100005,
63 // Represents a dimension by a list of two values, a UnitType::Number an d an Identifier
64 DimensionList = 0x100006,
65 // Represents a unicode range by a pair of UChar32 values
66 UnicodeRange = 0x100007,
67 };
68 int m_unit;
69 CSSPrimitiveValue::UnitType unit() const { return static_cast<CSSPrimitiveVa lue::UnitType>(m_unit); }
70 void setUnit(CSSPrimitiveValue::UnitType unit) { m_unit = static_cast<int>(u nit); }
71
72 inline void setFromNumber(double value, CSSPrimitiveValue::UnitType);
73 inline void setFromOperator(UChar);
74 inline void setFromValueList(PassOwnPtr<CSSParserValueList>);
75 };
76
77 class CORE_EXPORT CSSParserValueList {
78 WTF_MAKE_FAST_ALLOCATED(CSSParserValueList);
79 public:
80 CSSParserValueList()
81 : m_current(0)
82 {
83 }
84 CSSParserValueList(CSSParserTokenRange);
85 ~CSSParserValueList();
86
87 void addValue(const CSSParserValue&);
88
89 unsigned size() const { return m_values.size(); }
90 unsigned currentIndex() { return m_current; }
91 CSSParserValue* current() { return m_current < m_values.size() ? &m_values[m _current] : 0; }
92 CSSParserValue* next() { ++m_current; return current(); }
93 CSSParserValue* previous()
94 {
95 if (!m_current)
96 return 0;
97 --m_current;
98 return current();
99 }
100 void setCurrentIndex(unsigned index)
101 {
102 ASSERT(index < m_values.size());
103 if (index < m_values.size())
104 m_current = index;
105 }
106
107 CSSParserValue* valueAt(unsigned i) { return i < m_values.size() ? &m_values [i] : 0; }
108
109 void clearAndLeakValues() { m_values.clear(); m_current = 0;}
110 void destroyAndClear();
111
112 private:
113 unsigned m_current;
114 Vector<CSSParserValue, 4> m_values;
115 };
116
117 struct CSSParserFunction {
118 WTF_MAKE_FAST_ALLOCATED(CSSParserFunction);
119 public:
120 CSSValueID id;
121 OwnPtr<CSSParserValueList> args;
122 };
123
124 struct CSSParserCalcFunction {
125 WTF_MAKE_FAST_ALLOCATED(CSSParserCalcFunction);
126 public:
127 CSSParserCalcFunction(CSSParserTokenRange args_) : args(args_) {}
128 CSSParserTokenRange args;
129 };
130
131 class CSSParserSelector { 28 class CSSParserSelector {
132 WTF_MAKE_NONCOPYABLE(CSSParserSelector); WTF_MAKE_FAST_ALLOCATED(CSSParserSe lector); 29 WTF_MAKE_NONCOPYABLE(CSSParserSelector); WTF_MAKE_FAST_ALLOCATED(CSSParserSe lector);
133 public: 30 public:
134 CSSParserSelector(); 31 CSSParserSelector();
135 explicit CSSParserSelector(const QualifiedName&, bool isImplicit = false); 32 explicit CSSParserSelector(const QualifiedName&, bool isImplicit = false);
136 33
137 static PassOwnPtr<CSSParserSelector> create() { return adoptPtr(new CSSParse rSelector); } 34 static PassOwnPtr<CSSParserSelector> create() { return adoptPtr(new CSSParse rSelector); }
138 static PassOwnPtr<CSSParserSelector> create(const QualifiedName& name, bool isImplicit = false) { return adoptPtr(new CSSParserSelector(name, isImplicit)); } 35 static PassOwnPtr<CSSParserSelector> create(const QualifiedName& name, bool isImplicit = false) { return adoptPtr(new CSSParserSelector(name, isImplicit)); }
139 36
140 ~CSSParserSelector(); 37 ~CSSParserSelector();
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
177 private: 74 private:
178 OwnPtr<CSSSelector> m_selector; 75 OwnPtr<CSSSelector> m_selector;
179 OwnPtr<CSSParserSelector> m_tagHistory; 76 OwnPtr<CSSParserSelector> m_tagHistory;
180 }; 77 };
181 78
182 inline bool CSSParserSelector::hasShadowPseudo() const 79 inline bool CSSParserSelector::hasShadowPseudo() const
183 { 80 {
184 return m_selector->relation() == CSSSelector::ShadowPseudo; 81 return m_selector->relation() == CSSSelector::ShadowPseudo;
185 } 82 }
186 83
187 inline void CSSParserValue::setFromNumber(double value, CSSPrimitiveValue::UnitT ype unit) 84 } // namespace blink
188 {
189 id = CSSValueInvalid;
190 isInt = false;
191 fValue = value;
192 this->setUnit(std::isfinite(value) ? unit : CSSPrimitiveValue::UnitType::Unk nown);
193 }
194
195 inline void CSSParserValue::setFromOperator(UChar c)
196 {
197 id = CSSValueInvalid;
198 m_unit = Operator;
199 iValue = c;
200 isInt = false;
201 }
202
203 inline void CSSParserValue::setFromValueList(PassOwnPtr<CSSParserValueList> valu eList)
204 {
205 id = CSSValueInvalid;
206 this->valueList = valueList.leakPtr();
207 m_unit = ValueList;
208 isInt = false;
209 }
210
211 }
212 85
213 #endif 86 #endif
OLDNEW
« no previous file with comments | « Source/core/css/parser/CSSParserImpl.cpp ('k') | Source/core/css/parser/CSSParserSelector.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698