78 updateFromAttributes(sumoBaseObject);
93 fromTrainStop.clear();
95 fromContainerStop.clear();
96 toContainerStop.clear();
97 fromChargingStation.clear();
98 toChargingStation.clear();
99 fromParkingArea.clear();
100 toParkingArea.clear();
101 consecutiveEdges.clear();
109 if (fromEdge.empty()) {
112 return getNumberOfDefinedParameters() == 1;
119 return (
int)consecutiveEdges.size() +
120 (fromJunction.empty() ? 0 : 1) +
121 (toJunction.empty() ? 0 : 1) +
122 (fromEdge.empty() ? 0 : 1) +
123 (toEdge.empty() ? 0 : 1) +
124 (fromTAZ.empty() ? 0 : 1) +
125 (toTAZ.empty() ? 0 : 1) +
126 (fromBusStop.empty() ? 0 : 1) +
127 (toBusStop.empty() ? 0 : 1) +
128 (fromTrainStop.empty() ? 0 : 1) +
129 (toTrainStop.empty() ? 0 : 1) +
130 (fromContainerStop.empty() ? 0 : 1) +
131 (toContainerStop.empty() ? 0 : 1) +
132 (fromChargingStation.empty() ? 0 : 1) +
133 (toChargingStation.empty() ? 0 : 1) +
134 (fromParkingArea.empty() ? 0 : 1) +
135 (toParkingArea.empty() ? 0 : 1) +
136 (fromRoute.empty() ? 0 : 1) +
137 (toRoute.empty() ? 0 : 1);
144 if (isSingleEdgePlan()) {
146 }
else if (consecutiveEdges.size() > 0) {
148 }
else if (!toRoute.empty()) {
150 }
else if (!fromEdge.empty()) {
151 if (!toEdge.empty()) {
153 }
else if (!toTAZ.empty()) {
155 }
else if (!toJunction.empty()) {
157 }
else if (!toBusStop.empty()) {
159 }
else if (!toTrainStop.empty()) {
161 }
else if (!toContainerStop.empty()) {
163 }
else if (!toChargingStation.empty()) {
165 }
else if (!toParkingArea.empty()) {
170 }
else if (!fromTAZ.empty()) {
171 if (!toEdge.empty()) {
173 }
else if (!toTAZ.empty()) {
175 }
else if (!toJunction.empty()) {
177 }
else if (!toBusStop.empty()) {
179 }
else if (!toTrainStop.empty()) {
181 }
else if (!toContainerStop.empty()) {
183 }
else if (!toChargingStation.empty()) {
185 }
else if (!toParkingArea.empty()) {
190 }
else if (!fromJunction.empty()) {
191 if (!toEdge.empty()) {
193 }
else if (!toTAZ.empty()) {
195 }
else if (!toJunction.empty()) {
197 }
else if (!toBusStop.empty()) {
199 }
else if (!toTrainStop.empty()) {
201 }
else if (!toContainerStop.empty()) {
203 }
else if (!toChargingStation.empty()) {
205 }
else if (!toParkingArea.empty()) {
210 }
else if (!fromBusStop.empty()) {
211 if (!toEdge.empty()) {
213 }
else if (!toTAZ.empty()) {
215 }
else if (!toJunction.empty()) {
217 }
else if (!toBusStop.empty()) {
219 }
else if (!toTrainStop.empty()) {
221 }
else if (!toContainerStop.empty()) {
223 }
else if (!toChargingStation.empty()) {
225 }
else if (!toParkingArea.empty()) {
230 }
else if (!fromTrainStop.empty()) {
231 if (!toEdge.empty()) {
233 }
else if (!toTAZ.empty()) {
235 }
else if (!toJunction.empty()) {
237 }
else if (!toBusStop.empty()) {
239 }
else if (!toTrainStop.empty()) {
241 }
else if (!toContainerStop.empty()) {
243 }
else if (!toChargingStation.empty()) {
245 }
else if (!toParkingArea.empty()) {
250 }
else if (!fromContainerStop.empty()) {
251 if (!toEdge.empty()) {
253 }
else if (!toTAZ.empty()) {
255 }
else if (!toJunction.empty()) {
257 }
else if (!toBusStop.empty()) {
259 }
else if (!toTrainStop.empty()) {
261 }
else if (!toContainerStop.empty()) {
263 }
else if (!toChargingStation.empty()) {
265 }
else if (!toParkingArea.empty()) {
270 }
else if (!fromChargingStation.empty()) {
271 if (!toEdge.empty()) {
273 }
else if (!toTAZ.empty()) {
275 }
else if (!toJunction.empty()) {
277 }
else if (!toBusStop.empty()) {
279 }
else if (!toTrainStop.empty()) {
281 }
else if (!toContainerStop.empty()) {
283 }
else if (!toChargingStation.empty()) {
285 }
else if (!toParkingArea.empty()) {
290 }
else if (!fromParkingArea.empty()) {
291 if (!toEdge.empty()) {
293 }
else if (!toTAZ.empty()) {
295 }
else if (!toJunction.empty()) {
297 }
else if (!toBusStop.empty()) {
299 }
else if (!toTrainStop.empty()) {
301 }
else if (!toContainerStop.empty()) {
303 }
else if (!toChargingStation.empty()) {
305 }
else if (!toParkingArea.empty()) {
318 if (isSingleEdgePlan()) {
320 }
else if (!fromEdge.empty()) {
321 if (!toEdge.empty()) {
323 }
else if (!toTAZ.empty()) {
325 }
else if (!toJunction.empty()) {
327 }
else if (!toBusStop.empty()) {
329 }
else if (!toTrainStop.empty()) {
331 }
else if (!toContainerStop.empty()) {
333 }
else if (!toChargingStation.empty()) {
335 }
else if (!toParkingArea.empty()) {
340 }
else if (!fromTAZ.empty()) {
341 if (!toEdge.empty()) {
343 }
else if (!toTAZ.empty()) {
345 }
else if (!toJunction.empty()) {
347 }
else if (!toBusStop.empty()) {
349 }
else if (!toTrainStop.empty()) {
351 }
else if (!toContainerStop.empty()) {
353 }
else if (!toChargingStation.empty()) {
355 }
else if (!toParkingArea.empty()) {
360 }
else if (!fromJunction.empty()) {
361 if (!toEdge.empty()) {
363 }
else if (!toTAZ.empty()) {
365 }
else if (!toJunction.empty()) {
367 }
else if (!toBusStop.empty()) {
369 }
else if (!toTrainStop.empty()) {
371 }
else if (!toContainerStop.empty()) {
373 }
else if (!toChargingStation.empty()) {
375 }
else if (!toParkingArea.empty()) {
380 }
else if (!fromBusStop.empty()) {
381 if (!toEdge.empty()) {
383 }
else if (!toTAZ.empty()) {
385 }
else if (!toJunction.empty()) {
387 }
else if (!toBusStop.empty()) {
389 }
else if (!toTrainStop.empty()) {
391 }
else if (!toContainerStop.empty()) {
393 }
else if (!toChargingStation.empty()) {
395 }
else if (!toParkingArea.empty()) {
400 }
else if (!fromTrainStop.empty()) {
401 if (!toEdge.empty()) {
403 }
else if (!toTAZ.empty()) {
405 }
else if (!toJunction.empty()) {
407 }
else if (!toBusStop.empty()) {
409 }
else if (!toTrainStop.empty()) {
411 }
else if (!toContainerStop.empty()) {
413 }
else if (!toChargingStation.empty()) {
415 }
else if (!toParkingArea.empty()) {
420 }
else if (!fromContainerStop.empty()) {
421 if (!toEdge.empty()) {
423 }
else if (!toTAZ.empty()) {
425 }
else if (!toJunction.empty()) {
427 }
else if (!toBusStop.empty()) {
429 }
else if (!toTrainStop.empty()) {
431 }
else if (!toContainerStop.empty()) {
433 }
else if (!toChargingStation.empty()) {
435 }
else if (!toParkingArea.empty()) {
440 }
else if (!fromChargingStation.empty()) {
441 if (!toEdge.empty()) {
443 }
else if (!toTAZ.empty()) {
445 }
else if (!toJunction.empty()) {
447 }
else if (!toBusStop.empty()) {
449 }
else if (!toTrainStop.empty()) {
451 }
else if (!toContainerStop.empty()) {
453 }
else if (!toChargingStation.empty()) {
455 }
else if (!toParkingArea.empty()) {
460 }
else if (!fromParkingArea.empty()) {
461 if (!toEdge.empty()) {
463 }
else if (!toTAZ.empty()) {
465 }
else if (!toJunction.empty()) {
467 }
else if (!toBusStop.empty()) {
469 }
else if (!toTrainStop.empty()) {
471 }
else if (!toContainerStop.empty()) {
473 }
else if (!toChargingStation.empty()) {
475 }
else if (!toParkingArea.empty()) {
488 if (isSingleEdgePlan()) {
490 }
else if (!fromEdge.empty()) {
491 if (!toEdge.empty()) {
493 }
else if (!toTAZ.empty()) {
495 }
else if (!toJunction.empty()) {
497 }
else if (!toBusStop.empty()) {
499 }
else if (!toTrainStop.empty()) {
501 }
else if (!toContainerStop.empty()) {
503 }
else if (!toChargingStation.empty()) {
505 }
else if (!toParkingArea.empty()) {
510 }
else if (!fromTAZ.empty()) {
511 if (!toEdge.empty()) {
513 }
else if (!toTAZ.empty()) {
515 }
else if (!toJunction.empty()) {
517 }
else if (!toBusStop.empty()) {
519 }
else if (!toTrainStop.empty()) {
521 }
else if (!toContainerStop.empty()) {
523 }
else if (!toChargingStation.empty()) {
525 }
else if (!toParkingArea.empty()) {
530 }
else if (!fromJunction.empty()) {
531 if (!toEdge.empty()) {
533 }
else if (!toTAZ.empty()) {
535 }
else if (!toJunction.empty()) {
537 }
else if (!toBusStop.empty()) {
539 }
else if (!toTrainStop.empty()) {
541 }
else if (!toContainerStop.empty()) {
543 }
else if (!toChargingStation.empty()) {
545 }
else if (!toParkingArea.empty()) {
550 }
else if (!fromBusStop.empty()) {
551 if (!toEdge.empty()) {
553 }
else if (!toTAZ.empty()) {
555 }
else if (!toJunction.empty()) {
557 }
else if (!toBusStop.empty()) {
559 }
else if (!toTrainStop.empty()) {
561 }
else if (!toContainerStop.empty()) {
563 }
else if (!toChargingStation.empty()) {
565 }
else if (!toParkingArea.empty()) {
570 }
else if (!fromTrainStop.empty()) {
571 if (!toEdge.empty()) {
573 }
else if (!toTAZ.empty()) {
575 }
else if (!toJunction.empty()) {
577 }
else if (!toBusStop.empty()) {
579 }
else if (!toTrainStop.empty()) {
581 }
else if (!toContainerStop.empty()) {
583 }
else if (!toChargingStation.empty()) {
585 }
else if (!toParkingArea.empty()) {
590 }
else if (!fromContainerStop.empty()) {
591 if (!toEdge.empty()) {
593 }
else if (!toTAZ.empty()) {
595 }
else if (!toJunction.empty()) {
597 }
else if (!toBusStop.empty()) {
599 }
else if (!toTrainStop.empty()) {
601 }
else if (!toContainerStop.empty()) {
603 }
else if (!toChargingStation.empty()) {
605 }
else if (!toParkingArea.empty()) {
610 }
else if (!fromChargingStation.empty()) {
611 if (!toEdge.empty()) {
613 }
else if (!toTAZ.empty()) {
615 }
else if (!toJunction.empty()) {
617 }
else if (!toBusStop.empty()) {
619 }
else if (!toTrainStop.empty()) {
621 }
else if (!toContainerStop.empty()) {
623 }
else if (!toChargingStation.empty()) {
625 }
else if (!toParkingArea.empty()) {
630 }
else if (!fromParkingArea.empty()) {
631 if (!toEdge.empty()) {
633 }
else if (!toTAZ.empty()) {
635 }
else if (!toJunction.empty()) {
637 }
else if (!toBusStop.empty()) {
639 }
else if (!toTrainStop.empty()) {
641 }
else if (!toContainerStop.empty()) {
643 }
else if (!toChargingStation.empty()) {
645 }
else if (!toParkingArea.empty()) {
658 if (isSingleEdgePlan()) {
660 }
else if (!fromEdge.empty()) {
661 if (!toEdge.empty()) {
663 }
else if (!toTAZ.empty()) {
665 }
else if (!toJunction.empty()) {
667 }
else if (!toBusStop.empty()) {
669 }
else if (!toTrainStop.empty()) {
671 }
else if (!toContainerStop.empty()) {
673 }
else if (!toChargingStation.empty()) {
675 }
else if (!toParkingArea.empty()) {
680 }
else if (!fromTAZ.empty()) {
681 if (!toEdge.empty()) {
683 }
else if (!toTAZ.empty()) {
685 }
else if (!toJunction.empty()) {
687 }
else if (!toBusStop.empty()) {
689 }
else if (!toTrainStop.empty()) {
691 }
else if (!toContainerStop.empty()) {
693 }
else if (!toChargingStation.empty()) {
695 }
else if (!toParkingArea.empty()) {
700 }
else if (!fromJunction.empty()) {
701 if (!toEdge.empty()) {
703 }
else if (!toTAZ.empty()) {
705 }
else if (!toJunction.empty()) {
707 }
else if (!toBusStop.empty()) {
709 }
else if (!toTrainStop.empty()) {
711 }
else if (!toContainerStop.empty()) {
713 }
else if (!toChargingStation.empty()) {
715 }
else if (!toParkingArea.empty()) {
720 }
else if (!fromBusStop.empty()) {
721 if (!toEdge.empty()) {
723 }
else if (!toTAZ.empty()) {
725 }
else if (!toJunction.empty()) {
727 }
else if (!toBusStop.empty()) {
729 }
else if (!toTrainStop.empty()) {
731 }
else if (!toContainerStop.empty()) {
733 }
else if (!toChargingStation.empty()) {
735 }
else if (!toParkingArea.empty()) {
740 }
else if (!fromTrainStop.empty()) {
741 if (!toEdge.empty()) {
743 }
else if (!toTAZ.empty()) {
745 }
else if (!toJunction.empty()) {
747 }
else if (!toBusStop.empty()) {
749 }
else if (!toTrainStop.empty()) {
751 }
else if (!toContainerStop.empty()) {
753 }
else if (!toChargingStation.empty()) {
755 }
else if (!toParkingArea.empty()) {
760 }
else if (!fromContainerStop.empty()) {
761 if (!toEdge.empty()) {
763 }
else if (!toTAZ.empty()) {
765 }
else if (!toJunction.empty()) {
767 }
else if (!toBusStop.empty()) {
769 }
else if (!toTrainStop.empty()) {
771 }
else if (!toContainerStop.empty()) {
773 }
else if (!toChargingStation.empty()) {
775 }
else if (!toParkingArea.empty()) {
780 }
else if (!fromChargingStation.empty()) {
781 if (!toEdge.empty()) {
783 }
else if (!toTAZ.empty()) {
785 }
else if (!toJunction.empty()) {
787 }
else if (!toBusStop.empty()) {
789 }
else if (!toTrainStop.empty()) {
791 }
else if (!toContainerStop.empty()) {
793 }
else if (!toChargingStation.empty()) {
795 }
else if (!toParkingArea.empty()) {
800 }
else if (!fromParkingArea.empty()) {
801 if (!toEdge.empty()) {
803 }
else if (!toTAZ.empty()) {
805 }
else if (!toJunction.empty()) {
807 }
else if (!toBusStop.empty()) {
809 }
else if (!toTrainStop.empty()) {
811 }
else if (!toContainerStop.empty()) {
813 }
else if (!toChargingStation.empty()) {
815 }
else if (!toParkingArea.empty()) {
828 if (isSingleEdgePlan()) {
830 }
else if (consecutiveEdges.size() > 0) {
832 }
else if (!fromEdge.empty()) {
833 if (!toEdge.empty()) {
835 }
else if (!toTAZ.empty()) {
837 }
else if (!toJunction.empty()) {
839 }
else if (!toBusStop.empty()) {
841 }
else if (!toTrainStop.empty()) {
843 }
else if (!toContainerStop.empty()) {
845 }
else if (!toChargingStation.empty()) {
847 }
else if (!toParkingArea.empty()) {
852 }
else if (!fromTAZ.empty()) {
853 if (!toEdge.empty()) {
855 }
else if (!toTAZ.empty()) {
857 }
else if (!toJunction.empty()) {
859 }
else if (!toBusStop.empty()) {
861 }
else if (!toTrainStop.empty()) {
863 }
else if (!toContainerStop.empty()) {
865 }
else if (!toChargingStation.empty()) {
867 }
else if (!toParkingArea.empty()) {
872 }
else if (!fromJunction.empty()) {
873 if (!toEdge.empty()) {
875 }
else if (!toTAZ.empty()) {
877 }
else if (!toJunction.empty()) {
879 }
else if (!toBusStop.empty()) {
881 }
else if (!toTrainStop.empty()) {
883 }
else if (!toContainerStop.empty()) {
885 }
else if (!toChargingStation.empty()) {
887 }
else if (!toParkingArea.empty()) {
892 }
else if (!fromBusStop.empty()) {
893 if (!toEdge.empty()) {
895 }
else if (!toTAZ.empty()) {
897 }
else if (!toJunction.empty()) {
899 }
else if (!toBusStop.empty()) {
901 }
else if (!toTrainStop.empty()) {
903 }
else if (!toContainerStop.empty()) {
905 }
else if (!toChargingStation.empty()) {
907 }
else if (!toParkingArea.empty()) {
912 }
else if (!fromTrainStop.empty()) {
913 if (!toEdge.empty()) {
915 }
else if (!toTAZ.empty()) {
917 }
else if (!toJunction.empty()) {
919 }
else if (!toBusStop.empty()) {
921 }
else if (!toTrainStop.empty()) {
923 }
else if (!toContainerStop.empty()) {
925 }
else if (!toChargingStation.empty()) {
927 }
else if (!toParkingArea.empty()) {
932 }
else if (!fromContainerStop.empty()) {
933 if (!toEdge.empty()) {
935 }
else if (!toTAZ.empty()) {
937 }
else if (!toJunction.empty()) {
939 }
else if (!toBusStop.empty()) {
941 }
else if (!toTrainStop.empty()) {
943 }
else if (!toContainerStop.empty()) {
945 }
else if (!toChargingStation.empty()) {
947 }
else if (!toParkingArea.empty()) {
952 }
else if (!fromChargingStation.empty()) {
953 if (!toEdge.empty()) {
955 }
else if (!toTAZ.empty()) {
957 }
else if (!toJunction.empty()) {
959 }
else if (!toBusStop.empty()) {
961 }
else if (!toTrainStop.empty()) {
963 }
else if (!toContainerStop.empty()) {
965 }
else if (!toChargingStation.empty()) {
967 }
else if (!toParkingArea.empty()) {
972 }
else if (!fromParkingArea.empty()) {
973 if (!toEdge.empty()) {
975 }
else if (!toTAZ.empty()) {
977 }
else if (!toJunction.empty()) {
979 }
else if (!toBusStop.empty()) {
981 }
else if (!toTrainStop.empty()) {
983 }
else if (!toContainerStop.empty()) {
985 }
else if (!toChargingStation.empty()) {
987 }
else if (!toParkingArea.empty()) {
1000 if (!toEdge.empty()) {
1002 }
else if (!toBusStop.empty()) {
1004 }
else if (!toTrainStop.empty()) {
1006 }
else if (!toContainerStop.empty()) {
1008 }
else if (!toChargingStation.empty()) {
1010 }
else if (!toParkingArea.empty()) {
1020 if (!toEdge.empty()) {
1022 }
else if (!toBusStop.empty()) {
1024 }
else if (!toTrainStop.empty()) {
1026 }
else if (!toContainerStop.empty()) {
1028 }
else if (!toChargingStation.empty()) {
1030 }
else if (!toParkingArea.empty()) {
1042 if (sumoBaseObject ==
nullptr) {
1047 if (parentObject ==
nullptr) {
1060 return *(objIterator - 1);
1068 const auto previousPlanObj = getPreviousPlanObj(sumoBaseObject);
1069 if (previousPlanObj) {
1071 const auto previousPlanParameters = previousPlanObj->getPlanParameters();
1072 if (!previousPlanParameters.toEdge.empty()) {
1074 resetPreviousFromAttributes(previousPlanObj,
"edge", previousPlanParameters.toEdge);
1075 fromEdge = previousPlanParameters.toEdge;
1076 }
else if (!previousPlanParameters.consecutiveEdges.empty()) {
1078 resetPreviousFromAttributes(previousPlanObj,
"consecutive edge", previousPlanParameters.consecutiveEdges.back());
1079 fromEdge = previousPlanParameters.consecutiveEdges.back();
1080 }
else if (!previousPlanParameters.toRoute.empty()) {
1082 resetPreviousFromAttributes(previousPlanObj,
"route edge", previousPlanParameters.toRoute);
1083 fromRoute = previousPlanParameters.toRoute;
1084 }
else if (!previousPlanParameters.toJunction.empty()) {
1086 resetPreviousFromAttributes(previousPlanObj,
"junction", previousPlanParameters.toJunction);
1087 fromJunction = previousPlanParameters.toJunction;
1088 }
else if (!previousPlanParameters.toTAZ.empty()) {
1090 resetPreviousFromAttributes(previousPlanObj,
"TAZ", previousPlanParameters.toTAZ);
1091 fromTAZ = previousPlanParameters.toTAZ;
1092 }
else if (!previousPlanParameters.toBusStop.empty()) {
1094 resetPreviousFromAttributes(previousPlanObj,
"bus stop", previousPlanParameters.toBusStop);
1095 fromBusStop = previousPlanParameters.toBusStop;
1096 }
else if (!previousPlanParameters.toTrainStop.empty()) {
1098 resetPreviousFromAttributes(previousPlanObj,
"train stop", previousPlanParameters.toTrainStop);
1099 fromTrainStop = previousPlanParameters.toTrainStop;
1100 }
else if (!previousPlanParameters.toContainerStop.empty()) {
1102 resetPreviousFromAttributes(previousPlanObj,
"container stop", previousPlanParameters.toContainerStop);
1103 fromContainerStop = previousPlanParameters.toContainerStop;
1104 }
else if (!previousPlanParameters.toChargingStation.empty()) {
1106 resetPreviousFromAttributes(previousPlanObj,
"charging station", previousPlanParameters.toChargingStation);
1107 fromChargingStation = previousPlanParameters.toChargingStation;
1108 }
else if (!previousPlanParameters.toParkingArea.empty()) {
1110 resetPreviousFromAttributes(previousPlanObj,
"parking area", previousPlanParameters.toParkingArea);
1111 fromParkingArea = previousPlanParameters.toParkingArea;
1119 const std::string& newType,
const std::string& newId)
const {
1120 if (!fromEdge.empty()) {
1121 writeIgnoringMessage(previousPlanObj,
"edge", fromEdge, newType, newId);
1123 if (!fromJunction.empty()) {
1124 writeIgnoringMessage(previousPlanObj,
"junction", fromJunction, newType, newId);
1126 if (!fromTAZ.empty()) {
1127 writeIgnoringMessage(previousPlanObj,
"TAZ", fromTAZ, newType, newId);
1129 if (!fromBusStop.empty()) {
1130 writeIgnoringMessage(previousPlanObj,
"bus stop", fromBusStop, newType, newId);
1132 if (!fromTrainStop.empty()) {
1133 writeIgnoringMessage(previousPlanObj,
"train stop", fromTrainStop, newType, newId);
1135 if (!fromContainerStop.empty()) {
1136 writeIgnoringMessage(previousPlanObj,
"container stop", fromContainerStop, newType, newId);
1138 if (!fromChargingStation.empty()) {
1139 writeIgnoringMessage(previousPlanObj,
"charging station", fromChargingStation, newType, newId);
1141 if (!fromParkingArea.empty()) {
1142 writeIgnoringMessage(previousPlanObj,
"parking area", fromParkingArea, newType, newId);
1149 const std::string& oldType,
const std::string& oldId,
const std::string& newType,
const std::string& newId)
const {
1150 WRITE_WARNING(
TLF(
"Ignoring from % '%' used in % '%' and using instead the previous end element % '%'",
1162 mySumoBaseObjectParent(parent),
1163 myVehicleTypeParameter(
"") {
1173 if (mySumoBaseObjectParent) {
1174 mySumoBaseObjectParent->removeSumoBaseObjectChild(
this);
1177 while (mySumoBaseObjectChildren.size() > 0) {
1178 delete mySumoBaseObjectChildren.back();
1190 myStringAttributes.clear();
1191 myIntAttributes.clear();
1192 myDoubleAttributes.clear();
1193 myBoolAttributes.clear();
1194 myPositionAttributes.clear();
1195 myTimeAttributes.clear();
1196 myColorAttributes.clear();
1197 myStringListAttributes.clear();
1198 myDoubleListAttributes.clear();
1199 myPositionVectorAttributes.clear();
1200 myParentIDs.clear();
1201 myParameters.clear();
1202 mySumoBaseObjectChildren.clear();
1204 myDefinedVehicleTypeParameter =
false;
1205 myDefinedVehicleParameter =
false;
1206 myDefinedStopParameter =
false;
1208 while (mySumoBaseObjectChildren.size() > 0) {
1209 delete mySumoBaseObjectChildren.back();
1222 myWasCreated =
true;
1234 return myWasCreated;
1240 return mySumoBaseObjectParent;
1244std::map<std::string, std::string>
1246 std::map<std::string, std::string> result;
1247 for (
const auto& attr : myStringAttributes) {
1248 result[
toString(attr.first)] = attr.second;
1250 for (
const auto& attr : myIntAttributes) {
1253 for (
const auto& attr : myDoubleAttributes) {
1256 for (
const auto& attr : myBoolAttributes) {
1259 for (
const auto& attr : myPositionAttributes) {
1262 for (
const auto& attr : myTimeAttributes) {
1265 for (
const auto& attr : myColorAttributes) {
1268 for (
const auto& attr : myStringListAttributes) {
1271 for (
const auto& attr : myDoubleListAttributes) {
1274 for (
const auto& attr : myPositionVectorAttributes) {
1283 if (hasStringAttribute(attr)) {
1284 return myStringAttributes.at(attr);
1286 handleAttributeError(attr,
"string");
1294 if (hasIntAttribute(attr)) {
1295 return myIntAttributes.at(attr);
1297 handleAttributeError(attr,
"int");
1305 if (hasDoubleAttribute(attr)) {
1306 return myDoubleAttributes.at(attr);
1308 handleAttributeError(attr,
"double");
1316 if (hasBoolAttribute(attr)) {
1317 return myBoolAttributes.at(attr);
1319 handleAttributeError(attr,
"bool");
1327 if (hasPositionAttribute(attr)) {
1328 return myPositionAttributes.at(attr);
1330 handleAttributeError(attr,
"position");
1338 if (hasTimeAttribute(attr)) {
1339 return myTimeAttributes.at(attr);
1341 handleAttributeError(attr,
"time");
1350 if (hasTimeAttribute(attr)) {
1351 return myTimeAttributes.at(attr);
1355 if (hasTimeAttribute(attr)) {
1356 return myTimeAttributes.at(attr);
1366 if (hasColorAttribute(attr)) {
1367 return myColorAttributes.at(attr);
1369 handleAttributeError(attr,
"color");
1375const std::vector<std::string>&
1377 if (hasStringListAttribute(attr)) {
1378 return myStringListAttributes.at(attr);
1380 handleAttributeError(attr,
"string list");
1386const std::vector<double>&
1388 if (hasDoubleListAttribute(attr)) {
1389 return myDoubleListAttributes.at(attr);
1391 handleAttributeError(attr,
"double list");
1399 if (hasPositionVectorAttribute(attr)) {
1400 return myPositionVectorAttributes.at(attr);
1402 handleAttributeError(attr,
"position vector");
1409 if (hasParentID(tag)) {
1410 return myParentIDs.at(tag);
1426 if (myDefinedVehicleTypeParameter) {
1427 return myVehicleTypeParameter;
1436 if (myDefinedVehicleParameter) {
1437 return myVehicleParameter;
1446 if (myDefinedStopParameter) {
1447 return myStopParameter;
1455const std::map<std::string, std::string>&
1457 return myParameters;
1463 return myPlanParameters;
1467const std::vector<CommonXMLStructure::SumoBaseObject*>&
1469 return mySumoBaseObjectChildren;
1475 return myStringAttributes.count(attr) > 0;
1481 return myIntAttributes.count(attr) > 0;
1487 return myDoubleAttributes.count(attr) > 0;
1493 return myBoolAttributes.count(attr) > 0;
1499 return myPositionAttributes.count(attr) > 0;
1505 return myTimeAttributes.count(attr) > 0;
1511 return myColorAttributes.count(attr) > 0;
1517 return myStringListAttributes.count(attr) > 0;
1523 return myDoubleListAttributes.count(attr) > 0;
1529 return myPositionVectorAttributes.count(attr) > 0;
1535 return myParentIDs.count(tag) > 0;
1541 myStringAttributes[attr] = value;
1547 myIntAttributes[attr] = value;
1553 myDoubleAttributes[attr] = value;
1559 myBoolAttributes[attr] = value;
1565 myPositionAttributes[attr] = value;
1571 myTimeAttributes[attr] = value;
1577 myColorAttributes[attr] = value;
1583 myStringListAttributes[attr] = value;
1589 myDoubleListAttributes[attr] = value;
1595 myPositionVectorAttributes[attr] = value;
1601 myParentIDs[tag] = ID;
1608 for (
const auto& parameter : parameters) {
1610 addParameter(keyValue[0], keyValue[1]);
1618 if (myDefinedVehicleTypeParameter) {
1619 myVehicleTypeParameter.setParameter(key, value);
1620 }
else if (myDefinedVehicleParameter) {
1621 myVehicleParameter.setParameter(key, value);
1622 }
else if (myDefinedStopParameter) {
1623 myStopParameter.setParameter(key, value);
1625 myParameters[key] = value;
1638 myVehicleTypeParameter = *vehicleTypeParameter;
1639 myDefinedVehicleTypeParameter =
true;
1641 addStringAttribute(
SUMO_ATTR_ID, myVehicleTypeParameter.id);
1647 myVehicleParameter = *vehicleParameter;
1648 myDefinedVehicleParameter =
true;
1650 if (!myVehicleParameter.id.empty()) {
1651 addStringAttribute(
SUMO_ATTR_ID, myVehicleParameter.id);
1654 if (!vehicleParameter->
routeid.empty()) {
1662 myStopParameter = stopParameter;
1663 myDefinedStopParameter =
true;
1665 if (!myStopParameter.edge.empty()) {
1669 if (!myStopParameter.lane.empty()) {
1673 if (!myStopParameter.busstop.empty()) {
1677 if (!myStopParameter.containerstop.empty()) {
1681 if (!myStopParameter.parkingarea.empty()) {
1685 if (!myStopParameter.chargingStation.empty()) {
1693 myPlanParameters = planParameters;
1699 mySumoBaseObjectChildren.push_back(sumoBaseObject);
1706 auto it = std::find(mySumoBaseObjectChildren.begin(), mySumoBaseObjectChildren.end(), sumoBaseObject);
1708 if (it != mySumoBaseObjectChildren.end()) {
1709 mySumoBaseObjectChildren.erase(it);
#define WRITE_ERRORF(...)
#define WRITE_WARNING(msg)
std::string time2string(SUMOTime t, bool humanReadable)
convert SUMOTime to string (independently of global format setting)
SUMOVehicleClass
Definition of vehicle classes to differ between different lane usage and authority types.
@ SVC_IGNORING
vehicles ignoring classes
SumoXMLTag
Numbers representing SUMO-XML - element names.
@ GNE_TAG_RIDE_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_TAZ_TAZ
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_PARKINGAREA_BUSSTOP
@ GNE_TAG_TRANSPORT_TAZ_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_WALK_BUSSTOP_BUSSTOP
@ GNE_TAG_TRANSPORT_JUNCTION_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_JUNCTION_EDGE
@ GNE_TAG_PERSONTRIP_EDGE_EDGE
@ GNE_TAG_PERSONTRIP_TAZ_EDGE
@ GNE_TAG_TRANSHIP_JUNCTION_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_EDGE_CONTAINERSTOP
@ GNE_TAG_WALK_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_WALK_CHARGINGSTATION_JUNCTION
@ GNE_TAG_RIDE_CHARGINGSTATION_TAZ
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_TAZ
@ GNE_TAG_RIDE_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_TRANSPORT_BUSSTOP_JUNCTION
@ GNE_TAG_RIDE_BUSSTOP_BUSSTOP
@ GNE_TAG_WALK_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_TAZ_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_PERSONTRIP_EDGE_JUNCTION
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_JUNCTION
@ GNE_TAG_TRANSHIP_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_RIDE_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_TRAINSTOP_EDGE
@ GNE_TAG_WALK_TAZ_BUSSTOP
@ GNE_TAG_PERSONTRIP_EDGE_PARKINGAREA
@ GNE_TAG_PERSONTRIP_TRAINSTOP_EDGE
@ GNE_TAG_PERSONTRIP_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_TRAINSTOP
@ GNE_TAG_STOPCONTAINER_TRAINSTOP
@ GNE_TAG_RIDE_JUNCTION_BUSSTOP
@ GNE_TAG_RIDE_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_PARKINGAREA
@ GNE_TAG_PERSONTRIP_TRAINSTOP_PARKINGAREA
@ GNE_TAG_TRANSPORT_TAZ_PARKINGAREA
@ GNE_TAG_PERSONTRIP_TAZ_CHARGINGSTATION
@ GNE_TAG_RIDE_CONTAINERSTOP_EDGE
@ GNE_TAG_TRANSHIP_TAZ_EDGE
@ GNE_TAG_WALK_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_PERSONTRIP_BUSSTOP_EDGE
@ GNE_TAG_WALK_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_WALK_PARKINGAREA_TRAINSTOP
@ GNE_TAG_WALK_PARKINGAREA_PARKINGAREA
@ GNE_TAG_TRANSPORT_EDGE_TRAINSTOP
@ GNE_TAG_WALK_BUSSTOP_TRAINSTOP
@ GNE_TAG_TRANSHIP_EDGE_CHARGINGSTATION
@ GNE_TAG_PERSONTRIP_TAZ_TRAINSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_TAZ
@ GNE_TAG_WALK_TAZ_CONTAINERSTOP
@ GNE_TAG_WALK_PARKINGAREA_JUNCTION
@ GNE_TAG_WALK_CONTAINERSTOP_EDGE
@ GNE_TAG_TRANSHIP_JUNCTION_BUSSTOP
@ GNE_TAG_PERSONTRIP_EDGE_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_EDGE_PARKINGAREA
@ GNE_TAG_TRANSPORT_TRAINSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_PARKINGAREA_JUNCTION
@ GNE_TAG_TRANSHIP_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_TAZ_TRAINSTOP
@ GNE_TAG_WALK_EDGE_PARKINGAREA
@ GNE_TAG_TRANSPORT_EDGE_BUSSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_EDGE
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_PARKINGAREA
@ SUMO_TAG_NOTHING
invalid tag, must be the last one
@ GNE_TAG_WALK_PARKINGAREA_EDGE
@ GNE_TAG_TRANSHIP_EDGE_EDGE
@ GNE_TAG_RIDE_TRAINSTOP_JUNCTION
@ GNE_TAG_RIDE_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_JUNCTION_PARKINGAREA
@ GNE_TAG_RIDE_CHARGINGSTATION_EDGE
@ GNE_TAG_RIDE_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_TAZ
@ GNE_TAG_WALK_BUSSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_TRAINSTOP
@ SUMO_TAG_ROOTFILE
root file
@ GNE_TAG_TRANSHIP_EDGE_CONTAINERSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_JUNCTION
@ GNE_TAG_TRANSPORT_PARKINGAREA_PARKINGAREA
@ GNE_TAG_RIDE_EDGE_JUNCTION
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_TRAINSTOP
@ GNE_TAG_RIDE_PARKINGAREA_TAZ
@ GNE_TAG_WALK_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_PERSONTRIP_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_TAZ
@ GNE_TAG_STOPCONTAINER_EDGE
@ GNE_TAG_WALK_TRAINSTOP_TAZ
@ GNE_TAG_PERSONTRIP_PARKINGAREA_JUNCTION
@ GNE_TAG_TRANSPORT_JUNCTION_BUSSTOP
@ GNE_TAG_TRANSHIP_JUNCTION_PARKINGAREA
@ GNE_TAG_STOPCONTAINER_PARKINGAREA
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_STOPPERSON_BUSSTOP
@ GNE_TAG_TRANSPORT_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_BUSSTOP_TRAINSTOP
@ GNE_TAG_RIDE_PARKINGAREA_BUSSTOP
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_TAZ
@ GNE_TAG_RIDE_TAZ_TRAINSTOP
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_EDGE
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_PERSONTRIP_JUNCTION_BUSSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_TRANSPORT_PARKINGAREA_EDGE
@ GNE_TAG_PERSONTRIP_TRAINSTOP_TAZ
@ GNE_TAG_RIDE_PARKINGAREA_JUNCTION
@ GNE_TAG_TRANSHIP_PARKINGAREA_TRAINSTOP
@ GNE_TAG_RIDE_JUNCTION_JUNCTION
@ GNE_TAG_WALK_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_RIDE_BUSSTOP_TAZ
@ GNE_TAG_PERSONTRIP_TAZ_PARKINGAREA
@ GNE_TAG_TRANSHIP_BUSSTOP_JUNCTION
@ GNE_TAG_RIDE_JUNCTION_PARKINGAREA
@ GNE_TAG_TRANSPORT_EDGE_TAZ
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_WALK_JUNCTION_PARKINGAREA
@ GNE_TAG_TRANSHIP_EDGE_TAZ
@ GNE_TAG_RIDE_TRAINSTOP_TAZ
@ GNE_TAG_RIDE_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_WALK_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_PERSONTRIP_JUNCTION_TRAINSTOP
@ GNE_TAG_RIDE_JUNCTION_TRAINSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_TAZ
@ GNE_TAG_PERSONTRIP_TRAINSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_EDGE
@ GNE_TAG_TRANSHIP_TRAINSTOP_JUNCTION
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_EDGE_JUNCTION
@ GNE_TAG_PERSONTRIP_BUSSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_TAZ_TRAINSTOP
@ GNE_TAG_WALK_JUNCTION_CONTAINERSTOP
@ GNE_TAG_STOPCONTAINER_CONTAINERSTOP
@ GNE_TAG_RIDE_TAZ_CONTAINERSTOP
@ GNE_TAG_RIDE_BUSSTOP_TRAINSTOP
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_EDGE
@ GNE_TAG_PERSONTRIP_EDGE_TRAINSTOP
@ GNE_TAG_RIDE_BUSSTOP_EDGE
@ GNE_TAG_RIDE_TRAINSTOP_BUSSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_TAZ
@ GNE_TAG_WALK_TRAINSTOP_EDGE
@ GNE_TAG_PERSONTRIP_PARKINGAREA_EDGE
@ GNE_TAG_TRANSPORT_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_RIDE_JUNCTION_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_PARKINGAREA_TAZ
@ GNE_TAG_PERSONTRIP_PARKINGAREA_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_TRAINSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_EDGE_EDGE
@ GNE_TAG_WALK_EDGE_TRAINSTOP
@ GNE_TAG_WALK_TAZ_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_EDGE_CONTAINERSTOP
@ GNE_TAG_STOPCONTAINER_BUSSTOP
@ GNE_TAG_WALK_JUNCTION_TAZ
@ GNE_TAG_WALK_JUNCTION_CHARGINGSTATION
@ GNE_TAG_WALK_CHARGINGSTATION_TAZ
@ GNE_TAG_PERSONTRIP_TAZ_BUSSTOP
@ GNE_TAG_RIDE_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_RIDE_BUSSTOP_JUNCTION
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_JUNCTION
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_WALK_JUNCTION_JUNCTION
@ GNE_TAG_TRANSPORT_BUSSTOP_TAZ
@ GNE_TAG_RIDE_JUNCTION_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_PARKINGAREA_TRAINSTOP
@ GNE_TAG_TRANSHIP_PARKINGAREA_TAZ
@ GNE_TAG_TRANSHIP_PARKINGAREA_PARKINGAREA
@ GNE_TAG_WALK_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_TRANSHIP_TAZ_PARKINGAREA
@ GNE_TAG_PERSONTRIP_TAZ_TAZ
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_TAZ_BUSSTOP
@ GNE_TAG_TRANSPORT_TAZ_EDGE
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_RIDE_EDGE_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_TAZ_TAZ
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_EDGE
@ GNE_TAG_PERSONTRIP_EDGE_BUSSTOP
@ GNE_TAG_TRANSPORT_EDGE_JUNCTION
@ GNE_TAG_WALK_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TAZ_BUSSTOP
@ GNE_TAG_WALK_BUSSTOP_PARKINGAREA
@ GNE_TAG_WALK_CHARGINGSTATION_PARKINGAREA
@ GNE_TAG_TRANSPORT_JUNCTION_JUNCTION
@ GNE_TAG_PERSONTRIP_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_TRAINSTOP
@ GNE_TAG_PERSONTRIP_BUSSTOP_TAZ
@ GNE_TAG_RIDE_TAZ_PARKINGAREA
@ GNE_TAG_WALK_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_RIDE_CHARGINGSTATION_PARKINGAREA
@ GNE_TAG_RIDE_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_TAZ
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_EDGE
@ GNE_TAG_PERSONTRIP_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_WALK_BUSSTOP_EDGE
@ GNE_TAG_RIDE_JUNCTION_TAZ
@ GNE_TAG_TRANSPORT_TRAINSTOP_BUSSTOP
@ GNE_TAG_WALK_JUNCTION_TRAINSTOP
@ GNE_TAG_TRANSHIP_EDGE_TRAINSTOP
@ GNE_TAG_TRANSHIP_TRAINSTOP_TRAINSTOP
@ GNE_TAG_RIDE_PARKINGAREA_PARKINGAREA
@ GNE_TAG_WALK_TRAINSTOP_PARKINGAREA
@ GNE_TAG_RIDE_EDGE_BUSSTOP
@ GNE_TAG_WALK_TAZ_JUNCTION
@ GNE_TAG_RIDE_TAZ_JUNCTION
@ GNE_TAG_PERSONTRIP_JUNCTION_PARKINGAREA
@ GNE_TAG_TRANSPORT_BUSSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_PARKINGAREA
@ GNE_TAG_TRANSPORT_PARKINGAREA_JUNCTION
@ GNE_TAG_STOPPERSON_CONTAINERSTOP
@ GNE_TAG_WALK_BUSSTOP_TAZ
@ GNE_TAG_RIDE_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_BUSSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_PARKINGAREA
@ GNE_TAG_PERSONTRIP_JUNCTION_JUNCTION
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_JUNCTION
@ GNE_TAG_WALK_TRAINSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_JUNCTION_TRAINSTOP
@ GNE_TAG_PERSONTRIP_TAZ_JUNCTION
@ GNE_TAG_WALK_EDGE_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_JUNCTION_TAZ
@ GNE_TAG_TRANSPORT_PARKINGAREA_BUSSTOP
@ GNE_TAG_RIDE_EDGE_TRAINSTOP
@ GNE_TAG_TRANSHIP_TAZ_JUNCTION
@ GNE_TAG_TRANSHIP_JUNCTION_CHARGINGSTATION
@ GNE_TAG_WALK_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_WALK_JUNCTION_BUSSTOP
@ GNE_TAG_TRANSHIP_JUNCTION_JUNCTION
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_JUNCTION
@ GNE_TAG_WALK_JUNCTION_EDGE
@ GNE_TAG_PERSONTRIP_BUSSTOP_PARKINGAREA
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_BUSSTOP
@ GNE_TAG_RIDE_CHARGINGSTATION_JUNCTION
@ GNE_TAG_RIDE_BUSSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_JUNCTION_TRAINSTOP
@ GNE_TAG_WALK_EDGE_CONTAINERSTOP
@ GNE_TAG_WALK_TRAINSTOP_JUNCTION
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_PARKINGAREA
@ GNE_TAG_STOPPERSON_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_TAZ
@ GNE_TAG_TRANSPORT_BUSSTOP_EDGE
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_WALK_PARKINGAREA_TAZ
@ GNE_TAG_PERSONTRIP_JUNCTION_EDGE
@ GNE_TAG_RIDE_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_RIDE_CHARGINGSTATION_TRAINSTOP
@ GNE_TAG_STOPPERSON_TRAINSTOP
@ GNE_TAG_TRANSPORT_CHARGINGSTATION_BUSSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_CONTAINERSTOP
@ GNE_TAG_TRANSHIP_EDGE_BUSSTOP
@ GNE_TAG_RIDE_BUSSTOP_PARKINGAREA
@ GNE_TAG_WALK_EDGE_JUNCTION
@ GNE_TAG_RIDE_PARKINGAREA_EDGE
@ GNE_TAG_PERSONTRIP_JUNCTION_TAZ
@ GNE_TAG_TRANSHIP_PARKINGAREA_EDGE
@ GNE_TAG_TRANSPORT_PARKINGAREA_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_TRAINSTOP_CONTAINERSTOP
@ GNE_TAG_PERSONTRIP_JUNCTION_CONTAINERSTOP
@ GNE_TAG_WALK_TRAINSTOP_TRAINSTOP
@ GNE_TAG_WALK_CHARGINGSTATION_EDGE
@ GNE_TAG_TRANSHIP_EDGE_PARKINGAREA
@ GNE_TAG_WALK_EDGE_BUSSTOP
@ GNE_TAG_PERSONTRIP_PARKINGAREA_PARKINGAREA
@ GNE_TAG_TRANSHIP_TRAINSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_BUSSTOP_BUSSTOP
@ GNE_TAG_TRANSPORT_TRAINSTOP_EDGE
@ GNE_TAG_PERSONTRIP_TRAINSTOP_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_EDGE_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_RIDE_EDGE_PARKINGAREA
@ GNE_TAG_TRANSHIP_CHARGINGSTATION_JUNCTION
@ GNE_TAG_RIDE_BUSSTOP_CONTAINERSTOP
@ GNE_TAG_WALK_TAZ_TRAINSTOP
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_RIDE_JUNCTION_EDGE
@ GNE_TAG_TRANSHIP_TRAINSTOP_PARKINGAREA
@ GNE_TAG_PERSONTRIP_CONTAINERSTOP_BUSSTOP
@ GNE_TAG_TRANSHIP_JUNCTION_TAZ
@ GNE_TAG_TRANSPORT_JUNCTION_CONTAINERSTOP
@ GNE_TAG_TRANSPORT_TAZ_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_TAZ_JUNCTION
@ GNE_TAG_RIDE_TRAINSTOP_TRAINSTOP
@ GNE_TAG_TRANSPORT_JUNCTION_EDGE
@ GNE_TAG_TRANSPORT_BUSSTOP_BUSSTOP
@ GNE_TAG_WALK_PARKINGAREA_BUSSTOP
@ GNE_TAG_RIDE_CONTAINERSTOP_TAZ
@ GNE_TAG_STOPCONTAINER_CHARGINGSTATION
@ GNE_TAG_TRANSPORT_BUSSTOP_PARKINGAREA
@ GNE_TAG_WALK_TAZ_PARKINGAREA
@ GNE_TAG_TRANSHIP_TAZ_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_BUSSTOP_TAZ
@ GNE_TAG_PERSONTRIP_TRAINSTOP_JUNCTION
@ GNE_TAG_RIDE_CONTAINERSTOP_TRAINSTOP
@ GNE_TAG_RIDE_TAZ_CHARGINGSTATION
@ GNE_TAG_STOPPERSON_EDGE
@ GNE_TAG_RIDE_CONTAINERSTOP_JUNCTION
@ GNE_TAG_PERSONTRIP_JUNCTION_CHARGINGSTATION
@ GNE_TAG_RIDE_PARKINGAREA_TRAINSTOP
@ GNE_TAG_TRANSPORT_CONTAINERSTOP_PARKINGAREA
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_CHARGINGSTATION
@ GNE_TAG_PERSONTRIP_EDGE_TAZ
@ GNE_TAG_RIDE_TAZ_BUSSTOP
@ GNE_TAG_WALK_CONTAINERSTOP_CONTAINERSTOP
@ GNE_TAG_RIDE_TRAINSTOP_PARKINGAREA
@ GNE_TAG_TRANSHIP_CONTAINERSTOP_EDGE
@ GNE_TAG_WALK_CHARGINGSTATION_CHARGINGSTATION
@ GNE_TAG_TRANSHIP_TRAINSTOP_TAZ
@ GNE_TAG_RIDE_EDGE_CONTAINERSTOP
@ GNE_TAG_STOPPERSON_PARKINGAREA
@ GNE_TAG_RIDE_TRAINSTOP_EDGE
@ GNE_TAG_TRANSHIP_TAZ_CONTAINERSTOP
SumoXMLAttr
Numbers representing SUMO-XML - attributes.
@ GNE_ATTR_FROM_TRAINSTOP
@ SUMO_ATTR_FROM_JUNCTION
@ SUMO_ATTR_CONTAINER_STOP
@ SUMO_ATTR_EDGES
the edges of a route
@ SUMO_ATTR_CHARGING_STATION
@ GNE_ATTR_FROM_PARKINGAREA
@ GNE_ATTR_FROM_CONTAINERSTOP
@ GNE_ATTR_FROM_CHARGINGSTATION
std::string toString(const T &t, std::streamsize accuracy=gPrecision)
plan parameters (used for group all from-to parameters related with plans)
SumoXMLTag getPersonStopTag() const
get the person stop tag for the current combination of parameters
SumoXMLTag getRideTag() const
get the ride tag for the current combination of parameters
void writeIgnoringMessage(const CommonXMLStructure::SumoBaseObject *previousPlanObj, const std::string &oldType, const std::string &oldId, const std::string &newType, const std::string &newId) const
write ignoring message
int getNumberOfDefinedParameters() const
get number of defined plans
SumoXMLTag getPersonTripTag() const
get the personTrip tag for the current combination of parameters
SumoXMLTag getTransportTag() const
get the transport tag for the current combination of parameters
const CommonXMLStructure::SumoBaseObject * getPreviousPlanObj(const CommonXMLStructure::SumoBaseObject *sumoBaseObject) const
get previous plan obj
void clear()
clear parameters
bool isSingleEdgePlan() const
check if this is a single-edge plan
void updateFromAttributes(const CommonXMLStructure::SumoBaseObject *sumoBaseObject)
update the from attributes
SumoXMLTag getContainerStopTag() const
get the container stop tag for the current combination of parameters
SumoXMLTag getWalkTag() const
get the walk tag for the current combination of parameters
SumoXMLTag getTranshipTag() const
get the tranship tag for the current combination of parameters
void resetPreviousFromAttributes(const CommonXMLStructure::SumoBaseObject *previousPlanObj, const std::string &newType, const std::string &newId) const
reste all previous from attributes
void addDoubleListAttribute(const SumoXMLAttr attr, const std::vector< double > &value)
add double list attribute into current SumoBaseObject node
const std::vector< double > & getDoubleListAttribute(const SumoXMLAttr attr) const
get double list attribute
void addIntAttribute(const SumoXMLAttr attr, const int value)
add int attribute into current SumoBaseObject node
void setVehicleTypeParameter(const SUMOVTypeParameter *vehicleTypeParameter)
set vehicle type parameters
void addSumoBaseObjectChild(SumoBaseObject *sumoBaseObject)
add SumoBaseObject child
const SUMOVehicleParameter::Stop & getStopParameter() const
get stop parameters
const RGBColor & getColorAttribute(const SumoXMLAttr attr) const
get color attribute
SUMOTime getTimeAttribute(const SumoXMLAttr attr) const
get time attribute
const PositionVector & getPositionVectorAttribute(const SumoXMLAttr attr) const
get PositionVector attribute
SumoBaseObject(SumoBaseObject *sumoBaseObjectParent)
constructor
bool hasBoolAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given bool attribute
bool hasParentID(const SumoXMLTag tag) const
check if current SumoBaseObject has the given parent ID
void removeSumoBaseObjectChild(SumoBaseObject *sumoBaseObject)
remove SumoBaseObject child
bool hasStringAttribute(const SumoXMLAttr attr) const
has function
std::map< std::string, std::string > getAllAttributes() const
get all attributes in string format
bool hasPositionAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given bool attribute
void setTag(const SumoXMLTag tag)
set SumoBaseObject tag
SumoBaseObject * getParentSumoBaseObject() const
get pointer to mySumoBaseObjectParent SumoBaseObject (if is null, then is the root)
const Position & getPositionAttribute(const SumoXMLAttr attr) const
get Position attribute
const CommonXMLStructure::PlanParameters & getPlanParameters() const
get plan parameteres
void addPositionVectorAttribute(const SumoXMLAttr attr, const PositionVector &value)
add PositionVector attribute into current SumoBaseObject node
const std::map< std::string, std::string > & getParameters() const
get parameters
SUMOVehicleClass getVClass() const
vehicle class
SumoBaseObject * mySumoBaseObjectParent
pointer to SumoBaseObject parent (If is null, then is the root)
bool hasPositionVectorAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given positionVector attribute
bool hasTimeAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given time attribute
void addBoolAttribute(const SumoXMLAttr attr, const bool value)
add bool attribute into current SumoBaseObject node
void setPlanParameters(const CommonXMLStructure::PlanParameters &planParameters)
set plan parmeter
const SUMOVTypeParameter & getVehicleTypeParameter() const
get current vType
SumoXMLTag getTag() const
get XML myTag
const std::string & getParentID(const SumoXMLTag tag) const
get parent ID
void addParameter(const std::string &key, const std::string &value)
add parameter into current SumoBaseObject node
void addParentID(const SumoXMLTag tag, const std::string &ID)
add parent (string) attribute into current SumoBaseObject node
~SumoBaseObject()
destructor
bool hasColorAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given color attribute
void markAsCreated()
mark as successfully created
void addTimeAttribute(const SumoXMLAttr attr, const SUMOTime value)
add time attribute into current SumoBaseObject node
void addStringListAttribute(const SumoXMLAttr attr, const std::vector< std::string > &value)
add string list attribute into current SumoBaseObject node
bool hasIntAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given int attribute
int getIntAttribute(const SumoXMLAttr attr) const
get int attribute
void addDoubleAttribute(const SumoXMLAttr attr, const double value)
add double attribute into current SumoBaseObject node
void handleAttributeError(const SumoXMLAttr attr, const std::string &type) const
handle attribute error
bool hasDoubleAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given double attribute
void addPositionAttribute(const SumoXMLAttr attr, const Position &value)
add Position attribute into current SumoBaseObject node
bool getBoolAttribute(const SumoXMLAttr attr) const
get bool attribute
void setVClass(SUMOVehicleClass vClass)
set vehicle class
bool wasCreated() const
check if the object was successfully created in build<...> function
SUMOTime getPeriodAttribute() const
get 'period' attribute
void setVehicleParameter(const SUMOVehicleParameter *vehicleParameter)
set vehicle parameters
void addStringAttribute(const SumoXMLAttr attr, const std::string &value)
add string attribute into current SumoBaseObject node
void setStopParameter(const SUMOVehicleParameter::Stop &stopParameter)
add stop parameters
double getDoubleAttribute(const SumoXMLAttr attr) const
get double attribute
const SUMOVehicleParameter & getVehicleParameter() const
get vehicle parameters
bool hasDoubleListAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given double list attribute
const std::vector< std::string > & getStringListAttribute(const SumoXMLAttr attr) const
get string list attribute
bool hasStringListAttribute(const SumoXMLAttr attr) const
check if current SumoBaseObject has the given string list attribute
void clear()
clear SumoBaseObject
void addColorAttribute(const SumoXMLAttr attr, const RGBColor &value)
add color attribute into current SumoBaseObject node
const std::string & getStringAttribute(const SumoXMLAttr attr) const
get string attribute
void addParameters(const std::string &value)
add parameters into current SumoBaseObject node (format: key=value1|key2=value2|.....
const std::vector< SumoBaseObject * > & getSumoBaseObjectChildren() const
get SumoBaseObject children
void abortSUMOBaseOBject()
abort SUMOBaseOBject
CommonXMLStructure::SumoBaseObject * getSumoBaseObjectRoot() const
get SumoBaseObject root
CommonXMLStructure::SumoBaseObject * getCurrentSumoBaseObject() const
get current editedSumoBaseObject
void openSUMOBaseOBject()
open SUMOBaseOBject
CommonXMLStructure::SumoBaseObject * mySumoBaseObjectRoot
SumoBaseObject root.
CommonXMLStructure()
Constructor.
CommonXMLStructure::SumoBaseObject * myCurrentSumoBaseObject
last inserted SumoBaseObject
void closeSUMOBaseOBject()
close SUMOBaseOBject
~CommonXMLStructure()
Destructor.
A point in 2D or 3D with translation and scaling methods.
Encapsulated SAX-Attributes.
T getOpt(int attr, const char *objectid, bool &ok, T defaultValue=T(), bool report=true) const
Tries to read given attribute assuming it is an int.
Structure representing possible vehicle parameter.
Definition of vehicle stop (position and duration)
Structure representing possible vehicle parameter.
std::string routeid
The vehicle's route id.
std::vector< std::string > getVector()
return vector of strings