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-2017 German Aerospace Center (DLR) and others.
4 /****************************************************************************/
5 //
6 // This program and the accompanying materials
7 // are made available under the terms of the Eclipse Public License v2.0
8 // which accompanies this distribution, and is available at
9 // http://www.eclipse.org/legal/epl-v20.html
10 //
11 /****************************************************************************/
18 // -------------------
19 /****************************************************************************/
20 #ifndef NIVissimTL_h
21 #define NIVissimTL_h
22 
23 
24 // ===========================================================================
25 // included modules
26 // ===========================================================================
27 #ifdef _MSC_VER
28 #include <windows_config.h>
29 #else
30 #include <config.h>
31 #endif
32 
33 
34 #include <map>
35 #include <string>
36 #include <vector>
39 #include <utils/common/SUMOTime.h>
40 
41 
42 // ===========================================================================
43 // class declarations
44 // ===========================================================================
46 class NBLoadedTLDef;
47 class NBEdgeCont;
48 
49 
50 // ===========================================================================
51 // class definitions
52 // ===========================================================================
56 class NIVissimTL {
57 public:
58  NIVissimTL(int id, const std::string& type, const std::string& name,
59  SUMOTime absdur, SUMOTime offset);
60  ~NIVissimTL();
61 // void computeBounding();
62  std::string getType() const;
63  int getID() const;
64 
65 public:
66  static bool dictionary(int id, const std::string& type,
67  const std::string& name, SUMOTime absdur, SUMOTime offset);
68  static bool dictionary(int id, NIVissimTL* o);
69  static NIVissimTL* dictionary(int id);
70 // static std::vector<int> getWithin(const AbstractPoly &poly, double offset);
71  static void clearDict();
73  NBEdgeCont& ec);
74 
75 public:
76  class NIVissimTLSignal;
78  typedef std::map<int, NIVissimTLSignal*> SSignalDictType;
79  typedef std::map<int, NIVissimTLSignalGroup*> SGroupDictType;
80  typedef std::map<int, SSignalDictType> SignalDictType;
81  typedef std::map<int, SGroupDictType> GroupDictType;
82 
87  public:
88  NIVissimTLSignal(int id, const std::string& name,
89  const std::vector<int>& groupids, int edgeid, int laneno,
90  double position, const std::vector<int>& assignedVehicleTypes);
92  bool isWithin(const PositionVector& poly) const;
93  Position getPosition() const;
94  bool addTo(NBEdgeCont& ec, NBLoadedTLDef* node) const;
95 
96  public:
97  static bool dictionary(int lsaid, int id, NIVissimTLSignal* o);
98  static NIVissimTLSignal* dictionary(int lsaid, int id);
99  static void clearDict();
100  static SSignalDictType getSignalsFor(int tlid);
101 
102  protected:
103  int myID;
104  std::string myName;
105  std::vector<int> myGroupIDs;
106  int myEdgeID;
107  int myLane;
108  double myPosition;
109  std::vector<int> myVehicleTypes;
110  static SignalDictType myDict;
111  };
112 
114  public:
115  NIVissimTLSignalGroup(int id, const std::string& name,
116  bool isGreenBegin, const std::vector<double>& times,
117  SUMOTime tredyellow, SUMOTime tyellow);
119  bool addTo(NBLoadedTLDef* node) const;
120  public:
121  static bool dictionary(int lsaid, int id, NIVissimTLSignalGroup* o);
122  static NIVissimTLSignalGroup* dictionary(int lsaid, int id);
123  static void clearDict();
124  static SGroupDictType getGroupsFor(int tlid);
125 
126  private:
127  int myID;
128  std::string myName;
129  std::vector<double> myTimes;
131  SUMOTime myTRedYellow, myTYellow;
132  static GroupDictType myDict;
133  };
134 
135 protected:
136  int myID;
137  std::string myName;
141  std::string myType;
142 private:
143  typedef std::map<int, NIVissimTL*> DictType;
144  static DictType myDict;
145 };
146 
147 
148 #endif
149 
150 /****************************************************************************/
151 
Position getPosition() const
Definition: NIVissimTL.cpp:81
NIVissimTL(int id, const std::string &type, const std::string &name, SUMOTime absdur, SUMOTime offset)
Definition: NIVissimTL.cpp:311
std::map< int, NIVissimTL * > DictType
Definition: NIVissimTL.h:143
static SSignalDictType getSignalsFor(int tlid)
Definition: NIVissimTL.cpp:129
A container for traffic light definitions and built programs.
A loaded (complete) traffic light logic.
Definition: NBLoadedTLDef.h:48
std::string getType() const
Definition: NIVissimTL.cpp:430
SUMOTime myOffset
Definition: NIVissimTL.h:139
NIVissimTLSignalGroup * myCurrentGroup
Definition: NIVissimTL.h:140
std::map< int, SSignalDictType > SignalDictType
Definition: NIVissimTL.h:80
static bool dictionary(int lsaid, int id, NIVissimTLSignal *o)
Definition: NIVissimTL.cpp:87
std::map< int, SGroupDictType > GroupDictType
Definition: NIVissimTL.h:81
bool addTo(NBEdgeCont &ec, NBLoadedTLDef *node) const
Definition: NIVissimTL.cpp:139
std::string myName
Definition: NIVissimTL.h:137
std::map< int, NIVissimTLSignal * > SSignalDictType
Definition: NIVissimTL.h:77
SUMOTime myAbsDuration
Definition: NIVissimTL.h:138
static DictType myDict
Definition: NIVissimTL.h:144
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:45
A list of positions.
static bool dictionary(int id, const std::string &type, const std::string &name, SUMOTime absdur, SUMOTime offset)
Definition: NIVissimTL.cpp:327
std::vector< double > myTimes
Definition: NIVissimTL.h:129
static bool dict_SetSignals(NBTrafficLightLogicCont &tlc, NBEdgeCont &ec)
Definition: NIVissimTL.cpp:372
Storage for edges, including some functionality operating on multiple edges.
Definition: NBEdgeCont.h:66
std::map< int, NIVissimTLSignalGroup * > SGroupDictType
Definition: NIVissimTL.h:79
std::vector< int > myGroupIDs
Definition: NIVissimTL.h:105
int getID() const
Definition: NIVissimTL.cpp:436
static GroupDictType myDict
Definition: NIVissimTL.h:132
static SignalDictType myDict
Definition: NIVissimTL.h:110
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:60
std::string myType
Definition: NIVissimTL.h:141
static void clearDict()
Definition: NIVissimTL.cpp:360
std::vector< int > myVehicleTypes
Definition: NIVissimTL.h:109
long long int SUMOTime
Definition: TraCIDefs.h:51
bool isWithin(const PositionVector &poly) const
Definition: NIVissimTL.cpp:75