#ifndef OSTREAM_HELPERS_HPP
#define OSTREAM_HELPERS_HPP

#include <iterator>
#include <algorithm>

#include "AttractorKernel.hpp"
#include "Attractor.hpp"

std::ostream& operator<<(std::ostream& os, AttractorKernel const&  x) {
	const unsigned int dimension = x.getDimension();
	const double* point = x.vector();

	std::copy(point, point+dimension, std::ostream_iterator<double>(os, ", "));
	return os;
}

std::ostream& operator<<(std::ostream& os, Attractor const&  x) {
	os << x.kernel << "\n";
	os << x.projector << "\n";
	return os;
}

#endif // OSTREAM_HELPERS_HPP