aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/linden/indra/llcommon/lldarray.h
diff options
context:
space:
mode:
Diffstat (limited to 'linden/indra/llcommon/lldarray.h')
-rw-r--r--linden/indra/llcommon/lldarray.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/linden/indra/llcommon/lldarray.h b/linden/indra/llcommon/lldarray.h
index 291da19..7942e77 100644
--- a/linden/indra/llcommon/lldarray.h
+++ b/linden/indra/llcommon/lldarray.h
@@ -189,16 +189,17 @@ public:
189 189
190 void reset() { mVector.resize(0); mIndexMap.resize(0); } 190 void reset() { mVector.resize(0); mIndexMap.resize(0); }
191 bool empty() const { return mVector.empty(); } 191 bool empty() const { return mVector.empty(); }
192 size_type size() const { return mVector.empty(); } 192 size_type size() const { return mVector.size(); }
193 193
194 Type& operator[](const Key& k) 194 Type& operator[](const Key& k)
195 { 195 {
196 typename std::map<Key, U32>::iterator iter = mIndexMap.find(k); 196 typename std::map<Key, U32>::const_iterator iter = mIndexMap.find(k);
197 if (iter == mIndexMap.end()) 197 if (iter == mIndexMap.end())
198 { 198 {
199 U32 n = mVector.size(); 199 U32 n = mVector.size();
200 mIndexMap[k] = n; 200 mIndexMap[k] = n;
201 mVector.resize(n+1); 201 mVector.resize(n+1);
202 llassert(mVector.size() == mIndexMap.size());
202 return mVector[n]; 203 return mVector[n];
203 } 204 }
204 else 205 else
@@ -206,7 +207,19 @@ public:
206 return mVector[iter->second]; 207 return mVector[iter->second];
207 } 208 }
208 } 209 }
209 210
211 const_iterator find(const Key& k) const
212 {
213 typename std::map<Key, U32>::const_iterator iter = mIndexMap.find(k);
214 if(iter == mIndexMap.end())
215 {
216 return mVector.end();
217 }
218 else
219 {
220 return mVector.begin() + iter->second;
221 }
222 }
210}; 223};
211 224
212#endif 225#endif