KeyedVector.h revision dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0
1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/*
2dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project *  keyed_vector.h
3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project *  Android
4dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project *
5dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project *  Created on 11/18/05.
6dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project *  Copyright 2005 The Android Open Source Project
7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project *
8dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */
9dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
10dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#ifndef ANDROID_KEYED_VECTOR_H
11dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#define ANDROID_KEYED_VECTOR_H
12dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
13dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <assert.h>
14dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdint.h>
15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <sys/types.h>
16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
17dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "tinyutils/SortedVector.h"
18dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include "tinyutils/TypeHelpers.h"
19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectnamespace android {
23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
24dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate <typename KEY, typename VALUE>
25dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectclass KeyedVector
26dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectpublic:
28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    typedef KEY    key_type;
29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    typedef VALUE  value_type;
30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
31dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline                  KeyedVector();
32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*
34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * empty the vector
35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline  void            clear()                     { mVector.clear(); }
38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*!
40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * vector stats
41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    //! returns number of items in the vector
44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline  size_t          size() const                { return mVector.size(); }
45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    //! returns wether or not the vector is empty
46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline  bool            isEmpty() const             { return mVector.isEmpty(); }
47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    //! returns how many items can be stored without reallocating the backing store
48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline  size_t          capacity() const            { return mVector.capacity(); }
49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    //! setst the capacity. capacity can never be reduced less than size()
50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline ssize_t          setCapacity(size_t size)    { return mVector.setCapacity(size); }
51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*!
53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * accessors
54dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
55dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            const VALUE&    valueFor(const KEY& key) const;
56dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            const VALUE&    valueAt(size_t index) const;
57dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            const KEY&      keyAt(size_t index) const;
58dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         indexOfKey(const KEY& key) const;
59dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
60dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*!
61dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * modifing the array
62dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
63dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
64dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            VALUE&          editValueFor(const KEY& key);
65dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            VALUE&          editValueAt(size_t index);
66dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
67dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            /*!
68dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project             * add/insert/replace items
69dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project             */
70dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
71dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         add(const KEY& key, const VALUE& item);
72dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         replaceValueFor(const KEY& key, const VALUE& item);
73dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         replaceValueAt(size_t index, const VALUE& item);
74dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
75dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*!
76dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * remove items
77dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
78dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
79dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         removeItem(const KEY& key);
80dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         removeItemsAt(size_t index, size_t count = 1);
81dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
82dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprivate:
83dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            SortedVector< key_value_pair_t<KEY, VALUE> >    mVector;
84dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project};
85dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
86dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
87dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
88dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/**
89dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Variation of KeyedVector that holds a default value to return when
90dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * valueFor() is called with a key that doesn't exist.
91dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */
92dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate <typename KEY, typename VALUE>
93dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectclass DefaultKeyedVector : public KeyedVector<KEY, VALUE>
94dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
95dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectpublic:
96dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline                  DefaultKeyedVector(const VALUE& defValue = VALUE());
97dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            const VALUE&    valueFor(const KEY& key) const;
98dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
99dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprivate:
100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            VALUE                                           mDefault;
101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project};
102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectKeyedVector<KEY,VALUE>::KeyedVector()
107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
108dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::indexOfKey(const KEY& key) const {
112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.indexOf( key_value_pair_t<KEY,VALUE>(key) );
113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
116dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst VALUE& KeyedVector<KEY,VALUE>::valueFor(const KEY& key) const {
117dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    ssize_t i = indexOfKey(key);
118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    assert(i>=0);
119dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.itemAt(i).value;
120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
121dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
123dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst VALUE& KeyedVector<KEY,VALUE>::valueAt(size_t index) const {
124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.itemAt(index).value;
125dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
127dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst KEY& KeyedVector<KEY,VALUE>::keyAt(size_t index) const {
129dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.itemAt(index).key;
130dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
131dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
132dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
133dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectVALUE& KeyedVector<KEY,VALUE>::editValueFor(const KEY& key) {
134dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    ssize_t i = indexOfKey(key);
135dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    assert(i>=0);
136dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.editItemAt(i).value;
137dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
138dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
139dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
140dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectVALUE& KeyedVector<KEY,VALUE>::editValueAt(size_t index) {
141dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.editItemAt(index).value;
142dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
143dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
144dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
145dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::add(const KEY& key, const VALUE& value) {
146dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.add( key_value_pair_t<KEY,VALUE>(key, value) );
147dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
148dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
149dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
150dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::replaceValueFor(const KEY& key, const VALUE& value) {
151dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    key_value_pair_t<KEY,VALUE> pair(key, value);
152dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    mVector.remove(pair);
153dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.add(pair);
154dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
155dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
156dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
157dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::replaceValueAt(size_t index, const VALUE& item) {
158dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    if (index<size()) {
159dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        mVector.editValueAt(index).value = item;
160dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        return index;
161dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
162dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return BAD_INDEX;
163dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
164dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
165dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
166dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::removeItem(const KEY& key) {
167dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.remove(key_value_pair_t<KEY,VALUE>(key));
168dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
169dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
170dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
171dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY, VALUE>::removeItemsAt(size_t index, size_t count) {
172dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.removeItemsAt(index, count);
173dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
174dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
175dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
176dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
177dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
178dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectDefaultKeyedVector<KEY,VALUE>::DefaultKeyedVector(const VALUE& defValue)
179dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    : mDefault(defValue)
180dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
181dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
182dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
183dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
184dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst VALUE& DefaultKeyedVector<KEY,VALUE>::valueFor(const KEY& key) const {
185dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    ssize_t i = indexOfKey(key);
186dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return i >= 0 ? KeyedVector<KEY,VALUE>::valueAt(i) : mDefault;
187dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
188dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
189dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}; // namespace android
190dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
191dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
192dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
193dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#endif // ANDROID_KEYED_VECTOR_H
194