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 { \
|
#define CHECK_SANITY(A) do { \
|
||||||
DEBUG_ONLY( \
|
DEBUG_ONLY( \
|
||||||
const auto &__a = (A); \
|
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); \
|
_CHECK_PANIC("failed sanity test for %s, %!\n", #A, __a); \
|
||||||
} \
|
} \
|
||||||
); \
|
); \
|
||||||
@ -344,7 +344,14 @@ namespace util { namespace debug {
|
|||||||
|
|
||||||
|
|
||||||
template <typename T>
|
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 <
|
template <
|
||||||
@ -352,7 +359,7 @@ namespace util { namespace debug {
|
|||||||
size_t S,
|
size_t S,
|
||||||
typename ...Args
|
typename ...Args
|
||||||
>
|
>
|
||||||
struct validator {
|
struct validator<T<S,Args...>> {
|
||||||
static bool is_valid (const T<S,Args...>&);
|
static bool is_valid (const T<S,Args...>&);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -362,15 +369,15 @@ namespace util { namespace debug {
|
|||||||
size_t S,
|
size_t S,
|
||||||
typename ...Args
|
typename ...Args
|
||||||
>
|
>
|
||||||
bool valid (const T<S,Args...> &v)
|
bool is_valid (const T<S,Args...> &v)
|
||||||
{ return validator<T,S,Args...>::is_valid (v); }
|
{ return validator<T<S,Args...>>::is_valid (v); }
|
||||||
|
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void sanity (const T &t)
|
void sanity (const T &t)
|
||||||
{
|
{
|
||||||
(void)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 sanity (const T<Args...> &t)
|
||||||
{
|
{
|
||||||
(void)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 {
|
namespace util { namespace debug {
|
||||||
template <size_t S, typename T>
|
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)
|
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),
|
||||||
@ -226,11 +226,11 @@ namespace util { namespace debug {
|
|||||||
};
|
};
|
||||||
} }
|
} }
|
||||||
|
|
||||||
template bool util::debug::valid (const extent<2,float>&);
|
template bool util::debug::is_valid (const extent<2,float>&);
|
||||||
template bool util::debug::valid (const extent<2,double>&);
|
template bool util::debug::is_valid (const extent<2,double>&);
|
||||||
template bool util::debug::valid (const extent<2,uint16_t>&);
|
template bool util::debug::is_valid (const extent<2,uint16_t>&);
|
||||||
template bool util::debug::valid (const extent<2,uint32_t>&);
|
template bool util::debug::is_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,uint64_t>&);
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@ -209,7 +209,7 @@ AABB<S,T>::operator== (const AABB<S,T> rhs) const
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
namespace util { namespace debug {
|
namespace util { namespace debug {
|
||||||
template <size_t S, typename T>
|
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)
|
static bool is_valid (const AABB<S,T> &b)
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < S; ++i)
|
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) \
|
#define INSTANTIATE_S_T(S,T) \
|
||||||
namespace util { namespace geom { template struct AABB<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>);
|
template std::ostream& util::geom::operator<< (std::ostream&, AABB<S,T>);
|
||||||
|
|
||||||
#define INSTANTIATE(T) \
|
#define INSTANTIATE(T) \
|
||||||
|
@ -388,7 +388,7 @@ namespace util { namespace debug {
|
|||||||
#define INSTANTIATE_S_T(S,T) \
|
#define INSTANTIATE_S_T(S,T) \
|
||||||
template struct util::region<S,T>; \
|
template struct util::region<S,T>; \
|
||||||
template std::ostream& util::operator<< (std::ostream&, const 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) \
|
#define INSTANTIATE(T) \
|
||||||
INSTANTIATE_S_T(2,T) \
|
INSTANTIATE_S_T(2,T) \
|
||||||
|
Loading…
Reference in New Issue
Block a user