Workspace 6.21.5
Public Member Functions | Protected Member Functions | List of all members
ConditionalLoop Class Reference

An operation that iterates over its contents repeatedly while a condition is satisfied.

#include <Workspace/DataExecution/Operations/Builtin/conditionalloop.h>

Inheritance diagram for ConditionalLoop:
[legend]

Public Member Functions

 ConditionalLoop () noexcept(false)
 
 ~ConditionalLoop () override
 
bool canChangeAtomicUpdate () const override
 
QString getDefaultIconPath () const override
 
void onOperationAdded (const AddOperationEvent &e) override
 
void onOperationRemoved (const RemoveOperationEvent &e) override
 
- Public Member Functions inherited from IteratingWorkspace< ConditionalLoop >
 IteratingWorkspace (const QString &defaultLabel, const QString &defaultWorkflowPath)
 
IteratingOperationBase::ExecutionResult executeIteration (Workspace *workspaceToExecute)
 
virtual void onOperationAdded (const AddOperationEvent &e)
 
virtual void onOperationRemoved (const RemoveOperationEvent &e)
 
- Public Member Functions inherited from Workspace
 Workspace ()
 
 ~Workspace () override
 
QUuid addAnchor (const AnchorData &d)
 
void addAnchor (const QUuid &id, const AnchorData &d)
 
void addConnection (Connection &connection)
 
QUuid addMiniOperationRack (const MiniOperationRackData &data)
 
void addMiniOperationRack (const QUuid &id, const MiniOperationRackData &data)
 
QUuid addNoteItem (const NoteItemData &d)
 
void addNoteItem (const QUuid &id, const NoteItemData &d)
 
void addOperation (Operation &operation)
 
void addOperation (Operation &operation, const QString &id)
 
void addToUpdateSet (Updatable &updatable)
 
virtual bool canChangeAtomicUpdate () const
 
void checkRequestersForStatus ()
 
void clear ()
 
Workspaceclone ()
 
bool comesFromExternal () const override
 
bool completeDelayedLoad ()
 
bool containsOperationWithLabel (const QString &label, bool descendIntoNestedItems=false)
 
Presentation::CustomOperationPropertiescreateCustomPropertiesHandler () override
 
void ensureHasData () override
 
bool execute () override
 
void findNestedSourceUrls (QStringList &urlList, bool recursive=true) const
 
AnchorDatagetAnchorData (const QUuid &id)
 
const AnchorDatagetAnchorData (const QUuid &id) const
 
QList< QUuid > getAnchorIds () const
 
const QString & getCatalogueName () const
 
const QString & getCataloguePath () const
 
ConnectiongetConnection (size_type i)
 
const ConnectiongetConnection (size_type i) const
 
QString getDefaultIconPath () const override
 
QList< Connection * > getDisabledConnections (bool nestedWorkspaces)
 
UpdatablegetErrorSource ()
 
void getGlobalNames (QStringList &globalNames, QStringList &globalNameDescriptions) const
 
const InputScalargetInputForOperation (const WorkspaceInput &source) const
 
InputScalargetInputForOperation (WorkspaceInput &source)
 
MiniOperationRackDatagetMiniOperationRackData (const QUuid &id)
 
const MiniOperationRackDatagetMiniOperationRackData (const QUuid &id) const
 
QUuid getMiniOperationRackId (const Operation &operation) const
 
QList< QUuid > getMiniOperationRackIds () const
 
bool getMustRun () const
 
const QString & getNamespace () const
 
NoteItemDatagetNoteItemData (const QUuid &id)
 
const NoteItemDatagetNoteItemData (const QUuid &id) const
 
QList< QUuid > getNoteItemIds () const
 
const QString & getNotes () const
 
size_type getNumConnections () const
 
size_type getNumOperations () const
 
OperationgetOperation (size_type i)
 
const OperationgetOperation (size_type i) const
 
OperationgetOperationFromId (const QUuid &id)
 
const OperationgetOperationFromId (const QUuid &id) const
 
