blob: 7a371516af0feec61f46ee11821ba28d351dd49e [file] [log] [blame]
John Bauman66b8ab22014-05-06 15:57:45 -04001//
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
22extern "C" {
23#endif // __cplusplus
24void 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