Simple static array class






2.14/5 (3 votes)
Mar 21, 2002

63638
A simple static array class that provides range checking and non-zero indexing
Introduction
CStaticArray
is a template based class that encapsulates a C style single dimensional static array.
//////////////////////////////////////////////////////// // CStaticArray // provides: // 1. Range checking // 2. Non-zero indexing // 3. Simple initialisation //////////////////////////////////////////////////////// template <class T,long cFirstIndex,long cLastIndex> class CStaticArray { public: CStaticArray(){} CStaticArray(const T& t){Initialise(t);} long GetSize()const {return cLastIndex-cFirstIndex+1;} long GetFirstIndex()const {return cFirstIndex;} long GetLastIndex()const {return cLastIndex;} bool IsValidIndex(long nIndex) const { return nIndex>=GetFirstIndex() && nIndex<=GetLastIndex(); } size_t GetNoOfBytes()const { return GetSize()*sizeof(T); } T& operator[](long nIndex) { ASSERT(IsValidIndex(nIndex)); return m_Data[nIndex-cFirstIndex]; } const T& operator[](long nIndex)const { ASSERT(IsValidIndex(nIndex)); return m_Data[nIndex-cFirstIndex]; } void Initialise(const T& t) { for(long i=0;i<GetSize();i++) m_Data[i]=t; } void Initialise(long nStart,long nEnd,const T& t) { for(long i=nStart;i<=nEnd;i++) (*this)[i]=t; } operator const T*()const {return m_Data;} operator T*() {return m_Data;} protected: T m_Data[cLastIndex-cFirstIndex+1]; };