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);
32 Track *track() const { return _track.track(); }
33 unsigned entry() const { return _track.entry(); }
34 const TrackIter &track_iter() const { return _track; }
35 BlockIter block_iter() const;
36 float offset() const { return _offset; }
38 OrientedPoint point() const;
40 TrackOffsetIter next() const;
41 TrackOffsetIter next(unsigned) const;
42 TrackOffsetIter advance(float, const Route * = 0) const;
43 TrackOffsetIter reverse() const;
45 Track &operator*() const { return *_track; }
46 Track *operator->() const { return _track.operator->(); }
47 bool operator==(const TrackOffsetIter &) const;
48 bool operator!=(const TrackOffsetIter &other) const { return !(*this==other); }
49 operator bool() const { return _track; }