bool NIVissimSingleTypeParser_Querverkehrsstoerungsdefinition::parsePositionDescribed(std::istream& from) { std::string tag = myRead(from); NIVissimExtendedEdgePoint edge = parsePos(from); // from >> tag; // "Durch" bool ok = true; do { from >> tag; // "Strecke" NIVissimExtendedEdgePoint by = parsePos(from); // SUMOReal timegap; from >> timegap; from >> tag; SUMOReal waygap; from >> waygap; SUMOReal vmax = -1; tag = readEndSecure(from); if (tag == "vmax") { from >> vmax; } ok = NIVissimDisturbance::dictionary(-1, "", edge, by, timegap, waygap, vmax); if (tag != "DATAEND") { tag = readEndSecure(from); } } while (tag != "DATAEND" && ok);
word_t CacheRec::findLine(word_t pos, bool_t forced,int *offsetPtr){ int setIndex; byte_t tag; if(parsePos(pos,&setIndex,&tag,offsetPtr)){ int i = setIndex*cE; int end = i + cE; for(;i<end;++i){ if(valid[i]==TRUE && tags[i]==tag) return i; } if(forced){ i = spareLine(setIndex); if(i<0){// no spare line i = setIndex*cE + (rand()%cE);// evict random one printf("forced to evict\n"); commit(i); // write back valid[i] == FALSE; } retrieve(tag,i); return i; } } return -1; // invalid pos }