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

Side by Side Diff: Source/core/dom/AttributeCollection.h

Issue 1304043002: Make classes and structures in core/dom fast-allocated. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 4 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/dom/Attribute.h ('k') | Source/core/dom/CSSSelectorWatch.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) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * Copyright (C) 2014 Apple Inc. All rights reserved. 3 * Copyright (C) 2014 Apple Inc. All rights reserved.
4 * Copyright (C) 2014 Samsung Electronics. All rights reserved. 4 * Copyright (C) 2014 Samsung Electronics. All rights reserved.
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 are 7 * modification, are permitted provided that the following conditions are
8 * met: 8 * met:
9 * 9 *
10 * * Redistributions of source code must retain the above copyright 10 * * Redistributions of source code must retain the above copyright
(...skipping 17 matching lines...) Expand all
28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */ 31 */
32 32
33 #ifndef AttributeCollection_h 33 #ifndef AttributeCollection_h
34 #define AttributeCollection_h 34 #define AttributeCollection_h
35 35
36 #include "core/dom/Attr.h" 36 #include "core/dom/Attr.h"
37 #include "core/dom/Attribute.h" 37 #include "core/dom/Attribute.h"
38 #include "wtf/Allocator.h"
38 #include "wtf/Vector.h" 39 #include "wtf/Vector.h"
39 40
40 namespace blink { 41 namespace blink {
41 42
42 template <typename Container, typename ContainerMemberType = Container> 43 template <typename Container, typename ContainerMemberType = Container>
43 class AttributeCollectionGeneric { 44 class AttributeCollectionGeneric {
45 STACK_ALLOCATED();
44 public: 46 public:
45 using ValueType = typename Container::ValueType; 47 using ValueType = typename Container::ValueType;
46 using iterator = ValueType*; 48 using iterator = ValueType*;
47 49
48 AttributeCollectionGeneric(Container& attributes) 50 AttributeCollectionGeneric(Container& attributes)
49 : m_attributes(attributes) 51 : m_attributes(attributes)
50 { } 52 { }
51 53
52 ValueType& operator[](unsigned index) const { return at(index); } 54 ValueType& operator[](unsigned index) const { return at(index); }
53 ValueType& at(unsigned index) const 55 ValueType& at(unsigned index) const
(...skipping 14 matching lines...) Expand all
68 size_t findIndex(const AtomicString& name, bool shouldIgnoreCase) const; 70 size_t findIndex(const AtomicString& name, bool shouldIgnoreCase) const;
69 size_t findIndex(Attr*) const; 71 size_t findIndex(Attr*) const;
70 72
71 protected: 73 protected:
72 size_t findSlowCase(const AtomicString& name, bool shouldIgnoreAttributeCase ) const; 74 size_t findSlowCase(const AtomicString& name, bool shouldIgnoreAttributeCase ) const;
73 75
74 ContainerMemberType m_attributes; 76 ContainerMemberType m_attributes;
75 }; 77 };
76 78
77 class AttributeArray { 79 class AttributeArray {
80 DISALLOW_ALLOCATION();
78 public: 81 public:
79 using ValueType = const Attribute; 82 using ValueType = const Attribute;
80 83
81 AttributeArray(const Attribute* array, unsigned size) 84 AttributeArray(const Attribute* array, unsigned size)
82 : m_array(array) 85 : m_array(array)
83 , m_size(size) 86 , m_size(size)
84 { } 87 { }
85 88
86 const Attribute* data() const { return m_array; } 89 const Attribute* data() const { return m_array; }
87 unsigned size() const { return m_size; } 90 unsigned size() const { return m_size; }
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 if (equalPossiblyIgnoringCase(name, it->name().toString(), shouldIgn oreAttributeCase)) 215 if (equalPossiblyIgnoringCase(name, it->name().toString(), shouldIgn oreAttributeCase))
213 return index; 216 return index;
214 } 217 }
215 } 218 }
216 return kNotFound; 219 return kNotFound;
217 } 220 }
218 221
219 } // namespace blink 222 } // namespace blink
220 223
221 #endif // AttributeCollection_h 224 #endif // AttributeCollection_h
OLDNEW
« no previous file with comments | « Source/core/dom/Attribute.h ('k') | Source/core/dom/CSSSelectorWatch.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698