Lines Matching refs:KEY
32 template <typename KEY, typename VALUE>
36 typedef KEY key_type;
63 const VALUE& valueFor(const KEY& key) const;
65 const KEY& keyAt(size_t index) const;
66 ssize_t indexOfKey(const KEY& key) const;
72 VALUE& editValueFor(const KEY& key);
79 ssize_t add(const KEY& key, const VALUE& item);
80 ssize_t replaceValueFor(const KEY& key, const VALUE& item);
87 ssize_t removeItem(const KEY& key);
91 SortedVector< key_value_pair_t<KEY, VALUE> > mVector;
94 // KeyedVector<KEY, VALUE> can be trivially moved using memcpy() because its
96 template<typename KEY, typename VALUE> struct trait_trivial_move<KeyedVector<KEY, VALUE> > {
97 enum { value = trait_trivial_move<SortedVector< key_value_pair_t<KEY, VALUE> > >::value };
105 * valueFor() is called with a key that doesn't exist.
107 template <typename KEY, typename VALUE>
108 class DefaultKeyedVector : public KeyedVector<KEY, VALUE>
112 const VALUE& valueFor(const KEY& key) const;
120 template<typename KEY, typename VALUE> inline
121 KeyedVector<KEY,VALUE>::KeyedVector()
125 template<typename KEY, typename VALUE> inline
126 ssize_t KeyedVector<KEY,VALUE>::indexOfKey(const KEY& key) const {
127 return mVector.indexOf( key_value_pair_t<KEY,VALUE>(key) );
130 template<typename KEY, typename VALUE> inline
131 const VALUE& KeyedVector<KEY,VALUE>::valueFor(const KEY& key) const {
132 ssize_t i = this->indexOfKey(key);
137 template<typename KEY, typename VALUE> inline
138 const VALUE& KeyedVector<KEY,VALUE>::valueAt(size_t index) const {
142 template<typename KEY, typename VALUE> inline
143 const KEY& KeyedVector<KEY,VALUE>::keyAt(size_t index) const {
144 return mVector.itemAt(index).key;
147 template<typename KEY, typename VALUE> inline
148 VALUE& KeyedVector<KEY,VALUE>::editValueFor(const KEY& key) {
149 ssize_t i = this->indexOfKey(key);
154 template<typename KEY, typename VALUE> inline
155 VALUE& KeyedVector<KEY,VALUE>::editValueAt(size_t index) {
159 template<typename KEY, typename VALUE> inline
160 ssize_t KeyedVector<KEY,VALUE>::add(const KEY& key, const VALUE& value) {
161 return mVector.add( key_value_pair_t<KEY,VALUE>(key, value) );
164 template<typename KEY, typename VALUE> inline
165 ssize_t KeyedVector<KEY,VALUE>::replaceValueFor(const KEY& key, const VALUE& value) {
166 key_value_pair_t<KEY,VALUE> pair(key, value);
171 template<typename KEY, typename VALUE> inline
172 ssize_t KeyedVector<KEY,VALUE>::replaceValueAt(size_t index, const VALUE& item) {
180 template<typename KEY, typename VALUE> inline
181 ssize_t KeyedVector<KEY,VALUE>::removeItem(const KEY& key) {
182 return mVector.remove(key_value_pair_t<KEY,VALUE>(key));
185 template<typename KEY, typename VALUE> inline
186 ssize_t KeyedVector<KEY, VALUE>::removeItemsAt(size_t index, size_t count) {
192 template<typename KEY, typename VALUE> inline
193 DefaultKeyedVector<KEY,VALUE>::DefaultKeyedVector(const VALUE& defValue)
198 template<typename KEY, typename VALUE> inline
199 const VALUE& DefaultKeyedVector<KEY,VALUE>::valueFor(const KEY& key) const {
200 ssize_t i = this->indexOfKey(key);
201 return i >= 0 ? KeyedVector<KEY,VALUE>::valueAt(i) : mDefault;