#ifndef SORT_BACTH_SEQ
#define SORT_BACTH_SEQ

#define MyVoid float

class SortBatchSeq {
    public:
        static int GetSrcOffset(int *seqArr, int srcIndex);
        static int *SortBatchSeqSampleAndLablel(int num, int *dataBuff, int *seqArr);
        static MyVoid *TransSampleSeqValueToVector(int iftype, int num, int *dataBuff, int *seqArr, int dimSize);
        static MyVoid *TransLableSeqValueToVector(int iftype, int num, int *dataBuff, int *seqArr);
        static void DebugPrintBatchSeq(struct BatchSeqStruct *pStruct);
        static void BatchSeqDimCount(int *resultBatch, int maxSeq, int *batchSeq, int bNum);
        static int BatchSeqDimCount(int *batchSeq, int bNum);
        static int GetData(int seqIndex, int bIndex, int *dataBuff, int *seqArr);
        static void SortArrayAndLocation(int *&newSeqArr, int *&newLocation, int num, int *seqArr);
        static int *GetNewSeqArrByNewLocation(int num, int *srcSeqArr, int *tmpNewLocation);
        
        static void SortDataBySpecifySeqArray(int iftype, MyVoid *dataBuff, int dataDim, int bNum, int *srcSeqArr, int *newIndex);   
        static void SortDataBySpecifySeqArray(int iftype, MyVoid *dataBuff, int dataDim, int bNum, int *newIndex);
        
        static void GetSampleToLabelLocation(int *&labelSortLocation, int bNum, int *sampleLocation, int *labelLocation);
        static int FindDataIndex(int len, int *arr, int value);
};
#endif
