SUMO - Simulation of Urban MObility
MSStoppingPlace.h
Go to the documentation of this file.
1 /****************************************************************************/
8 // A lane area vehicles can halt at
9 /****************************************************************************/
10 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
11 // Copyright (C) 2005-2016 DLR (http://www.dlr.de/) and contributors
12 /****************************************************************************/
13 //
14 // This file is part of SUMO.
15 // SUMO is free software: you can redistribute it and/or modify
16 // it under the terms of the GNU General Public License as published by
17 // the Free Software Foundation, either version 3 of the License, or
18 // (at your option) any later version.
19 //
20 /****************************************************************************/
21 #ifndef MSStoppingPlace_h
22 #define MSStoppingPlace_h
23 
24 
25 // ===========================================================================
26 // included modules
27 // ===========================================================================
28 #ifdef _MSC_VER
29 #include <windows_config.h>
30 #else
31 #include <config.h>
32 #endif
33 
34 #include <vector>
35 #include <algorithm>
36 #include <map>
37 #include <string>
38 #include <utils/common/Named.h>
39 
40 
41 // ===========================================================================
42 // class declarations
43 // ===========================================================================
44 class MSLane;
45 class SUMOVehicle;
46 class MSTransportable;
47 class Position;
48 
49 
50 // ===========================================================================
51 // class definitions
52 // ===========================================================================
65 class MSStoppingPlace : public Named {
66 public:
76  MSStoppingPlace(const std::string& id,
77  const std::vector<std::string>& lines, MSLane& lane,
78  SUMOReal begPos, SUMOReal endPos);
79 
80 
82  virtual ~MSStoppingPlace();
83 
84 
89  const MSLane& getLane() const;
90 
91 
97 
98 
104 
105 
117  void enter(SUMOVehicle* what, SUMOReal beg, SUMOReal end);
118 
119 
129  void leaveFrom(SUMOVehicle* what);
130 
131 
136  SUMOReal getLastFreePos(const SUMOVehicle& forVehicle) const;
137 
138 
143  Position getWaitPosition() const;
144 
145 
148  unsigned int getTransportableNumber() const {
149  return static_cast<unsigned int>(myWaitingTransportables.size());
150  }
151 
154 
157 
159  virtual void addAccess(MSLane* lane, const SUMOReal pos) {
160  myAccessPos.insert(std::make_pair(lane, pos));
161  }
162 
164  bool hasAccess(const MSEdge* edge) const;
165 
166 protected:
173  void computeLastFreePos();
174 
175 
176 protected:
178  std::vector<std::string> myLines;
179 
181  std::map<SUMOVehicle*, std::pair<SUMOReal, SUMOReal> > myEndPositions;
182 
184  const MSLane& myLane;
185 
188 
191 
194 
197 
199  std::vector<MSTransportable*> myWaitingTransportables;
200 
202  std::multimap<MSLane*, SUMOReal> myAccessPos;
203 
204 private:
207 
210 
211 
212 };
213 
214 
215 #endif
216 
217 /****************************************************************************/
218 
unsigned int getTransportableNumber() const
Returns the number of transportables waiting on this stop.
std::vector< MSTransportable * > myWaitingTransportables
Persons waiting at this stop.
A lane area vehicles can halt at.
SUMOReal myWaitingPos
The next free position for persons / containers.
SUMOReal getEndLanePosition() const
Returns the end position of this stop.
const SUMOReal myEndPos
The end position this bus stop is located at.
const SUMOReal myBegPos
The begin position this bus stop is located at.
void addTransportable(MSTransportable *p)
adds a transportable to this stop
virtual ~MSStoppingPlace()
Destructor.
std::multimap< MSLane *, SUMOReal > myAccessPos
lanes and positions connected to this stop
A road/street connecting two junctions.
Definition: MSEdge.h:80
const MSLane & myLane
The lane this bus stop is located at.
const MSLane & getLane() const
Returns the lane this stop is located at.
MSStoppingPlace & operator=(const MSStoppingPlace &)
Invalidated assignment operator.
Representation of a vehicle.
Definition: SUMOVehicle.h:65
A point in 2D or 3D with translation and scaling methods.
Definition: Position.h:46
bool hasAccess(const MSEdge *edge) const
checks whether this stop provides access to the given edge
SUMOReal getLastFreePos(const SUMOVehicle &forVehicle) const
Returns the last free position on this stop.
virtual void addAccess(MSLane *lane, const SUMOReal pos)
adds an access point to this stop
MSStoppingPlace(const std::string &id, const std::vector< std::string > &lines, MSLane &lane, SUMOReal begPos, SUMOReal endPos)
Constructor.
void removeTransportable(MSTransportable *p)
Removes a transportable from this stop.
Position getWaitPosition() const
Returns the next free waiting place for pedestrians / containers.
Base class for objects which have an id.
Definition: Named.h:45
void enter(SUMOVehicle *what, SUMOReal beg, SUMOReal end)
Called if a vehicle enters this stop.
void leaveFrom(SUMOVehicle *what)
Called if a vehicle leaves this stop.
SUMOReal myLastFreePos
The last free position at this stop (variable)
SUMOReal getBeginLanePosition() const
Returns the begin position of this stop.
void computeLastFreePos()
Computes the last free position on this stop.
#define SUMOReal
Definition: config.h:213
std::vector< std::string > myLines
The list of lines that are assigned to this stop.
Representation of a lane in the micro simulation.
Definition: MSLane.h:77
std::map< SUMOVehicle *, std::pair< SUMOReal, SUMOReal > > myEndPositions
A map from objects (vehicles) to the areas they acquire after entering the stop.