vector: add validator specialisation
This commit is contained in:
parent
4c5bc46ad9
commit
52fcb847c9
15
vector.cpp
15
vector.cpp
@ -86,13 +86,17 @@ template util::vector2d util::to_euler (util::vector3d);
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
template <size_t S, typename T>
|
template <size_t S, typename T>
|
||||||
void
|
struct util::debug::validator<vector<S,T>> {
|
||||||
util::vector<S,T>::sanity (void) const
|
static bool
|
||||||
|
is_valid (vector<S,T> const& val)
|
||||||
{
|
{
|
||||||
CHECK (std::all_of (std::begin (this->data),
|
return std::all_of (
|
||||||
std::end (this->data),
|
std::begin (val.data),
|
||||||
[] (T i) { return !std::isnan (i); }));
|
std::end (val.data),
|
||||||
|
[] (auto v) { return !std::isnan (v); }
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
@ -117,6 +121,7 @@ util::operator>> (const json::tree::node &node, util::vector<S,T> &v)
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
#define INSTANTIATE_S_T(S,T) \
|
#define INSTANTIATE_S_T(S,T) \
|
||||||
template struct util::vector<S,T>; \
|
template struct util::vector<S,T>; \
|
||||||
|
template struct util::debug::validator<vector<S,T>>; \
|
||||||
template const json::tree::node& util::operator>> (const json::tree::node&, util::vector<S,T>&);
|
template const json::tree::node& util::operator>> (const json::tree::node&, util::vector<S,T>&);
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,8 +56,6 @@ namespace util {
|
|||||||
// constants
|
// constants
|
||||||
static constexpr vector<S,T> ones (void) { return vector<S,T> {1}; }
|
static constexpr vector<S,T> ones (void) { return vector<S,T> {1}; }
|
||||||
static constexpr vector<S,T> zeros (void) { return vector<S,T> {0}; }
|
static constexpr vector<S,T> zeros (void) { return vector<S,T> {0}; }
|
||||||
|
|
||||||
void sanity (void) const;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
Loading…
Reference in New Issue
Block a user