void TargetPhraseCollection::ReadFromFile(size_t tableLimit, UINT64 filePos, OnDiskWrapper &onDiskWrapper) { fstream &fileTPColl = onDiskWrapper.GetFileTargetColl(); fstream &fileTP = onDiskWrapper.GetFileTargetInd(); size_t numScores = onDiskWrapper.GetNumScores(); UINT64 numPhrases; UINT64 currFilePos = filePos; fileTPColl.seekg(filePos); fileTPColl.read((char*) &numPhrases, sizeof(UINT64)); // table limit numPhrases = std::min(numPhrases, (UINT64) tableLimit); currFilePos += sizeof(UINT64); for (size_t ind = 0; ind < numPhrases; ++ind) { TargetPhrase *tp = new TargetPhrase(numScores); UINT64 sizeOtherInfo = tp->ReadOtherInfoFromFile(currFilePos, fileTPColl); tp->ReadFromFile(fileTP); currFilePos += sizeOtherInfo; m_coll.push_back(tp); } }