Workspace 6.21.5
Public Member Functions | List of all members
ObservableEvent Class Referenceabstract

Each instance of an ObservableEvent subclass can be used as a unique event designator. More...

#include <Workspace/DataExecution/Events/observableevent.h>

Inheritance diagram for ObservableEvent:
[legend]

Public Member Functions

virtual ~ObservableEvent ()=default
 
virtual const EventIDgetEventID () const =0
 

Detailed Description

Observable events are categorised according to the address of EventID instances. This is much more robust than using integer ID's which could clash between different modules, especially when those modules are written by different groups of people. Subclasses of ObservableEvent can also have state, meaning that events can also supply their own data and functionality.

Note that the only way to create an ObservableEvent is to derive from ObservableEventType, which takes a single template parameter which is the final concrete type of the event. This pattern, while perhaps appearing a bit complicated at first, neatly and automatically enables a variety of automatic type deduction to be performed by the compiler in scenarios like calls to the templated ObserverSet::add() member functions.

For a detailed example of how to define your own event, see the ProgressEvent class.

See also
ObservableEventType, EventID, ObserverSet

Constructor & Destructor Documentation

◆ ~ObservableEvent()

virtual ~ObservableEvent ( )
virtualdefault

Member Function Documentation

◆ getEventID()

virtual const EventID & getEventID ( ) const
pure virtual
Returns
The event ID object for the event type associated with the subclass.

The ObservableEventType subclass implements this function to return an EventID object that is unique to the subclass, but which remains constant for the lifetime of the application.

Implemented in ObservableEventType< T >, ObservableEventType< ForcedShutdownEvent >, ObservableEventType< ShutdownEvent >, ObservableEventType< AbortedUpdateEvent >, ObservableEventType< AddConnectionEvent >, ObservableEventType< AddOperationEvent >, ObservableEventType< AllObservableEvents >, ObservableEventType< AttachObserverEvent >, ObservableEventType< CausedExecutionErrorEvent >, ObservableEventType< ChangeConnectionEnabledEvent >, ObservableEventType< ComesFromExternalEvent >, ObservableEventType< DeletingIOBaseEvent >, ObservableEventType< ExtrasUpdatedEvent >, ObservableEventType< FinishedExecutionEvent >, ObservableEventType< FinishedUpdateEvent >, ObservableEventType< GlobalNameChangedEvent >, ObservableEventType< GlobalNameDuplicatedEvent >, ObservableEventType< IOBaseDataObjectChangedEvent >, ObservableEventType< IOBaseRenamedEvent >, ObservableEventType< IOBaseVisiblityToggledEvent >, ObservableEventType< InputAddedEvent >, ObservableEventType< InputElementAddedEvent >, ObservableEventType< InputElementRemovalEvent >, ObservableEventType< InputRebuiltEvent >, ObservableEventType< InputRemovalEvent >, ObservableEventType< LogEvent >, ObservableEventType< OperationBreakpointSetEvent >, ObservableEventType< OperationColorChangeEvent >, ObservableEventType< OperationEditableChangeEvent >, ObservableEventType< OperationIconPathChangeEvent >, ObservableEventType< OperationIdChangeEvent >, ObservableEventType< OperationIdPathChangeEvent >, ObservableEventType< OperationLabelChangeEvent >, ObservableEventType< OperationUiPathChangeEvent >, ObservableEventType< OperationUpdateEvent >, ObservableEventType< OutputAddedEvent >, ObservableEventType< OutputRemovalEvent >, ObservableEventType< PauseUpdateEvent >, ObservableEventType< PolymorphicOperationDataNameChangeEvent >, ObservableEventType< ProgressContributionChangeEvent >, ObservableEventType< ProgressEvent >, ObservableEventType< PromptToAddWorkspaceOutput >, ObservableEventType< RemoveConnectionEvent >, ObservableEventType< RemoveOperationEvent >, ObservableEventType< ResyncExtrasEvent >, ObservableEventType< SerializingInputEvent >, ObservableEventType< StartedExecutionEvent >, ObservableEventType< StartedUpdateEvent >, ObservableEventType< StringSelectionUpdatedEvent >, ObservableEventType< UpdateEvent >, ObservableEventType< WorkspaceAtomicToggleEvent >, ObservableEventType< WorkspaceDeletedEvent >, ObservableEventType< WorkspaceExecutionFailedEvent >, ObservableEventType< WorkspaceExecutionSucceededEvent >, ObservableEventType< WorkspaceNamespaceEvent >, ObservableEventType< WorkspaceNotesEvent >, ObservableEventType< WorkspaceOutOfDateEvent >, ObservableEventType< WorkspaceUseCountReachedZeroEvent >, ObservableEventType< MeshModelBeingDestroyedEvent >, ObservableEventType< AddAnchorEvent >, ObservableEventType< AddMiniOperationRackEvent >, ObservableEventType< AddNoteItemEvent >, ObservableEventType< AddToAnchorEvent >, ObservableEventType< ChildSelectedEvent >, ObservableEventType< ClearSelectionEvent >, ObservableEventType< DeselectAnchorEvent >, ObservableEventType< DeselectConnectionEvent >, ObservableEventType< DeselectNoteItemEvent >, ObservableEventType< EditNoteItemEvent >, ObservableEventType< MergeMiniOperationRackEvent >, ObservableEventType< MiniOperationRackIdChangedEvent >, ObservableEventType< MiniOperationRackLabelChangedEvent >, ObservableEventType< MoveAllEvent >, ObservableEventType< MoveAnchorEvent >, ObservableEventType< MoveEvent >, ObservableEventType< MoveMiniOperationRackEvent >, ObservableEventType< MoveNoteItemEvent >, ObservableEventType< PathUpdateRequiredEvent >, ObservableEventType< RemoveAnchorEvent >, ObservableEventType< RemoveFromAnchorEvent >, ObservableEventType< RemoveMiniOperationRackEvent >, ObservableEventType< RemoveNoteItemEvent >, ObservableEventType< ResizeNoteItemEvent >, ObservableEventType< RotateAnchorEvent >, ObservableEventType< SaveWorkspaceViewEvent >, ObservableEventType< SelectAnchorEvent >, ObservableEventType< SelectConnectionEvent >, ObservableEventType< SelectNoteItemEvent >, ObservableEventType< SelectedEvent >, ObservableEventType< SplitMiniOperationRackEvent >, ObservableEventType< UndoMergeMiniOperationRackEvent >, ObservableEventType< WidgetGeometryEvent >, ObservableEventType< CameraInteractionEvent >, ObservableEventType< CameraObserverStateChangedEvent >, ObservableEventType< CameraUpdateEvent >, ObservableEventType< GlobalMatrixModifiedEvent >, ObservableEventType< SceneItemManipulationEvent >, ObservableEventType< CommonConnectorsUpdateWidgetsEvent >, and ObservableEventType< ConnectorsRespondToUpdatesEvent >.