aboutsummaryrefslogtreecommitdiff
path: root/mp/src/public/tier1/utlarray.h
diff options
context:
space:
mode:
Diffstat (limited to 'mp/src/public/tier1/utlarray.h')
-rw-r--r--mp/src/public/tier1/utlarray.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/mp/src/public/tier1/utlarray.h b/mp/src/public/tier1/utlarray.h
index 36850860..ce5ffe8b 100644
--- a/mp/src/public/tier1/utlarray.h
+++ b/mp/src/public/tier1/utlarray.h
@@ -43,6 +43,8 @@ class CUtlArray : public base_array_t
{
public:
typedef T ElemType_t;
+ typedef T* iterator;
+ typedef const T* const_iterator;
CUtlArray();
CUtlArray( T* pMemory, size_t count );
@@ -59,6 +61,13 @@ public:
T& Random();
const T& Random() const;
+ // STL compatible member functions. These allow easier use of std::sort
+ // and they are forward compatible with the C++ 11 range-based for loops.
+ iterator begin();
+ const_iterator begin() const;
+ iterator end();
+ const_iterator end() const;
+
T* Base();
const T* Base() const;
@@ -131,6 +140,30 @@ inline CUtlArray<T, MAX_SIZE>::CUtlArray( CUtlArray const& vec )
}
template< typename T, size_t MAX_SIZE >
+typename CUtlArray<T, MAX_SIZE>::iterator CUtlArray<T, MAX_SIZE>::begin()
+{
+ return Base();
+}
+
+template< typename T, size_t MAX_SIZE >
+typename CUtlArray<T, MAX_SIZE>::const_iterator CUtlArray<T, MAX_SIZE>::begin() const
+{
+ return Base();
+}
+
+template< typename T, size_t MAX_SIZE >
+typename CUtlArray<T, MAX_SIZE>::iterator CUtlArray<T, MAX_SIZE>::end()
+{
+ return Base() + Count();
+}
+
+template< typename T, size_t MAX_SIZE >
+typename CUtlArray<T, MAX_SIZE>::const_iterator CUtlArray<T, MAX_SIZE>::end() const
+{
+ return Base() + Count();
+}
+
+template< typename T, size_t MAX_SIZE >
inline T *CUtlArray<T, MAX_SIZE>::Base()
{
return &m_Memory[0];