1dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/*
29857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * Copyright 2005 The Android Open Source Project
3dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project *
49857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * Licensed under the Apache License, Version 2.0 (the "License");
59857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * you may not use this file except in compliance with the License.
69857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * You may obtain a copy of the License at
7dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project *
89857d99eecc389389da261a72461322d5cfb8eebMathias Agopian *      http://www.apache.org/licenses/LICENSE-2.0
99857d99eecc389389da261a72461322d5cfb8eebMathias Agopian *
109857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * Unless required by applicable law or agreed to in writing, software
119857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * distributed under the License is distributed on an "AS IS" BASIS,
129857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * See the License for the specific language governing permissions and
149857d99eecc389389da261a72461322d5cfb8eebMathias Agopian * limitations under the License.
15dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */
16dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
179857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#ifndef ANDROID_PIXELFLINGER_KEYED_VECTOR_H
189857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#define ANDROID_PIXELFLINGER_KEYED_VECTOR_H
19dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
20dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <assert.h>
21dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <stdint.h>
22dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project#include <sys/types.h>
23dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
249857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#include "Errors.h"
259857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#include "SortedVector.h"
269857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#include "TypeHelpers.h"
27dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
28dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
29dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
30dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectnamespace android {
319857d99eecc389389da261a72461322d5cfb8eebMathias Agopiannamespace tinyutils {
32dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
33dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate <typename KEY, typename VALUE>
34dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectclass KeyedVector
35dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
36dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectpublic:
37dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    typedef KEY    key_type;
38dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    typedef VALUE  value_type;
39dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
40dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline                  KeyedVector();
41dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
42dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*
43dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * empty the vector
44dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
45dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
46dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline  void            clear()                     { mVector.clear(); }
47dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
48dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*!
49dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * vector stats
50dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
51dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
52dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    //! returns number of items in the vector
53dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline  size_t          size() const                { return mVector.size(); }
54dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    //! returns wether or not the vector is empty
55dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline  bool            isEmpty() const             { return mVector.isEmpty(); }
56dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    //! returns how many items can be stored without reallocating the backing store
57dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline  size_t          capacity() const            { return mVector.capacity(); }
58dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    //! setst the capacity. capacity can never be reduced less than size()
59dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline ssize_t          setCapacity(size_t size)    { return mVector.setCapacity(size); }
60dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
61dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*!
62dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * accessors
63dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
64dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            const VALUE&    valueFor(const KEY& key) const;
65dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            const VALUE&    valueAt(size_t index) const;
66dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            const KEY&      keyAt(size_t index) const;
67dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         indexOfKey(const KEY& key) const;
68dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
69dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*!
70dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * modifing the array
71dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
72dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
73dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            VALUE&          editValueFor(const KEY& key);
74dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            VALUE&          editValueAt(size_t index);
75dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
76dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            /*!
77dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project             * add/insert/replace items
78dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project             */
79dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
80dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         add(const KEY& key, const VALUE& item);
81dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         replaceValueFor(const KEY& key, const VALUE& item);
82dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         replaceValueAt(size_t index, const VALUE& item);
83dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
84dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    /*!
85dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     * remove items
86dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project     */
87dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
88dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         removeItem(const KEY& key);
89dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            ssize_t         removeItemsAt(size_t index, size_t count = 1);
90dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
91dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprivate:
92dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            SortedVector< key_value_pair_t<KEY, VALUE> >    mVector;
93dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project};
94dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
95dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
96dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
97dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project/**
98dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * Variation of KeyedVector that holds a default value to return when
99dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project * valueFor() is called with a key that doesn't exist.
100dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project */
101dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate <typename KEY, typename VALUE>
102dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectclass DefaultKeyedVector : public KeyedVector<KEY, VALUE>
103dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
104dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectpublic:
105dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    inline                  DefaultKeyedVector(const VALUE& defValue = VALUE());
106dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            const VALUE&    valueFor(const KEY& key) const;
107dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
108dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectprivate:
109dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project            VALUE                                           mDefault;
110dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project};
111dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
112dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
113dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
114dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
115dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectKeyedVector<KEY,VALUE>::KeyedVector()
116dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
117dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
118dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
119dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
120dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::indexOfKey(const KEY& key) const {
121dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.indexOf( key_value_pair_t<KEY,VALUE>(key) );
122dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
123dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
124dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
125dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst VALUE& KeyedVector<KEY,VALUE>::valueFor(const KEY& key) const {
126dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    ssize_t i = indexOfKey(key);
127dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    assert(i>=0);
128dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.itemAt(i).value;
129dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
130dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
131dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
132dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst VALUE& KeyedVector<KEY,VALUE>::valueAt(size_t index) const {
133dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.itemAt(index).value;
134dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
135dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
136dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
137dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst KEY& KeyedVector<KEY,VALUE>::keyAt(size_t index) const {
138dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.itemAt(index).key;
139dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
140dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
141dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
142dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectVALUE& KeyedVector<KEY,VALUE>::editValueFor(const KEY& key) {
143dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    ssize_t i = indexOfKey(key);
144dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    assert(i>=0);
145dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.editItemAt(i).value;
146dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
147dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
148dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
149dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectVALUE& KeyedVector<KEY,VALUE>::editValueAt(size_t index) {
150dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.editItemAt(index).value;
151dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
152dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
153dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
154dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::add(const KEY& key, const VALUE& value) {
155dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.add( key_value_pair_t<KEY,VALUE>(key, value) );
156dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
157dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
158dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
159dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::replaceValueFor(const KEY& key, const VALUE& value) {
160dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    key_value_pair_t<KEY,VALUE> pair(key, value);
161dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    mVector.remove(pair);
162dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.add(pair);
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>::replaceValueAt(size_t index, const VALUE& item) {
167dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    if (index<size()) {
168dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        mVector.editValueAt(index).value = item;
169dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project        return index;
170dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    }
171dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return BAD_INDEX;
172dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
173dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
174dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
175dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY,VALUE>::removeItem(const KEY& key) {
176dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.remove(key_value_pair_t<KEY,VALUE>(key));
177dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
178dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
179dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
180dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectssize_t KeyedVector<KEY, VALUE>::removeItemsAt(size_t index, size_t count) {
181dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return mVector.removeItemsAt(index, count);
182dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
183dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
184dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
185dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
186dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
187dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source ProjectDefaultKeyedVector<KEY,VALUE>::DefaultKeyedVector(const VALUE& defValue)
188dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    : mDefault(defValue)
189dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project{
190dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
191dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
192dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projecttemplate<typename KEY, typename VALUE> inline
193dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Projectconst VALUE& DefaultKeyedVector<KEY,VALUE>::valueFor(const KEY& key) const {
194dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    ssize_t i = indexOfKey(key);
195dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project    return i >= 0 ? KeyedVector<KEY,VALUE>::valueAt(i) : mDefault;
196dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project}
197dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
1989857d99eecc389389da261a72461322d5cfb8eebMathias Agopian} // namespace tinyutils
1999857d99eecc389389da261a72461322d5cfb8eebMathias Agopian} // namespace android
200dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
201dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project// ---------------------------------------------------------------------------
202dd7bc3319deb2b77c5d07a51b7d6cd7e11b5beb0The Android Open Source Project
2039857d99eecc389389da261a72461322d5cfb8eebMathias Agopian#endif // ANDROID_PIXELFLINGER_KEYED_VECTOR_H
204