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    MSNoLogicJunction.h
11 /// @author  Christian Roessel
12 /// @author  Daniel Krajzewicz
13 /// @author  Michael Behrisch
14 /// @author  Jakob Erdmann
15 /// @date    Wed, 12 Dez 2001
16 /// @version $Id$
17 ///
18 // logic, e.g. for exits.
19 /****************************************************************************/
20 #ifndef MSNoLogicJunction_h
21 #define MSNoLogicJunction_h
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #include <config.h>
28 
29 #include <string>
30 #include <vector>
31 #include <bitset>
32 #include "MSJunction.h"
33 
34 // ===========================================================================
35 // class declarations
36 // ===========================================================================
37 class MSLane;
38 
39 
40 // ===========================================================================
41 // class definitions
42 // ===========================================================================
43 /**
44  * @class MSNoLogicJunction
45  * This junctions let all vehicles past through so they only should be used on
46  * junctions where incoming vehicles are no foes to each other (may drive
47  * simultaneously).
48  */
49 class MSNoLogicJunction  : public MSJunction {
50 public:
51     /// Destructor.
52     virtual ~MSNoLogicJunction();
53 
54     /** @brief Constructor
55      * @param[in] id The id of the junction
56      * @param[in] position The position of the junction
57      * @param[in] shape The shape of the junction
58      * @param[in] incoming The incoming lanes
59      * @param[in] internal The internal lanes
60      */
61     MSNoLogicJunction(const std::string& id, SumoXMLNodeType type, const Position& position,
62                       const PositionVector& shape,
63                       std::vector<MSLane*> incoming,
64                       std::vector<MSLane*> internal);
65 
66     /** Initialises the junction after the net was completely loaded */
67     void postloadInit();
68 
69     /** @brief Returns all internal lanes on the junction
70      */
71     virtual const std::vector<MSLane*> getInternalLanes() const;
72 
73 private:
74     /** Lanes incoming to the junction */
75     std::vector<MSLane*> myIncomingLanes;
76 
77     /** The junctions internal lanes */
78     std::vector<MSLane*> myInternalLanes;
79 
80 private:
81     /// @brief Invalidated copy constructor.
82     MSNoLogicJunction(const MSNoLogicJunction&);
83 
84     /// @brief Invalidated assignment operator.
85     MSNoLogicJunction& operator=(const MSNoLogicJunction&);
86 
87 };
88 
89 
90 #endif
91 
92 /****************************************************************************/
93 
94