##// END OF EJS Templates
Updates model after an event has been created through the colored zone
Updates model after an event has been created through the colored zone

File last commit:

r1211:08e858e2cf84
r1262:99c1ba5e139b
Show More
FuzzingOperations.h
49 lines | 1.7 KiB | text/x-c | CLexer
#ifndef SCIQLOP_FUZZINGOPERATIONS_H
#define SCIQLOP_FUZZINGOPERATIONS_H
#include "FuzzingDefs.h"
#include <memory>
#include <set>
#include <QLoggingCategory>
#include <QMetaType>
Q_DECLARE_LOGGING_CATEGORY(LOG_FuzzingOperations)
class Variable;
class VariableController;
/**
* Enumeration of types of existing fuzzing operations
*/
enum class FuzzingOperationType { CREATE };
/// Interface that represents an operation that can be executed during a fuzzing test
struct IFuzzingOperation {
virtual ~IFuzzingOperation() noexcept = default;
/// Checks if the operation can be executed according to the current state of the variable
/// passed in parameter
virtual bool canExecute(std::shared_ptr<Variable> variable) const = 0;
/// Executes the operation on the variable passed in parameter
/// @param variable the variable on which to execute the operation
/// @param variableController the controller associated to the operation
/// @param properties properties that can be used to configure the operation
/// @remarks variable is passed as a reference because, according to the operation, it can be
/// modified (in/out parameter)
virtual void execute(std::shared_ptr<Variable> &variable,
VariableController &variableController,
const Properties &properties = {}) const = 0;
};
/// Factory of @sa IFuzzingOperation
struct FuzzingOperationFactory {
/// Creates a fuzzing operation from a type
static std::unique_ptr<IFuzzingOperation> create(FuzzingOperationType type);
};
using OperationsTypes = std::set<FuzzingOperationType>;
Q_DECLARE_METATYPE(OperationsTypes)
#endif // SCIQLOP_FUZZINGOPERATIONS_H