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