#ifndef __TRANSFER_TRANSFORM_CONNECTOR_HPP__ #define __TRANSFER_TRANSFORM_CONNECTOR_HPP__ #include "xios_spl.hpp" #include "array_new.hpp" #include "local_view.hpp" namespace xios { class CTransferTransformConnector { private: shared_ptr srcView_; shared_ptr dstView_; vector connector_; vector mask_ ; // sizeof dstSize_ int srcSize_ ; int dstSize_ ; void computeConnector(unordered_map& indexMap) ; public: CTransferTransformConnector(shared_ptr srcView, shared_ptr dstView, unordered_map& indexMap) ; void transfer(int repeat, int sizeT, const CArray& dataIn, CArray& dataOut) { int dstSlice = dstSize_*sizeT ; int srcSlice = srcSize_*sizeT ; dataOut.resize(repeat* dstSlice) ; dataOut=0 ; // what to do about missing value => next step ? const double* input = dataIn.dataFirst() ; double* output = dataOut.dataFirst() ; for(int r=0;r& dataIn, CArray& dataOut) { transfer(1,sizeT, dataIn, dataOut) ; } void transfer(const CArray& dataIn, CArray& dataOut) { transfer(1,1,dataIn, dataOut) ; } }; } #endif