const char& TextFileIterator::operator *() const { if (mLineIndex == mFile->getLineCount()) { return *"\0"; } TextLine *line = mFile->mLines[mLineIndex]; if (mLineFeedIndex != -1) { const char *lfBytes = line->getLineFeed(); assert((size_t) mLineFeedIndex < sizeof(lfBytes) - 1); return lfBytes[mLineFeedIndex]; } return (*line)[mColumnIndex]; }
TextFileIterator& TextFileIterator::operator ++() { TextLine *line = mFile->mLines[mLineIndex]; if (line->size() - 1 > mColumnIndex) { mColumnIndex++; } else { if (mFile->mLines.size() > mLineIndex) { bool needChangeLine = false; const char *lfBytes = line->getLineFeed(); int lfBytesLen = (int) sizeof(lfBytes) - 1; mLineFeedIndex++; if (mLineFeedIndex == lfBytesLen) { mLineFeedIndex = -1; needChangeLine = true; } if (needChangeLine) { mLineIndex++; mColumnIndex = 0; } } } return *this; }