8#include <mlModuleIncludes.h>
9#include <FMEException/Exception.h>
10#include <FMEThirdPartyWarningsDisable.h>
12#include <FMEThirdPartyWarningsRestore.h>
160 enum EOnInputChangeBehavior {
165 void _addUpdateControlFields();
166 void _addStatusFields();
167 void _addStatusCodeField();
168 bool _isFieldUpdate(Field* field)
const;
169 bool _isFieldOnInputChangeBehavior(Field* field)
const;
170 bool _shouldUpdateOnInputChange()
const;
171 bool _isFieldClear(Field* field)
const;
172 bool _hasNamePrefixIn(
const std::string& name)
const;
173 bool _hasNamePrefixInput(
const std::string& name)
const;
174 void _handleInputFieldNotification();
175 void _initiateUpdate();
176 void _validateInputAndUpdate();
178 bool _shouldClearOnFailedUpdate();
179 void _setStatusCodeAndMessageFieldValues(
const EStatusCode code,
const std::string& message);
181 void _initiateClear();
182 void _tryToSetOutputImageProperties(
int outputIndex, PagedImage* outputImage);
183 void _validateOutputImageValidity(
const PagedImage*
const outputImage)
const;
184 void _handleErrorDuringSetOutputImageProperties(PagedImage* outputImage,
const AlgorithmModule::Error& error);
185 void _setImageInvalid(PagedImage*
const image);
187 bool _hasValidatedInputAndInitiatedUpdate;
188 bool _wasOutputCleared;
189 bool _didSetOutputImagePropertiesFail;
192 TypedEnumField<EOnInputChangeBehavior>* onInputChangeBehaviorField;
195 NotifyField* updateField;
198 NotifyField* clearField;
205 NotifyField* updateDoneField;
208 TypedEnumField<EStatusCode>* statusCodeField;
211 StringField* statusMessageField;
214 BoolField* hasValidOutputField;
219 BoolField* doNotClearOnFailedUpdateField;
#define ML_ALGORITHM_MODULE_EXPORT
Definition MLAlgorithmModuleSystem.h:12
Data structure to indicate an error within an AlgorithmModule derivative's implementation of interfac...
Definition mlAlgorithmModule.h:91
const std::string & getMessage() const
Definition mlAlgorithmModule.cpp:19
Error(const AlgorithmModule::EStatusCode statusCode, const std::string &message)
Definition mlAlgorithmModule.cpp:9
AlgorithmModule::EStatusCode getStatusCode() const
Definition mlAlgorithmModule.cpp:15
InternalError(const std::string &message)
Definition mlAlgorithmModule.cpp:41
ML-Module base class to simplify development of modules encapsulating an algorithm with dedicated inp...
Definition mlAlgorithmModule.h:30
virtual void validateInput()=0
Validates the values of module's input fields (object and parameter fields).
virtual void setOutputImageProperties(int outputIndex, PagedImage *outputImage)
Sets properties of the output image at output outputIndex.
Definition mlAlgorithmModule.cpp:239
bool _isInputField(const Field *field) const
Returns true if the field is treated as an input field that changes the module parameterization and r...
Definition mlAlgorithmModule.cpp:129
void handleNotification(Field *field) override
Never overwrite this method in derivative!
Definition mlAlgorithmModule.cpp:100
AlgorithmModule(int numInputImages, int numOutputImages)
Forwards given parameters to base class constructor.
Definition mlAlgorithmModule.cpp:53
virtual void update()=0
Executes the algorithm and updates the values of module's output fields with results.
virtual void clear()=0
Clears the values of module's output fields (object and parameter fields).
void calculateOutputImageProperties(int outputIndex, PagedImage *outputImage) override
Never overwrite this method in derivative!
Definition mlAlgorithmModule.cpp:213
void activateAttachments() override
Never overwrite this method in derivative!
Definition mlAlgorithmModule.cpp:94
EStatusCode
Contains possible values of field statusCode.
Definition mlAlgorithmModule.h:74
@ SC_OK
No error occurred.
Definition mlAlgorithmModule.h:76
@ SC_ERROR_INPUT_PARAMETER
An invalid input parameter caused abort of update.
Definition mlAlgorithmModule.h:80
@ SC_ERROR_INTERNAL
An internal error caused abort of update.
Definition mlAlgorithmModule.h:82
@ SC_ERROR_INPUT_OBJECT
An invalid input object caused abort of update.
Definition mlAlgorithmModule.h:78