SUMO - Simulation of Urban MObility
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
MSPersonControl.h
Go to the documentation of this file.
1 /****************************************************************************/
10 // Stores all persons in the net and handles their waiting for cars.
11 /****************************************************************************/
12 // SUMO, Simulation of Urban MObility; see http://sumo.dlr.de/
13 // Copyright (C) 2001-2015 DLR (http://www.dlr.de/) and contributors
14 /****************************************************************************/
15 //
16 // This file is part of SUMO.
17 // SUMO is free software: you can redistribute it and/or modify
18 // it under the terms of the GNU General Public License as published by
19 // the Free Software Foundation, either version 3 of the License, or
20 // (at your option) any later version.
21 //
22 /****************************************************************************/
23 #ifndef MSPersonControl_h
24 #define MSPersonControl_h
25 
26 
27 // ===========================================================================
28 // included modules
29 // ===========================================================================
30 #ifdef _MSC_VER
31 #include <windows_config.h>
32 #else
33 #include <config.h>
34 #endif
35 
36 #include <vector>
37 #include <map>
39 #include "MSVehicle.h"
40 
41 
42 // ===========================================================================
43 // class declarations
44 // ===========================================================================
45 class MSNet;
46 class MSVehicle;
47 
48 
49 // ===========================================================================
50 // class definitions
51 // ===========================================================================
60 public:
62  typedef std::vector<MSPerson*> PersonVector;
63 
65  typedef std::map<std::string, MSPerson*>::const_iterator constVehIt;
66 
67 
68 public:
71 
72 
74  virtual ~MSPersonControl();
75 
76 
82  bool add(const std::string& id, MSPerson* person);
83 
84 
89  MSPerson* get(const std::string& id) const;
90 
91 
93  virtual void erase(MSPerson* person);
94 
96  void setDeparture(SUMOTime time, MSPerson* person);
97 
99  void setWaitEnd(SUMOTime time, MSPerson* person);
100 
102  void checkWaitingPersons(MSNet* net, const SUMOTime time);
103 
105  void addWaiting(const MSEdge* edge, MSPerson* person);
106 
114  bool boardAnyWaiting(MSEdge* edge, MSVehicle* vehicle, MSVehicle::Stop* stop);
115 
117  bool hasPersons() const;
118 
120  bool hasNonWaiting() const;
121 
123  void abortWaiting();
124 
125 
131  virtual MSPerson* buildPerson(const SUMOVehicleParameter* pars, const MSVehicleType* vtype, MSPerson::MSPersonPlan* plan) const;
132 
133  void setWalking(MSPerson* p);
134  void unsetWalking(MSPerson* p);
135 
137  bool isWaiting4Vehicle(const MSEdge* const edge, MSPerson* p) const;
138 
139 
143  constVehIt loadedPersonsBegin() const {
144  return myPersons.begin();
145  }
146 
147 
151  constVehIt loadedPersonsEnd() const {
152  return myPersons.end();
153  }
154 
155 
159  unsigned int size() const {
160  return (unsigned int) myPersons.size();
161  }
162 
163 
164 protected:
166  std::map<std::string, MSPerson*> myPersons;
167 
169  std::map<std::string, MSPerson*> myWalking;
170 
172  std::map<SUMOTime, PersonVector> myWaiting4Departure;
173 
175  std::map<SUMOTime, PersonVector> myWaitingUntil;
176 
178  std::map<const MSEdge*, PersonVector> myWaiting4Vehicle;
179 
180 };
181 
182 
183 #endif
184 
185 /****************************************************************************/
virtual MSPerson * buildPerson(const SUMOVehicleParameter *pars, const MSVehicleType *vtype, MSPerson::MSPersonPlan *plan) const
Builds a new person.
Representation of a vehicle in the micro simulation.
Definition: MSVehicle.h:80
std::map< std::string, MSPerson * > myWalking
all persons by id
std::map< SUMOTime, PersonVector > myWaiting4Departure
Persons waiting for departure.
constVehIt loadedPersonsEnd() const
Returns the end of the internal persons map.
Definition of vehicle stop (position and duration)
Definition: MSVehicle.h:560
MSPersonControl()
Constructor.
The simulated network and simulation perfomer.
Definition: MSNet.h:94
The car-following model and parameter.
Definition: MSVehicleType.h:74
bool hasPersons() const
checks whether any person waits to finish her plan
std::map< std::string, MSPerson * > myPersons
all persons by id
A road/street connecting two junctions.
Definition: MSEdge.h:81
bool add(const std::string &id, MSPerson *person)
Adds a single person, returns false if an id clash occured.
void abortWaiting()
aborts the plan for any person that is still waiting for a ride
void addWaiting(const MSEdge *edge, MSPerson *person)
adds a person to the list of persons waiting for a vehicle on the specified edge
void checkWaitingPersons(MSNet *net, const SUMOTime time)
checks whether any persons waiting or walking time is over
std::map< std::string, MSPerson * >::const_iterator constVehIt
Definition of the internal persons map iterator.
unsigned int size() const
Returns the number of known persons.
void setWaitEnd(SUMOTime time, MSPerson *person)
sets the arrival time for a waiting or walking person
void unsetWalking(MSPerson *p)
std::map< const MSEdge *, PersonVector > myWaiting4Vehicle
the lists of waiting persons
bool hasNonWaiting() const
checks whether any person is still engaged in walking / stopping
Structure representing possible vehicle parameter.
void setWalking(MSPerson *p)
std::map< SUMOTime, PersonVector > myWaitingUntil
the lists of walking / stopping persons
void setDeparture(SUMOTime time, MSPerson *person)
sets the arrival time for a waiting or walking person
int SUMOTime
Definition: SUMOTime.h:43
std::vector< MSPerson * > PersonVector
Definition of a list of persons.
virtual void erase(MSPerson *person)
removes a single person
std::vector< MSPersonStage * > MSPersonPlan
the structure holding the plan of a person
Definition: MSPerson.h:514
virtual ~MSPersonControl()
Destructor.
bool boardAnyWaiting(MSEdge *edge, MSVehicle *vehicle, MSVehicle::Stop *stop)
board any applicable persons Boards any people who wait on that edge for the given vehicle and remove...
bool isWaiting4Vehicle(const MSEdge *const edge, MSPerson *p) const
returns whether the the given person is waiting for a vehicle on the given edge
constVehIt loadedPersonsBegin() const
Returns the begin of the internal persons map.