Index: rlz/lib/assert.h |
=================================================================== |
--- rlz/lib/assert.h (revision 0) |
+++ rlz/lib/assert.h (revision 0) |
@@ -0,0 +1,53 @@ |
+// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+// |
+// Macros specific to the RLZ library. |
+ |
+#ifndef RLZ_LIB_ASSERT_H_ |
+#define RLZ_LIB_ASSERT_H_ |
+ |
+#include <string> |
+#include "base/logging.h" |
+ |
+// An assertion macro. |
+// Can mute expected assertions in debug mode. |
+ |
+#ifndef ASSERT_STRING |
+ #ifndef MUTE_EXPECTED_ASSERTS |
+ #define ASSERT_STRING(expr) LOG_IF(FATAL, false) << (expr) |
+ #else |
+ #define ASSERT_STRING(expr) \ |
+ do { \ |
+ std::string expr_string(expr); \ |
+ if (rlz_lib::expected_assertion_ != expr_string) { \ |
+ LOG_IF(FATAL, false) << (expr); \ |
+ } \ |
+ } while (0) |
+ #endif |
+#endif |
+ |
+ |
+#ifndef VERIFY |
+ #ifdef _DEBUG |
+ #define VERIFY(expr) LOG_IF(FATAL, !(expr)) << #expr |
+ #else |
+ #define VERIFY(expr) (void)(expr) |
+ #endif |
+#endif |
+ |
+namespace rlz_lib { |
+ |
+#ifdef MUTE_EXPECTED_ASSERTS |
+extern std::string expected_assertion_; |
+#endif |
+ |
+inline void SetExpectedAssertion(const char* s) { |
+#ifdef MUTE_EXPECTED_ASSERTS |
+ expected_assertion_ = s; |
+#endif |
+} |
+ |
+} // rlz_lib |
+ |
+#endif // RLZ_LIB_ASSERT_H_ |