// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ****************************************************************************** * * Copyright (C) 2002-2011, International Business Machines * Corporation and others. All Rights Reserved. * ****************************************************************************** * * File uassert.h * * Contains the U_ASSERT and UPRV_UNREACHABLE macros * ****************************************************************************** */ #ifndef U_ASSERT_H #define U_ASSERT_H /* utypes.h is included to get the proper define for uint8_t */ #include "unicode/utypes.h" /* for abort */ #include /** * \def U_ASSERT * By default, U_ASSERT just wraps the C library assert macro. * By changing the definition here, the assert behavior for ICU can be changed * without affecting other non - ICU uses of the C library assert(). */ #if U_DEBUG # include # define U_ASSERT(exp) assert(exp) #elif U_CPLUSPLUS_VERSION # define U_ASSERT(exp) (void)0 #else # define U_ASSERT(exp) #endif /** * \def UPRV_UNREACHABLE * This macro is used to unconditionally abort if unreachable code is ever executed. * @internal */ #if defined(UPRV_UNREACHABLE) // Use the predefined value. #else # define UPRV_UNREACHABLE abort() #endif #endif