#ifndef BATCH_SEQ_COMP_H_
#define BATCH_SEQ_COMP_H_
#include "myType.h"
class BatchSeq {
    public:
        BatchSeq();
        virtual ~BatchSeq();
        void SetMaxSeqNum(int iMaxSeqNum);
        void SetBatchNum(int inBatchNum);
        void SetSampleLabelMaster(int method);
        void SetInputCompBatchNumArray(int *inArray, int inputSeqNum);
        void SetLableCompBatchNumArray(int *inArray, int inputSeqNum);
        void SetLabelCompLocation(int num, int *newLocation);
        int GetBatchNum(int i);
        int GetBasicBatchNum();
        int GetInputSeqNum();
        int GetResultSeqNum();
        int GetMaxSeqNum();
        int IfSetInputBatchNum();
        int IfSetLabelBatchNum();
        
        int GetSampleLabelMaster();
        void SetFindResultSeqNum(int inSeqNum);
        int GetThisSeqLableSum(int seqIdx);
        int *GetLableSampleSeqArray();
        
        void SetLabelLocation(int *inArr, int len);
        void ReLocationOutYByLabelSeq(int iftype, MyVoid *dataBuff);
        void ReLocationInDYByLabelSeq(int iftype, MyVoid *dataBuff);
                
        int inputDim;
        int outputDim;
        
    private:
        int *mInputCompBatchNumArray;
        int *mLabelCompSeqNumArray;
        int mSampleLabelMaster; //0 is in; 1 is out; 2 is reLocation OutY By label master
        int mMaxSeqNum;
        int mBatchNum;
        
        int mInputSeqNum;
        int mResultSeqNum;
                
        int *mNewLabelLocation;
};

class BatchSeqComp {
    public:
        BatchSeqComp();
        BatchSeqComp(int devNum);
        virtual ~BatchSeqComp();
        void SetBatchSeqComp(int devNum);
        BatchSeq *GetBatchSeqHandle(int devID);

    private:
        BatchSeq *mBatchSeq;
        int mDevNum;
};

#endif 