Operation.hh 1.33 KB
/**
 * Operation.hh
 *
 *  Created on: 2 nov. 2012
 *      Author: AKKA IS
 */

#ifndef OPERATION_HH_
#define OPERATION_HH_

#include <stdio.h>

namespace AMDA {
	namespace Parameters {

		class ParamData; 					///< @see ParamData
		class Process;							///< @see Process
		class ParamDataIndexInfo;	///< @see ParamDataIndexInfo
/**
 * @brief Interface of Process operation
 * @details must be implemented in an Process implementation to compute data and write in _paramDataOutput
 * @see Process
 */
		class Operation {
		public:

			/**
			 *  @brief default constructor
			 */
			Operation(Process& process) : _paramDataOutput(NULL), _process(process) {

			}
			/**
			 * @brief destructor
			 */
			virtual ~Operation() {}

			/**
			 * _paramDataOutput getter
			 */
			ParamData* getParamOutput() const {
				return _paramDataOutput;
			}

			/**
			 * @brief write data in  _paramDataOutput
			 * @detail pParamDataIndexInfo contain input description data
			 */
			virtual  void  write(ParamDataIndexInfo &pParamDataIndexInfo) = 0;

			/**
			 * @brief Reset static data to process on another data flow.
			 */
			virtual void reset() {};

		protected:
			/**
			 * @brief ParamData Output
			 */
			 ParamData *_paramDataOutput;

			 /**
			  * @brief Reference on parent process
			  */
			 Process   &_process;
		};

	}
}
#endif /* OPERATION_HH_ */