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 " << \