diff --git a/lib/glacier/container/array.h b/lib/glacier/container/array.h index 171550b..62f9f87 100644 --- a/lib/glacier/container/array.h +++ b/lib/glacier/container/array.h @@ -2,6 +2,7 @@ #include +#include "glacier/container/array_iter.h" #include "glacier/container/array_view.h" namespace glcr { @@ -37,6 +38,13 @@ class Array { uint64_t size() const { return size_; } bool empty() const { return size_ == 0; } + typedef ArrayIterator Iterator; + + Iterator begin() { return {data_, size_}; } + const Iterator begin() const { return {data_, size_}; } + Iterator end() { return {nullptr, 0}; } + const Iterator end() const { return {nullptr, 0}; } + private: T* data_; uint64_t size_; diff --git a/lib/glacier/container/array_view.h b/lib/glacier/container/array_view.h index 684d6ac..f4415e8 100644 --- a/lib/glacier/container/array_view.h +++ b/lib/glacier/container/array_view.h @@ -2,6 +2,8 @@ #include +#include "glacier/container/array_iter.h" + namespace glcr { template @@ -26,6 +28,23 @@ class ArrayView { uint64_t size() const { return size_; } bool empty() const { return size_; } + typedef ArrayIterator Iterator; + + Iterator begin() { + if (size_ == 0) { + return {nullptr, 0}; + } + return {data_, size_}; + } + const Iterator begin() const { + if (size_ == 0) { + return {nullptr, 0}; + } + return {data_, size_}; + } + Iterator end() { return {nullptr, 0}; } + const Iterator end() const { return {nullptr, 0}; } + private: T* data_; uint64_t size_;