Line data Source code
1 : /*! 2 : * \file 3 : * \brief Class module::Set. 4 : */ 5 : #ifndef SET_HPP_ 6 : #define SET_HPP_ 7 : 8 : #include <cstddef> 9 : #include <memory> 10 : 11 : #include "Module/Stateful/Stateful.hpp" 12 : 13 : namespace spu 14 : { 15 : namespace runtime 16 : { 17 : class Sequence; 18 : } 19 : namespace module 20 : { 21 : namespace set 22 : { 23 : enum class tsk : size_t 24 : { 25 : exec, 26 : SIZE 27 : }; 28 : } 29 : 30 : class Set : public Stateful 31 : { 32 : std::shared_ptr<runtime::Sequence> sequence_cloned; 33 : runtime::Sequence* sequence_extern; 34 : 35 : public: 36 : inline runtime::Task& operator[](const set::tsk t); 37 : 38 : explicit Set(const runtime::Sequence& sequence); 39 : explicit Set(runtime::Sequence& sequence); 40 98 : virtual ~Set() = default; 41 : 42 : virtual void init(); 43 : 44 : virtual Set* clone() const; 45 : 46 : runtime::Sequence& get_sequence(); 47 : 48 : virtual void set_n_frames(const size_t n_frames); 49 : 50 : protected: 51 : void deep_copy(const Set& m); 52 : }; 53 : } 54 : } 55 : 56 : #ifndef DOXYGEN_SHOULD_SKIP_THIS 57 : #include "Module/Stateful/Set/Set.hxx" 58 : #endif 59 : 60 : #endif /* SET_HPP_ */