LCOV - code coverage report
Current view: top level - include/Module/Stateful/Source - Source.hpp (source / functions) Hit Total Coverage
Test: streampu_clean.info Lines: 1 1 100.0 %
Date: 2025-01-11 12:25:42 Functions: 1 20 5.0 %

          Line data    Source code
       1             : /*!
       2             :  * \file
       3             :  * \brief Class module::Source.
       4             :  */
       5             : #ifndef SOURCE_HPP_
       6             : #define SOURCE_HPP_
       7             : 
       8             : #include <cstdint>
       9             : #include <memory>
      10             : #include <vector>
      11             : 
      12             : #include "Module/Stateful/Stateful.hpp"
      13             : #include "Runtime/Socket/Socket.hpp"
      14             : #include "Runtime/Task/Task.hpp"
      15             : #include "Tools/Interface/Interface_is_done.hpp"
      16             : #include "Tools/Interface/Interface_reset.hpp"
      17             : #include "Tools/Interface/Interface_set_seed.hpp"
      18             : 
      19             : namespace spu
      20             : {
      21             : namespace module
      22             : {
      23             : namespace src
      24             : {
      25             : enum class tsk : size_t
      26             : {
      27             :     generate,
      28             :     SIZE
      29             : };
      30             : 
      31             : namespace sck
      32             : {
      33             : enum class generate : size_t
      34             : {
      35             :     out_data,
      36             :     out_count,
      37             :     status
      38             : };
      39             : }
      40             : }
      41             : 
      42             : template<typename B = int>
      43             : class Source
      44             :   : public Stateful
      45             :   , public tools::Interface_set_seed
      46             :   , public tools::Interface_is_done
      47             :   , public tools::Interface_reset
      48             : {
      49             :   public:
      50             :     inline runtime::Task& operator[](const src::tsk t);
      51             :     inline runtime::Socket& operator[](const src::sck::generate s);
      52             :     inline runtime::Socket& operator[](const std::string& tsk_sck);
      53             : 
      54             :   protected:
      55             :     const int max_data_size;
      56             : 
      57             :   public:
      58             :     Source(const int max_data_size);
      59             : 
      60          18 :     virtual ~Source() = default;
      61             : 
      62             :     virtual Source<B>* clone() const;
      63             : 
      64             :     virtual int get_max_data_size() const;
      65             : 
      66             :     template<class A = std::allocator<B>>
      67             :     void generate(std::vector<B, A>& out_data, const int frame_id = -1, const bool managed_memory = true);
      68             : 
      69             :     void generate(B* out_data, const int frame_id = -1, const bool managed_memory = true);
      70             : 
      71             :     template<class A = std::allocator<B>>
      72             :     void generate(std::vector<B, A>& out_data,
      73             :                   std::vector<uint32_t>& out_count,
      74             :                   const int frame_id = -1,
      75             :                   const bool managed_memory = true);
      76             : 
      77             :     void generate(B* out_data, uint32_t* out_count, const int frame_id = -1, const bool managed_memory = true);
      78             : 
      79             :     virtual void set_seed(const int seed);
      80             : 
      81             :     virtual bool is_done() const;
      82             : 
      83             :     virtual void reset();
      84             : 
      85             :   protected:
      86             :     virtual void _generate(B* out_data, const size_t frame_id);
      87             :     virtual void _generate(B* out_data, uint32_t* out_count, const size_t frame_id);
      88             : };
      89             : }
      90             : }
      91             : 
      92             : #ifndef DOXYGEN_SHOULD_SKIP_THIS
      93             : #include "Module/Stateful/Source/Source.hxx"
      94             : #endif
      95             : 
      96             : #endif /* SOURCE_HPP_ */

Generated by: LCOV version 1.14