[Glacier] Add iterator to Array and ArrayView.

This commit is contained in:
Drew Galbraith 2024-01-11 17:39:31 -08:00
parent 66e7e95855
commit 0a57d149b6
2 changed files with 27 additions and 0 deletions

View File

@ -2,6 +2,7 @@
#include <stdint.h> #include <stdint.h>
#include "glacier/container/array_iter.h"
#include "glacier/container/array_view.h" #include "glacier/container/array_view.h"
namespace glcr { namespace glcr {
@ -37,6 +38,13 @@ class Array {
uint64_t size() const { return size_; } uint64_t size() const { return size_; }
bool empty() const { return size_ == 0; } bool empty() const { return size_ == 0; }
typedef ArrayIterator<T> 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: private:
T* data_; T* data_;
uint64_t size_; uint64_t size_;

View File

@ -2,6 +2,8 @@
#include <stdint.h> #include <stdint.h>
#include "glacier/container/array_iter.h"
namespace glcr { namespace glcr {
template <typename T> template <typename T>
@ -26,6 +28,23 @@ class ArrayView {
uint64_t size() const { return size_; } uint64_t size() const { return size_; }
bool empty() const { return size_; } bool empty() const { return size_; }
typedef ArrayIterator<T> 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: private:
T* data_; T* data_;
uint64_t size_; uint64_t size_;