52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
|
// © 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 <stdlib.h>
|
||
|
|
||
|
/**
|
||
|
* \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 <assert.h>
|
||
|
# 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
|