Exemplo n.º 1
0
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";
}
Exemplo n.º 2
0
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);
    }
}