region: remove extent_t/point_t distinction

it's too problematic to retain signedness distinctions between base
points and region extents. just use the same types, but retain the
named typedefs for compatibility.
This commit is contained in:
Danny Robson 2016-10-25 17:47:30 +11:00
parent ec78216813
commit 9546526c1f
3 changed files with 12 additions and 15 deletions

View File

@ -63,7 +63,7 @@ util::region<S,T>::region (std::array<T,S*2> args)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template <size_t S, typename T> template <size_t S, typename T>
typename util::region<S,T>::size_type T
util::region<S,T>::area (void) const util::region<S,T>::area (void) const
{ {
return e.area (); return e.area ();
@ -72,7 +72,7 @@ util::region<S,T>::area (void) const
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template <size_t S, typename T> template <size_t S, typename T>
typename util::region<S,T>::size_type T
util::region<S,T>::diameter (void) const util::region<S,T>::diameter (void) const
{ {
return e.diameter (); return e.diameter ();
@ -101,7 +101,7 @@ util::region<S,T>::magnitude (extent_t _e)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
template <size_t S, typename T> template <size_t S, typename T>
void void
util::region<S,T>::scale (size_type factor) util::region<S,T>::scale (T factor)
{ {
auto o = (e * factor - e) / T(2); auto o = (e * factor - e) / T(2);
p -= o; p -= o;
@ -371,8 +371,8 @@ namespace util { namespace debug {
struct validator<util::region<S,T>> { struct validator<util::region<S,T>> {
static bool is_valid (const util::region<S,T> &r) static bool is_valid (const util::region<S,T> &r)
{ {
CHECK_GE (r.area (), 0u); CHECK_GE (r.area (), T{0});
CHECK_GE (min (r.e), 0u); CHECK_GE (min (r.e), T{0});
return r.area () >= 0 && min (r.e) >= 0; return r.area () >= 0 && min (r.e) >= 0;
} }

View File

@ -31,11 +31,8 @@ namespace util {
*/ */
template <size_t S, typename T> template <size_t S, typename T>
struct region { struct region {
using position_type = T; using extent_t = util::extent<S,T>;
using size_type = typename try_unsigned<T>::type; using point_t = util::point<S,T>;
using extent_t = util::extent<S,size_type>;
using point_t = util::point<S,position_type>;
using value_type = T; using value_type = T;
@ -66,12 +63,12 @@ namespace util {
constexpr region<S,U> cast (void) const; constexpr region<S,U> cast (void) const;
//--------------------------------------------------------------------- //---------------------------------------------------------------------
size_type area (void) const; T area (void) const;
size_type diameter (void) const; T diameter (void) const;
extent_t magnitude (void) const; extent_t magnitude (void) const;
extent_t magnitude (extent_t); extent_t magnitude (extent_t);
void scale (size_type factor); void scale (T factor);
bool empty (void) const; bool empty (void) const;

View File

@ -26,8 +26,8 @@ namespace util {
region<S,T>::cast (void) const region<S,T>::cast (void) const
{ {
return { return {
p.template cast<typename region<S,U>::position_type> (), p.template cast<U> (),
e.template cast<typename region<S,U>::size_type> () e.template cast<U> ()
}; };
} }
} }