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

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

Generated by: LCOV version 1.14