11dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*	$OpenBSD: assert.h,v 1.12 2006/01/31 10:53:51 hshoexer Exp $	*/
21dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*	$NetBSD: assert.h,v 1.6 1994/10/26 00:55:44 cgd Exp $	*/
31dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
41dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*-
51dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Copyright (c) 1992, 1993
61dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *	The Regents of the University of California.  All rights reserved.
71dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * (c) UNIX System Laboratories, Inc.
81dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * All or some portions of this file are derived from material licensed
91dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * to the University of California by American Telephone and Telegraph
101dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Co. or Unix System Laboratories, Inc. and are reproduced herein with
111dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * the permission of UNIX System Laboratories, Inc.
121dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
131dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Redistribution and use in source and binary forms, with or without
141dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * modification, are permitted provided that the following conditions
151dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * are met:
161dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
171dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
181dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
191dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
201dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    documentation and/or other materials provided with the distribution.
211dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * 3. Neither the name of the University nor the names of its contributors
221dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    may be used to endorse or promote products derived from this software
231dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *    without specific prior written permission.
241dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
251dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
261dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
271dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
281dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
291dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
301dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
311dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
321dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
331dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
341dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
351dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * SUCH DAMAGE.
361dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *
371dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project *	@(#)assert.h	8.2 (Berkeley) 1/21/94
381dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
391dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
401dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project/*
411dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * Unlike other ANSI header files, <assert.h> may usefully be included
421dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project * multiple times, with and without NDEBUG defined.
431dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project */
441dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
451dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#include <sys/cdefs.h>
461dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
471dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#undef assert
481dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#undef _assert
491dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
501dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#ifdef NDEBUG
511dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# define	assert(e)	((void)0)
521dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# define	_assert(e)	((void)0)
531dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#else
541dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# define	_assert(e)	assert(e)
551dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# if __ISO_C_VISIBLE >= 1999
561dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#  define	assert(e)	((e) ? (void)0 : __assert2(__FILE__, __LINE__, __func__, #e))
571dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# else
581dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#  define	assert(e)	((e) ? (void)0 : __assert(__FILE__, __LINE__, #e))
591dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project# endif
601dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project#endif
611dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project
621dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__BEGIN_DECLS
63323d4b6f6839b472ac02c31105727147660dc4dbVadim Markovtsev__dead void __assert(const char *, int, const char *) __noreturn;
64323d4b6f6839b472ac02c31105727147660dc4dbVadim Markovtsev__dead void __assert2(const char *, int, const char *, const char *) __noreturn;
651dc9e472e19acfe6dc7f41e429236e7eef7ceda1The Android Open Source Project__END_DECLS
66