#include "raw_data.hpp"

namespace hr::plugins
{
  // Этот плагин ни чего не делает и предназначен при сохранении единственности интерфейса просто 
  // передавать сырые необработанные данные. Например дял отрисовки базового сигнала.
  // Он не работает в частотной области
  raw_data::raw_data(const setup& st) : plugin{ st } 
  { 
    if (st.m_domain != DOMAIN_PLUGIN::TIME)
      hack::error()("Этот плагин работает только во временной области!");
  }

  void raw_data::process(fvec_t& base, real_time timestamp)
  {
    result::bit b;
    b.m_value = base;
    b.m_duration = timestamp;
    m_tmp.set_bit(b);
    m_size += base.size();
  }

  void raw_data::process(cvec_t& fft, fvec_t& base, real_time timestamp)
  {
  }

  result raw_data::get_result()
  {
    if (m_tmp.m_data.empty())
      return m_result;

    m_result.m_data.reserve(m_size);

    std::size_t index = 0;
    for (auto& t : m_tmp.m_data)
    {
      for (auto s : t.m_value)
      {
        result::bit b;
        b.m_value.push_back(s);
        b.m_duration = t.m_duration;
        m_result.set_bit(b);
      }
    }

    return m_result;     
  }
}