WorkspaceInputgetOperationFromInput (InputScalar &in) const
 
WorkspaceOutputgetOperationFromOutput (const Output &out) const
 
size_type getOperationIndex (const Operation &op) const
 
QList< Operation * > getOperationsWithFeature (const SchedulerFeature &feature, bool descendIntoNestedItems=false)
 
QList< Operation * > getOperationsWithLabel (const QString &label, bool descendIntoNestedItems=false)
 
OperationgetOperationWithGlobalName (const QString &globalName, bool descendIntoNestedItems=false)
 
OperationgetOperationWithLabel (const QString &label)
 
const OutputgetOutputForOperation (const WorkspaceOutput &requester) const
 
OutputgetOutputForOperation (WorkspaceOutput &requester)
 
SchedulerFeatures getRequiredSchedulerFeatures () const override
 
const WorkspacegetRootWorkspace () const override
 
WorkspacegetRootWorkspace () override
 
const QString & getSerializedText () const
 
QString getSourceDir () const
 
const QString & getSourceUrl () const
 
bool getSupportsRemoteExecution () const
 
const QString & getSyncSerializedWorkflow () const
 
UpdatergetUpdater ()
 
const QString & getUuid ()
 
QList< Variable * > getVariableOperations ()
 
QList< const Variable * > getVariableOperations () const
 
QList< WorkspaceInput * > getWorkspaceInputOperations ()
 
QList< const WorkspaceInput * > getWorkspaceInputOperations () const
 
QList< WorkspaceOutput * > getWorkspaceOutputOperations ()
 
QList< const WorkspaceOutput * > getWorkspaceOutputOperations () const
 
QList< Workspace * > getWorkspaces ()
 
QList< const Workspace * > getWorkspaces () const
 
QList< Workspace * > getWorkspacesWithSourceUrl (const QString &sourceUrl, bool descendIntoNestedItems=false)
 
bool hasDisabledConnections () const
 
bool hasStarted ()
 
bool hasStopped ()
 
bool haveAnchor (const QUuid &id) const
 
bool haveMiniOperationRack (const QUuid &id) const
 
bool haveNoteItem (const QUuid &id) const
 
void idPathChanged () override
 
void inputDataTypeChanged (WorkspaceInput &source)
 
bool isAsynchronous () const override
 
bool isAsynchronousProcess () const override
 
bool isAtomicUpdate () const override
 
bool isConnectedToAsynchronous () const override
 
bool isDelayedLoad () const
 
bool isPaused ()
 
bool isRoot () const
 
bool isRunning ()
 
bool isRunningAsynchronously () const override
 
bool isScheduled ()
 
bool isValid () const
 
bool isWaitingForAsynchronousUpdate () const override
 
bool load (const SerializedItem &item) override
 
bool loadFromFile (const QString &fileName, bool loadPlaceholdersOnly=false, bool updateWsResourcePath=true)
 
bool loadMetaData (const QString &serializedText)
 
bool loadWithoutOverwrite (const SerializedItem &item)
 
void logText (const QString &msg)
 
void modifyAnchor (const QUuid &id, const AnchorData &d)
 
void modifyNoteItem (const QUuid &id, const NoteItemData &d)
 
bool nestedHaveDisabledConnections () const
 
void outputDataTypeChanged (WorkspaceOutput &requester)
 
void pauseUpdate ()
 
void processUpdateSet ()
 
void regenerateOperationIds ()
 
bool removeAnchor (const QUuid &id)
 
bool removeConnection (Connection &connection)
 
void removeFromUpdateSet (Updatable &updatable)
 
bool removeMiniOperationFromRack (const QUuid &opId, const QUuid &rackId)
 
bool removeMiniOperationRack (const QUuid &id)
 
bool removeNoteItem (const QUuid &id)
 
bool removeOperation (Operation &operation)
 
void requestContinuousUpdate ()
 
void requestSingleShotUpdate (const QJsonDocument &schedulerSettings)
 
void requestSingleShotUpdate (const QStringList &notifyMailRecipients=QStringList())
 
void requestStop ()
 
