diff options
Diffstat (limited to 'tnslc/iterator.tnsl')
-rw-r--r-- | tnslc/iterator.tnsl | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/tnslc/iterator.tnsl b/tnslc/iterator.tnsl new file mode 100644 index 0000000..19dda8c --- /dev/null +++ b/tnslc/iterator.tnsl @@ -0,0 +1,39 @@ +struct Iterator { + ~void data, + int size, + current, + _elsz +} + +/; method Iterator + + /; init (~void data, int count, int elsz) + self.data = data + self.size = size + self._elsz = elsz + self.current = 0 + ;/ + + /; next (int count) + self.current = self.current + count + /; if (self.current >= self.size) + self.current = self.size + ;/ + ;/ + + /; prev (int count) + self.current = self.current - count + /; if (self.current < 0) + self.current = 0 + ;/ + ;/ + + /; get [~void] + return self.data + current * _elsz + ;/ + + /; end [bool] + return self.current >= self.size + ;/ + +;/ |