#ifndef __RADIO_BLOCK_H__
#define __RADIO_BLOCK_H__

#include <forward_list>
#include "Buffer.hpp"


class Block
{

	public:
	enum DType
	{
		None,
		Float,
		Double
	};
	
	Block(size_t num_in, size_t num_out)
	: m_num_in(num_in)
	, m_num_out(num_out)
	, m_buf_out(nullptr)
	{

	}
	virtual ~Block() = default;
	
	virtual void process() = 0;

	size_t num_in()
	{
		return m_num_in;
	}

	size_t num_out()
	{
  		return m_num_out;
	}
	
	void addBuffer(IBuffer *out)
	{
		m_buf_out = out;
	}

	virtual IBuffer* buffer()
	{
		return nullptr;
	}
	
	private:
	size_t m_num_in;
	size_t m_num_out;

	protected:
	IBuffer* m_buf_out;

};

#endif // __RADIO_BLOCK_H__

