Line data Source code
1 : #include "Module/Stateful/Source/Random/Source_random.hpp" 2 : 3 : using namespace spu::module; 4 : 5 : template<typename B> 6 0 : Source_random<B>::Source_random(const int max_data_size, const int seed) 7 : : Source<B>(max_data_size) 8 0 : , rd_engine(seed) 9 0 : , uniform_dist(0, 1) 10 : { 11 0 : const std::string name = "Source_random"; 12 0 : this->set_name(name); 13 0 : this->tasks[0]->set_replicability(true); 14 0 : } 15 : 16 : template<typename B> 17 : Source_random<B>* 18 0 : Source_random<B>::clone() const 19 : { 20 0 : auto m = new Source_random(*this); 21 0 : m->deep_copy(*this); 22 0 : return m; 23 : } 24 : 25 : template<typename B> 26 : void 27 0 : Source_random<B>::_generate(B* out_data, const size_t frame_id) 28 : { 29 : // generate a random k bits vector out_data 30 0 : for (auto i = 0; i < this->max_data_size; i++) 31 0 : out_data[i] = (B)this->uniform_dist(this->rd_engine); 32 0 : } 33 : 34 : template<typename B> 35 : void 36 0 : Source_random<B>::set_seed(const int seed) 37 : { 38 0 : rd_engine.seed(seed); 39 0 : } 40 : 41 : // ==================================================================================== explicit template instantiation 42 : template class spu::module::Source_random<int8_t>; 43 : template class spu::module::Source_random<uint8_t>; 44 : template class spu::module::Source_random<int16_t>; 45 : template class spu::module::Source_random<uint16_t>; 46 : template class spu::module::Source_random<int32_t>; 47 : template class spu::module::Source_random<uint32_t>; 48 : template class spu::module::Source_random<int64_t>; 49 : template class spu::module::Source_random<uint64_t>; 50 : template class spu::module::Source_random<float>; 51 : template class spu::module::Source_random<double>; 52 : // ==================================================================================== explicit template instantiation