void SUMOVTypeParameter::write(OutputDevice& dev) const { if (onlyReferenced) { return; } dev.openTag(SUMO_TAG_VTYPE); dev.writeAttr(SUMO_ATTR_ID, id); if (wasSet(VTYPEPARS_LENGTH_SET)) { dev.writeAttr(SUMO_ATTR_LENGTH, length); } if (wasSet(VTYPEPARS_MINGAP_SET)) { dev.writeAttr(SUMO_ATTR_MINGAP, minGap); } if (wasSet(VTYPEPARS_MAXSPEED_SET)) { dev.writeAttr(SUMO_ATTR_MAXSPEED, maxSpeed); } if (wasSet(VTYPEPARS_PROBABILITY_SET)) { dev.writeAttr(SUMO_ATTR_PROB, defaultProbability); } if (wasSet(VTYPEPARS_SPEEDFACTOR_SET)) { dev.writeAttr(SUMO_ATTR_SPEEDFACTOR, speedFactor); } if (wasSet(VTYPEPARS_SPEEDDEVIATION_SET)) { dev.writeAttr(SUMO_ATTR_SPEEDDEV, speedDev); } if (wasSet(VTYPEPARS_VEHICLECLASS_SET)) { dev.writeAttr(SUMO_ATTR_VCLASS, toString(vehicleClass)); } if (wasSet(VTYPEPARS_EMISSIONCLASS_SET)) { dev.writeAttr(SUMO_ATTR_EMISSIONCLASS, getVehicleEmissionTypeName(emissionClass)); } if (wasSet(VTYPEPARS_SHAPE_SET)) { dev.writeAttr(SUMO_ATTR_GUISHAPE, getVehicleShapeName(shape)); } if (wasSet(VTYPEPARS_WIDTH_SET)) { dev.writeAttr(SUMO_ATTR_WIDTH, width); } if (wasSet(VTYPEPARS_HEIGHT_SET)) { dev.writeAttr(SUMO_ATTR_HEIGHT, height); } if (wasSet(VTYPEPARS_COLOR_SET)) { dev.writeAttr(SUMO_ATTR_COLOR, color); } if (wasSet(VTYPEPARS_OSGFILE_SET)) { dev.writeAttr(SUMO_ATTR_OSGFILE, osgFile); } if (wasSet(VTYPEPARS_IMGFILE_SET)) { dev.writeAttr(SUMO_ATTR_IMGFILE, imgFile); } if (cfParameter.size() != 0) { dev.openTag(cfModel); std::vector<SumoXMLAttr> attrs; for (CFParams::const_iterator i = cfParameter.begin(); i != cfParameter.end(); ++i) { attrs.push_back(i->first); } std::sort(attrs.begin(), attrs.end()); for (std::vector<SumoXMLAttr>::const_iterator i = attrs.begin(); i != attrs.end(); ++i) { dev.writeAttr(*i, cfParameter.find(*i)->second); } dev.closeTag(); dev.closeTag(); } else { dev.closeTag(); } }
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); } }
void SUMOVTypeParameter::write(OutputDevice& dev) const { if (onlyReferenced) { return; } dev.openTag(SUMO_TAG_VTYPE); dev.writeAttr(SUMO_ATTR_ID, id); if (wasSet(VTYPEPARS_LENGTH_SET)) { dev.writeAttr(SUMO_ATTR_LENGTH, length); } if (wasSet(VTYPEPARS_MINGAP_SET)) { dev.writeAttr(SUMO_ATTR_MINGAP, minGap); } if (wasSet(VTYPEPARS_MAXSPEED_SET)) { dev.writeAttr(SUMO_ATTR_MAXSPEED, maxSpeed); } if (wasSet(VTYPEPARS_PROBABILITY_SET)) { dev.writeAttr(SUMO_ATTR_PROB, defaultProbability); } if (wasSet(VTYPEPARS_SPEEDFACTOR_SET)) { dev.writeAttr(SUMO_ATTR_SPEEDFACTOR, speedFactor); } if (wasSet(VTYPEPARS_SPEEDDEVIATION_SET)) { dev.writeAttr(SUMO_ATTR_SPEEDDEV, speedDev); } if (wasSet(VTYPEPARS_VEHICLECLASS_SET)) { dev.writeAttr(SUMO_ATTR_VCLASS, toString(vehicleClass)); } if (wasSet(VTYPEPARS_EMISSIONCLASS_SET)) { dev.writeAttr(SUMO_ATTR_EMISSIONCLASS, PollutantsInterface::getName(emissionClass)); } if (wasSet(VTYPEPARS_IMPATIENCE_SET)) { if (impatience == -std::numeric_limits<SUMOReal>::max()) { dev.writeAttr(SUMO_ATTR_IMPATIENCE, "off"); } else { dev.writeAttr(SUMO_ATTR_IMPATIENCE, impatience); } } if (wasSet(VTYPEPARS_SHAPE_SET)) { dev.writeAttr(SUMO_ATTR_GUISHAPE, getVehicleShapeName(shape)); } if (wasSet(VTYPEPARS_WIDTH_SET)) { dev.writeAttr(SUMO_ATTR_WIDTH, width); } if (wasSet(VTYPEPARS_HEIGHT_SET)) { dev.writeAttr(SUMO_ATTR_HEIGHT, height); } if (wasSet(VTYPEPARS_COLOR_SET)) { dev.writeAttr(SUMO_ATTR_COLOR, color); } if (wasSet(VTYPEPARS_OSGFILE_SET)) { dev.writeAttr(SUMO_ATTR_OSGFILE, osgFile); } if (wasSet(VTYPEPARS_IMGFILE_SET)) { dev.writeAttr(SUMO_ATTR_IMGFILE, imgFile); } if (wasSet(VTYPEPARS_LANE_CHANGE_MODEL_SET)) { dev.writeAttr(SUMO_ATTR_LANE_CHANGE_MODEL, lcModel); } if (wasSet(VTYPEPARS_PERSON_CAPACITY)) { dev.writeAttr(SUMO_ATTR_PERSON_CAPACITY, personCapacity); } if (wasSet(VTYPEPARS_CONTAINER_CAPACITY)) { dev.writeAttr(SUMO_ATTR_CONTAINER_CAPACITY, containerCapacity); } if (wasSet(VTYPEPARS_BOARDING_DURATION)) { dev.writeAttr(SUMO_ATTR_BOARDING_DURATION, boardingDuration); } if (wasSet(VTYPEPARS_LOADING_DURATION)) { dev.writeAttr(SUMO_ATTR_LOADING_DURATION, loadingDuration); } if (cfParameter.size() != 0) { dev.openTag(cfModel); std::vector<SumoXMLAttr> attrs; for (CFParams::const_iterator i = cfParameter.begin(); i != cfParameter.end(); ++i) { attrs.push_back(i->first); } std::sort(attrs.begin(), attrs.end()); for (std::vector<SumoXMLAttr>::const_iterator i = attrs.begin(); i != attrs.end(); ++i) { dev.writeAttr(*i, cfParameter.find(*i)->second); } dev.closeTag(); } for (std::map<std::string, std::string>::const_iterator j = getMap().begin(); j != getMap().end(); ++j) { dev.openTag(SUMO_TAG_PARAM); dev.writeAttr(SUMO_ATTR_KEY, (*j).first); dev.writeAttr(SUMO_ATTR_VALUE, (*j).second); dev.closeTag(); } dev.closeTag(); }
void SUMOVTypeParameter::write(OutputDevice &dev) const throw(IOError) { if (onlyReferenced) { return; } dev << " <vtype id=\"" << id << '"'; if (wasSet(VTYPEPARS_LENGTH_SET)) { dev << " length=\"" << length << '"'; } if (wasSet(VTYPEPARS_MAXSPEED_SET)) { dev << " maxspeed=\"" << maxSpeed << '"'; } if (wasSet(VTYPEPARS_PROBABILITY_SET)) { dev << " probability=\"" << defaultProbability << '"'; } if (wasSet(VTYPEPARS_SPEEDFACTOR_SET)) { dev << " speedFactor=\"" << speedFactor << '"'; } if (wasSet(VTYPEPARS_SPEEDDEVIATION_SET)) { dev << " speedDev=\"" << speedDev << '"'; } if (wasSet(VTYPEPARS_VEHICLECLASS_SET)) { dev << " vclass=\"" << getVehicleClassName(vehicleClass) << '"'; } if (wasSet(VTYPEPARS_EMISSIONCLASS_SET)) { dev << " emissionClass=\"" << getVehicleEmissionTypeName(emissionClass) << '"'; } if (wasSet(VTYPEPARS_SHAPE_SET)) { dev << " guiShape=\"" << getVehicleShapeName(shape) << '"'; } if (wasSet(VTYPEPARS_OFFSET_SET)) { dev << " guiOffset=\"" << offset << '"'; } if (wasSet(VTYPEPARS_WIDTH_SET)) { dev << " guiWidth=\"" << width << '"'; } if (wasSet(VTYPEPARS_COLOR_SET)) { dev << " color=\"" << color << '"'; } if (cfParameter.size()!=0) { dev << ">\n"; dev << " <"; switch (cfModel) { case SUMO_TAG_CF_IDM: dev << CF_MODEL_IDM; break; case SUMO_TAG_CF_KRAUSS_ORIG1: dev << CF_MODEL_KRAUSS_ORIG1; break; case SUMO_TAG_CF_PWAGNER2009: dev << CF_MODEL_PWAGNER2009; break; case SUMO_TAG_CF_BKERNER: dev << CF_MODEL_BKERNER; break; case SUMO_TAG_CF_IITBNN: dev << CF_MODEL_IITBNN; break; case SUMO_TAG_CF_KRAUSS: default: dev << CF_MODEL_KRAUSS; break; } std::vector<std::string> names; for (std::map<std::string, SUMOReal>::const_iterator i=cfParameter.begin(); i!=cfParameter.end(); ++i) { names.push_back((*i).first); } std::sort(names.begin(), names.end()); for (std::vector<std::string>::const_iterator i=names.begin(); i!=names.end(); ++i) { dev << ' ' << (*i) << "=\"" << cfParameter.find(*i)->second << '"'; } dev << "/>\n"; dev << " </vtype>\n"; } else { dev << "/>\n"; } }