15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2009 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef TRACELINE_LOGGING_H_
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define TRACELINE_LOGGING_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h>
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <stdio.h>
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHECK(exp, ...) \
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!(exp)) { \
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    printf("FAILED CHECK: %s\n  %s:%d\n", #exp, __FILE__, __LINE__); \
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    printf("\naborted.\n"); \
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (::IsDebuggerPresent()) __debugbreak(); \
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit(1); \
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define NOTREACHED(...) \
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (1) { \
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    printf("NOTREACHED:\n  %s:%d\n", __FILE__, __LINE__); \
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    printf(__VA_ARGS__); \
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    printf("\naborted.\n"); \
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    if (::IsDebuggerPresent()) __debugbreak(); \
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    exit(1); \
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // TRACELINE_LOGGING_H_
29