1 /****************************************************************************/ 2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo 3 // Copyright (C) 2001-2019 German Aerospace Center (DLR) and others. 4 // This program and the accompanying materials 5 // are made available under the terms of the Eclipse Public License v2.0 6 // which accompanies this distribution, and is available at 7 // http://www.eclipse.org/legal/epl-v20.html 8 // SPDX-License-Identifier: EPL-2.0 9 /****************************************************************************/ 10 /// @file GNEChange_Edge.h 11 /// @author Jakob Erdmann 12 /// @date Mar 2011 13 /// @version $Id$ 14 /// 15 // A network change in which a single edge is created or deleted 16 /****************************************************************************/ 17 #ifndef GNEChange_Edge_h 18 #define GNEChange_Edge_h 19 20 21 // =========================================================================== 22 // included modules 23 // =========================================================================== 24 #include <config.h> 25 26 #include <fx.h> 27 #include <utils/foxtools/fxexdefs.h> 28 #include <vector> 29 #include <map> 30 #include "GNEChange.h" 31 32 // =========================================================================== 33 // class declarations 34 // =========================================================================== 35 class GNENet; 36 class GNEEdge; 37 class GNELane; 38 class GNEAdditional; 39 class GNERerouter; 40 41 // =========================================================================== 42 // class definitions 43 // =========================================================================== 44 /** 45 * @class GNEChange_Edge 46 * A network change in which a single edge is created or deleted 47 */ 48 class GNEChange_Edge : public GNEChange { 49 // @brief FOX Declaration 50 FXDECLARE_ABSTRACT(GNEChange_Edge) 51 52 public: 53 /**@brief Constructor for creating/deleting an edge 54 * @param[in] edge The edge to be created/deleted 55 * @param[in] forward Whether to create/delete (true/false) 56 */ 57 GNEChange_Edge(GNEEdge* edge, bool forward); 58 59 /// @brief Destructor 60 ~GNEChange_Edge(); 61 62 /// @name inherited from GNEChange 63 /// @{ 64 /// @brief get undo Name 65 FXString undoName() const; 66 67 /// @brief get Redo name 68 FXString redoName() const; 69 70 /// @brief undo action 71 void undo(); 72 73 /// @brief redo action 74 void redo(); 75 /// @} 76 77 78 private: 79 /**@brief full information regarding the edge that is to be created/deleted 80 * @note we assume shared responsibility for the pointer (via reference counting) 81 */ 82 GNEEdge* myEdge; 83 84 /// @brief reference to vector of shape parents 85 const std::vector<GNEShape*>& myEdgeShapeParents; 86 87 /// @brief reference to vector of additional parents 88 const std::vector<GNEAdditional*>& myEdgeAdditionalParents; 89 90 /// @brief reference to vector of demand element parents 91 const std::vector<GNEDemandElement*>& myEdgeDemandElementParents; 92 93 /// @brief reference to vector of shape childs 94 const std::vector<GNEShape*>& myEdgeShapeChilds; 95 96 /// @brief reference to vector of additional childs 97 const std::vector<GNEAdditional*>& myEdgeAdditionalChilds; 98 99 /// @brief vector of references to vector of demand element childs (used by lanes) 100 const std::vector<GNEDemandElement*>& myEdgeDemandElementChilds; 101 102 /// @brief vector of references to vector of shape parents (used by lanes) 103 std::vector<std::vector<GNEShape*> > myLaneShapeParents; 104 105 /// @brief vector of references to vector of additional parents (used by lanes) 106 std::vector<std::vector<GNEAdditional*> > myLaneAdditionalParents; 107 108 /// @brief vector of references to vector of demand element parents (used by lanes) 109 std::vector<std::vector<GNEDemandElement*> > myLaneDemandElementParents; 110 111 /// @brief vector of references to vector of shape childs (used by lanes) 112 std::vector<std::vector<GNEShape*> > myLaneShapeChilds; 113 114 /// @brief vector of references to vector of additional childs (used by lanes) 115 std::vector<std::vector<GNEAdditional*> > myLaneAdditionalChilds; 116 117 /// @brief vector of references to vector of demand element childs (used by lanes) 118 std::vector<std::vector<GNEDemandElement*> > myLaneDemandElementChilds; 119 }; 120 121 #endif 122 /****************************************************************************/ 123