// Copyright (c) 2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef TRACELINE_LOGGING_H_
#define TRACELINE_LOGGING_H_

#include <windows.h>
#include <stdio.h>

#define CHECK(exp, ...) \
  if (!(exp)) { \
    printf("FAILED CHECK: %s\n  %s:%d\n", #exp, __FILE__, __LINE__); \
    printf("\naborted.\n"); \
    if (::IsDebuggerPresent()) __debugbreak(); \
    exit(1); \
  }

#define NOTREACHED(...) \
  if (1) { \
    printf("NOTREACHED:\n  %s:%d\n", __FILE__, __LINE__); \
    printf(__VA_ARGS__); \
    printf("\naborted.\n"); \
    if (::IsDebuggerPresent()) __debugbreak(); \
    exit(1); \
  }

#endif  // TRACELINE_LOGGING_H_
