Iter HandleFile (const QByteArray& line, Iter i, Iter end, Cue& result) { const auto startQuote = line.indexOf ('"'); const auto endQuote = line.lastIndexOf ('"'); File file; file.Filename_ = QString::fromUtf8 (line.mid (startQuote + 1, endQuote - startQuote - 1)); while (i != end) { if (i->startsWith ("FILE ")) break; i = HandleTrack (i, end, file, result); } Track *prevTrack = 0; int index = 1; for (auto& track : file.Tracks_) { if (prevTrack) prevTrack->EndPos_ = track.StartPos_; prevTrack = &track; if (!track.Index_) track.Index_ = index++; } result.Files_ << file; return i; }