#ifndef LCF_CHANGESIZE_H_
#define LCF_CHANGESIZE_H_
#include "tensorOperate.h"

class ChangeSizeLayer : public TensorOperate
{
    public:
        ChangeSizeLayer(int ifType, int iID, int iMaxSeqNum, DevicesBatchDisptach *iDevicesBatchDisptach, \
                        const char* inCTypeStr, int tc, int bc, int lc, int rc);
        virtual ~ChangeSizeLayer();
        void ComputeAndCreateOutYInDTensorInfo();
        void SaveLayerWeight(int n);
        void LoadLayerWeight();
        void CompuateOutY(int devID, int seqNum);
        void CompuateOutD(int devID, int seqNum);
        void ComputerYMemRealease(int devID);
        void ComputerDMemRealease(int devID);
        void CreateParaAndInstance();

    private:
        int cType;        // EXPAND or CROP
        int mTopCSize;     // top channge
        int mBottomCSize;  // bottom change
        int mLeftCSize;    // left change
        int mRightCSize;   // right change
        
        int inChannels, inHeight, inWidth;
        int outChannels, outHeight, outWidth;
};

#endif
