extent: don't fully qualify the primary object

This commit is contained in:
Danny Robson 2015-09-16 02:25:31 +10:00
parent 381da163e2
commit 4fad54f0b0

View File

@ -21,10 +21,12 @@
#include <cmath> #include <cmath>
using util::extent;
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
template <size_t S, typename T> template <size_t S, typename T>
util::extent<S,T>::extent (vector<S,T> _v) extent<S,T>::extent (vector<S,T> _v)
{ {
std::transform (std::begin (_v), std::transform (std::begin (_v),
std::end (_v), std::end (_v),
@ -40,7 +42,7 @@ util::extent<S,T>::extent (vector<S,T> _v)
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
template <size_t S, typename T> template <size_t S, typename T>
T T
util::extent<S,T>::diameter (void) const extent<S,T>::diameter (void) const
{ {
return static_cast<T> ( return static_cast<T> (
std::sqrt ( std::sqrt (
@ -56,7 +58,7 @@ util::extent<S,T>::diameter (void) const
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template <size_t S, typename T> template <size_t S, typename T>
T T
util::extent<S,T>::area (void) const extent<S,T>::area (void) const
{ {
return std::accumulate (std::begin (this->data), return std::accumulate (std::begin (this->data),
std::end (this->data), std::end (this->data),
@ -67,8 +69,8 @@ util::extent<S,T>::area (void) const
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
template <size_t S, typename T> template <size_t S, typename T>
util::extent<S,T> extent<S,T>
util::extent<S,T>::expanded (util::vector<S,T> mag) const extent<S,T>::expanded (util::vector<S,T> mag) const
{ {
return *this + mag; return *this + mag;
} }
@ -76,8 +78,8 @@ util::extent<S,T>::expanded (util::vector<S,T> mag) const
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template <size_t S, typename T> template <size_t S, typename T>
util::extent<S,T> extent<S,T>
util::extent<S,T>::expanded (T t) const extent<S,T>::expanded (T t) const
{ {
return *this + util::vector<S,T> {t}; return *this + util::vector<S,T> {t};
} }
@ -85,8 +87,8 @@ util::extent<S,T>::expanded (T t) const
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template <size_t S, typename T> template <size_t S, typename T>
util::extent<S,T> extent<S,T>
util::extent<S,T>::contracted (vector<S,T> t) const extent<S,T>::contracted (vector<S,T> t) const
{ {
return *this - t; return *this - t;
} }
@ -94,8 +96,8 @@ util::extent<S,T>::contracted (vector<S,T> t) const
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template <size_t S, typename T> template <size_t S, typename T>
util::extent<S,T> extent<S,T>
util::extent<S,T>::contracted (T t) const extent<S,T>::contracted (T t) const
{ {
return *this - vector<S,T> {-t}; return *this - vector<S,T> {-t};
} }
@ -104,7 +106,7 @@ util::extent<S,T>::contracted (T t) const
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
template <size_t S, typename T> template <size_t S, typename T>
bool bool
util::extent<S,T>::empty (void) const extent<S,T>::empty (void) const
{ {
return almost_equal (area(), 0); return almost_equal (area(), 0);
} }
@ -112,12 +114,12 @@ util::extent<S,T>::empty (void) const
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
template <size_t S, typename T> template <size_t S, typename T>
const util::extent<S,T> util::extent<S,T>::MIN { 0 }; const extent<S,T> extent<S,T>::MIN { 0 };
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template <size_t S, typename T> template <size_t S, typename T>
const util::extent<S,T> util::extent<S,T>::MAX { const extent<S,T> extent<S,T>::MAX {
std::numeric_limits<T>::max () std::numeric_limits<T>::max ()
}; };
@ -125,8 +127,8 @@ const util::extent<S,T> util::extent<S,T>::MAX {
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
namespace debug { namespace debug {
template <size_t S, typename T> template <size_t S, typename T>
struct validator<util::extent,S,T> { struct validator<extent,S,T> {
static bool is_valid (const util::extent<S,T> &e) static bool is_valid (const extent<S,T> &e)
{ {
return std::all_of (std::begin (e.data), return std::all_of (std::begin (e.data),
std::end (e.data), std::end (e.data),
@ -135,17 +137,17 @@ namespace debug {
}; };
} }
template bool debug::valid (const util::extent<2,float>&); template bool debug::valid (const extent<2,float>&);
template bool debug::valid (const util::extent<2,double>&); template bool debug::valid (const extent<2,double>&);
template bool debug::valid (const util::extent<2,uint16_t>&); template bool debug::valid (const extent<2,uint16_t>&);
template bool debug::valid (const util::extent<2,uint32_t>&); template bool debug::valid (const extent<2,uint32_t>&);
template bool debug::valid (const util::extent<2,uint64_t>&); template bool debug::valid (const extent<2,uint64_t>&);
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
template <size_t S, typename T> template <size_t S, typename T>
std::ostream& std::ostream&
util::operator<< (std::ostream &os, util::extent<S,T> e) util::operator<< (std::ostream &os, extent<S,T> e)
{ {
os << "["; os << "[";
std::copy (std::begin (e.data), std::copy (std::begin (e.data),