43 const std::vector<GNEEdge*>& parentEdges,
44 const std::vector<GNELane*>& parentLanes,
45 const std::vector<GNEShape*>& parentShapes,
46 const std::vector<GNEAdditional*>& parentAdditionals,
47 const std::vector<GNEDemandElement*>& parentDemandElements) :
48 myParentConnections(this),
49 myParentEdges(parentEdges),
50 myParentLanes(parentLanes),
51 myParentShapes(parentShapes),
52 myParentAdditionals(parentAdditionals),
53 myParentDemandElements(parentDemandElements),
84 const std::vector<GNEAdditional*>&
113 const std::vector<GNEDemandElement*>&
121 std::vector<std::string> solution;
128 solution.push_back(edge->getID());
130 if (edge == currentElement) {
131 solution.push_back(newNextElement->
getID());
140 solution.push_back(lane->getID());
142 if (lane == currentElement) {
143 solution.push_back(newNextElement->
getID());
154 if (edge ==
nullptr) {
167 if (edge ==
nullptr) {
180 const std::vector<GNEEdge*>&
186 std::vector<GNEEdge*>
188 std::vector<GNEEdge*> middleEdges;
190 if (middleEdges.size() > 2) {
195 middleEdges.push_back(*i);
202 const std::vector<GNEEdge*>&
211 if (lane ==
nullptr) {
224 if (lane ==
nullptr) {
234 const std::vector<GNELane*>&
243 if (shape ==
nullptr) {
256 if (shape ==
nullptr) {
266 const std::vector<GNEShape*>&
279 edge->removeChildShape(elementChild);
282 myParentEdges = GNEAttributeCarrier::parse<std::vector<GNEEdge*> >(elementChild->
getNet(), newEdgeIDs);
289 edge->addChildShape(elementChild);
299 edge->removeChildAdditional(elementChild);
309 edge->addChildAdditional(elementChild);
319 edge->removeChildDemandElement(elementChild);
329 edge->addChildDemandElement(elementChild);
339 edge->removeChildDemandElement(elementChild);
349 edge->addChildDemandElement(elementChild);
362 myParentEdges.front()->removeChildDemandElement(elementChild);
374 std::vector<GNEEdge*> newEdges;
380 for (
const auto& edge : newMiddleEdges) {
381 newEdges.push_back(edge);
388 if (updateChildReferences) {
403 myParentEdges.back()->removeChildDemandElement(elementChild);
417 edge->removePathElement(elementChild);
423 edge->addPathElement(elementChild);
432 lane->removeChildAdditional(elementChild);
442 lane->addChildAdditional(elementChild);
452 lane->removeChildDemandElement(elementChild);
462 lane->addChildDemandElement(elementChild);
472 lane->removeChildShape(elementChild);
475 myParentLanes = GNEAttributeCarrier::parse<std::vector<GNELane*> >(elementChild->
getNet(), newLaneIDs);
482 lane->addChildShape(elementChild);
511 myParentAdditionals.at(additionalParentIndex)->removeChildAdditional(additionalTobeChanged);
528 myParentAdditionals.at(additionalParentIndex)->removeChildDemandElement(demandElementTobeChanged);
532 myParentAdditionals.at(additionalParentIndex)->removeChildDemandElement(demandElementTobeChanged);