-Train::BlockRef::BlockRef(Block *b, unsigned e):
- block(b),
- entry(e)
-{ }
-
-Train::BlockRef Train::BlockRef::next() const
-{
- Block *blk = block->get_endpoints()[block->traverse(entry)].link;
- if(!blk)
- throw InvalidState("At end of line");
-
- int ep = blk->get_endpoint_by_link(*block);
- if(ep<0)
- throw LogicError("Block links are inconsistent");
-
- return BlockRef(blk, ep);
-}
-
-