Line data Source code
1 : /*! 2 : * \file 3 : * \brief Class module::Initializer. 4 : */ 5 : #ifndef INITIALIZER_HPP_ 6 : #define INITIALIZER_HPP_ 7 : 8 : #include <cstdint> 9 : 10 : #include "Module/Stateful/Stateful.hpp" 11 : 12 : namespace spu 13 : { 14 : namespace module 15 : { 16 : namespace ini 17 : { 18 : enum class tsk : size_t 19 : { 20 : initialize, 21 : SIZE 22 : }; 23 : 24 : namespace sck 25 : { 26 : enum class initialize : size_t 27 : { 28 : out, 29 : status 30 : }; 31 : } 32 : } 33 : 34 : template<typename T = int> 35 : class Initializer : public Stateful 36 : { 37 : public: 38 : inline runtime::Task& operator[](const ini::tsk t); 39 : inline runtime::Socket& operator[](const ini::sck::initialize s); 40 : inline runtime::Socket& operator[](const std::string& tsk_sck); 41 : 42 : protected: 43 : std::vector<std::vector<T>> init_data; 44 : 45 : public: 46 : Initializer(const size_t n_elmts); 47 144 : virtual ~Initializer() = default; 48 : virtual Initializer* clone() const; 49 : 50 : const std::vector<std::vector<T>>& get_init_data() const; 51 : 52 : void set_init_data(const std::vector<T>& init_data); 53 : void set_init_data(const std::vector<std::vector<T>>& init_data); 54 : void set_init_data(const T val); 55 : void set_n_frames(const size_t n_frames); 56 : 57 : template<class A = std::allocator<T>> 58 : void initialize(std::vector<T, A>& out, const int frame_id = -1, const bool managed_memory = true); 59 : 60 : void initialize(T* out, const int frame_id = -1, const bool managed_memory = true); 61 : 62 : protected: 63 : virtual void _initialize(T* out, const size_t frame_id); 64 : }; 65 : } 66 : } 67 : 68 : #ifndef DOXYGEN_SHOULD_SKIP_THIS 69 : #include "Module/Stateful/Initializer/Initializer.hxx" 70 : #endif 71 : 72 : #endif /* INITIALIZER_HPP_ */