/* * SchedulerCreator.hh * * Created on: Dec 12, 2012 * Author: f.casimir */ #ifndef SchedulerCREATOR_HH_ #define SchedulerCREATOR_HH_ #include "DicError.hh" #include "AMDA_exception.hh" #include "ParamData.hh" #include "VisitorOfParamData.hh" #include "Scheduler.hh" using namespace AMDA::Parameters; namespace AMDA { namespace Merge { /** * @class SchedulerCreator * @brief Creator of the Operation Scheduler parameterized with ParamData input type. * @details Implement the interface VisitorOfParamData. */ class SchedulerCreator : public VisitorOfParamData { public: /** * @brief Constructor. */ SchedulerCreator(Process& pProcess, ParamData& paramInput) : _process(pProcess), _paramData(paramInput), _operation(NULL) { _paramData.accept(*this); } /** * @overload VisitorOfParamData::visit(ParamDataScalaireShort *) */ void visit(ParamDataScalaireShort *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataScalaireFloat *) */ void visit(ParamDataScalaireFloat *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataScalaireDouble *) */ void visit(ParamDataScalaireDouble *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataScalaireLongDouble *) */ void visit(ParamDataScalaireLongDouble *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataScalaireInt *) */ void visit(ParamDataScalaireInt *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataLogicalData *) */ void visit(ParamDataLogicalData *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab1DShort *) */ void visit(ParamDataTab1DShort *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab1DFloat *) */ void visit(ParamDataTab1DFloat *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab1DDouble *) */ void visit(ParamDataTab1DDouble *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab1DLongDouble *) */ void visit(ParamDataTab1DLongDouble *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab1DInt *) */ void visit(ParamDataTab1DInt *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab1DLogicalData *) */ void visit(ParamDataTab1DLogicalData *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab2DShort *) */ void visit(ParamDataTab2DShort *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab2DFloat *) */ void visit(ParamDataTab2DFloat *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab2DDouble *) */ void visit(ParamDataTab2DDouble *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab2DLongDouble *) */ void visit(ParamDataTab2DLongDouble *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab2DInt *) */ void visit(ParamDataTab2DInt *) { _operation = new Scheduler( _process); } /** * @overload VisitorOfParamData::visit(ParamDataTab2DLogicalData *) */ void visit(ParamDataTab2DLogicalData *) { _operation = new Scheduler( _process); } /** * @brief get the Scheduler parameterized operation. */ Operation * getOperation() const { return _operation; } private: Process &_process; ParamData &_paramData; Operation *_operation; }; } /* namespace Merge */ } /* namespace AMDA */ #endif /* SchedulerCREATOR_HH_ */