void resetExecutionDependencies () override
 
bool saveToFile (const QString &fileName, bool saveData=false, bool saveAllOutputs=true)
 
bool saveToFileConst (const QString &fileName, bool saveData=false) const
 
bool saveWithData (SerializedItem &item) const override
 
bool saveWithData (SerializedItem &item, bool saveAllOutputs) const
 
void setAtomicUpdate (bool atomic) override
 
void setCatalogueName (const QString &name)
 
void setCataloguePath (const QString &path)
 
template<typename T >
bool setGlobalNameValue (const QString &globalName, const T &value)
 
void setIdPathCachingEnabled (bool b) override
 
void setInputNotUpToDate (InputScalar &input) override
 
void setIsAsynchronous (bool asynchronous) override
 
void setIsAsynchronousProcess (bool) override
 
void setIsRunningAsynchronously (bool running) override
 
void setIsScheduled (bool scheduled)
 
void setManualLoadSourceUrl (const QString &url)
 
void setMustRun (bool)
 
void setNamespace (const QString &name)
 
void setNotes (const QString &notes)
 
void setOutputNotUpToDate (Output &output) override
 
void setOutputUpToDate (WorkspaceOutput &requester, bool b)
 
void setSourceUrl (const QString &url)
 
void setSupportsRemoteExecution (bool val)
 
void setSynchronisationSource (Workspace &)
 
void setSyncSerializedWorkflow (const QString &serializedWorkflow)
 
void setUpToDate (bool b) override
 
void setUuid (const QString &)
 
void setWasRunning (bool b)
 
void stopAndWaitUntilFinishedRunning ()
 
bool synchronize ()
 
void terminate ()
 
bool update (Updater *updater=nullptr) override
 
bool wasRunning ()
 
void workspaceChanged (Workspace *oldWorkspace) override
 
- Public Member Functions inherited from Operation
 ~Operation () override
 
bool addInput (Input &input, bool modifiedInPlace=false)
 
bool addOutput (Output &output)
 
template<typename T >
bool assignInput (const QString &inputName, const T &value)
 
bool canSerialize () const override
 
bool connectProgressEvents (QProgressBar *progressBar)
 
virtual Presentation::CustomOperationPropertiescreateCustomPropertiesHandler ()
 
virtual void ensureHasData ()
 
bool getBroadcastUpdateEvents () const
 
QColor getColor () const
 
virtual QString getDefaultIconPath () const
 
QString getDefaultUiPath () const
 
QString getDeprecationMessage () const
 
const QString & getDescription () const
 
SerializedItem getExtras ()
 
const OperationFactorygetFactory () const
 
OperationgetFromPath (const QString &path, Workspace &relativeTo, QStringList &errors) const override
 
virtual GraphicsSize getGraphicsSize () const
 
virtual QString getHelpPage () const
 
QString getIconPath () const
 
const QUuid & getId () const
 
QString getIdPath (bool scoped=true) const override
 
QString getIdPath (const Workspace &relativeTo) const
 
difference_type getIndex (const Input &input, IndexCountingOptions options=SkipNone) const
 
difference_type getIndex (const Output &output, IndexCountingOptions options=SkipNone) const
 
void getIndexPair (InputScalar &input, difference_type &mainIndex, difference_type &arrayIndex)
 
InputgetInput (const QString &name)
 
const InputgetInput (const QString &name) const
 
InputgetInput (size_type index)
 
const InputgetInput (size_type index) const
 
InputArraygetInputArray (const QString &name)
 
const InputArraygetInputArray (const QString &name) const
 
IOBaseIteratorRange< Input, false > getInputs ()
 
IOBaseIteratorRange< Input, true > getInputs () const
 
InputScalargetInputScalar (const QString &name)
 
const InputScalargetInputScalar (const QString &name) const
 
template<typename T >
T & getInputValue (const QString &inputName)
 
template<typename T >
const T & getInputValue (const QString &inputName) const
 
const QString & getLabel () const
 
QString getLabelRelativeToRoot () const
 
