LCOV - code coverage report
Current view: top level - src/utils/common - Command.h (source / functions) Hit Total Coverage
Test: lcov.info Lines: 4 4 100.0 %
Date: 2024-05-02 15:31:40 Functions: 1 1 100.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    Command.h
      15             : /// @author  Christian Roessel
      16             : /// @author  Daniel Krajzewicz
      17             : /// @date    Thu, 20 Dec 2001
      18             : ///
      19             : // Base (microsim) event class
      20             : /****************************************************************************/
      21             : #pragma once
      22             : #include <config.h>
      23             : #include <utils/common/SUMOTime.h>
      24             : #include <utils/common/UtilExceptions.h>
      25             : 
      26             : 
      27             : // ===========================================================================
      28             : // class definitions
      29             : // ===========================================================================
      30             : /**
      31             :  * @class Command
      32             :  * @brief Base (microsim) event class
      33             :  *
      34             :  * Classes derived from Command may be added to MSEventControl instances in
      35             :  *  order to be executed at a certain time step.
      36             :  *
      37             :  * As soon as the simulation reaches the desired time step, the command (event)
      38             :  *  is executed by calling "execute" with the current time step. The method must
      39             :  *  return either 0, if the event shall not be executed again or a positive value
      40             :  *  (in simulation seconds) that described when it shall be executed again. The method
      41             :  *  must not return a value below zero, the behaviour is undefined in this case.
      42             :  *
      43             :  * @warning The EventControl the Command is added to gets responsible for
      44             :  *  this command's deletion.
      45             :  *
      46             :  * @see Design Patterns, Gamma et al.
      47             :  * @see WrappingCommand
      48             :  * @see MSEventControl
      49             :  */
      50             : class Command {
      51             : public:
      52             :     /// @brief Constructor
      53     1838042 :     Command() { }
      54             : 
      55             : 
      56             :     /// @brief Destructor.
      57         567 :     virtual ~Command() { }
      58             : 
      59             : 
      60             :     /** @brief Executes the command.
      61             :      *
      62             :      * The implementations should return 0 if the command shall not be repeated,
      63             :      *  or a value larger than 0 that describe the time after which the command
      64             :      *  shall be executed again. Values below 0 must not be returned.
      65             :      *
      66             :      * @param[in] currentTime The current simulation time
      67             :      * @return The time after which the command shall be executed again, 0 if this command shall be descheduled.
      68             :      * @exception ProcessError Derived actions may throw this exception
      69             :      */
      70             :     virtual SUMOTime execute(SUMOTime currentTime) = 0;
      71             : 
      72             :     /** @brief Reschedule or deschedule the command when quick-loading state
      73             :      *
      74             :      * The implementations should return -1 if the command shall not be re-scheduled,
      75             :      *  or a value >= 0 that describe the new time at which the command
      76             :      *  shall be executed again.
      77             :      *
      78             :      * @param[in] currentTime The current simulation time
      79             :          * @param[in] execTime The time at which the command would have been executed
      80             :      * @param[in] newTime The simulation time at which the simulation is restarted
      81             :      * @return The time at which the command shall be executed again
      82             :      */
      83         128 :     virtual SUMOTime shiftTime(SUMOTime /*currentTime*/, SUMOTime /*execTime*/, SUMOTime /*newTime*/) {
      84         128 :         return -1;
      85             :     }
      86             : 
      87             :     int priority = 0;
      88             : 
      89             : };

Generated by: LCOV version 1.14