Index: mojo/edk/util/logging_internal.h |
diff --git a/mojo/edk/util/logging_internal.h b/mojo/edk/util/logging_internal.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..59e501ef3c4e064362f95cf47b181771fcd786f8 |
--- /dev/null |
+++ b/mojo/edk/util/logging_internal.h |
@@ -0,0 +1,61 @@ |
+// Copyright 2015 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. |
+ |
+// Internal logging macros, to avoid external dependencies. |
+ |
+#ifndef MOJO_EDK_UTIL_LOGGING_INTERNAL_H_ |
+#define MOJO_EDK_UTIL_LOGGING_INTERNAL_H_ |
+ |
+#if defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) |
+ |
+#define INTERNAL_DCHECK(condition) \ |
+ do { \ |
+ } while (false && (condition)) |
+ |
+#define INTERNAL_DCHECK_WITH_ERRNO(condition, fn, error) \ |
+ do { \ |
+ } while (false && (condition) && (error)) |
+ |
+#else |
+ |
+// Our own simplified "DCHECK". Asserts that |condition| is true. If not, "logs" |
+// the failing condition and aborts. |
+#define INTERNAL_DCHECK(condition) \ |
+ do { \ |
+ if (!(condition)) { \ |
+ ::mojo::util::internal::DcheckHelper(__FILE__, __LINE__, #condition); \ |
+ } \ |
+ } while (false) |
+ |
+// Our own simplified "DCHECK"/"DPCHECK" hybrid. Asserts that |condition| is |
+// true. If not, "logs" |fn| with errno value |error| and aborts. (This doesn't |
+// just use |errno| since some APIs, like pthreads, don't set errno.) |
+#define INTERNAL_DCHECK_WITH_ERRNO(condition, fn, error) \ |
+ do { \ |
+ if (!(condition)) { \ |
+ ::mojo::util::internal::DcheckWithErrnoHelper(__FILE__, __LINE__, fn, \ |
+ error); \ |
+ } \ |
+ } while (false) |
+ |
+namespace mojo { |
+namespace util { |
+namespace internal { |
+ |
+// Helper for |INTERNAL_DCHECK_WITH_ERRNO()| above. |
+void DcheckHelper(const char* file, int line, const char* condition_string); |
+ |
+// Helper for |INTERNAL_DCHECK_WITH_ERRNO()| above. |
+void DcheckWithErrnoHelper(const char* file, |
+ int line, |
+ const char* fn, |
+ int error); |
+ |
+} // namespace internal |
+} // namespace util |
+} // namespace mojo |
+ |
+#endif // defined(NDEBUG) && !defined(DCHECK_ALWAYS_ON) |
+ |
+#endif // MOJO_EDK_UTIL_LOGGING_INTERNAL_H_ |