From 0d8dceea4310fde5706b3ce1c70609d72a38efdf Mon Sep 17 00:00:00 2001 From: John Schoenick Date: Wed, 9 Sep 2015 18:35:41 -0700 Subject: Updated the SDK with the latest code from the TF and HL2 branches. --- mp/src/public/tier1/utlarray.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'mp/src/public/tier1/utlarray.h') 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; @@ -130,6 +139,30 @@ inline CUtlArray::CUtlArray( CUtlArray const& vec ) } } +template< typename T, size_t MAX_SIZE > +typename CUtlArray::iterator CUtlArray::begin() +{ + return Base(); +} + +template< typename T, size_t MAX_SIZE > +typename CUtlArray::const_iterator CUtlArray::begin() const +{ + return Base(); +} + +template< typename T, size_t MAX_SIZE > +typename CUtlArray::iterator CUtlArray::end() +{ + return Base() + Count(); +} + +template< typename T, size_t MAX_SIZE > +typename CUtlArray::const_iterator CUtlArray::end() const +{ + return Base() + Count(); +} + template< typename T, size_t MAX_SIZE > inline T *CUtlArray::Base() { -- cgit v1.2.3