diff --git a/Makefile.am b/Makefile.am index aba8a38d..7907e9d9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -263,7 +263,7 @@ UTIL_FILES = \ vector.ipp \ version.cpp \ version.hpp \ - view.cpp \ + view.ipp \ view.hpp if PLATFORM_LINUX diff --git a/view.hpp b/view.hpp index da7f94e2..c0e31bf3 100644 --- a/view.hpp +++ b/view.hpp @@ -48,4 +48,7 @@ namespace util { template std::ostream& operator<< (std::ostream&, view); } + +#include "./view.ipp" + #endif diff --git a/view.cpp b/view.ipp similarity index 72% rename from view.cpp rename to view.ipp index d9becbcf..9621cf2a 100644 --- a/view.cpp +++ b/view.ipp @@ -15,19 +15,19 @@ */ -#include "view.hpp" +#ifdef __UTIL_VIEW_IPP +#error +#endif +#define __UTIL_VIEW_IPP + #include "debug.hpp" -#include #include -using util::view; - - //----------------------------------------------------------------------------- template -view::view (T _begin, T _end): +util::view::view (T _begin, T _end): m_begin (_begin), m_end (_end) { ; } @@ -36,7 +36,7 @@ view::view (T _begin, T _end): //----------------------------------------------------------------------------- template T -view::begin (void) +util::view::begin (void) { return m_begin; } @@ -45,16 +45,16 @@ view::begin (void) //----------------------------------------------------------------------------- template T -view::end (void) +util::view::end (void) { return m_end; } -//----------------------------------------------------------------------------- +/////////////////////////////////////////////////////////////////////////////// template bool -view::empty (void) const +util::view::empty (void) const { return m_begin == m_end; } @@ -63,33 +63,33 @@ view::empty (void) const //----------------------------------------------------------------------------- template size_t -view::size (void) const +util::view::size (void) const { return std::distance (m_begin, m_end); } -//----------------------------------------------------------------------------- +/////////////////////////////////////////////////////////////////////////////// template -const typename view::value_type& -view::operator[] (size_t idx) const +const typename util::view::value_type& +util::view::operator[] (size_t idx) const { CHECK_LT (m_begin + idx, m_end); return m_begin[idx]; } -//----------------------------------------------------------------------------- +/////////////////////////////////////////////////////////////////////////////// template bool -view::operator== (const view rhs) const +util::view::operator== (const view rhs) const { return rhs.m_begin == m_begin && rhs.m_end == m_end; } -//----------------------------------------------------------------------------- +/////////////////////////////////////////////////////////////////////////////// template std::ostream& util::operator<< (std::ostream &os, util::view v) @@ -97,7 +97,3 @@ util::operator<< (std::ostream &os, util::view v) std::copy (v.begin (), v.end (), std::ostream_iterator (os)); return os; } - - -/////////////////////////////////////////////////////////////////////////////// -template struct util::view;