#ifndef MESSMER_CPPUTILS_RANDOM_RANDOMGENERATOR_H #define MESSMER_CPPUTILS_RANDOM_RANDOMGENERATOR_H #include "../data/FixedSizeData.h" #include "../data/Data.h" namespace cpputils { class RandomGenerator { public: RandomGenerator(); template FixedSizeData getFixedSize(); Data get(size_t size); protected: virtual void _get(void *target, size_t bytes) = 0; private: static std::mutex _mutex; DISALLOW_COPY_AND_ASSIGN(RandomGenerator); }; inline RandomGenerator::RandomGenerator() { } template inline FixedSizeData RandomGenerator::getFixedSize() { FixedSizeData result = FixedSizeData::Null(); _get(result.data(), SIZE); return result; } inline Data RandomGenerator::get(size_t size) { Data result(size); _get(result.data(), size); return result; } } #endif