SUMO - Simulation of Urban MObility
NIVissimTL.h
Go to the documentation of this file.
1 /****************************************************************************/
2 // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.org/sumo
3 // Copyright (C) 2001-2018 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 /****************************************************************************/
16 // -------------------
17 /****************************************************************************/
18 #ifndef NIVissimTL_h
19 #define NIVissimTL_h
20 
21 
22 // ===========================================================================
23 // included modules
24 // ===========================================================================
25 #include <config.h>
26 
27 
28 #include <map>
29 #include <string>
30 #include <vector>
33 #include <utils/common/SUMOTime.h>
34 
35 
36 // ===========================================================================
37 // class declarations
38 // ===========================================================================
40 class NBLoadedTLDef;
41 class NBEdgeCont;
42 
43 
44 // ===========================================================================
45 // class definitions
46 // ===========================================================================
50 class NIVissimTL {
51 public:
52  NIVissimTL(int id, const std::string& type, const std::string& name,
53  SUMOTime absdur, SUMOTime offset);
54  ~NIVissimTL();
55 // void computeBounding();
56  std::string getType() const;
57  int getID() const;
58 
59 public:
60  static bool dictionary(int id, const std::string& type,
61  const std::string& name, SUMOTime absdur, SUMOTime offset);
62  static bool dictionary(int id, NIVissimTL* o);
63  static NIVissimTL* dictionary(int id);
64 // static std::vector<int> getWithin(const AbstractPoly &poly, double offset);
65  static void clearDict();
67  NBEdgeCont& ec);
68 
69 public:
70  class NIVissimTLSignal;
72  typedef std::map<int, NIVissimTLSignal*> SSignalDictType;
73  typedef std::map<int, NIVissimTLSignalGroup*> SGroupDictType;
74  typedef std::map<int, SSignalDictType> SignalDictType;
75  typedef std::map<int, SGroupDictType> GroupDictType;
76 
81  public:
82  NIVissimTLSignal(int id, const std::string& name,
83  const std::vector<int>& groupids, int edgeid, int laneno,
84  double position, const std::vector<int>& assignedVehicleTypes);
86  bool isWithin(const PositionVector& poly) const;
87  Position getPosition() const;
88  bool addTo(NBEdgeCont& ec, NBLoadedTLDef* node) const;
89 
90  public:
91  static bool dictionary(int lsaid, int id, NIVissimTLSignal* o);
92  static NIVissimTLSignal* dictionary(int lsaid, int id);
93  static void clearDict();
94  static SSignalDictType getSignalsFor(int tlid);
95 
96  protected:
97  int myID;
98  std::string myName;
99  std::vector<int> myGroupIDs;
100  int myEdgeID;
101  int myLane;
102  double myPosition;
103  std::vector<int> myVehicleTypes;
104  static SignalDictType myDict;
105  };
106 
108  public:
109  NIVissimTLSignalGroup(int id, const std::string& name,
110  bool isGreenBegin, const std::vector<double>& times,
111  SUMOTime tredyellow, SUMOTime tyellow);
113  bool addTo(NBLoadedTLDef* node) const;
114  public:
115  static bool dictionary(int lsaid, int id, NIVissimTLSignalGroup* o);
116  static NIVissimTLSignalGroup* dictionary(int lsaid, int id);
117  static void clearDict();
118  static SGroupDictType getGroupsFor(int tlid);
119 
120  private:
121  int myID;
122  std::string myName;
123  std::vector<double> myTimes;
125  SUMOTime myTRedYellow, myTYellow;
126  static GroupDictType myDict;
127  };
128 
129 protected:
130  int myID;
131  std::string myName;
135  std::string myType;
136 private:
137  typedef std::map<int, NIVissimTL*> DictType;
138  static DictType myDict;
139 };
140 
141 
142 #endif
143 
144 /****************************************************************************/
145 
Position getPosition() const
Definition: NIVissimTL.cpp:75
long long int SUMOTime
Definition: SUMOTime.h:36
NIVissimTL(int id, const std::string &type, const std::string &name, SUMOTime absdur, SUMOTime offset)
Definition: NIVissimTL.cpp:305
std::map< int, NIVissimTL * > DictType
Definition: NIVissimTL.h:137
static SSignalDictType getSignalsFor(int tlid)
Definition: NIVissimTL.cpp:123
A container for traffic light definitions and built programs.
A loaded (complete) traffic light logic.
Definition: NBLoadedTLDef.h:42
std::string getType() const
Definition: NIVissimTL.cpp:424
SUMOTime myOffset
Definition: NIVissimTL.h:133
NIVissimTLSignalGroup * myCurrentGroup
Definition: NIVissimTL.h:134
std::map< int, SSignalDictType > SignalDictType
Definition: NIVissimTL.h:74
static bool dictionary(int lsaid, int id, NIVissimTLSignal *o)
Definition: NIVissimTL.cpp:81
std::map< int, SGroupDictType > GroupDictType
Definition: NIVissimTL.h:75
bool addTo(NBEdgeCont &ec, NBLoadedTLDef *node) const
Definition: NIVissimTL.cpp:133
std::string myName
Definition: NIVissimTL.h:131
std::map< int, NIVissimTLSignal * > SSignalDictType
Definition: NIVissimTL.h:71
SUMOTime myAbsDuration
Definition: NIVissimTL.h:132
static DictType myDict
Definition: NIVissimTL.h:138
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:39
A list of positions.
static bool dictionary(int id, const std::string &type, const std::string &name, SUMOTime absdur, SUMOTime offset)
Definition: NIVissimTL.cpp:321
std::vector< double > myTimes
Definition: NIVissimTL.h:123
static bool dict_SetSignals(NBTrafficLightLogicCont &tlc, NBEdgeCont &ec)
Definition: NIVissimTL.cpp:366
Storage for edges, including some functionality operating on multiple edges.
Definition: NBEdgeCont.h:61
std::map< int, NIVissimTLSignalGroup * > SGroupDictType
Definition: NIVissimTL.h:73
std::vector< int > myGroupIDs
Definition: NIVissimTL.h:99
int getID() const
Definition: NIVissimTL.cpp:430
static GroupDictType myDict
Definition: NIVissimTL.h:126
static SignalDictType myDict
Definition: NIVissimTL.h:104
NIVissimTLSignal(int id, const std::string &name, const std::vector< int > &groupids, int edgeid, int laneno, double position, const std::vector< int > &assignedVehicleTypes)
Definition: NIVissimTL.cpp:54
std::string myType
Definition: NIVissimTL.h:135
static void clearDict()
Definition: NIVissimTL.cpp:354
std::vector< int > myVehicleTypes
Definition: NIVissimTL.h:103
bool isWithin(const PositionVector &poly) const
Definition: NIVissimTL.cpp:69