OutputgetOutput (const QString &name)
 
const OutputgetOutput (const QString &name) const
 
OutputgetOutput (size_type index)
 
const OutputgetOutput (size_type index) const
 
IOBaseIteratorRange< Output, false > getOutputs ()
 
IOBaseIteratorRange< Output, true > getOutputs () const
 
template<typename T >
T & getOutputValue (const QString &outputName)
 
template<typename T >
const T & getOutputValue (const QString &outputName) const
 
bool getProfilingEnabled () const
 
int getProgress () const
 
int getProgressContribution () const
 
bool getProgressResetByNotUpToDate () const
 
virtual SchedulerFeatures getRequiredSchedulerFeatures () const
 
InputScalargetScalarInput (size_type mainIndex, difference_type arrayIndex)
 
QString getShortLabel () const
 
QString getTagName () const
 
bool getTerminateExecution () const
 
QString getUiPath () const
 
bool getUpToDate () const override
 
virtual bool hasRequiredSchedulerFeatures () const
 
void idPathChanged () override
 
virtual bool inputRebuilt (InputScalar &input)
 
virtual bool isAsynchronous () const
 
virtual bool isAsynchronousProcess () const
 
virtual bool isAtomicUpdate () const
 
bool isConnectedToAsynchronous () const override
 
bool isDeprecated () const
 
bool isEditable () const
 
bool isIdPathCachingEnabled () const
 
virtual bool isPolymorphicType () const
 
virtual bool isRunningAsynchronously () const
 
virtual bool isThreadSafe () const
 
template<typename T >
bool isType () const
 
bool isType (const OperationFactory &type) const
 
bool isUpdating () const
 
virtual bool isUserConfigurable ()
 
bool isUsingDefaultColor () const
 
bool isUsingDefaultIconPath () const
 
bool isUsingDefaultUiPath () const
 
bool isWaitingForAsynchronousUpdate () const override
 
bool isWorkspaceType () const
 
bool load (const SerializedItem &item) override
 
void markUpToDateWhereSafe ()
 
bool matchesType (const Operation &otherOperation) const
 
size_type numInputs (IndexCountingOptions=SkipNone) const
 
size_type numOutputs (IndexCountingOptions=SkipNone) const
 
bool removeInput (const QString &name)
 
bool removeInput (Input &input)
 
bool removeOutput (const QString &name)
 
bool removeOutput (Output &output)
 
virtual void resetExecutionDependencies ()
 
bool save (SerializedItem &item) const override
 
virtual bool saveWithData (SerializedItem &item) const
 
virtual void setAtomicUpdate (bool atomic)
 
void setBroadcastUpdateEvents (bool enable)
 
void setColor (const QColor &c)
 
void setDescription (const QString &description)
 
void setEditable (bool b)
 
void setIconPath (const QString &path)
 
void setId (const QUuid &id)
 
virtual void setIdPathCachingEnabled (bool b)
 
virtual void setInputNotUpToDate (InputScalar &input)
 
virtual void setIsAsynchronous (bool asynchronous)
 
virtual void setIsAsynchronousProcess (bool)
 
virtual void setIsRunningAsynchronously (bool asynchronous)
 
void setLabel (const QString &label)
 
virtual void setOutputNotUpToDate (Output &output)
 
void setProfilingEnabled (bool enable)
 
virtual void setProgress (int percent)
 
void setProgressContribution (int percent)
 
void setProgressResetByNotUpToDate (bool b)
 
virtual void setRequiredSchedulerFeatures (const SchedulerFeatures &)
 
void setTerminateExecution (bool b)
 
void setUiPath (const QString &path)
 
void setUpToDate (bool b) override
 
bool update (Updater *updater=nullptr) override
 
- Public Member Functions inherited from WorkspaceElement
 ~WorkspaceElement () override
 
const WorkspacegetWorkspace () const override
 
WorkspacegetWorkspace () override
 
virtual void workspaceChanged (Workspace *oldWorkspace)
 
- Public Member Functions inherited from Updatable
 ~Updatable () override
 
