void InterpolatedScorer::setScoreData(ScoreData* data) { size_t last = 0; m_score_data = data; for (ScopedVector<Scorer>::iterator itsc = m_scorers.begin(); itsc != m_scorers.end(); ++itsc) { int numScoresScorer = (*itsc)->NumberOfScores(); ScoreData* newData =new ScoreData(*itsc); for (size_t i = 0; i < data->size(); i++) { ScoreArray scoreArray = data->get(i); ScoreArray newScoreArray; std::string istr; std::stringstream out; out << i; istr = out.str(); size_t numNBest = scoreArray.size(); //cout << " Datasize " << data->size() << " NumNBest " << numNBest << endl ; for (size_t j = 0; j < numNBest ; j++) { ScoreStats scoreStats = data->get(i, j); //cout << "Scorestats " << scoreStats << " i " << i << " j " << j << endl; ScoreStats newScoreStats; for (size_t k = last; k < size_t(numScoresScorer + last); k++) { ScoreStatsType score = scoreStats.get(k); newScoreStats.add(score); } //cout << " last " << last << " NumScores " << numScoresScorer << "newScorestats " << newScoreStats << endl; newScoreArray.add(newScoreStats); } newScoreArray.setIndex(istr); newData->add(newScoreArray); } //newData->dump(); // NOTE: This class takes the ownership of the heap allocated // ScoreData objects to avoid the memory leak issues. m_scorers_score_data.push_back(newData); (*itsc)->setScoreData(newData); last += numScoresScorer; } }