1 #ifndef SimTK_SimTKCOMMON_EVENT_H_ 
    2 #define SimTK_SimTKCOMMON_EVENT_H_ 
  140         operator Num()
 const {
return value;} 
 
  193         return Trigger(transition & mask); 
 
  230         if (shouldTriggerOnRisingSignTransition()) {
 
  233         if (shouldTriggerOnFallingSignTransition()) {
 
  247         assert(!
"impossible event transition situation");
 
  252     class EventTriggerInfoRep;
 
  255     EventTriggerInfoRep* rep;
 
  257     const EventTriggerInfoRep& getRep()
 const {assert(rep); 
return *rep;}
 
  258     EventTriggerInfoRep&       updRep()       {assert(rep); 
return *rep;}
 
  294     {   optionSet=0; setAccuracyDefaults(); 
return *
this; }
 
  300         assert(accuracy > 0);
 
  301         requiredAccuracy = accuracy;
 
  308     {   optionSet &= ~(unsigned)opt; 
return *
this; }
 
  312     {   optionSet |= (unsigned)opt; 
return *
this; }
 
  323     {   optionSet |= opts.optionSet; 
return *
this; }
 
  325     {   optionSet &= opts.optionSet; 
return *
this; }
 
  327     {   optionSet &= ~opts.optionSet; 
return *
this; }
 
  333     Real     requiredAccuracy;
 
  336     void setAccuracyDefaults() {
 
  369         m_anyChangeMade = 
false;
 
  378     {   assert(
isValid()); 
return m_anyChangeMade; }
 
  380     {   assert(
isValid()); 
return m_lowestModifiedStage; }
 
  382     {   assert(
isValid()); 
return m_message; }
 
  385     {   m_exitStatus=status; 
return *
this; }
 
  387     {   m_anyChangeMade=changeMade; 
return *
this; }
 
  389     {   m_lowestModifiedStage=stage; 
return *
this; }
 
  391     {   m_message=message; 
return *
this; }
 
  394     bool    m_anyChangeMade;
 
  395     Stage   m_lowestModifiedStage;
 
#define SimTK_SimTKCOMMON_EXPORT
Definition: SimTKcommon/include/SimTKcommon/internal/common.h:224
 
Includes internal headers providing declarations for the basic SimTK Core classes.
 
This is a class to represent unique IDs for events in a type-safe way.
 
Unique integer type for Subsystem-local, per-stage event indexing.
 
This class is used to communicate between the System and an Integrator regarding the properties of a ...
Definition: Event.h:209
 
Real getRequiredLocalizationTimeWindow() const
 
EventTriggerInfo(EventId eventId)
 
Event::Trigger calcTransitionMask() const
Definition: Event.h:228
 
EventId getEventId() const
 
EventTriggerInfo & operator=(const EventTriggerInfo &)
 
EventTriggerInfo(const EventTriggerInfo &)
 
EventTriggerInfo & setRequiredLocalizationTimeWindow(Real)
 
EventTriggerInfo & setTriggerOnFallingSignTransition(bool)
 
Event::Trigger calcTransitionToReport(Event::Trigger transitionSeen) const
Definition: Event.h:240
 
bool shouldTriggerOnRisingSignTransition() const
 
EventTriggerInfo & setTriggerOnRisingSignTransition(bool)
 
EventTriggerInfo & setEventId(EventId)
 
bool shouldTriggerOnFallingSignTransition() const
 
These are all the possible causes for events.
Definition: Event.h:126
 
Cause()
Definition: Event.h:138
 
Cause(Num n)
Definition: Event.h:139
 
Num
Definition: Event.h:128
 
@ Termination
Definition: Event.h:134
 
@ Triggered
Definition: Event.h:130
 
@ Scheduled
Definition: Event.h:131
 
@ Initialization
Definition: Event.h:129
 
@ TimeAdvanced
Definition: Event.h:132
 
@ Signaled
Definition: Event.h:133
 
@ Invalid
Definition: Event.h:135
 
bool isValid() const
Definition: Event.h:143
 
Cause & operator=(Num n)
Definition: Event.h:141
 
An Event is "something that happens" during a Study that is advancing through time.
Definition: Event.h:76
 
static const char * getCauseName(Cause)
This is useful for debugging; it translates an Event::Cause into a readable string.
 
Trigger
Triggered Events respond to zero crossings of their associated trigger function.
Definition: Event.h:158
 
@ Falling
Definition: Event.h:164
 
@ PositiveToNegative
Definition: Event.h:161
 
@ NegativeToPositive
Definition: Event.h:162
 
@ AnySignChange
Definition: Event.h:166
 
@ NoEventTrigger
Definition: Event.h:159
 
@ Rising
Definition: Event.h:165
 
static Trigger maskTransition(Trigger transition, Trigger mask)
Given an observed transition, weed out ignorable ones using the supplied mask.
Definition: Event.h:191
 
static std::string eventTriggerString(Trigger)
This is useful for debugging; it translates an Event::Trigger or a mask formed by a union of Event::T...
 
static Trigger classifyTransition(int before, int after)
Classify a before/after sign transition.
Definition: Event.h:177
 
Options for the handleEvent() method.
Definition: Event.h:269
 
HandleEventsOptions & operator-=(const HandleEventsOptions &opts)
Definition: Event.h:326
 
HandleEventsOptions & clear()
Restore this object to its default-constructed state (no options selected, default accuracy).
Definition: Event.h:293
 
Real getAccuracy() const
Return the current value for the accuracy option.
Definition: Event.h:315
 
HandleEventsOptions(Real accuracy)
Definition: Event.h:285
 
HandleEventsOptions & setOption(Option opt)
Select a given option from the set.
Definition: Event.h:311
 
static Real getDefaultAccuracy()
Definition: Event.h:319
 
HandleEventsOptions()
Definition: Event.h:284
 
HandleEventsOptions & operator&=(const HandleEventsOptions &opts)
Definition: Event.h:324
 
HandleEventsOptions & operator|=(const HandleEventsOptions &opts)
Definition: Event.h:322
 
HandleEventsOptions & operator|=(Option opt)
Definition: Event.h:329
 
bool isOptionSet(Option opt) const
Definition: Event.h:317
 
HandleEventsOptions(Option opt)
Definition: Event.h:287
 
HandleEventsOptions & setAccuracy(Real accuracy)
The norm of the constraint errors must be driven to below this value for a project() to be considered...
Definition: Event.h:299
 
HandleEventsOptions & clearOption(Option opt)
Remove a given option from the set.
Definition: Event.h:307
 
HandleEventsOptions & operator-=(Option opt)
Definition: Event.h:330
 
Option
Definition: Event.h:271
 
@ UseInfinityNorm
Use the stricter infinity (max absolute value) norm rather than the default RMS norm to determine whe...
Definition: Event.h:280
 
@ None
Take all defaults.
Definition: Event.h:273
 
@ DontThrow
Normally failure to meet the accuracy requirements throws an exception.
Definition: Event.h:277
 
Results returned by the handleEvent() method.
Definition: Event.h:345
 
HandleEventsResults & setExitStatus(Status status)
Definition: Event.h:384
 
HandleEventsResults()
Definition: Event.h:347
 
bool isValid() const
Definition: Event.h:374
 
const String & getMessage() const
Definition: Event.h:381
 
bool getAnyChangeMade() const
Definition: Event.h:377
 
Status
Definition: Event.h:349
 
@ Invalid
This object has not been filled in yet and holds no results.
Definition: Event.h:351
 
@ Succeeded
The handleEvent() operation was successful and time stepping may continue.
Definition: Event.h:354
 
@ Failed
The handleEvent() call was unable to successfully handle the event.
Definition: Event.h:362
 
@ ShouldTerminate
The handleEvent() call was successful but the event requires time stepping to terminate.
Definition: Event.h:358
 
Status getExitStatus() const
Definition: Event.h:375
 
Stage getLowestModifiedStage() const
Definition: Event.h:379
 
HandleEventsResults & setLowestModifiedStage(Stage stage)
Definition: Event.h:388
 
HandleEventsResults & setMessage(const String &message)
Definition: Event.h:390
 
HandleEventsResults & setAnyChangeMade(bool changeMade)
Definition: Event.h:386
 
HandleEventsResults & clear()
Restore this object to its default-constructed state, with the return status set to Invalid.
Definition: Event.h:367
 
This class is basically a glorified enumerated type, type-safe and range checked but permitting conve...
Definition: Stage.h:66
 
@ Infinity
Higher than any legitimate Stage.
Definition: Stage.h:79
 
SimTK::String is a plug-compatible std::string replacement (plus some additional functionality) inten...
Definition: String.h:65
 
This unique integer type is for identifying a triggered event within a particular Stage of the full S...
 
This unique integer type is for identifying a triggered event in the full System-level view of the St...
 
const Real Infinity
This is the IEEE positive infinity constant for this implementation of the default-precision Real typ...
 
This is the top-level SimTK namespace into which all SimTK names are placed to avoid collision with o...
Definition: Assembler.h:37
 
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:607
 
SimTK_DEFINE_UNIQUE_INDEX_TYPE(AssemblyConditionIndex)