summaryrefslogtreecommitdiffhomepage
path: root/include/GenericsLibrary/iterator.nhh
diff options
context:
space:
mode:
Diffstat (limited to 'include/GenericsLibrary/iterator.nhh')
-rw-r--r--include/GenericsLibrary/iterator.nhh32
1 files changed, 23 insertions, 9 deletions
diff --git a/include/GenericsLibrary/iterator.nhh b/include/GenericsLibrary/iterator.nhh
index 302734c..3e6c723 100644
--- a/include/GenericsLibrary/iterator.nhh
+++ b/include/GenericsLibrary/iterator.nhh
@@ -6,7 +6,22 @@
#ifndef NECTAR_LIBNECTAR_ITERATOR_NHH
#define NECTAR_LIBNECTAR_ITERATOR_NHH
-impl iterator_traits
+// Rules for iterator implementation:
+// - _begin is the starting point of the iterator.
+// - _end is the number of elements to iterate over.
+// - _size is the total size of the collection.
+trait iterator_traits
+{
+ let _begin := 0;
+ let _end := 0;
+ let _size := 0;
+
+ let begin();
+ let end();
+ let size();
+};
+
+impl iterator : iterator_traits
{
let init()
{
@@ -18,24 +33,23 @@ impl iterator_traits
return;
}
- let begin(let it)
+ let begin()
{
- let end := it._begin;
+ let end := _begin;
return end;
}
- let end(let it)
+ let end()
{
- let end := it._begin;
- end += it._end;
+ let end :=_begin;
+ end += _end;
return end;
}
- let size(let it)
+ let size()
{
- let sz := it._size;
- return sz;
+ return _size;
}
};