Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef BASE_LOGGING_H_ | 5 #ifndef BASE_LOGGING_H_ |
| 6 #define BASE_LOGGING_H_ | 6 #define BASE_LOGGING_H_ |
| 7 | 7 |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 | 9 |
| 10 #include <cassert> | 10 #include <cassert> |
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 520 ; \ | 520 ; \ |
| 521 else \ | 521 else \ |
| 522 ::logging::LogMessage(__FILE__, __LINE__, true_if_passed.message()).stream() | 522 ::logging::LogMessage(__FILE__, __LINE__, true_if_passed.message()).stream() |
| 523 | 523 |
| 524 #endif // !(OFFICIAL_BUILD && NDEBUG) | 524 #endif // !(OFFICIAL_BUILD && NDEBUG) |
| 525 | 525 |
| 526 // This formats a value for a failing CHECK_XX statement. Ordinarily, | 526 // This formats a value for a failing CHECK_XX statement. Ordinarily, |
| 527 // it uses the definition for operator<<, with a few special cases below. | 527 // it uses the definition for operator<<, with a few special cases below. |
| 528 template <typename T> | 528 template <typename T> |
| 529 inline typename std::enable_if< | 529 inline typename std::enable_if< |
| 530 base::internal::SupportsOstreamOperator<const T&>::value, | 530 base::internal::SupportsOstreamOperator<const T&>::value && |
| 531 !std::is_function<typename std::remove_pointer<T>::type>::value, | |
| 531 void>::type | 532 void>::type |
| 532 MakeCheckOpValueString(std::ostream* os, const T& v) { | 533 MakeCheckOpValueString(std::ostream* os, const T& v) { |
| 533 (*os) << v; | 534 (*os) << v; |
| 534 } | 535 } |
| 535 | 536 |
| 537 // Provide an overload for functions and function pointers, which are otherwise | |
| 538 // implicitly converted to bool (MSVC seems to be the exception) and produce | |
|
Nico
2016/11/23 18:09:26
This comment is a bit confusing as written. I'd re
| |
| 539 // unhelpful values. | |
| 540 template <typename T> | |
| 541 inline typename std::enable_if< | |
| 542 std::is_function<typename std::remove_pointer<T>::type>::value, | |
| 543 void>::type | |
| 544 MakeCheckOpValueString(std::ostream* os, const T& v) { | |
| 545 (*os) << reinterpret_cast<const void*>(v); | |
| 546 } | |
| 547 | |
| 536 // We need overloads for enums that don't support operator<<. | 548 // We need overloads for enums that don't support operator<<. |
| 537 // (i.e. scoped enums where no operator<< overload was declared). | 549 // (i.e. scoped enums where no operator<< overload was declared). |
| 538 template <typename T> | 550 template <typename T> |
| 539 inline typename std::enable_if< | 551 inline typename std::enable_if< |
| 540 !base::internal::SupportsOstreamOperator<const T&>::value && | 552 !base::internal::SupportsOstreamOperator<const T&>::value && |
| 541 std::is_enum<T>::value, | 553 std::is_enum<T>::value, |
| 542 void>::type | 554 void>::type |
| 543 MakeCheckOpValueString(std::ostream* os, const T& v) { | 555 MakeCheckOpValueString(std::ostream* os, const T& v) { |
| 544 (*os) << static_cast<typename base::underlying_type<T>::type>(v); | 556 (*os) << static_cast<typename base::underlying_type<T>::type>(v); |
| 545 } | 557 } |
| (...skipping 442 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 988 #elif NOTIMPLEMENTED_POLICY == 5 | 1000 #elif NOTIMPLEMENTED_POLICY == 5 |
| 989 #define NOTIMPLEMENTED() do {\ | 1001 #define NOTIMPLEMENTED() do {\ |
| 990 static bool logged_once = false;\ | 1002 static bool logged_once = false;\ |
| 991 LOG_IF(ERROR, !logged_once) << NOTIMPLEMENTED_MSG;\ | 1003 LOG_IF(ERROR, !logged_once) << NOTIMPLEMENTED_MSG;\ |
| 992 logged_once = true;\ | 1004 logged_once = true;\ |
| 993 } while(0);\ | 1005 } while(0);\ |
| 994 EAT_STREAM_PARAMETERS | 1006 EAT_STREAM_PARAMETERS |
| 995 #endif | 1007 #endif |
| 996 | 1008 |
| 997 #endif // BASE_LOGGING_H_ | 1009 #endif // BASE_LOGGING_H_ |
| OLD | NEW |