LCOV - code coverage report
Current view: top level - src/microsim/transportables - MSStage.cpp (source / functions) Coverage Total Hit
Test: lcov.info Lines: 83.6 % 67 56
Test Date: 2024-11-21 15:56:26 Functions: 76.0 % 25 19

            Line data    Source code
       1              : /****************************************************************************/
       2              : // Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo
       3              : // Copyright (C) 2001-2024 German Aerospace Center (DLR) and others.
       4              : // This program and the accompanying materials are made available under the
       5              : // terms of the Eclipse Public License 2.0 which is available at
       6              : // https://www.eclipse.org/legal/epl-2.0/
       7              : // This Source Code may also be made available under the following Secondary
       8              : // Licenses when the conditions for such availability set forth in the Eclipse
       9              : // Public License 2.0 are satisfied: GNU General Public License, version 2
      10              : // or later which is available at
      11              : // https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html
      12              : // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later
      13              : /****************************************************************************/
      14              : /// @file    MSStage.cpp
      15              : /// @author  Melanie Weber
      16              : /// @author  Andreas Kendziorra
      17              : /// @author  Michael Behrisch
      18              : /// @date    Thu, 12 Jun 2014
      19              : ///
      20              : // The common superclass for modelling transportable objects like persons and containers
      21              : /****************************************************************************/
      22              : #include <config.h>
      23              : 
      24              : #include <utils/vehicle/SUMOVehicleParameter.h>
      25              : #include <microsim/MSEdge.h>
      26              : #include <microsim/MSLane.h>
      27              : #include <microsim/MSNet.h>
      28              : #include <microsim/MSStoppingPlace.h>
      29              : #include <microsim/devices/MSTransportableDevice.h>
      30              : #include <microsim/transportables/MSTransportableControl.h>
      31              : #include <microsim/transportables/MSTransportable.h>
      32              : #include <microsim/transportables/MSPModel.h>
      33              : 
      34              : 
      35              : /* -------------------------------------------------------------------------
      36              : * static member definitions
      37              : * ----------------------------------------------------------------------- */
      38              : const double MSStage::ROADSIDE_OFFSET(3);
      39              : 
      40              : 
      41              : // ===========================================================================
      42              : // method definitions
      43              : // ===========================================================================
      44              : /* -------------------------------------------------------------------------
      45              :  * MSStage - methods
      46              :  * ----------------------------------------------------------------------- */
      47      1245088 : MSStage::MSStage(MSStageType type, const MSEdge* destination, MSStoppingPlace* toStop, const double arrivalPos,
      48      1245088 :                  const double arrivalPosLat, const std::string& group) :
      49      1245088 :     myDestination(destination),
      50      1245088 :     myDestinationStop(toStop),
      51      1245088 :     myArrivalPos(arrivalPos),
      52      1245088 :     myArrivalPosLat(arrivalPosLat),
      53      1245088 :     myDeparted(-1),
      54      1245088 :     myArrived(-1),
      55      1245088 :     myType(type),
      56      1245088 :     myGroup(group),
      57      1245088 :     myCosts(-1),
      58      1245088 :     myParametersSet(0)
      59      1245088 : {}
      60              : 
      61      1244913 : MSStage::~MSStage() {}
      62              : 
      63              : 
      64              : const MSEdge*
      65     50288666 : MSStage::getDestination() const {
      66     50288666 :     return myDestination;
      67              : }
      68              : 
      69              : 
      70              : const MSEdge*
      71       736659 : MSStage::getEdge() const {
      72       736659 :     return myDestination;
      73              : }
      74              : 
      75              : 
      76              : const MSEdge*
      77            0 : MSStage::getFromEdge() const {
      78            0 :     return myDestination;
      79              : }
      80              : 
      81              : 
      82              : double
      83       475773 : MSStage::getEdgePos(SUMOTime /* now */) const {
      84       475773 :     return myArrivalPos;
      85              : }
      86              : 
      87              : 
      88              : double
      89            0 : MSStage::getEdgePosLat(SUMOTime /* now */) const {
      90            0 :     return myArrivalPosLat;
      91              : }
      92              : 
      93              : 
      94              : int
      95            0 : MSStage::getDirection() const {
      96            0 :     return MSPModel::UNDEFINED_DIRECTION;
      97              : }
      98              : 
      99              : 
     100              : SUMOTime
     101            0 : MSStage::getWaitingTime(SUMOTime /* now */) const {
     102            0 :     return 0;
     103              : }
     104              : 
     105              : 
     106              : double
     107         8354 : MSStage::getSpeed() const {
     108         8354 :     return 0.;
     109              : }
     110              : 
     111              : 
     112              : ConstMSEdgeVector
     113          263 : MSStage::getEdges() const {
     114              :     ConstMSEdgeVector result;
     115          263 :     result.push_back(getDestination());
     116          263 :     return result;
     117            0 : }
     118              : 
     119              : 
     120              : void
     121       465707 : MSStage::setDeparted(SUMOTime now) {
     122       465707 :     if (myDeparted < 0) {
     123       462413 :         myDeparted = now;
     124              :     }
     125       465707 : }
     126              : 
     127              : SUMOTime
     128        76999 : MSStage::getDeparted() const {
     129        76999 :     return myDeparted;
     130              : }
     131              : 
     132              : SUMOTime
     133          753 : MSStage::getArrived() const {
     134          753 :     return myArrived;
     135              : }
     136              : 
     137              : 
     138              : SUMOTime
     139       230702 : MSStage::getDuration() const {
     140       230702 :     return myArrived >= 0 ? myArrived - myDeparted : SUMOTime_MAX;
     141              : }
     142              : 
     143              : 
     144              : SUMOTime
     145        57803 : MSStage::getTravelTime() const {
     146        57803 :     return getDuration();
     147              : }
     148              : 
     149              : SUMOTime
     150       124233 : MSStage::getWaitingTime() const {
     151       124233 :     return 0;
     152              : }
     153              : 
     154              : SUMOTime
     155        69758 : MSStage::getTimeLoss(const MSTransportable* /*transportable*/) const {
     156        69758 :     return 0;
     157              : }
     158              : 
     159              : 
     160              : const std::string
     161      1055391 : MSStage::setArrived(MSNet* /* net */, MSTransportable* /* transportable */, SUMOTime now, const bool /* vehicleArrived */) {
     162      1055391 :     myArrived = now;
     163      1055391 :     return "";
     164              : }
     165              : 
     166              : bool
     167            0 : MSStage::isWaitingFor(const SUMOVehicle* /*vehicle*/) const {
     168            0 :     return false;
     169              : }
     170              : 
     171              : Position
     172       298679 : MSStage::getEdgePosition(const MSEdge* e, double at, double offset) const {
     173       298679 :     return getLanePosition(e->getLanes()[0], at, offset);
     174              : }
     175              : 
     176              : Position
     177      2220965 : MSStage::getLanePosition(const MSLane* lane, double at, double offset) const {
     178      2220965 :     return lane->getShape().positionAtOffset(lane->interpolateLanePosToGeometryPos(at), offset);
     179              : }
     180              : 
     181              : 
     182              : double
     183       475126 : MSStage::getEdgeAngle(const MSEdge* e, double at) const {
     184       475126 :     return e->getLanes()[0]->getShape().rotationAtOffset(at);
     185              : }
     186              : 
     187              : 
     188              : void
     189           57 : MSStage::setDestination(const MSEdge* newDestination, MSStoppingPlace* newDestStop) {
     190           57 :     myDestination = newDestination;
     191           57 :     myDestinationStop = newDestStop;
     192           57 :     if (newDestStop != nullptr) {
     193           50 :         myArrivalPos = (newDestStop->getBeginLanePosition() + newDestStop->getEndLanePosition()) / 2;
     194              :     }
     195           57 : }
     196              : 
     197              : 
     198              : /****************************************************************************/
        

Generated by: LCOV version 2.0-1