From d63457c5676a01ae81335173be743aa712dfc946 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Thu, 22 Jan 2015 14:56:19 +1100 Subject: [PATCH] bezier: add ostream operator --- bezier.cpp | 23 ++++++++++++++++++++--- bezier.hpp | 5 +++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/bezier.cpp b/bezier.cpp index a367171f..5eb647f8 100644 --- a/bezier.cpp +++ b/bezier.cpp @@ -270,6 +270,23 @@ util::bezier::operator[] (size_t idx) const //----------------------------------------------------------------------------- -template class util::bezier<2>; -template class util::bezier<3>; -template class util::bezier<4>; +template +std::ostream& +util::operator<< (std::ostream &os, const bezier &b) +{ + os << b[0]; + for (size_t i = 1; i < S+1; ++i) + os << ", " << b[i]; + + return os; +} + + +//----------------------------------------------------------------------------- +#define INSTANTIATE(S) \ +template class util::bezier; \ +template std::ostream& util::operator<< (std::ostream&, const bezier&); + +INSTANTIATE(1) +INSTANTIATE(2) +INSTANTIATE(3) diff --git a/bezier.hpp b/bezier.hpp index a74baad3..16a3029d 100644 --- a/bezier.hpp +++ b/bezier.hpp @@ -22,6 +22,8 @@ #include "point.hpp" +#include + namespace util { template class bezier { @@ -37,6 +39,9 @@ namespace util { private: point2f m_points[S+1]; }; + + template + std::ostream& operator<< (std::ostream&, const bezier&); } #endif