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) {
91 for (std::vector< MSDevice* >::iterator dev =
myDevices.begin(); dev !=
myDevices.end(); ++dev) {
135 std::vector<const MSEdge*> edges;
138 if (edges.size() >= 2) {
139 edges.erase(edges.begin());
156 std::string
id =
getID();
160 if (
myRoute->
getID().find(
"!var#") != std::string::npos) {
166 if (origin != *
myCurrEdge && edges.front() == origin) {
169 const int oldSize = (
int)edges.size();
177 if (!
replaceRoute(newRoute, onInit, (
int)edges.size() - oldSize)) {
227 msg =
"No connection between '" + (*e)->getID() +
"' and '" + (*(e + 1))->getID() +
"'.";
234 if ((*e)->prohibits(
this)) {
235 msg =
"Edge '" + (*e)->getID() +
"' prohibits.";
246 if (myTraceMoveReminders) {
247 traceMoveReminder(
"add", rem, 0,
true);
257 if (r->first == rem) {
259 if (myTraceMoveReminders) {
260 traceMoveReminder(
"remove", rem, 0,
false);
273 if (rem->first->notifyEnter(*
this, reason)) {
275 if (myTraceMoveReminders) {
276 traceMoveReminder(
"notifyEnter", rem->first, rem->second,
true);
282 if (myTraceMoveReminders) {
283 traceMoveReminder(
"notifyEnter", rem->first, rem->second,
false);
298 WRITE_WARNING(
"Vehicle '" +
getID() +
"' will not be able to arrive at the given position!");
325 for (std::vector<MSDevice*>::const_iterator dev =
myDevices.begin(); dev !=
myDevices.end(); ++dev) {
326 if (
typeid(**dev) == type) {
347 MSBaseVehicle::initMoveReminderOutput(
const OptionsCont& oc) {
348 if (oc.
isSet(
"movereminder-output.vehicles")) {
349 const std::vector<std::string> vehicles = oc.
getStringVector(
"movereminder-output.vehicles");
350 myShallTraceMoveReminders.insert(vehicles.begin(), vehicles.end());
356 MSBaseVehicle::traceMoveReminder(
const std::string& type,
MSMoveReminder* rem,
SUMOReal pos,
bool keep)
const {