void CLogDataVector::append(CGitHash& sha, bool storeInVector) { if (storeInVector) this->push_back(sha); GitRevLoglist* r = &m_pLogCache->m_HashMap[sha]; updateLanes(*r, this->m_Lns, sha); }
void CLogDataVector::setLane(CGitHash& sha) { Lanes* l = &(this->m_Lns); int i = m_FirstFreeLane; // QVector<QByteArray> ba; // const ShaString& ss = toPersistentSha(sha, ba); // const ShaVect& shaVec(fh->revOrder); for (int cnt = size(); i < cnt; ++i) { GitRev* r = & this->GetGitRevAt(i); CGitHash curSha=r->m_CommitHash; if (r->m_Lanes.size() == 0) updateLanes(*r, *l, curSha); if (curSha == sha) break; } m_FirstFreeLane = ++i; #if 0 Lanes* l = &(this->m_Lanes); int i = m_FirstFreeLane; QVector<QByteArray> ba; const ShaString& ss = toPersistentSha(sha, ba); const ShaVect& shaVec(fh->revOrder); for (uint cnt = shaVec.count(); i < cnt; ++i) { const ShaString& curSha = shaVec[i]; Rev* r = m_HashMap[curSha]const_cast<Rev*>(revLookup(curSha, fh)); if (r->lanes.count() == 0) updateLanes(*r, *l, curSha); if (curSha == ss) break; } fh->firstFreeLane = ++i; #endif }
void MSLaneChanger::laneChange(SUMOTime t) { // This is what happens in one timestep. After initialization of the // changer, each vehicle will try to change. After that the changer // nedds an update to prevent multiple changes of one vehicle. // Finally, the change-result has to be given back to the lanes. initChanger(); while (vehInChanger()) { bool haveChanged = change(); updateChanger(haveChanged); } updateLanes(t); }
void MSLaneChanger::laneChange(SUMOTime t) { // This is what happens in one timestep. After initialization of the // changer, each vehicle will try to change. After that the changer // needs an update to prevent multiple changes of one vehicle. // Finally, the change-result has to be given back to the lanes. initChanger(); try { while (vehInChanger()) { const bool haveChanged = change(); updateChanger(haveChanged); } updateLanes(t); } catch (const ProcessError&) { // clean up locks or the gui may hang for (ChangerIt ce = myChanger.begin(); ce != myChanger.end(); ++ce) { ce->lane->releaseVehicles(); } throw; } }