1 // © 2016 and later: Unicode, Inc. and others. 2 // License & terms of use: http://www.unicode.org/copyright.html 3 /* 4 ****************************************************************************** 5 * 6 * Copyright (C) 2002-2011, International Business Machines 7 * Corporation and others. All Rights Reserved. 8 * 9 ****************************************************************************** 10 * 11 * File uassert.h 12 * 13 * Contains the U_ASSERT and UPRV_UNREACHABLE macros 14 * 15 ****************************************************************************** 16 */ 17 #ifndef U_ASSERT_H 18 #define U_ASSERT_H 19 20 /* utypes.h is included to get the proper define for uint8_t */ 21 #include "unicode/utypes.h" 22 /* for abort */ 23 #include <stdlib.h> 24 25 /** 26 * \def U_ASSERT 27 * By default, U_ASSERT just wraps the C library assert macro. 28 * By changing the definition here, the assert behavior for ICU can be changed 29 * without affecting other non - ICU uses of the C library assert(). 30 */ 31 #if U_DEBUG 32 # include <assert.h> 33 # define U_ASSERT(exp) assert(exp) 34 #else 35 # define U_ASSERT(exp) 36 #endif 37 38 /** 39 * \def UPRV_UNREACHABLE 40 * This macro is used to unconditionally abort if unreachable code is ever executed. 41 * @internal 42 */ 43 #if defined(UPRV_UNREACHABLE) 44 // Use the predefined value. 45 #else 46 # define UPRV_UNREACHABLE abort() 47 #endif 48 49 #endif 50