LCOV - code coverage report
Current view: top level - src/microsim/output - MSStopOut.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 9 9 100.0 %
Date: 2024-05-06 15:32:35 Functions: 0 0 -

          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    MSStopOut.h
      15             : /// @author  Jakob Erdmann
      16             : /// @date    Wed, 21.12.2016
      17             : ///
      18             : // Ouput information about planned vehicle stop
      19             : /****************************************************************************/
      20             : #pragma once
      21             : #include <config.h>
      22             : 
      23             : #include <map>
      24             : #include <utils/common/SUMOTime.h>
      25             : #include <utils/vehicle/SUMOVehicleParameter.h>
      26             : 
      27             : 
      28             : // ===========================================================================
      29             : // class declarations
      30             : // ===========================================================================
      31             : class OutputDevice;
      32             : class SUMOVehicle;
      33             : 
      34             : 
      35             : // ===========================================================================
      36             : // class definitions
      37             : // ===========================================================================
      38             : /**
      39             :  * @class MSStopOut
      40             :  * @brief Realises dumping the complete network state
      41             :  *
      42             :  * The class offers a static method, which writes the complete dump of
      43             :  *  the given network into the given OutputDevice.
      44             :  *
      45             :  * @todo consider error-handling on write (using IOError)
      46             :  */
      47             : class MSStopOut {
      48             : public:
      49             : 
      50             :     /** @brief Static intialization
      51             :      */
      52             :     static void init();
      53             : 
      54             :     static bool active() {
      55      164132 :         return myInstance != 0;
      56             :     }
      57             : 
      58             :     static void cleanup();
      59             : 
      60             :     static MSStopOut* getInstance() {
      61         167 :         return myInstance;
      62             :     }
      63             : 
      64             :     /// @brief constructor.
      65             :     MSStopOut(OutputDevice& dev);
      66             : 
      67             :     /// @brief Destructor.
      68             :     virtual ~MSStopOut();
      69             : 
      70             :     void stopStarted(const SUMOVehicle* veh, int numPersons, int numContainers, SUMOTime time);
      71             : 
      72             :     void loadedPersons(const SUMOVehicle* veh, int n);
      73             :     void unloadedPersons(const SUMOVehicle* veh, int n);
      74             : 
      75             :     void loadedContainers(const SUMOVehicle* veh, int n);
      76             :     void unloadedContainers(const SUMOVehicle* veh, int n);
      77             : 
      78             :     void stopEnded(const SUMOVehicle* veh, const SUMOVehicleParameter::Stop& stop, const std::string& laneOrEdgeID, bool simEnd = false);
      79             : 
      80             :     /// @brief generate output for vehicles which are still stopped at simulation end
      81             :     void generateOutputForUnfinished();
      82             : 
      83             : private:
      84             :     struct StopInfo {
      85             : 
      86        5428 :         StopInfo(int numPersons, int numContainers) :
      87        5428 :             initialNumPersons(numPersons),
      88        5428 :             loadedPersons(0),
      89        5428 :             unloadedPersons(0),
      90        5428 :             initialNumContainers(numContainers),
      91        5428 :             loadedContainers(0),
      92        5428 :             unloadedContainers(0) {
      93             :         }
      94             : 
      95             :         int initialNumPersons;
      96             :         int loadedPersons;
      97             :         int unloadedPersons;
      98             :         int initialNumContainers;
      99             :         int loadedContainers;
     100             :         int unloadedContainers;
     101             :     };
     102             : 
     103             :     std::map<const SUMOVehicle*, StopInfo, ComparatorNumericalIdLess> myStopped;
     104             : 
     105             :     OutputDevice& myDevice;
     106             : 
     107             :     static MSStopOut* myInstance;
     108             : 
     109             :     /// @brief Invalidated copy constructor.
     110             :     MSStopOut(const MSStopOut&);
     111             : 
     112             :     /// @brief Invalidated assignment operator.
     113             :     MSStopOut& operator=(const MSStopOut&);
     114             : 
     115             : 
     116             : };

Generated by: LCOV version 1.14