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); } }