OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. |
3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 19 matching lines...) Expand all Loading... |
30 // This file uses some GCC extensions, but it should be compatible with C++ and | 30 // This file uses some GCC extensions, but it should be compatible with C++ and |
31 // Objective C++. | 31 // Objective C++. |
32 // | 32 // |
33 // For non-debug builds, everything is disabled by default, except for the | 33 // For non-debug builds, everything is disabled by default, except for the |
34 // RELEASE_ASSERT family of macros. | 34 // RELEASE_ASSERT family of macros. |
35 | 35 |
36 #include <stdarg.h> | 36 #include <stdarg.h> |
37 #include "base/allocator/partition_allocator/oom.h" | 37 #include "base/allocator/partition_allocator/oom.h" |
38 #include "base/gtest_prod_util.h" | 38 #include "base/gtest_prod_util.h" |
39 #include "base/logging.h" | 39 #include "base/logging.h" |
40 #include "wtf/Compiler.h" | 40 #include "platform/wtf/Compiler.h" |
41 #include "wtf/Noncopyable.h" | 41 #include "platform/wtf/Noncopyable.h" |
42 #include "wtf/WTFExport.h" | 42 #include "platform/wtf/WTFExport.h" |
43 #include "wtf/build_config.h" | 43 #include "platform/wtf/build_config.h" |
44 | 44 |
45 #if OS(WIN) | 45 #if OS(WIN) |
46 #include <windows.h> | 46 #include <windows.h> |
47 #endif | 47 #endif |
48 | 48 |
49 #ifndef LOG_DISABLED | 49 #ifndef LOG_DISABLED |
50 #define LOG_DISABLED !DCHECK_IS_ON() | 50 #define LOG_DISABLED !DCHECK_IS_ON() |
51 #endif | 51 #endif |
52 | 52 |
53 // WTFLogAlways() is deprecated. crbug.com/638849 | 53 // WTFLogAlways() is deprecated. crbug.com/638849 |
54 WTF_EXPORT PRINTF_FORMAT(1, 2) void WTFLogAlways(const char* format, ...); | 54 WTF_EXPORT PRINTF_FORMAT(1, 2) // NOLINT |
| 55 void WTFLogAlways(const char* format, ...); |
55 | 56 |
56 namespace WTF { | 57 namespace WTF { |
57 | 58 |
58 #if LOG_DISABLED | 59 #if LOG_DISABLED |
59 | 60 |
60 #define WTF_CREATE_SCOPED_LOGGER(...) ((void)0) | 61 #define WTF_CREATE_SCOPED_LOGGER(...) ((void)0) |
61 #define WTF_CREATE_SCOPED_LOGGER_IF(...) ((void)0) | 62 #define WTF_CREATE_SCOPED_LOGGER_IF(...) ((void)0) |
62 #define WTF_APPEND_SCOPED_LOGGER(...) ((void)0) | 63 #define WTF_APPEND_SCOPED_LOGGER(...) ((void)0) |
63 | 64 |
64 #else | 65 #else |
(...skipping 12 matching lines...) Expand all Loading... |
77 // The first message is passed to the constructor. Additional messages for | 78 // The first message is passed to the constructor. Additional messages for |
78 // the same scope can be added with log(). If condition is false, produce no | 79 // the same scope can be added with log(). If condition is false, produce no |
79 // output and do not create a scope. | 80 // output and do not create a scope. |
80 PRINTF_FORMAT(3, 4) ScopedLogger(bool condition, const char* format, ...); | 81 PRINTF_FORMAT(3, 4) ScopedLogger(bool condition, const char* format, ...); |
81 ~ScopedLogger(); | 82 ~ScopedLogger(); |
82 PRINTF_FORMAT(2, 3) void log(const char* format, ...); | 83 PRINTF_FORMAT(2, 3) void log(const char* format, ...); |
83 | 84 |
84 private: | 85 private: |
85 FRIEND_TEST_ALL_PREFIXES(AssertionsTest, ScopedLogger); | 86 FRIEND_TEST_ALL_PREFIXES(AssertionsTest, ScopedLogger); |
86 using PrintFunctionPtr = void (*)(const char* format, va_list args); | 87 using PrintFunctionPtr = void (*)(const char* format, va_list args); |
87 static void setPrintFuncForTests(PrintFunctionPtr p) { | 88 |
88 m_printFunc = p; | 89 // Note: not thread safe. |
89 } // Note: not thread safe. | 90 static void setPrintFuncForTests(PrintFunctionPtr); |
90 | 91 |
91 void init(const char* format, va_list args); | 92 void init(const char* format, va_list args); |
92 void writeNewlineIfNeeded(); | 93 void writeNewlineIfNeeded(); |
93 void indent(); | 94 void indent(); |
94 void print(const char* format, ...); | 95 void print(const char* format, ...); |
95 void printIndent(); | 96 void printIndent(); |
96 static ScopedLogger*& current(); | 97 static ScopedLogger*& current(); |
97 | 98 |
98 ScopedLogger* const m_parent; | 99 ScopedLogger* const m_parent; |
99 bool m_multiline; // The ')' will go on the same line if there is only one | 100 bool m_multiline; // The ')' will go on the same line if there is only one |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
249 return static_cast<thisType&>(argument); \ | 250 return static_cast<thisType&>(argument); \ |
250 } \ | 251 } \ |
251 inline const thisType& to##thisType##OrDie(const argumentType& argument) { \ | 252 inline const thisType& to##thisType##OrDie(const argumentType& argument) { \ |
252 CHECK(referencePredicate); \ | 253 CHECK(referencePredicate); \ |
253 return static_cast<const thisType&>(argument); \ | 254 return static_cast<const thisType&>(argument); \ |
254 } \ | 255 } \ |
255 void to##thisType##OrDie(const thisType*); \ | 256 void to##thisType##OrDie(const thisType*); \ |
256 void to##thisType##OrDie(const thisType&) | 257 void to##thisType##OrDie(const thisType&) |
257 | 258 |
258 #endif // WTF_Assertions_h | 259 #endif // WTF_Assertions_h |
OLD | NEW |