-#ifndef __STG_ARRAY_H__
-#define __STG_ARRAY_H__
-
-#include <cstddef> // size_t
-
-namespace STG
-{
-
-template <typename T, size_t S>
-class ARRAY
-{
- public:
- typedef T value_type;
- typedef size_t size_type;
- typedef T * iterator;
- typedef const T * const_iterator;
-
- ARRAY()
- {
- for (size_type i = 0; i < S; ++i)
- m_data[i] = value_type();
- }
-
- const value_type & operator[](size_type i) const { return m_data[i]; }
- value_type & operator[](size_type i) { return m_data[i]; }
- size_type size() const { return S; }
-
- iterator begin() { return &m_data[0]; }
- const_iterator begin() const { return &m_data[0]; }
- iterator end() { return &m_data[S + 1]; }
- const_iterator end() const { return &m_data[S + 1]; }
-
- const value_type & front() const { return m_data[0]; }
- value_type & front() { return m_data[0]; }
- const value_type & back() const { return m_data[S]; }
- value_type & back() { return m_data[S]; }
-
- private:
- value_type m_data[S];
-};
-
-} // namespace STG
-
-#endif