/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* bos72Q src/bos/usr/include/isc/assertions.h 1.4.1.1 */ /* */ /* Licensed Materials - Property of IBM */ /* */ /* Restricted Materials of IBM */ /* */ /* COPYRIGHT International Business Machines Corp. 1998,2019 */ /* All Rights Reserved */ /* */ /* US Government Users Restricted Rights - Use, duplication or */ /* disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ /* */ /* IBM_PROLOG_END_TAG */ /* aix_sccsid[] = "src/bos/usr/include/isc/assertions.h, sockinc, bos72Q, q2019_13A4 AIX 2/6/19 00:43:14" */ /* * Copyright (C) 1997-2001 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* * $Id: assertions.h,v 1.17 2001/07/12 05:58:21 mayer Exp $ */ #ifndef BIND9 /* use BIND8 code */ #ifndef ASSERTIONS_H #define ASSERTIONS_H 1 #ifdef __cplusplus extern "C" { #endif typedef enum { assert_require, assert_ensure, assert_insist, assert_invariant } assertion_type; typedef void (*assertion_failure_callback)(char *, int, assertion_type, char *, int); extern assertion_failure_callback __assertion_failed; void set_assertion_failure_callback(assertion_failure_callback f); char *assertion_type_to_text(assertion_type type); #ifdef CHECK_ALL #define CHECK_REQUIRE 1 #define CHECK_ENSURE 1 #define CHECK_INSIST 1 #define CHECK_INVARIANT 1 #endif #ifdef CHECK_NONE #define CHECK_REQUIRE 0 #define CHECK_ENSURE 0 #define CHECK_INSIST 0 #define CHECK_INVARIANT 0 #endif #ifndef CHECK_REQUIRE #define CHECK_REQUIRE 1 #endif #ifndef CHECK_ENSURE #define CHECK_ENSURE 1 #endif #ifndef CHECK_INSIST #define CHECK_INSIST 1 #endif #ifndef CHECK_INVARIANT #define CHECK_INVARIANT 1 #endif #if CHECK_REQUIRE != 0 #define REQUIRE(cond) \ ((void) ((cond) || \ ((__assertion_failed)(__FILE__, __LINE__, assert_require, \ #cond, 0), 0))) #define REQUIRE_ERR(cond) \ ((void) ((cond) || \ ((__assertion_failed)(__FILE__, __LINE__, assert_require, \ #cond, 1), 0))) #else #define REQUIRE(cond) ((void) 0) #define REQUIRE_ERR(cond) ((void) 0) #endif /* CHECK_REQUIRE */ #if CHECK_ENSURE != 0 #define ENSURE(cond) \ ((void) ((cond) || \ ((__assertion_failed)(__FILE__, __LINE__, assert_ensure, \ #cond, 0), 0))) #define ENSURE_ERR(cond) \ ((void) ((cond) || \ ((__assertion_failed)(__FILE__, __LINE__, assert_ensure, \ #cond, 1), 0))) #else #define ENSURE(cond) ((void) 0) #define ENSURE_ERR(cond) ((void) 0) #endif /* CHECK_ENSURE */ #if CHECK_INSIST != 0 #define INSIST(cond) \ ((void) ((cond) || \ ((__assertion_failed)(__FILE__, __LINE__, assert_insist, \ #cond, 0), 0))) #define INSIST_ERR(cond) \ ((void) ((cond) || \ ((__assertion_failed)(__FILE__, __LINE__, assert_insist, \ #cond, 1), 0))) #else #define INSIST(cond) ((void) 0) #define INSIST_ERR(cond) ((void) 0) #endif /* CHECK_INSIST */ #if CHECK_INVARIANT != 0 #define INVARIANT(cond) \ ((void) ((cond) || \ ((__assertion_failed)(__FILE__, __LINE__, assert_invariant, \ #cond, 0), 0))) #define INVARIANT_ERR(cond) \ ((void) ((cond) || \ ((__assertion_failed)(__FILE__, __LINE__, assert_invariant, \ #cond, 1), 0))) #else #define INVARIANT(cond) ((void) 0) #define INVARIANT_ERR(cond) ((void) 0) #endif /* CHECK_INVARIANT */ #ifdef __cplusplus } #endif #endif /* ASSERTIONS_H */ #else /* Use BIND9 code */ #ifndef ISC_ASSERTIONS_H #define ISC_ASSERTIONS_H 1 #include #include #ifdef __cplusplus extern "C" { #endif ISC_LANG_BEGINDECLS typedef enum { isc_assertiontype_require, isc_assertiontype_ensure, isc_assertiontype_insist, isc_assertiontype_invariant } isc_assertiontype_t; typedef void (*isc_assertioncallback_t)(const char *, int, isc_assertiontype_t, const char *); LIBISC_EXTERNAL_DATA extern isc_assertioncallback_t isc_assertion_failed; void isc_assertion_setcallback(isc_assertioncallback_t); const char * isc_assertion_typetotext(isc_assertiontype_t type); #ifdef ISC_CHECK_ALL #define ISC_CHECK_REQUIRE 1 #define ISC_CHECK_ENSURE 1 #define ISC_CHECK_INSIST 1 #define ISC_CHECK_INVARIANT 1 #endif #ifdef ISC_CHECK_NONE #define ISC_CHECK_REQUIRE 0 #define ISC_CHECK_ENSURE 0 #define ISC_CHECK_INSIST 0 #define ISC_CHECK_INVARIANT 0 #endif #ifndef ISC_CHECK_REQUIRE #define ISC_CHECK_REQUIRE 1 #endif #ifndef ISC_CHECK_ENSURE #define ISC_CHECK_ENSURE 1 #endif #ifndef ISC_CHECK_INSIST #define ISC_CHECK_INSIST 1 #endif #ifndef ISC_CHECK_INVARIANT #define ISC_CHECK_INVARIANT 1 #endif #if ISC_CHECK_REQUIRE != 0 #define ISC_REQUIRE(cond) \ ((void) ((cond) || \ ((isc_assertion_failed)(__FILE__, __LINE__, \ isc_assertiontype_require, \ #cond), 0))) #else #define ISC_REQUIRE(cond) ((void) 0) #endif /* ISC_CHECK_REQUIRE */ #if ISC_CHECK_ENSURE != 0 #define ISC_ENSURE(cond) \ ((void) ((cond) || \ ((isc_assertion_failed)(__FILE__, __LINE__, \ isc_assertiontype_ensure, \ #cond), 0))) #else #define ISC_ENSURE(cond) ((void) 0) #endif /* ISC_CHECK_ENSURE */ #if ISC_CHECK_INSIST != 0 #define ISC_INSIST(cond) \ ((void) ((cond) || \ ((isc_assertion_failed)(__FILE__, __LINE__, \ isc_assertiontype_insist, \ #cond), 0))) #else #define ISC_INSIST(cond) ((void) 0) #endif /* ISC_CHECK_INSIST */ #if ISC_CHECK_INVARIANT != 0 #define ISC_INVARIANT(cond) \ ((void) ((cond) || \ ((isc_assertion_failed)(__FILE__, __LINE__, \ isc_assertiontype_invariant, \ #cond), 0))) #else #define ISC_INVARIANT(cond) ((void) 0) #endif /* ISC_CHECK_INVARIANT */ ISC_LANG_ENDDECLS #ifdef __cplusplus } #endif #endif /* ISC_ASSERTIONS_H */ #endif /* BIND9 */