Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / rlz / lib / assert.h
blob89e94e08d4be2cdd0aebf99ca61e0dc9d94e46a7
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 //
5 // Macros specific to the RLZ library.
7 #ifndef RLZ_LIB_ASSERT_H_
8 #define RLZ_LIB_ASSERT_H_
10 #include <string>
11 #include "base/logging.h"
13 // An assertion macro.
14 // Can mute expected assertions in debug mode.
16 #ifndef ASSERT_STRING
17 #ifndef MUTE_EXPECTED_ASSERTS
18 #define ASSERT_STRING(expr) LOG_IF(FATAL, false) << (expr)
19 #else
20 #define ASSERT_STRING(expr) \
21 do { \
22 std::string expr_string(expr); \
23 if (rlz_lib::expected_assertion_ != expr_string) { \
24 LOG_IF(FATAL, false) << (expr); \
25 } \
26 } while (0)
27 #endif
28 #endif
31 #ifndef VERIFY
32 #ifdef _DEBUG
33 #define VERIFY(expr) LOG_IF(FATAL, !(expr)) << #expr
34 #else
35 #define VERIFY(expr) (void)(expr)
36 #endif
37 #endif
39 namespace rlz_lib {
41 #ifdef MUTE_EXPECTED_ASSERTS
42 extern std::string expected_assertion_;
43 #endif
45 inline void SetExpectedAssertion(const char* s) {
46 #ifdef MUTE_EXPECTED_ASSERTS
47 expected_assertion_ = s;
48 #endif
51 } // rlz_lib
53 #endif // RLZ_LIB_ASSERT_H_