]> git.saurik.com Git - apple/icu.git/blob - icuSources/common/uassert.h
ICU-64260.0.1.tar.gz
[apple/icu.git] / icuSources / common / uassert.h
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