Simbody  3.7
EventHandler.h
Go to the documentation of this file.
1 #ifndef SimTK_SimTKCOMMON_EVENT_HANDLER_H_
2 #define SimTK_SimTKCOMMON_EVENT_HANDLER_H_
3 
4 /* -------------------------------------------------------------------------- *
5  * Simbody(tm): SimTKcommon *
6  * -------------------------------------------------------------------------- *
7  * This is part of the SimTK biosimulation toolkit originating from *
8  * Simbios, the NIH National Center for Physics-Based Simulation of *
9  * Biological Structures at Stanford, funded under the NIH Roadmap for *
10  * Medical Research, grant U54 GM072970. See https://simtk.org/home/simbody. *
11  * *
12  * Portions copyright (c) 2007-12 Stanford University and the Authors. *
13  * Authors: Peter Eastman *
14  * Contributors: Michael Sherman *
15  * *
16  * Licensed under the Apache License, Version 2.0 (the "License"); you may *
17  * not use this file except in compliance with the License. You may obtain a *
18  * copy of the License at http://www.apache.org/licenses/LICENSE-2.0. *
19  * *
20  * Unless required by applicable law or agreed to in writing, software *
21  * distributed under the License is distributed on an "AS IS" BASIS, *
22  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
23  * See the License for the specific language governing permissions and *
24  * limitations under the License. *
25  * -------------------------------------------------------------------------- */
26 
27 #include "SimTKcommon/basics.h"
28 #include "SimTKcommon/Simmatrix.h"
31 
32 namespace SimTK {
33 
52 public:
53  virtual ~EventHandler();
54 
73  virtual void handleEvent(State& state, Real accuracy,
74  bool& shouldTerminate) const = 0;
75 };
76 
85 public:
86  virtual ~ScheduledEventHandler();
87 
96  virtual Real getNextEventTime(const State& state,
97  bool includeCurrentTime) const = 0;
98 };
99 
110 public:
111  class TriggeredEventHandlerImpl;
113  TriggeredEventHandler& operator=(const TriggeredEventHandler& clone);
114  virtual ~TriggeredEventHandler();
115 
122  explicit TriggeredEventHandler(Stage requiredStage);
123 
127  virtual Real getValue(const State&) const = 0;
128 
133  EventTriggerInfo& getTriggerInfo();
134 
138  Stage getRequiredStage() const;
139 private:
140  TriggeredEventHandlerImpl* impl;
141 };
142 
147 : public ScheduledEventHandler {
148 public:
149  class PeriodicEventHandlerImpl;
151  Real getNextEventTime(const State& state, bool includeCurrentTime) const override;
152 
159  explicit PeriodicEventHandler(Real eventInterval);
160 
164  Real getEventInterval() const;
165 
169  void setEventInterval(Real eventInterval);
170 private:
171  PeriodicEventHandlerImpl* impl;
172 };
173 
174 } // namespace SimTK
175 
176 #endif // SimTK_SimTKCOMMON_EVENT_HANDLER_H_
ScheduledEventHandler is a subclass of EventHandler for events that occur at a particular time that i...
Definition: EventHandler.h:84
#define SimTK_SimTKCOMMON_EXPORT
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:224
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
This class is basically a glorified enumerated type, type-safe and range checked but permitting conve...
Definition: Stage.h:66
PeriodicEventHandler is a subclass of ScheduledEventHandler which generates a series of uniformly spa...
Definition: EventHandler.h:146
SimTK_Real Real
This is the default compiled-in floating point type for SimTK, either float or double.
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:606
This object is intended to contain all state information for a SimTK::System, except topological info...
Definition: State.h:280
Declares the user-visible part of a SimTK::State, the implementation is done in a separate internal c...
TriggeredEventHandler is a subclass of EventHandler for events that occur when some condition is sati...
Definition: EventHandler.h:109
This class is used to communicate between the System and an Integrator regarding the properties of a ...
Definition: Event.h:209
This is the header which should be included in user programs that would like to make use of all the S...
Includes internal headers providing declarations for the basic SimTK Core classes.
An EventHandler is an object that defines an event that can occur within a system.
Definition: EventHandler.h:51