1275988Sngie/* Copyright (c) 2008 The NetBSD Foundation, Inc. 2240116Smarcel * All rights reserved. 3240116Smarcel * 4240116Smarcel * Redistribution and use in source and binary forms, with or without 5240116Smarcel * modification, are permitted provided that the following conditions 6240116Smarcel * are met: 7240116Smarcel * 1. Redistributions of source code must retain the above copyright 8240116Smarcel * notice, this list of conditions and the following disclaimer. 9240116Smarcel * 2. Redistributions in binary form must reproduce the above copyright 10240116Smarcel * notice, this list of conditions and the following disclaimer in the 11240116Smarcel * documentation and/or other materials provided with the distribution. 12240116Smarcel * 13240116Smarcel * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND 14240116Smarcel * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, 15240116Smarcel * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16240116Smarcel * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17240116Smarcel * IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS BE LIABLE FOR ANY 18240116Smarcel * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19240116Smarcel * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 20240116Smarcel * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 21240116Smarcel * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER 22240116Smarcel * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 23240116Smarcel * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN 24275988Sngie * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ 25240116Smarcel 26275988Sngie#if !defined(ATF_C_DETAIL_SANITY_H) 27275988Sngie#define ATF_C_DETAIL_SANITY_H 28240116Smarcel 29240116Smarcelvoid atf_sanity_inv(const char *, int, const char *); 30240116Smarcelvoid atf_sanity_pre(const char *, int, const char *); 31240116Smarcelvoid atf_sanity_post(const char *, int, const char *); 32240116Smarcel 33240116Smarcel#if !defined(NDEBUG) 34240116Smarcel 35240116Smarcel#define INV(x) \ 36240116Smarcel do { \ 37240116Smarcel if (!(x)) \ 38240116Smarcel atf_sanity_inv(__FILE__, __LINE__, #x); \ 39240116Smarcel } while (0) 40240116Smarcel#define PRE(x) \ 41240116Smarcel do { \ 42240116Smarcel if (!(x)) \ 43240116Smarcel atf_sanity_pre(__FILE__, __LINE__, #x); \ 44240116Smarcel } while (0) 45240116Smarcel#define POST(x) \ 46240116Smarcel do { \ 47240116Smarcel if (!(x)) \ 48240116Smarcel atf_sanity_post(__FILE__, __LINE__, #x); \ 49240116Smarcel } while (0) 50240116Smarcel 51240116Smarcel#else /* defined(NDEBUG) */ 52240116Smarcel 53240116Smarcel#define INV(x) \ 54240116Smarcel do { \ 55240116Smarcel } while (0) 56240116Smarcel 57240116Smarcel#define PRE(x) \ 58240116Smarcel do { \ 59240116Smarcel } while (0) 60240116Smarcel 61240116Smarcel#define POST(x) \ 62240116Smarcel do { \ 63240116Smarcel } while (0) 64240116Smarcel 65240116Smarcel#endif /* !defined(NDEBUG) */ 66240116Smarcel 67240116Smarcel#define UNREACHABLE INV(0) 68240116Smarcel 69275988Sngie#endif /* !defined(ATF_C_DETAIL_SANITY_H) */ 70