diff options
Diffstat (limited to 'std/vec.zc')
| -rw-r--r-- | std/vec.zc | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -1,5 +1,6 @@ import "./core.zc" +import "./iter.zc" struct Vec<T> { data: T*; @@ -7,10 +8,35 @@ struct Vec<T> { cap: usize; } +struct VecIter<T> { + data: T*; + count: usize; + idx: usize; +} + +impl VecIter<T> { + fn next(self) -> Option<T> { + if (self.idx < self.count) { + var item = self.data[self.idx]; + self.idx = self.idx + 1; + return Option<T>::Some(item); + } + return Option<T>::None(); + } +} + impl Vec<T> { fn new() -> Vec<T> { return Vec<T> { data: 0, len: 0, cap: 0 }; } + + fn iterator(self) -> VecIter<T> { + return VecIter<T> { + data: self.data, + count: self.len, + idx: 0 + }; + } fn push(self, item: T) { if (self.len >= self.cap) { |
