#ifndef RUY_RUY_CHECK_MACROS_H_
#define RUY_RUY_CHECK_MACROS_H_
#include <cstdio>
#include <cstdlib>
#include <functional>
#include <type_traits>
namespace ruy {
namespace check_macros {
constexpr int kValueBufSize = …;
template <typename T, typename Enable = void>
struct ToString { … };
template <>
struct ToString<float, void> { … };
template <>
struct ToString<double, void> { … };
ToString<T, typename std::enable_if<std::is_integral<T>::value>::type>;
ToString<T *, void>;
ToString<T, typename std::enable_if<std::is_enum<T>::value>::type>;
inline void CheckImpl(bool condition, const char* file, int line,
const char* macro, const char* condition_str) { … }
template <template <typename T> class Comparison, typename LhsType,
typename RhsType>
inline void CheckImpl(const char* file, int line, const char* macro,
const char* lhs, const LhsType& lhs_value,
const char* op_symbol, const char* rhs,
const RhsType& rhs_value) { … }
#define RUY_CHECK_IMPL(macro, condition) …
#define RUY_CHECK_OP_IMPL(macro, lhs, op_symbol, op_comparison, rhs) …
#define RUY_CHECK(condition) …
#define RUY_CHECK_EQ(x, y) …
#define RUY_CHECK_NE(x, y) …
#define RUY_CHECK_GE(x, y) …
#define RUY_CHECK_GT(x, y) …
#define RUY_CHECK_LE(x, y) …
#define RUY_CHECK_LT(x, y) …
#ifdef NDEBUG
#define RUY_DCHECK_IS_ENABLED …
#else
#define RUY_DCHECK_IS_ENABLED …
#endif
#define RUY_DCHECK(condition) …
#define RUY_DCHECK_EQ(x, y) …
#define RUY_DCHECK_NE(x, y) …
#define RUY_DCHECK_GE(x, y) …
#define RUY_DCHECK_GT(x, y) …
#define RUY_DCHECK_LE(x, y) …
#define RUY_DCHECK_LT(x, y) …
}
}
#endif