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