]> git.stg.codes - stg.git/blobdiff - include/stg/array.h
Implemented some user management functions.
[stg.git] / include / stg / array.h
diff --git a/include/stg/array.h b/include/stg/array.h
new file mode 100644 (file)
index 0000000..8550f16
--- /dev/null
@@ -0,0 +1,44 @@
+#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