#ifndef DEVICE_BATCH_DISPATCH_H_
#define DEVICE_BATCH_DISPATCH_H_

class DevicesBatchDisptach {
    public:
        DevicesBatchDisptach();
        DevicesBatchDisptach(int allBatchNum);
        ~DevicesBatchDisptach();
        void SetAllBatchNum(int allBatchNum);
        void SetDevicesSameAbility(int devicesNum);
        void SetDevicesAbility(int devicesNum, int *abilityArr);
        int GetBatchDispNum(int devID);
        int GetBatchStartIndex(int devID);
        int GetBatchEndIndex(int devID);
        int GetDevicesNum();
        int GetAllDeviceSigmaBatch();
        
    private:
        void SetInitStatus();
        void CompuateDevicesDispBatch();
        void RealeaseMemory();
        int mAllBatchNum;
        int mSigmaAbility;
        int *mAbilityArr;
        int *mDeviceDispBatch;
        int *mDeviceDispBatchStart;
        int *mDeviceDispBatchEnd;
        int mDevicesNum;
};

#endif