debug: use less complex specialistion for validator
This commit is contained in:
parent
8f8896b0f6
commit
00eca4445b
21
debug.hpp
21
debug.hpp
@ -77,7 +77,7 @@
|
||||
#define CHECK_SANITY(A) do { \
|
||||
DEBUG_ONLY( \
|
||||
const auto &__a = (A); \
|
||||
if (!util::debug::valid (__a)) { \
|
||||
if (!util::debug::is_valid (__a)) { \
|
||||
_CHECK_PANIC("failed sanity test for %s, %!\n", #A, __a); \
|
||||
} \
|
||||
); \
|
||||
@ -344,7 +344,14 @@ namespace util { namespace debug {
|
||||
|
||||
|
||||
template <typename T>
|
||||
bool valid (const T&);
|
||||
struct validator {
|
||||
static bool is_valid (const T&);
|
||||
};
|
||||
|
||||
|
||||
template <typename T>
|
||||
bool is_valid (const T &t)
|
||||
{ return validator<T>::is_valid (t); }
|
||||
|
||||
|
||||
template <
|
||||
@ -352,7 +359,7 @@ namespace util { namespace debug {
|
||||
size_t S,
|
||||
typename ...Args
|
||||
>
|
||||
struct validator {
|
||||
struct validator<T<S,Args...>> {
|
||||
static bool is_valid (const T<S,Args...>&);
|
||||
};
|
||||
|
||||
@ -362,15 +369,15 @@ namespace util { namespace debug {
|
||||
size_t S,
|
||||
typename ...Args
|
||||
>
|
||||
bool valid (const T<S,Args...> &v)
|
||||
{ return validator<T,S,Args...>::is_valid (v); }
|
||||
bool is_valid (const T<S,Args...> &v)
|
||||
{ return validator<T<S,Args...>>::is_valid (v); }
|
||||
|
||||
|
||||
template <typename T>
|
||||
void sanity (const T &t)
|
||||
{
|
||||
(void)t;
|
||||
CHECK (valid (t));
|
||||
CHECK (is_valid (t));
|
||||
}
|
||||
|
||||
|
||||
@ -381,7 +388,7 @@ namespace util { namespace debug {
|
||||
void sanity (const T<Args...> &t)
|
||||
{
|
||||
(void)t;
|
||||
CHECK (valid (t));
|
||||
CHECK (is_valid (t));
|
||||
}
|
||||
} }
|
||||
|
||||
|
12
extent.cpp
12
extent.cpp
@ -216,7 +216,7 @@ extent_range<S,T>::iterator::operator!= (const iterator &rhs) const
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
namespace util { namespace debug {
|
||||
template <size_t S, typename T>
|
||||
struct validator<extent,S,T> {
|
||||
struct validator<extent<S,T>> {
|
||||
static bool is_valid (const extent<S,T> &e)
|
||||
{
|
||||
return std::all_of (std::begin (e.data),
|
||||
@ -226,11 +226,11 @@ namespace util { namespace debug {
|
||||
};
|
||||
} }
|
||||
|
||||
template bool util::debug::valid (const extent<2,float>&);
|
||||
template bool util::debug::valid (const extent<2,double>&);
|
||||
template bool util::debug::valid (const extent<2,uint16_t>&);
|
||||
template bool util::debug::valid (const extent<2,uint32_t>&);
|
||||
template bool util::debug::valid (const extent<2,uint64_t>&);
|
||||
template bool util::debug::is_valid (const extent<2,float>&);
|
||||
template bool util::debug::is_valid (const extent<2,double>&);
|
||||
template bool util::debug::is_valid (const extent<2,uint16_t>&);
|
||||
template bool util::debug::is_valid (const extent<2,uint32_t>&);
|
||||
template bool util::debug::is_valid (const extent<2,uint64_t>&);
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -209,7 +209,7 @@ AABB<S,T>::operator== (const AABB<S,T> rhs) const
|
||||
//-----------------------------------------------------------------------------
|
||||
namespace util { namespace debug {
|
||||
template <size_t S, typename T>
|
||||
struct validator<AABB,S,T> {
|
||||
struct validator<AABB<S,T>> {
|
||||
static bool is_valid (const AABB<S,T> &b)
|
||||
{
|
||||
for (size_t i = 0; i < S; ++i)
|
||||
@ -235,7 +235,7 @@ util::geom::operator<< (std::ostream &os, util::geom::AABB<S,T> b)
|
||||
//-----------------------------------------------------------------------------
|
||||
#define INSTANTIATE_S_T(S,T) \
|
||||
namespace util { namespace geom { template struct AABB<S,T>; } } \
|
||||
template bool util::debug::valid (const AABB<S,T>&); \
|
||||
template bool util::debug::is_valid (const AABB<S,T>&); \
|
||||
template std::ostream& util::geom::operator<< (std::ostream&, AABB<S,T>);
|
||||
|
||||
#define INSTANTIATE(T) \
|
||||
|
@ -388,7 +388,7 @@ namespace util { namespace debug {
|
||||
#define INSTANTIATE_S_T(S,T) \
|
||||
template struct util::region<S,T>; \
|
||||
template std::ostream& util::operator<< (std::ostream&, const region<S,T>&); \
|
||||
template struct util::debug::validator<util::region,S,T>;
|
||||
template struct util::debug::validator<util::region<S,T>>;
|
||||
|
||||
#define INSTANTIATE(T) \
|
||||
INSTANTIATE_S_T(2,T) \
|
||||
|
Loading…
Reference in New Issue
Block a user