+{
+ validate();
+}
+
+void TrackOffsetIter::validate()
+{
+ if(!_track)
+ return;
+
+ if(_offset<0)
+ throw invalid_argument("TrackOffsetIter::TrackOffsetIter");
+
+ if(_path>=0)
+ {
+ if(!_track.endpoint().has_path(_path))
+ throw invalid_argument("TrackOffsetIter::TrackOffsetIter");
+ if(_offset>_track->get_type().get_path_length(_path))
+ throw invalid_argument("TrackOffsetIter::TrackOffsetIter");
+ }
+}