Eclipse SUMO - Simulation of Urban MObility
ParametrisedWrappingCommand.h
Go to the documentation of this file.
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 /****************************************************************************/
18 // A wrapper for a Command function with parameter
19 /****************************************************************************/
20 
21 #pragma once
22 #include <config.h>
23 
24 #include "Command.h"
25 
26 
27 // ===========================================================================
28 // class definition
29 // ===========================================================================
35 template< class T, class S >
37 public:
38 
40  typedef SUMOTime(T::* Operation)(SUMOTime, S);
41 
42 public:
43 
51  ParametrisedWrappingCommand(T* receiver, const S& param, Operation operation)
52  : myReceiver(receiver), myParameter(param), myOperation(operation),
53  myAmDescheduledByParent(false) {}
54 
55 
58 
59 
65  void deschedule() {
67  }
68 
70  bool isDescheduled() {
72  }
73 
74 
77 
87  SUMOTime execute(SUMOTime currentTime) {
88  // do not execute if the command was descheduled
90  return 0;
91  }
92  // execute if stil valid
93  return (myReceiver->*myOperation)(currentTime, myParameter);
94  }
96 
97 
98 private:
101 
104 
107 
110 
111 };
long long int SUMOTime
Definition: GUI.h:35
Base (microsim) event class.
Definition: Command.h:50
A wrapper for a Command function with parameter.
bool isDescheduled()
whether this command has been descheduled
T * myReceiver
The object the action is directed to.
Operation myOperation
The object's operation to perform.
SUMOTime(T::* Operation)(SUMOTime, S)
Type of the function to execute. (with parameter)
SUMOTime execute(SUMOTime currentTime)
Executes the command.
void deschedule()
Marks this Command as being descheduled.
bool myAmDescheduledByParent
Whether this command was descheduled (is invalid) and shall not be executed.
ParametrisedWrappingCommand(T *receiver, const S &param, Operation operation)
Constructor.