1 #ifndef LIBR2C2_TRACKOFFSETITER_H_
2 #define LIBR2C2_TRACKOFFSETITER_H_
9 class incompatible_path: public std::logic_error
12 incompatible_path(unsigned, unsigned);
13 virtual ~incompatible_path() throw() { }
27 TrackOffsetIter(Track *, unsigned, float = 0);
28 TrackOffsetIter(Track *, unsigned, unsigned, float);
29 TrackOffsetIter(const TrackIter &, float = 0);
30 TrackOffsetIter(const TrackIter &, unsigned, float);
36 Track *track() const { return _track.track(); }
37 unsigned entry() const { return _track.entry(); }
38 const TrackIter &track_iter() const { return _track; }
39 BlockIter block_iter() const;
40 float offset() const { return _offset; }
42 OrientedPoint point() const;
44 TrackOffsetIter next() const;
45 TrackOffsetIter next(unsigned) const;
46 TrackOffsetIter advance(float, const Route * = 0) const;
47 TrackOffsetIter reverse() const;
49 Track &operator*() const { return *_track; }
50 Track *operator->() const { return _track.operator->(); }
51 bool operator==(const TrackOffsetIter &) const;
52 bool operator!=(const TrackOffsetIter &other) const { return !(*this==other); }
53 operator bool() const { return _track; }