diff options
Diffstat (limited to 'rlz/lib/assert.h')
-rw-r--r-- | rlz/lib/assert.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/rlz/lib/assert.h b/rlz/lib/assert.h new file mode 100644 index 0000000..89e94e0 --- /dev/null +++ b/rlz/lib/assert.h @@ -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_ |