From 0a57d149b6f0adc00d68e624c520b8b4f8347091 Mon Sep 17 00:00:00 2001 From: Drew Galbraith Date: Thu, 11 Jan 2024 17:39:31 -0800 Subject: [PATCH] [Glacier] Add iterator to Array and ArrayView. --- lib/glacier/container/array.h | 8 ++++++++ lib/glacier/container/array_view.h | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+) 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_;