virtual bool comesFromExternal () const
 
QString getEnclosingScope () const
 
virtual UpdatablegetFromPath (const QString &path, Workspace &relativeTo, QStringList &errors) const =0
 
const QString & getGlobalName () const
 
virtual QString getIdPath (bool scoped=true) const =0
 
virtual WorkspacegetRootWorkspace ()
 
virtual const WorkspacegetRootWorkspace () const
 
QString getScopedGlobalName () const
 
virtual bool getUpToDate () const =0
 
virtual const WorkspacegetWorkspace () const =0
 
virtual WorkspacegetWorkspace ()=0
 
virtual void idPathChanged ()
 
virtual bool isConnectedToAsynchronous () const =0
 
virtual bool isWaitingForAsynchronousUpdate () const =0
 
void setGlobalName (const QString &name)
 
virtual void setUpToDate (bool b)=0
 
virtual bool update (Updater *updater=nullptr)=0
 
- Public Member Functions inherited from Observable
virtual ~Observable ()
 
void attachObserver (Observer &observer)
 
void destroy ()
 
void detachObserver (Observer &observer)
 
void notifyEvent (const ObservableEvent &event)
 
- Public Member Functions inherited from Serialize
virtual ~Serialize ()=default
 
virtual bool canSerialize () const =0
 
virtual bool load (const SerializedItem &item)=0
 
virtual bool save (SerializedItem &item) const =0
 
- Public Member Functions inherited from TextLogger
 TextLogger ()
 
 TextLogger (const DataExecution::IOBase &io)
 
 TextLogger (const DataExecution::Operation &operation)
 
 TextLogger (const TextLogger &logger)
 
 TextLogger (TextLogger &&logger)
 
virtual ~TextLogger ()
 
void logLine (const Application::LogManager::MessageCategory &category, const QString &msg) const
 
void logLine (const QString &msg) const
 
void logText (const Application::LogManager::MessageCategory &category, const QString &msg) const
 
void logText (const QString &msg) const
 
TextLoggeroperator= (TextLogger)
 

Protected Member Functions

bool atEndCondition () override
 
bool bringInputsUpToDate () override
 
bool isIterationControlInput (const Input &input) const override
 
bool isLoopConditionValid () const override
 
void performCleanup (Workspace *workspaceToExecute, bool forceStop) override
 
bool performInitialisation (Workspace *workspaceToExecute) noexcept(false) override
 
bool preIterations () override
 
bool prepareInputsOutputsForLoad (const SerializedItem &item) override
 
void setInputNotUpToDate (InputScalar &input) override
 
bool updateInputsForIteration () override
 
void updateProgress () override
 
- Protected Member Functions inherited from IteratingWorkspaceBase< Derived, Parallel >
 IteratingWorkspaceBase (const QString &defaultLabel)
 
 ~IteratingWorkspaceBase () override
 
bool bringInputsUpToDate () override
 
bool execute () override
 
bool finishInputsOutputsAfterLoad (const SerializedItem &item) override
 
const InputScalargetFirstIterationInput () const
 
bool performInitialisation (Workspace *workspaceToExecute) noexcept(false) override
 
bool postIterationExecute () override
 
bool preIterations () override
 
bool prepareInputsOutputsForLoad (const SerializedItem &item) override
 
virtual void resetAccumulatingInputs ()
 
void setInputNotUpToDate (InputScalar &input) override
 
void setNonIterationControlInputsNotUpToDate () override
 
bool updateInputsForIteration () override
 
- Protected Member Functions inherited from Workspace
 Workspace (const OperationFactory &factory, const QString &label)
 
void cancelExecution (bool b) override
 
void decrementUseCount ()
 
bool finishInputsOutputsAfterLoad (const SerializedItem &item) override
 
void incrementUseCount ()
 
void markOutputsUpToDate () override
 
void onWorkspaceAbortedUpdate ()
 
void onWorkspaceFinishedExecution ()
 
void onWorkspaceFinishedUpdate ()
 
bool postSave (SerializedItem &item) const override
 
