// java-assert.h - Header file holding assertion definitions.  -*- c++ -*-

/* Copyright (C) 1998, 1999  Cygnus Solutions

   This file is part of libgcj.

This software is copyrighted work licensed under the terms of the
Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
details.  */

#ifndef __JAVA_ASSERT_H__
#define __JAVA_ASSERT_H__

// This is a libgcj implementation header.

void _Jv_Abort (const char *, const char *, int, const char *)
  __attribute__ ((__noreturn__));

#ifdef DEBUG
#define _Jv_AssertDoCall(Message) _Jv_Abort (__FUNCTION__, __FILE__, __LINE__, Message)

#define JvAssertMessage(Expr, Message) \
   do { if (! (Expr)) _Jv_AssertDoCall (Message); } while (0)
#define JvAssert(Expr) \
   do { if (! (Expr)) _Jv_AssertDoCall (# Expr); } while (0)

#define JvFail(Message) _Jv_AssertDoCall (Message)

#else /* DEBUG */

#define _Jv_AssertDoCall(Message)
#define JvAssertMessage(Expr, Message)
#define JvAssert(Expr)
#define JvFail(Message) _Jv_Abort (0, 0, 0, Message)

#endif /* not DEBUG */

#endif /* __JAVA_ASSERT_H__ */
