50 #ifdef CHECK_MEMORY_LEAKS 52 #endif // CHECK_MEMORY_LEAKS 65 arrivalPos, route.back()->getLength(),
SUMO_ATTR_ARRIVALPOS,
"person walking to " + route.back()->getID()), MOVING_WITHOUT_VEHICLE), myWalkingTime(walkingTime), myRoute(route),
66 myCurrentInternalEdge(0),
67 myDepartPos(departPos),
69 myPedestrianState(0) {
72 if (walkingTime > 0) {
133 if (!person->
proceed(net, now)) {
145 (*myRouteStep)->addPerson(person);
152 for (ConstMSEdgeVector::const_iterator i =
myRoute.begin(); i !=
myRoute.end(); ++i) {
153 length += (*i)->getLength();
207 if (nextInternal == 0) {
301 (*myStep)->proceed(net,
this, time, prior);
328 return nextEdge->
getID();
338 assert(walkingStage != 0);
349 for (MSTransportablePlan::const_iterator i =
myPlan->begin(); i !=
myPlan->end(); ++i) {
350 (*i)->tripInfoOutput(os);
362 for (MSTransportablePlan::const_iterator i =
myPlan->begin(); i !=
myPlan->end(); ++i) {
363 (*i)->routeOutput(os);
The departure is person triggered.
Position getWaitPosition() const
Returns the next free waiting place for pedestrians / containers.
virtual const MSEdge * getNextEdge(const MSPerson::MSPersonStage_Walking &stage) const =0
return the list of internal edges if the pedestrian is on an intersection
void addWaiting(const MSEdge *edge, MSTransportable *person)
adds a transportable to the list of transportables waiting for a vehicle on the specified edge ...
OutputDevice & writeAttr(const SumoXMLAttr attr, const T &val)
writes a named attribute
void setArrived(SUMOTime now)
logs end of the step
MSEdge & getEdge() const
Returns the lane's edge.
virtual bool hasDeparted() const =0
Returns whether this vehicle has departed.
virtual void endEventOutput(const MSTransportable &p, SUMOTime t, OutputDevice &os) const
Called for writing the events output (end of an action)
virtual ~MSPerson()
destructor
SUMOReal getEdgePos(SUMOTime now) const
A lane area vehicles can halt at.
virtual SUMOTime getWaitingTime(const MSPerson::MSPersonStage_Walking &stage, SUMOTime now) const =0
return the time the person spent standing
virtual void proceed(MSNet *net, MSTransportable *person, SUMOTime now, Stage *previous)
proceeds to the next step
MSEdge * myCurrentInternalEdge
The current internal edge this person is on or 0.
virtual const MSEdge * getEdge() const =0
Returns the current edge.
virtual void tripInfoOutput(OutputDevice &os) const
Called on writing tripinfo output.
virtual SUMOReal getEdgePos(SUMOTime now) const =0
const MSEdge * getEdge() const
Returns the current edge.
std::string time2string(SUMOTime t)
Position getPosition(SUMOTime now) const
returns the position of the transportable
static MSNet * getInstance()
Returns the pointer to the unique instance of MSNet (singleton).
const std::string & getNextEdge() const
return the list of internal edges if this person is walking and the pedestrian model allows it ...
virtual void tripInfoOutput(OutputDevice &os) const
Called on writing tripinfo output.
const std::set< std::string > myLines
the lines to choose from
SUMOVehicle * getWaitingVehicle(const MSEdge *const edge, const std::set< std::string > &lines, const SUMOReal position, const std::string ridingID)
void removeWaiting(const MSEdge *const edge, SUMOVehicle *vehicle)
Removes a vehicle from the list of waiting vehicles to a given edge.
std::vector< const MSEdge * > ConstMSEdgeVector
virtual bool proceed(MSNet *net, SUMOTime time)=0
const std::string & getID() const
Returns the id.
MSTransportablePlan::iterator myStep
the iterator over the route
const MSEdge * getFromEdge() const
The simulated network and simulation perfomer.
The car-following model and parameter.
virtual void erase(MSTransportable *transportable)
removes a single transportable
void addTransportable(MSTransportable *p)
adds a transportable to this stop
virtual Position getPosition(const MSPerson::MSPersonStage_Walking &stage, SUMOTime now) const =0
return the network coordinate of the person
PedestrianState * getPedestrianState() const
virtual void routeOutput(OutputDevice &os) const
Called on writing vehroute output.
virtual PedestrianState * add(MSPerson *person, MSPerson::MSPersonStage_Walking *stage, SUMOTime now)=0
register the given person as a pedestrian
virtual void beginEventOutput(const MSTransportable &p, SUMOTime t, OutputDevice &os) const
Called for writing the events output.
static SUMOReal interpretEdgePos(SUMOReal pos, SUMOReal maximumValue, SumoXMLAttr attr, const std::string &id)
Interprets negative edge positions and fits them onto a given edge.
bool isWaiting4Vehicle() const
Whether the person waits for a vehicle.
SUMOTime myWaitingSince
The time since which this person is waiting for a ride.
virtual void proceed(MSNet *net, MSTransportable *person, SUMOTime now, Stage *previous)
proceeds to the next step
ConstMSEdgeVector myRoute
The route of the person.
A road/street connecting two junctions.
std::vector< MSTransportable::Stage * > MSTransportablePlan
the structure holding the plan of a transportable
virtual SUMOReal getAngle(const MSPerson::MSPersonStage_Walking &stage, SUMOTime now) const =0
return the direction in which the person faces in degrees
SUMOReal computeAverageSpeed() const
SUMOTime myArrived
the time at which this stage ended
bool moveToNextEdge(MSPerson *person, SUMOTime currentTime, MSEdge *nextInternal=0)
move forward and return whether the person arrived
SUMOTime myDeparted
the time at which this stage started
Representation of a vehicle.
MSStoppingPlace *const myDestinationStop
the stop to reach by getting transported (if any)
virtual void routeOutput(OutputDevice &os) const
Called on writing vehroute output.
static MSPModel * getModel()
virtual MSTransportableControl & getPersonControl()
Returns the person control.
A point in 2D or 3D with translation and scaling methods.
SUMOTime getDesiredDepart() const
Returns the desired departure time.
SUMOReal getAngle(SUMOTime now) const
returns the angle of the transportable
virtual void addPerson(MSTransportable *p) const
MSVehicleControl & getVehicleControl()
Returns the vehicle control.
virtual void tripInfoOutput(OutputDevice &os) const
Called on writing tripinfo output.
~MSPersonStage_Driving()
destructor
SUMOReal myArrivalPos
the position at which we want to arrive
DepartDefinition departProcedure
Information how the vehicle shall choose the depart time.
std::string getStageDescription() const
returns the stage description as a string
const std::string & getID() const
returns the id of the transportable
virtual void removePerson(MSTransportable *p) const
ConstMSEdgeVector::iterator myRouteStep
SUMOVehicle * myVehicle
The taken vehicle.
virtual void routeOutput(OutputDevice &os) const
Called on writing vehroute output.
void unregisterOneWaitingForPerson()
decreases the count of vehicles waiting for a person to allow recogniztion of person related deadlock...
static std::string emptyString
An empty string.
SUMOReal getSpeed() const
the speed of the transportable
MSPersonStage_Driving(const MSEdge &destination, MSStoppingPlace *toStop, const SUMOReal arrivalPos, const std::vector< std::string > &lines)
constructor
Structure representing possible vehicle parameter.
SUMOTime getWaitingTime(SUMOTime now) const
the time this transportable spent waiting
const MSStoppingPlace * getDestinationStop() const
returns the destination stop (if any)
MSInsertionControl & getInsertionControl()
Returns the insertion control.
virtual const SUMOVehicleParameter & getParameter() const =0
Returns the vehicle's parameter (including departure definition)
SUMOTime myWalkingTime
the time the person is walking
~MSPersonStage_Walking()
destructor
PedestrianState * myPedestrianState
state that is to be manipulated by MSPModel
bool proceed(MSNet *net, SUMOTime time)
virtual void addPerson(MSTransportable *person)=0
Adds a person to this vehicle.
const MSEdge & getDestination() const
returns the destination edge
const MSEdge * getNextEdgePtr() const
returns the next edge ptr if this person is walking and the pedestrian model allows it ...
std::string joinToString(const std::vector< T > &v, const T_BETWEEN &between, std::streamsize accuracy=OUTPUT_ACCURACY)
MSPerson(const SUMOVehicleParameter *pars, const MSVehicleType *vtype, MSTransportable::MSTransportablePlan *plan)
constructor
Static storage of an output device and its base (abstract) implementation.
bool closeTag()
Closes the most recently opened tag.
MSTransportablePlan * myPlan
the plan of the transportable
const MSEdge * myWaitingEdge
const MSLane & getLane() const
Returns the lane this stop is located at.
MSPersonStage_Walking(const ConstMSEdgeVector &route, MSStoppingPlace *toStop, SUMOTime walkingTime, SUMOReal speed, SUMOReal departPos, SUMOReal arrivalPos)
constructor
void add(SUMOVehicle *veh)
Adds a single vehicle for departure.
const MSEdge * getFromEdge() const
virtual SUMOReal getSpeed(const MSPerson::MSPersonStage_Walking &stage) const =0
return the current speed of the person
OutputDevice & openTag(const std::string &xmlElement)
Opens an XML tag.
void lf()
writes a line feed if applicable
virtual SUMOReal getEdgePos(const MSPerson::MSPersonStage_Walking &stage, SUMOTime now) const =0
return the offset from the start of the current edge measured in its natural direction ...
static const Position INVALID
StageType getCurrentStageType() const
the current stage type of the transportable