bool prepareInputsOutputsForLoad (const SerializedItem &item) override
 
bool shouldPutInExtras (const QString &tagName) const override
 
- Protected Member Functions inherited from Operation
 Operation (const OperationFactory &factory, const QString &label)
 
bool bringArrayOfInputsUpToDate (Input *&array, size_type arraySize)
 
bool bringArrayOfInputsUpToDate (std::vector< Input * > &array)
 
virtual bool bringInputsUpToDate ()
 
bool bringInputUpToDate (Input &input)
 
virtual void cancelExecution (bool b)
 
virtual bool execute ()=0
 
virtual bool finishInputsOutputsAfterLoad (const SerializedItem &item)
 
UpdatergetCurrentUpdater ()
 
virtual const InputgetRenamedInput (const QString &name) const
 
virtual const OutputgetRenamedOutput (const QString &name) const
 
virtual bool inputsAreUpToDate () const
 
virtual bool makeOutputsValid ()
 
virtual void markOutputsUpToDate ()
 
void pauseUpdate ()
 
virtual bool postSave (SerializedItem &item) const
 
virtual bool prepareInputsOutputsForLoad (const SerializedItem &item)
 
void saveExtras (SerializedItem &item) const
 
virtual bool shouldPutInExtras (const QString &tagName) const
 
- Protected Member Functions inherited from WorkspaceElement
 WorkspaceElement ()
 
- Protected Member Functions inherited from Updatable
 Updatable ()
 
 Updatable (const Updatable &up)
 
void notifyUpdated ()
 
Updatableoperator= (const Updatable &up)
 
- Protected Member Functions inherited from Observable
 Observable ()
 
 Observable (const Observable &)
 

Additional Inherited Members

- Public Types inherited from Operation
enum  ConfigStatus { GoodConfig = 0x00 , UnknownConfig = 0x01 , InvalidConfig = 0x02 }
 
using difference_type = ptrdiff_t
 
enum  GraphicsSize { Default = 100 , Small = 65 }
 Options for the graphical size of an operation, able to be changed by derived classes. Values are percentages. More...
 
enum  IndexCountingOption { SkipNone = 0x0 , SkipInvisible = 0x1 , SkipDependencies = 0x2 }
 
using size_type = size_t
 
- Static Public Member Functions inherited from IteratingWorkspace< ConditionalLoop >
static bool ioNameWithSameLabelPresent (const Operation &op, const QString &ioName)
 
- Static Public Member Functions inherited from Workspace
static QList< Operation * > getDownstreamOperations (const Operation &source, const OperationFactory *opType=nullptr)
 
static QList< Operation * > getUpstreamOperations (const Operation &source, const OperationFactory *opType=nullptr)
 
static void setIgnoreAliasedOperations (bool value)
 
static bool synchronize (Workspace &, Workspace &)
 
- Static Public Member Functions inherited from Updatable
static InputScalarfindInputScalarGlobalName (const QString &scopedGlobalName, Workspace &relativeTo)
 
static IOBasefindIOBaseGlobalName (const QString &scopedGlobalName, Workspace &relativeTo)
 
static OperationfindOperationGlobalName (const QString &scopedGlobalName, Workspace &relativeTo)
 
- Static Public Attributes inherited from Workspace
static const QString WORKSPACE_SEARCH_PATH_PREFIX
 

Constructor & Destructor Documentation

◆ ConditionalLoop()

◆ ~ConditionalLoop()

~ConditionalLoop ( )
overridedefault

Member Function Documentation

◆ atEndCondition()

bool atEndCondition ( )
overrideprotected

◆ bringInputsUpToDate()

bool bringInputsUpToDate ( )
overrideprotectedvirtual

This function is responsible for first bringing the dependency input up to date, then determining all the inputs required to update the operation's outputs and bring those inputs up to date as well.

The default implementation assumes all inputs need to be brought up to date, but some operations may only require some of the inputs to be up to date in order to calculate the outputs. Indeed, some of the inputs may need to be up to date, their values checked and then some combination of the rest brought up to date. An example where this could be useful is where an operation should behave differently for different iterations of a loop.

