47 #ifdef CHECK_MEMORY_LEAKS
49 #endif // CHECK_MEMORY_LEAKS
56 std::set<std::string> MSBaseVehicle::myShallTraceMoveReminders;
66 myCurrEdge(route->begin()),
67 myChosenSpeedFactor(speedFactor),
69 myDeparture(NOT_YET_DEPARTED),
73 , myTraceMoveReminders(myShallTraceMoveReminders.count(pars->id) > 0)
79 for (std::vector< MSDevice* >::iterator dev =
myDevices.begin(); dev !=
myDevices.end(); ++dev) {
89 for (std::vector< MSDevice* >::iterator dev =
myDevices.begin(); dev !=
myDevices.end(); ++dev) {
132 std::vector<const MSEdge*> edges;
135 if (edges.size() >= 2) {
136 edges.erase(edges.begin());
153 std::string
id =
getID();
157 if (
myRoute->
getID().find(
"!var#") != std::string::npos) {
212 msg =
"No connection between '" + (*e)->getID() +
"' and '" + (*(e + 1))->getID() +
"'.";
219 if ((*e)->prohibits(
this)) {
220 msg =
"Edge '" + (*e)->getID() +
"' prohibits.";
231 if (myTraceMoveReminders) {
232 traceMoveReminder(
"add", rem, 0,
true);
242 if (r->first == rem) {
244 if (myTraceMoveReminders) {
245 traceMoveReminder(
"remove", rem, 0,
false);
258 if (rem->first->notifyEnter(*
this, reason)) {
260 if (myTraceMoveReminders) {
261 traceMoveReminder(
"notifyEnter", rem->first, rem->second,
true);
267 if (myTraceMoveReminders) {
268 traceMoveReminder(
"notifyEnter", rem->first, rem->second,
false);
283 WRITE_WARNING(
"Vehicle '" +
getID() +
"' will not be able to arrive at the given position!");
303 for (std::vector<MSDevice*>::const_iterator dev =
myDevices.begin(); dev !=
myDevices.end(); ++dev) {
304 if (
typeid(**dev) == type) {
325 MSBaseVehicle::initMoveReminderOutput(
const OptionsCont& oc) {
326 if (oc.
isSet(
"movereminder-output.vehicles")) {
327 const std::vector<std::string> vehicles = oc.
getStringVector(
"movereminder-output.vehicles");
328 myShallTraceMoveReminders.insert(vehicles.begin(), vehicles.end());
334 MSBaseVehicle::traceMoveReminder(
const std::string& type,
MSMoveReminder* rem,
SUMOReal pos,
bool keep)
const {