| // | |
| // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| // | |
| // debug.h: Debugging utilities. | |
| #ifndef COMPILER_DEBUG_H_ | |
| #define COMPILER_DEBUG_H_ | |
| #include <assert.h> | |
| #ifdef _DEBUG | |
| #define TRACE_ENABLED // define to enable debug message tracing | |
| #endif // _DEBUG | |
| // Outputs text to the debug log | |
| #ifdef TRACE_ENABLED | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif // __cplusplus | |
| void Trace(const char* format, ...); | |
| #ifdef __cplusplus | |
| } | |
| #endif // __cplusplus | |
| #else // TRACE_ENABLED | |
| #define Trace(...) ((void)0) | |
| #endif // TRACE_ENABLED | |
| // A macro asserting a condition and outputting failures to the debug log | |
| #define ASSERT(expression) do { \ | |
| if(!(expression)) \ | |
| Trace("Assert failed: %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \ | |
| assert(expression); \ | |
| } while(0) | |
| #define UNIMPLEMENTED() do { \ | |
| Trace("Unimplemented invoked: %s(%d)\n", __FUNCTION__, __LINE__); \ | |
| assert(false); \ | |
| } while(0) | |
| #define UNREACHABLE() do { \ | |
| Trace("Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \ | |
| assert(false); \ | |
| } while(0) | |
| #endif // COMPILER_DEBUG_H_ | |