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