Paste: variant iterator
| Author: | j |
| Mode: | text |
| Date: | Thu, 10 Feb 2011 11:21:04 |
Plain Text |
variant QueryIterator = LeafIterator | UnionIterator;
record LeafIterator(...);
record UnionIterator(
left: UniqueValue[QueryIterator],
right: UniqueValue[QueryIterator],
);
overload hasNext?(i:QueryIterator) = hasNext?(*i);
overload next(i:QueryIterator) = next(*i);
overload hasNext?(i:UnionIterator) = hasNext?(i.left^) or hasNext?(i.right^);
overload next(i:UnionIterator) = unionNext(i.left^, i.right^);
private unionNext(left, right) = ...;
New Annotation