Subclasses which choose to override this function should call the other overloaded version of this function as necessary to actually bring the inputs it needs up to date, since it will handle multi-threading in a future implementation. It must update the dependency input first on its own before anything else.

Returns
True if required inputs were able to be brought up to date.
See also
update(), execute(), bringInputUpToDate(), bringArrayOfInputsUpToDate()

Reimplemented from Operation.

◆ canChangeAtomicUpdate()

bool canChangeAtomicUpdate ( ) const
overridevirtual
Returns
true if this Workspace is capable of changing between update modes. Not all derived classes need to support doing this.

Reimplemented from Workspace.

◆ getDefaultIconPath()

QString getDefaultIconPath ( ) const
overridevirtual
Returns
The default icon path for this type of operation. Whenever a new operation is created, it will be given this icon path as a default. Clients can still override the icon used for an operation if they so wish by calling setIconPath().

It is not required that getDefaultIconPath() always returns the same value. In fact, it can be a useful way of showing visual differences based on some property of the operation. For example, the Workspace class overrides this function and provides two different icons; one for regular workspaces and different icon for when the workspace comes from an external source.

See also
setIconPath(), getIconPath(), isUsingDefaultIconPath()

Reimplemented from Operation.

◆ isIterationControlInput()

bool isIterationControlInput ( const Input input) const
overrideprotected

◆ isLoopConditionValid()

bool isLoopConditionValid ( ) const
overrideprotected

◆ onOperationAdded()

void onOperationAdded ( const AddOperationEvent e)
overridevirtual
Parameters
eThe event object containing information about the operation added.

Invoked when an operation is added to the loop's workflow. We need to respond to this to make sure that our loop-critical operations (such as first iteration) are kept in sync with the state of the workflow's contents. We don't want to end up with dangling pointers.

Reimplemented from IteratingWorkspaceBase< Derived, Parallel >.

◆ onOperationRemoved()

void onOperationRemoved ( const RemoveOperationEvent e)
overridevirtual
Parameters
eThe event object containing information about the operation removed..

Invoked when an operation is removed from the loop's workflow. We need to respond to this to make sure that our loop-critical operations (such as first iteration) are kept in sync with the state of the workflow's contents. We don't want to end up with dangling pointers.

By default there are no such operations to keep in sync, so the implementation does nothing.

Reimplemented from IteratingWorkspaceBase< Derived, Parallel >.

◆ performCleanup()

void performCleanup ( Workspace workspaceToExecute,
bool  forceStop 
)
overrideprotected

◆ performInitialisation()

bool performInitialisation ( Workspace workspaceToExecute)
overrideprotected

◆ preIterations()

bool preIterations ( )
overrideprotected

◆ prepareInputsOutputsForLoad()

bool prepareInputsOutputsForLoad ( const SerializedItem item)
overrideprotectedvirtual
Parameters
itemThe serialized item that will be loaded.

This function is called just before load() attempts to load the data for inputs and outputs from item. The default implementation simply returns true to indicate that loading can proceed. Subclasses may override this function to perform any required tasks that must be done before the inputs or outputs can be accessed. Typical uses usually revolve around tasks that create inputs and outputs, such as populating a nested workspace, setting the data type of a polymorphic data operation, etc.

Most subclasses will not need to override this function.

Returns
True if the function was successful and the data for the inputs and outputs can be loaded.

Reimplemented from Operation.

◆ setInputNotUpToDate()

void setInputNotUpToDate ( InputScalar input)
overrideprotectedvirtual
Parameters
inputThe input making the requested status change.

This function is provided so that operations can take special action when a particular input is marked as not up to date. The default implementation marks the whole operation as not up to date by calling setUpToDate(false), but subclasses (notably Workspace) may want to do something more interesting.

Reimplemented from Operation.

◆ updateInputsForIteration()

bool updateInputsForIteration ( )
overrideprotected

◆ updateProgress()

void updateProgress ( )
overrideprotected