OLD | NEW |
1 /* | 1 /* |
2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) | 2 * (C) 1999-2003 Lars Knoll (knoll@kde.org) |
3 * Copyright (C) 2004, 2005, 2006, 2008, 2012 Apple Inc. All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2008, 2012 Apple Inc. All rights reserved. |
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, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 | 43 |
44 class StylePropertySet : public RefCounted<StylePropertySet> { | 44 class StylePropertySet : public RefCounted<StylePropertySet> { |
45 friend class PropertyReference; | 45 friend class PropertyReference; |
46 public: | 46 public: |
47 ~StylePropertySet(); | 47 ~StylePropertySet(); |
48 | 48 |
49 // Override RefCounted's deref() to ensure operator delete is called on | 49 // Override RefCounted's deref() to ensure operator delete is called on |
50 // the appropriate subclass type. | 50 // the appropriate subclass type. |
51 void deref(); | 51 void deref(); |
52 | 52 |
53 static PassRefPtr<StylePropertySet> createImmutable(const CSSProperty* prope
rties, unsigned count, CSSParserMode); | |
54 | |
55 class PropertyReference { | 53 class PropertyReference { |
56 public: | 54 public: |
57 PropertyReference(const StylePropertySet& propertySet, unsigned index) | 55 PropertyReference(const StylePropertySet& propertySet, unsigned index) |
58 : m_propertySet(propertySet) | 56 : m_propertySet(propertySet) |
59 , m_index(index) | 57 , m_index(index) |
60 { | 58 { |
61 } | 59 } |
62 | 60 |
63 CSSPropertyID id() const { return static_cast<CSSPropertyID>(propertyMet
adata().m_propertyID); } | 61 CSSPropertyID id() const { return static_cast<CSSPropertyID>(propertyMet
adata().m_propertyID); } |
64 CSSPropertyID shorthandID() const { return static_cast<CSSPropertyID>(pr
opertyMetadata().m_shorthandID); } | 62 CSSPropertyID shorthandID() const { return static_cast<CSSPropertyID>(pr
opertyMetadata().m_shorthandID); } |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
127 void removeBlockProperties(); | 125 void removeBlockProperties(); |
128 bool removePropertiesInSet(const CSSPropertyID* set, unsigned length); | 126 bool removePropertiesInSet(const CSSPropertyID* set, unsigned length); |
129 | 127 |
130 void mergeAndOverrideOnConflict(const StylePropertySet*); | 128 void mergeAndOverrideOnConflict(const StylePropertySet*); |
131 | 129 |
132 CSSParserMode cssParserMode() const { return static_cast<CSSParserMode>(m_cs
sParserMode); } | 130 CSSParserMode cssParserMode() const { return static_cast<CSSParserMode>(m_cs
sParserMode); } |
133 | 131 |
134 void addSubresourceStyleURLs(ListHashSet<KURL>&, StyleSheetContents* context
StyleSheet) const; | 132 void addSubresourceStyleURLs(ListHashSet<KURL>&, StyleSheetContents* context
StyleSheet) const; |
135 | 133 |
136 PassRefPtr<MutableStylePropertySet> mutableCopy() const; | 134 PassRefPtr<MutableStylePropertySet> mutableCopy() const; |
137 PassRefPtr<StylePropertySet> immutableCopyIfNeeded() const; | 135 PassRefPtr<ImmutableStylePropertySet> immutableCopyIfNeeded() const; |
138 | 136 |
139 void removeEquivalentProperties(const StylePropertySet*); | 137 void removeEquivalentProperties(const StylePropertySet*); |
140 void removeEquivalentProperties(const CSSStyleDeclaration*); | 138 void removeEquivalentProperties(const CSSStyleDeclaration*); |
141 | 139 |
142 PassRefPtr<MutableStylePropertySet> copyPropertiesInSet(const Vector<CSSProp
ertyID>&) const; | 140 PassRefPtr<MutableStylePropertySet> copyPropertiesInSet(const Vector<CSSProp
ertyID>&) const; |
143 | 141 |
144 String asText() const; | 142 String asText() const; |
145 | 143 |
146 PropertySetCSSStyleDeclaration* cssStyleDeclaration(); | 144 PropertySetCSSStyleDeclaration* cssStyleDeclaration(); |
147 | 145 |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 | 189 |
192 friend class PropertySetCSSStyleDeclaration; | 190 friend class PropertySetCSSStyleDeclaration; |
193 }; | 191 }; |
194 | 192 |
195 class ImmutableStylePropertySet : public StylePropertySet { | 193 class ImmutableStylePropertySet : public StylePropertySet { |
196 // This is needed because we malloc() space for an | 194 // This is needed because we malloc() space for an |
197 // ImmutableStylePropertySet plus following properties, as a performance | 195 // ImmutableStylePropertySet plus following properties, as a performance |
198 // tweak. | 196 // tweak. |
199 NEW_DELETE_SAME_AS_MALLOC_FREE; | 197 NEW_DELETE_SAME_AS_MALLOC_FREE; |
200 public: | 198 public: |
201 ImmutableStylePropertySet(const CSSProperty*, unsigned count, CSSParserMode)
; | |
202 ~ImmutableStylePropertySet(); | 199 ~ImmutableStylePropertySet(); |
| 200 static PassRefPtr<ImmutableStylePropertySet> create(const CSSProperty* prope
rties, unsigned count, CSSParserMode); |
203 | 201 |
204 void* m_storage; | 202 void* m_storage; |
| 203 |
| 204 private: |
| 205 ImmutableStylePropertySet(const CSSProperty*, unsigned count, CSSParserMode)
; |
205 }; | 206 }; |
206 | 207 |
207 inline const CSSValue** StylePropertySet::immutableValueArray() const | 208 inline const CSSValue** StylePropertySet::immutableValueArray() const |
208 { | 209 { |
209 ASSERT(!m_isMutable); | 210 ASSERT(!m_isMutable); |
210 return reinterpret_cast<const CSSValue**>(const_cast<const void**>((&static_
cast<const ImmutableStylePropertySet*>(this)->m_storage))); | 211 return reinterpret_cast<const CSSValue**>(const_cast<const void**>((&static_
cast<const ImmutableStylePropertySet*>(this)->m_storage))); |
211 } | 212 } |
212 | 213 |
213 inline const StylePropertyMetadata* StylePropertySet::immutableMetadataArray() c
onst | 214 inline const StylePropertyMetadata* StylePropertySet::immutableMetadataArray() c
onst |
214 { | 215 { |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
269 | 270 |
270 if (m_isMutable) | 271 if (m_isMutable) |
271 delete static_cast<MutableStylePropertySet*>(this); | 272 delete static_cast<MutableStylePropertySet*>(this); |
272 else | 273 else |
273 delete static_cast<ImmutableStylePropertySet*>(this); | 274 delete static_cast<ImmutableStylePropertySet*>(this); |
274 } | 275 } |
275 | 276 |
276 } // namespace WebCore | 277 } // namespace WebCore |
277 | 278 |
278 #endif // StylePropertySet_h | 279 #endif // StylePropertySet_h |
OLD | NEW |