base: Add CHECK_IMPLIES and DCHECK_IMPLIES.
This patch adds convenience defines for implies relationship.
a implies b is equivalent to !a || b.
This allows things like the following:
CHECK_IMPLIES(ptr, ptr->is_good);
instead of the more cumbersome:
CHECK(!ptr || ptr->is_good).
Review URL: https://codereview.chromium.org/576073007
Cr-Commit-Position: refs/heads/master@{#297941}
CrOS-Libchrome-Original-Commit: 0456d13053908dc3929035e4abf8799c6e9627a5
diff --git a/base/logging.h b/base/logging.h
index 4661f0f..1ca4f46 100644
--- a/base/logging.h
+++ b/base/logging.h
@@ -532,6 +532,7 @@
#define CHECK_LT(val1, val2) CHECK_OP(LT, < , val1, val2)
#define CHECK_GE(val1, val2) CHECK_OP(GE, >=, val1, val2)
#define CHECK_GT(val1, val2) CHECK_OP(GT, > , val1, val2)
+#define CHECK_IMPLIES(val1, val2) CHECK(!(val1) || (val2))
#if defined(NDEBUG)
#define ENABLE_DLOG 0
@@ -662,6 +663,7 @@
#define DCHECK_LT(val1, val2) DCHECK_OP(LT, < , val1, val2)
#define DCHECK_GE(val1, val2) DCHECK_OP(GE, >=, val1, val2)
#define DCHECK_GT(val1, val2) DCHECK_OP(GT, > , val1, val2)
+#define DCHECK_IMPLIES(val1, val2) DCHECK(!(val1) || (val2))
#if defined(NDEBUG) && defined(OS_CHROMEOS)
#define NOTREACHED() LOG(ERROR) << "NOTREACHED() hit in " << \