• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 // 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 
54