/* */ #ifndef _D_BITFIELD_MAN_FACTORY_H_ #define _D_BITFIELD_MAN_FACTORY_H_ #include "common.h" #include "Randomizer.h" #include "BitfieldMan.h" class BitfieldManFactory; typedef SharedHandle BitfieldManFactoryHandle; class BitfieldManFactory { private: static BitfieldManFactoryHandle factory; RandomizerHandle randomizer; BitfieldManFactory(); public: ~BitfieldManFactory() {} static BitfieldManFactoryHandle getFactoryInstance() { if(factory.isNull()) { factory = new BitfieldManFactory(); } return factory; } BitfieldMan* createBitfieldMan(int32_t blockLength, int64_t totalLength) { BitfieldMan* bitfieldMan = new BitfieldMan(blockLength, totalLength); bitfieldMan->setRandomizer(randomizer); return bitfieldMan; } static void setDefaultRandomizer(const RandomizerHandle& randomizer) { BitfieldManFactoryHandle factory = getFactoryInstance(); factory->setRandomizer(randomizer); } static RandomizerHandle getDefaultRandomizer() { return getFactoryInstance()->getRandomizer(); } void setRandomizer(const RandomizerHandle& randomizer) { this->randomizer = randomizer; } RandomizerHandle getRandomizer() const { return randomizer; } }; #endif // _D_BITFIELD_MAN_FACTORY_H_