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

Side by Side Diff: Source/wtf/HashSet.h

Issue 17045008: HashSet: reverse the order of the template arguments at alternate 'find', 'contains' and 'add' meth… (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 6 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/svg/animation/SVGSMILElement.cpp ('k') | Source/wtf/text/AtomicString.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) 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 iterator end() const; 61 iterator end() const;
62 62
63 iterator find(const ValueType&) const; 63 iterator find(const ValueType&) const;
64 bool contains(const ValueType&) const; 64 bool contains(const ValueType&) const;
65 65
66 // An alternate version of find() that finds the object by hashing and c omparing 66 // An alternate version of find() that finds the object by hashing and c omparing
67 // with some other type, to avoid the cost of type conversion. HashTrans lator 67 // with some other type, to avoid the cost of type conversion. HashTrans lator
68 // must have the following function members: 68 // must have the following function members:
69 // static unsigned hash(const T&); 69 // static unsigned hash(const T&);
70 // static bool equal(const ValueType&, const T&); 70 // static bool equal(const ValueType&, const T&);
71 // FIXME: We should reverse the order of the template arguments so that callers 71 template<typename HashTranslator, typename T> iterator find(const T&) co nst;
72 // can just pass the translator and let the compiler deduce T. 72 template<typename HashTranslator, typename T> bool contains(const T&) co nst;
73 template<typename T, typename HashTranslator> iterator find(const T&) co nst;
74 template<typename T, typename HashTranslator> bool contains(const T&) co nst;
75 73
76 // The return value is a pair of an interator to the new value's locatio n, 74 // The return value is a pair of an interator to the new value's locatio n,
77 // and a bool that is true if an new entry was added. 75 // and a bool that is true if an new entry was added.
78 AddResult add(const ValueType&); 76 AddResult add(const ValueType&);
79 77
80 // An alternate version of add() that finds the object by hashing and co mparing 78 // An alternate version of add() that finds the object by hashing and co mparing
81 // with some other type, to avoid the cost of type conversion if the obj ect is already 79 // with some other type, to avoid the cost of type conversion if the obj ect is already
82 // in the table. HashTranslator must have the following function members : 80 // in the table. HashTranslator must have the following function members :
83 // static unsigned hash(const T&); 81 // static unsigned hash(const T&);
84 // static bool equal(const ValueType&, const T&); 82 // static bool equal(const ValueType&, const T&);
85 // static translate(ValueType&, const T&, unsigned hashCode); 83 // static translate(ValueType&, const T&, unsigned hashCode);
86 // FIXME: We should reverse the order of the template arguments so that callers 84 template<typename HashTranslator, typename T> AddResult add(const T&);
87 // can just pass the translator and let the compiler deduce T.
88 template<typename T, typename HashTranslator> AddResult add(const T&);
89 85
90 void remove(const ValueType&); 86 void remove(const ValueType&);
91 void remove(iterator); 87 void remove(iterator);
92 void clear(); 88 void clear();
93 89
94 static bool isValidValue(const ValueType&); 90 static bool isValidValue(const ValueType&);
95 91
96 private: 92 private:
97 friend void deleteAllValues<>(const HashSet&); 93 friend void deleteAllValues<>(const HashSet&);
98 94
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 return m_impl.find(value); 151 return m_impl.find(value);
156 } 152 }
157 153
158 template<typename T, typename U, typename V> 154 template<typename T, typename U, typename V>
159 inline bool HashSet<T, U, V>::contains(const ValueType& value) const 155 inline bool HashSet<T, U, V>::contains(const ValueType& value) const
160 { 156 {
161 return m_impl.contains(value); 157 return m_impl.contains(value);
162 } 158 }
163 159
164 template<typename Value, typename HashFunctions, typename Traits> 160 template<typename Value, typename HashFunctions, typename Traits>
165 template<typename T, typename HashTranslator> 161 template<typename HashTranslator, typename T>
166 typename HashSet<Value, HashFunctions, Traits>::iterator 162 typename HashSet<Value, HashFunctions, Traits>::iterator
167 inline HashSet<Value, HashFunctions, Traits>::find(const T& value) const 163 inline HashSet<Value, HashFunctions, Traits>::find(const T& value) const
168 { 164 {
169 return m_impl.template find<HashSetTranslatorAdapter<HashTranslator> >(v alue); 165 return m_impl.template find<HashSetTranslatorAdapter<HashTranslator> >(v alue);
170 } 166 }
171 167
172 template<typename Value, typename HashFunctions, typename Traits> 168 template<typename Value, typename HashFunctions, typename Traits>
173 template<typename T, typename HashTranslator> 169 template<typename HashTranslator, typename T>
174 inline bool HashSet<Value, HashFunctions, Traits>::contains(const T& value) const 170 inline bool HashSet<Value, HashFunctions, Traits>::contains(const T& value) const
175 { 171 {
176 return m_impl.template contains<HashSetTranslatorAdapter<HashTranslator> >(value); 172 return m_impl.template contains<HashSetTranslatorAdapter<HashTranslator> >(value);
177 } 173 }
178 174
179 template<typename T, typename U, typename V> 175 template<typename T, typename U, typename V>
180 inline typename HashSet<T, U, V>::AddResult HashSet<T, U, V>::add(const Valu eType& value) 176 inline typename HashSet<T, U, V>::AddResult HashSet<T, U, V>::add(const Valu eType& value)
181 { 177 {
182 return m_impl.add(value); 178 return m_impl.add(value);
183 } 179 }
184 180
185 template<typename Value, typename HashFunctions, typename Traits> 181 template<typename Value, typename HashFunctions, typename Traits>
186 template<typename T, typename HashTranslator> 182 template<typename HashTranslator, typename T>
187 inline typename HashSet<Value, HashFunctions, Traits>::AddResult 183 inline typename HashSet<Value, HashFunctions, Traits>::AddResult
188 HashSet<Value, HashFunctions, Traits>::add(const T& value) 184 HashSet<Value, HashFunctions, Traits>::add(const T& value)
189 { 185 {
190 return m_impl.template addPassingHashCode<HashSetTranslatorAdapter<HashT ranslator> >(value, value); 186 return m_impl.template addPassingHashCode<HashSetTranslatorAdapter<HashT ranslator> >(value, value);
191 } 187 }
192 188
193 template<typename T, typename U, typename V> 189 template<typename T, typename U, typename V>
194 inline void HashSet<T, U, V>::remove(iterator it) 190 inline void HashSet<T, U, V>::remove(iterator it)
195 { 191 {
196 if (it.m_impl == m_impl.end()) 192 if (it.m_impl == m_impl.end())
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
254 iterator end = collection.end(); 250 iterator end = collection.end();
255 for (unsigned i = 0; it != end; ++it, ++i) 251 for (unsigned i = 0; it != end; ++it, ++i)
256 vector[i] = *it; 252 vector[i] = *it;
257 } 253 }
258 254
259 } // namespace WTF 255 } // namespace WTF
260 256
261 using WTF::HashSet; 257 using WTF::HashSet;
262 258
263 #endif /* WTF_HashSet_h */ 259 #endif /* WTF_HashSet_h */
OLDNEW
« no previous file with comments | « Source/core/svg/animation/SVGSMILElement.cpp ('k') | Source/wtf/text/AtomicString.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698