void SUMOVehicleParameter::writeAs (const std::string& xmlElem, OutputDevice& dev, const OptionsCont& oc)const { dev.openTag(xmlElem) << " id=\"" << id << "\""; if (wasSet(VEHPARS_VTYPE_SET)) { dev << " type=\"" << vtypeid << "\""; } dev << " depart=\"" << time2string(depart) << "\""; // optional parameter // departlane if (wasSet(VEHPARS_DEPARTLANE_SET) && !defaultOptionOverrides(oc, "departlane")) { std::string val; switch (departLaneProcedure) { case DEPART_LANE_GIVEN: val = toString(departLane); break; case DEPART_LANE_RANDOM: val = "random"; break; case DEPART_LANE_FREE: val = "free"; break; case DEPART_LANE_ALLOWED_FREE: val = "allowed"; break; case DEPART_LANE_BEST_FREE: val = "best"; break; case DEPART_LANE_DEFAULT: default: break; } dev << " departLane=\"" << val << "\""; } else if (oc.isSet("departlane")) { dev << " departLane=\"" << oc.getString("departlane") << "\""; } // departpos if (wasSet(VEHPARS_DEPARTPOS_SET) && !defaultOptionOverrides(oc, "departpos")) { std::string val; switch (departPosProcedure) { case DEPART_POS_GIVEN: val = toString(departPos); break; case DEPART_POS_RANDOM: val = "random"; break; case DEPART_POS_RANDOM_FREE: val = "random_free"; break; case DEPART_POS_FREE: val = "free"; break; case DEPART_POS_PWAG_SIMPLE: val = "pwagSimple"; break; case DEPART_POS_PWAG_GENERIC: val = "pwagGeneric"; break; case DEPART_POS_MAX_SPEED_GAP: val = "maxSpeedGap"; break; case DEPART_POS_BASE: val = "base"; break; case DEPART_POS_DEFAULT: default: break; } dev << " departPos=\"" << val << "\""; } else if (oc.isSet("departpos")) { dev << " departPos=\"" << oc.getString("departpos") << "\""; } // departspeed if (wasSet(VEHPARS_DEPARTSPEED_SET) && !defaultOptionOverrides(oc, "departspeed")) { std::string val; switch (departSpeedProcedure) { case DEPART_SPEED_GIVEN: val = toString(departSpeed); break; case DEPART_SPEED_RANDOM: val = "random"; break; case DEPART_SPEED_MAX: val = "max"; break; case DEPART_SPEED_DEFAULT: default: break; } dev << " departSpeed=\"" << val << "\""; } else if (oc.isSet("departspeed")) { dev << " departSpeed=\"" << oc.getString("departspeed") << "\""; } // arrivallane if (wasSet(VEHPARS_ARRIVALLANE_SET) && !defaultOptionOverrides(oc, "arrivallane")) { std::string val; switch (arrivalLaneProcedure) { case ARRIVAL_LANE_GIVEN: val = toString(arrivalLane); break; case ARRIVAL_LANE_CURRENT: val = "current"; break; case ARRIVAL_LANE_DEFAULT: default: break; } dev << " arrivalLane=\"" << val << "\""; } else if (oc.isSet("arrivallane")) { dev << " arrivalLane=\"" << oc.getString("arrivallane") << "\""; } // arrivalpos if (wasSet(VEHPARS_ARRIVALPOS_SET) && !defaultOptionOverrides(oc, "arrivalpos")) { std::string val; switch (arrivalPosProcedure) { case ARRIVAL_POS_GIVEN: val = toString(arrivalPos); break; case ARRIVAL_POS_RANDOM: val = "random"; break; case ARRIVAL_POS_MAX: val = "max"; break; case ARRIVAL_POS_DEFAULT: default: break; } dev << " arrivalPos=\"" << val << "\""; } else if (oc.isSet("arrivalpos")) { dev << " arrivalPos=\"" << oc.getString("arrivalpos") << "\""; } // arrivalspeed if (wasSet(VEHPARS_ARRIVALSPEED_SET) && !defaultOptionOverrides(oc, "arrivalspeed")) { std::string val; switch (arrivalSpeedProcedure) { case ARRIVAL_SPEED_GIVEN: val = toString(arrivalSpeed); break; case ARRIVAL_SPEED_CURRENT: val = "current"; break; case ARRIVAL_SPEED_DEFAULT: default: break; } dev << " arrivalSpeed=\"" << val << "\""; } else if (oc.isSet("arrivalspeed")) { dev << " arrivalSpeed=\"" << oc.getString("arrivalspeed") << "\""; } // color if (wasSet(VEHPARS_COLOR_SET)) { dev << " color=\"" << color << "\""; } // repetition values if (wasSet(VEHPARS_PERIODNUM_SET)) { dev << " repno=\"" << repetitionNumber << "\""; } if (wasSet(VEHPARS_PERIODFREQ_SET)) { #ifdef HAVE_SUBSECOND_TIMESTEPS dev << " period=\"" << time2string(repetitionOffset) << "\""; #else dev << " period=\"" << repetitionOffset << "\""; #endif } if (wasSet(VEHPARS_LINE_SET)) { dev << " line=\"" << line << "\""; } if (wasSet(VEHPARS_TAZ_SET)) { dev << " fromTaz=\"" << fromTaz << "\" toTaz=\"" << toTaz << "\""; } dev << ">\n"; }
void SUMOVehicleParameter::write(OutputDevice& dev, const OptionsCont& oc) const { dev.openTag(SUMO_TAG_VEHICLE).writeAttr(SUMO_ATTR_ID, id); if (wasSet(VEHPARS_VTYPE_SET)) { dev.writeAttr(SUMO_ATTR_TYPE, vtypeid); } if (departProcedure == DEPART_TRIGGERED) { dev.writeAttr(SUMO_ATTR_DEPART, "triggered"); } else { dev.writeAttr(SUMO_ATTR_DEPART, time2string(depart)); } // optional parameter // departlane if (wasSet(VEHPARS_DEPARTLANE_SET) && !defaultOptionOverrides(oc, "departlane")) { std::string val; switch (departLaneProcedure) { case DEPART_LANE_GIVEN: val = toString(departLane); break; case DEPART_LANE_RANDOM: val = "random"; break; case DEPART_LANE_FREE: val = "free"; break; case DEPART_LANE_ALLOWED_FREE: val = "allowed"; break; case DEPART_LANE_BEST_FREE: val = "best"; break; case DEPART_LANE_DEFAULT: default: break; } dev.writeNonEmptyAttr(SUMO_ATTR_DEPARTLANE, val); } else if (oc.isSet("departlane")) { dev.writeNonEmptyAttr(SUMO_ATTR_DEPARTLANE, oc.getString("departlane")); } // departpos if (wasSet(VEHPARS_DEPARTPOS_SET) && !defaultOptionOverrides(oc, "departpos")) { std::string val; switch (departPosProcedure) { case DEPART_POS_GIVEN: val = toString(departPos); break; case DEPART_POS_RANDOM: val = "random"; break; case DEPART_POS_RANDOM_FREE: val = "random_free"; break; case DEPART_POS_FREE: val = "free"; break; case DEPART_POS_PWAG_SIMPLE: val = "pwagSimple"; break; case DEPART_POS_PWAG_GENERIC: val = "pwagGeneric"; break; case DEPART_POS_MAX_SPEED_GAP: val = "maxSpeedGap"; break; case DEPART_POS_BASE: val = "base"; break; case DEPART_POS_DEFAULT: default: break; } dev.writeNonEmptyAttr(SUMO_ATTR_DEPARTPOS, val); } else if (oc.isSet("departpos")) { dev.writeNonEmptyAttr(SUMO_ATTR_DEPARTPOS, oc.getString("departpos")); } // departspeed if (wasSet(VEHPARS_DEPARTSPEED_SET) && !defaultOptionOverrides(oc, "departspeed")) { std::string val; switch (departSpeedProcedure) { case DEPART_SPEED_GIVEN: val = toString(departSpeed); break; case DEPART_SPEED_RANDOM: val = "random"; break; case DEPART_SPEED_MAX: val = "max"; break; case DEPART_SPEED_DEFAULT: default: break; } dev.writeNonEmptyAttr(SUMO_ATTR_DEPARTSPEED, val); } else if (oc.isSet("departspeed")) { dev.writeNonEmptyAttr(SUMO_ATTR_DEPARTSPEED, oc.getString("departspeed")); } // arrivallane if (wasSet(VEHPARS_ARRIVALLANE_SET) && !defaultOptionOverrides(oc, "arrivallane")) { std::string val; switch (arrivalLaneProcedure) { case ARRIVAL_LANE_GIVEN: val = toString(arrivalLane); break; case ARRIVAL_LANE_CURRENT: val = "current"; break; case ARRIVAL_LANE_DEFAULT: default: break; } dev.writeNonEmptyAttr(SUMO_ATTR_ARRIVALLANE, val); } else if (oc.isSet("arrivallane")) { dev.writeNonEmptyAttr(SUMO_ATTR_ARRIVALLANE, oc.getString("arrivallane")); } // arrivalpos if (wasSet(VEHPARS_ARRIVALPOS_SET) && !defaultOptionOverrides(oc, "arrivalpos")) { std::string val; switch (arrivalPosProcedure) { case ARRIVAL_POS_GIVEN: val = toString(arrivalPos); break; case ARRIVAL_POS_RANDOM: val = "random"; break; case ARRIVAL_POS_MAX: val = "max"; break; case ARRIVAL_POS_DEFAULT: default: break; } dev.writeNonEmptyAttr(SUMO_ATTR_ARRIVALPOS, val); } else if (oc.isSet("arrivalpos")) { dev.writeNonEmptyAttr(SUMO_ATTR_ARRIVALPOS, oc.getString("arrivalpos")); } // arrivalspeed if (wasSet(VEHPARS_ARRIVALSPEED_SET) && !defaultOptionOverrides(oc, "arrivalspeed")) { std::string val; switch (arrivalSpeedProcedure) { case ARRIVAL_SPEED_GIVEN: val = toString(arrivalSpeed); break; case ARRIVAL_SPEED_CURRENT: val = "current"; break; case ARRIVAL_SPEED_DEFAULT: default: break; } dev.writeNonEmptyAttr(SUMO_ATTR_ARRIVALSPEED, val); } else if (oc.isSet("arrivalspeed")) { dev.writeNonEmptyAttr(SUMO_ATTR_ARRIVALSPEED, oc.getString("arrivalspeed")); } // color if (wasSet(VEHPARS_COLOR_SET)) { dev.writeAttr(SUMO_ATTR_COLOR, color); } if (wasSet(VEHPARS_LINE_SET)) { dev.writeAttr(SUMO_ATTR_LINE, line); } if (wasSet(VEHPARS_TAZ_SET)) { dev.writeAttr(SUMO_ATTR_FROM_TAZ, fromTaz).writeAttr(SUMO_ATTR_TO_TAZ, toTaz); } if (wasSet(VEHPARS_PERSON_CAPACITY_SET)) { dev.writeAttr(SUMO_ATTR_PERSON_CAPACITY, personCapacity); } if (wasSet(VEHPARS_PERSON_NUMBER_SET)) { dev.writeAttr(SUMO_ATTR_PERSON_NUMBER, personNumber); } }