LCOV - code coverage report
Current view: top level - include/Module/Finalizer - Finalizer.hpp (source / functions) Hit Total Coverage
Test: streampu_clean.info Lines: 1 1 100.0 %
Date: 2024-06-12 12:04:18 Functions: 4 20 20.0 %

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

Generated by: LCOV version 1.14