|
1 // |
|
2 // Copyright (c) 2002-2010 The ANGLE Project Authors. All rights reserved. |
|
3 // Use of this source code is governed by a BSD-style license that can be |
|
4 // found in the LICENSE file. |
|
5 // |
|
6 |
|
7 // compiler_debug.h: Debugging utilities. |
|
8 |
|
9 #ifndef COMPILER_DEBUG_H_ |
|
10 #define COMPILER_DEBUG_H_ |
|
11 |
|
12 #include <assert.h> |
|
13 |
|
14 #ifdef _DEBUG |
|
15 #define TRACE_ENABLED // define to enable debug message tracing |
|
16 #endif // _DEBUG |
|
17 |
|
18 // Outputs text to the debug log |
|
19 #ifdef TRACE_ENABLED |
|
20 |
|
21 #ifdef __cplusplus |
|
22 extern "C" { |
|
23 #endif // __cplusplus |
|
24 void Trace(const char* format, ...); |
|
25 #ifdef __cplusplus |
|
26 } |
|
27 #endif // __cplusplus |
|
28 |
|
29 #else // TRACE_ENABLED |
|
30 |
|
31 #define Trace(...) ((void)0) |
|
32 |
|
33 #endif // TRACE_ENABLED |
|
34 |
|
35 // A macro asserting a condition and outputting failures to the debug log |
|
36 #define ASSERT(expression) do { \ |
|
37 if(!(expression)) \ |
|
38 Trace("Assert failed: %s(%d): "#expression"\n", __FUNCTION__, __LINE__); \ |
|
39 assert(expression); \ |
|
40 } while(0) |
|
41 |
|
42 #define UNIMPLEMENTED() do { \ |
|
43 Trace("Unimplemented invoked: %s(%d)\n", __FUNCTION__, __LINE__); \ |
|
44 assert(false); \ |
|
45 } while(0) |
|
46 |
|
47 #define UNREACHABLE() do { \ |
|
48 Trace("Unreachable reached: %s(%d)\n", __FUNCTION__, __LINE__); \ |
|
49 assert(false); \ |
|
50 } while(0) |
|
51 |
|
52 #endif // COMPILER_DEBUG_H_ |
|
53 |