OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 3 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
4 * Copyright (C) 2013 Google Inc. All rights reserved. | 4 * Copyright (C) 2013 Google Inc. All rights reserved. |
5 * | 5 * |
6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Library General Public | 7 * modify it under the terms of the GNU Library General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
10 * | 10 * |
11 * This library is distributed in the hope that it will be useful, | 11 * This library is distributed in the hope that it will be useful, |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 * Library General Public License for more details. | 14 * Library General Public License for more details. |
15 * | 15 * |
16 * You should have received a copy of the GNU Library General Public License | 16 * You should have received a copy of the GNU Library General Public License |
17 * along with this library; see the file COPYING.LIB. If not, write to | 17 * along with this library; see the file COPYING.LIB. If not, write to |
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
19 * Boston, MA 02110-1301, USA. | 19 * Boston, MA 02110-1301, USA. |
20 * | 20 * |
21 */ | 21 */ |
22 | 22 |
23 #ifndef SKY_ENGINE_CORE_CSS_RESOLVER_MATCHRESULT_H_ | 23 #ifndef SKY_ENGINE_CORE_CSS_RESOLVER_MATCHRESULT_H_ |
24 #define SKY_ENGINE_CORE_CSS_RESOLVER_MATCHRESULT_H_ | 24 #define SKY_ENGINE_CORE_CSS_RESOLVER_MATCHRESULT_H_ |
25 | 25 |
26 #include "sky/engine/core/css/RuleSet.h" | |
27 #include "sky/engine/core/css/SelectorChecker.h" | |
28 #include "sky/engine/platform/heap/Handle.h" | 26 #include "sky/engine/platform/heap/Handle.h" |
29 #include "sky/engine/wtf/RefPtr.h" | 27 #include "sky/engine/wtf/RefPtr.h" |
30 #include "sky/engine/wtf/Vector.h" | 28 #include "sky/engine/wtf/Vector.h" |
31 | 29 |
32 namespace blink { | 30 namespace blink { |
33 | 31 |
34 class StylePropertySet; | 32 class StylePropertySet; |
35 | 33 |
36 struct RuleRange { | |
37 RuleRange(int& firstRuleIndex, int& lastRuleIndex): firstRuleIndex(firstRule
Index), lastRuleIndex(lastRuleIndex) { } | |
38 int& firstRuleIndex; | |
39 int& lastRuleIndex; | |
40 }; | |
41 | |
42 struct MatchRanges { | |
43 MatchRanges() : firstUARule(-1), lastUARule(-1), firstAuthorRule(-1), lastAu
thorRule(-1) { } | |
44 int firstUARule; | |
45 int lastUARule; | |
46 int firstAuthorRule; | |
47 int lastAuthorRule; | |
48 RuleRange UARuleRange() { return RuleRange(firstUARule, lastUARule); } | |
49 RuleRange authorRuleRange() { return RuleRange(firstAuthorRule, lastAuthorRu
le); } | |
50 }; | |
51 | |
52 struct MatchedProperties { | |
53 ALLOW_ONLY_INLINE_ALLOCATION(); | |
54 public: | |
55 MatchedProperties(); | |
56 ~MatchedProperties(); | |
57 | |
58 RefPtr<StylePropertySet> properties; | |
59 }; | |
60 | |
61 } // namespace blink | |
62 | |
63 WTF_ALLOW_MOVE_AND_INIT_WITH_MEM_FUNCTIONS(blink::MatchedProperties); | |
64 | |
65 namespace blink { | |
66 | |
67 class MatchResult { | 34 class MatchResult { |
68 STACK_ALLOCATED(); | 35 STACK_ALLOCATED(); |
69 public: | 36 public: |
70 MatchResult() : isCacheable(true) { } | 37 MatchResult() : isCacheable(true) { } |
71 Vector<MatchedProperties, 64> matchedProperties; | 38 Vector<RefPtr<StylePropertySet>, 64> matchedProperties; |
72 MatchRanges ranges; | |
73 bool isCacheable; | 39 bool isCacheable; |
74 | 40 |
75 void addMatchedProperties(const StylePropertySet* properties); | 41 void addMatchedProperties(const StylePropertySet*); |
76 }; | 42 }; |
77 | 43 |
78 inline bool operator==(const MatchRanges& a, const MatchRanges& b) | |
79 { | |
80 return a.firstUARule == b.firstUARule | |
81 && a.lastUARule == b.lastUARule | |
82 && a.firstAuthorRule == b.firstAuthorRule | |
83 && a.lastAuthorRule == b.lastAuthorRule; | |
84 } | |
85 | |
86 inline bool operator!=(const MatchRanges& a, const MatchRanges& b) | |
87 { | |
88 return !(a == b); | |
89 } | |
90 | |
91 inline bool operator==(const MatchedProperties& a, const MatchedProperties& b) | |
92 { | |
93 return a.properties == b.properties; | |
94 } | |
95 | |
96 inline bool operator!=(const MatchedProperties& a, const MatchedProperties& b) | |
97 { | |
98 return !(a == b); | |
99 } | |
100 | |
101 } // namespace blink | 44 } // namespace blink |
102 | 45 |
103 #endif // SKY_ENGINE_CORE_CSS_RESOLVER_MATCHRESULT_H_ | 46 #endif // SKY_ENGINE_CORE_CSS_RESOLVER_MATCHRESULT_H_ |
OLD | NEW |