Home | History | Annotate | Download | only in compiler
      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