#ifndef __XIOS_GRID_ALGORITHM_HPP__ #define __XIOS_GRID_ALGORITHM_HPP__ #include "grid_transform_connector.hpp" #include #include "array_new.hpp" #include "local_view.hpp" namespace xios { class CGrid; class CGenericAlgorithmTransformation ; /*! \class CGenericAlgorithmTransformation This class defines the interface for all other inherited algorithms class */ class CTransformFilter ; class CGarbageCollector ; class CGridAlgorithm : public std::enable_shared_from_this { public: CGridAlgorithm(shared_ptr algorithm) : algorithm_(algorithm) {} ; virtual ~CGridAlgorithm() {} ; virtual void apply(const CArray& dataIn, CArray& dataOut) { abort(); } //=0 virtual void apply(const CArray& dataIn, const vector>& auxData, CArray& dataOut) { abort(); } //=0 virtual CTransformFilter* createTransformFilter(CGarbageCollector& gc, bool detectMissingValues, double defaultValue) ; virtual bool isGenerateTranformation(void) ; virtual StdString getAlgoName() ; protected: shared_ptr algorithm_=nullptr ; }; } #endif // __XIOS_GRID_ALGORITHM_TRANSFORMATION_HPP__