bool NIVissimSingleTypeParser_Signalgeberdefinition::parse(std::istream& from) { // int id; from >> id; // std::string tag, name; tag = myRead(from); if (tag == "name") { name = readName(from); tag = myRead(from); } // skip optional "Beschriftung" tag = overrideOptionalLabel(from, tag); // int lsaid; std::vector<int> groupids; if (tag == "lsa") { int groupid; from >> lsaid; // type-checking is missing! from >> tag; // "Gruppe" do { from >> groupid; groupids.push_back(groupid); tag = myRead(from); } while (tag == "oder"); // } else {
bool NIVissimSingleTypeParser_Knotendefinition::parse(std::istream &from) { // int id; from >> id; // std::string tag; from >> tag; std::string name = readName(from); // tag = overrideOptionalLabel(from); // while (tag!="netzausschnitt") { tag = myRead(from); } // tag = myRead(from); if (tag=="strecke") { NIVissimNodeParticipatingEdgeVector edges; while (tag=="strecke") { int edgeid; SUMOReal from_pos, to_pos; from_pos = to_pos = -1.0; from >> edgeid; tag = readEndSecure(from, "strecke"); if (tag=="von") { from >> from_pos; // type-checking is missing! from >> tag; from >> to_pos; // type-checking is missing! tag = readEndSecure(from, "strecke"); } edges.push_back(new NIVissimNodeParticipatingEdge(edgeid, from_pos, to_pos)); }
bool NIVissimSingleTypeParser_Verbindungsdefinition::parse(std::istream& from) { int id; from >> id; // type-checking is missing! std::string tag; // Read optional value "Name", skip optional value "Beschriftung" std::string name; while (tag != "von") { tag = overrideOptionalLabel(from); if (tag == "name") { name = readName(from); } } // Read the geometry information NIVissimExtendedEdgePoint from_def = readExtEdgePointDef(from); PositionVector geom; tag = myRead(from); // "ueber" while (tag != "nach") { std::string x = myRead(from); std::string y = myRead(from); if (y != "nach") { geom.push_back_noDoublePos( Position( TplConvert::_2SUMOReal(x.c_str()), TplConvert::_2SUMOReal(y.c_str()) )); tag = myRead(from); try { TplConvert::_2SUMOReal(tag.c_str()); tag = myRead(from); } catch (NumberFormatException&) {} } else { tag = y; } } NIVissimExtendedEdgePoint to_def = readExtEdgePointDef(from); // read some optional values until mandatory "Fahrzeugklassen" occurs SUMOReal dxnothalt = 0; SUMOReal dxeinordnen = 0; SUMOReal zuschlag1, zuschlag2; zuschlag1 = zuschlag2 = 0; SUMOReal seglength = 0; tag = myRead(from); NIVissimConnection::Direction direction = NIVissimConnection::NIVC_DIR_ALL; while (tag != "fahrzeugklassen" && tag != "sperrung" && tag != "auswertung" && tag != "DATAEND") { if (tag == "rechts") { direction = NIVissimConnection::NIVC_DIR_RIGHT; } else if (tag == "links") { direction = NIVissimConnection::NIVC_DIR_LEFT; } else if (tag == "alle") { direction = NIVissimConnection::NIVC_DIR_ALL; } else if (tag == "dxnothalt") { from >> dxnothalt; // type-checking is missing! } else if (tag == "dxeinordnen") {
bool NIVissimSingleTypeParser_Zuflussdefinition::parse(std::istream& from) { std::string id, edgeid; from >> id; // type-checking is missing! std::string tag, name; // override some optional values till q while (tag != "q") { tag = overrideOptionalLabel(from); if (tag == "name") { name = readName(from); } else if (tag == "strecke") { from >> edgeid; // type-checking is missing! } }
bool NIVissimSingleTypeParser_Streckendefinition::parse(std::istream& from) { // read in the id int id; from >> id; // std::string tag; // the following elements may occure: "Name", "Beschriftung", "Typ", // followed by the mandatory "Laenge" std::string name, label, type; SUMOReal length = -1; while (length < 0) { tag = overrideOptionalLabel(from); if (tag == "name") { name = readName(from); } else if (tag == "typ") { type = myRead(from); } else if (tag == "laenge") { from >> length; // type-checking is missing! } }
bool NIVissimSingleTypeParser_VWunschentscheidungsdefinition::parse(std::istream& from) { std::string tag; from >> tag; // id from >> tag; // name tag = readName(from); tag = overrideOptionalLabel(from); from >> tag; // strecke std::string edgeid; from >> edgeid; from >> tag; // spur std::string lane; from >> lane; from >> tag; // bei std::string pos; from >> pos; from >> tag; // fahrzeugklasse from >> tag; // <fahrzeugklasse> from >> tag; // vwunsch std::string vwunsch; from >> vwunsch; // vwunsch std::vector<std::string> tmp; tmp.push_back("zeit"); tmp.push_back("fahrzeugklasse"); tag = readEndSecure(from, tmp); while (tag != "DATAEND" && tag != "zeit") { from >> tag; from >> tag; from >> tag; tag = myRead(from); } if (tag == "zeit") { from >> tag; from >> tag; from >> tag; from >> tag; }