]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/common/uassert.h
ICU-64252.0.1.tar.gz
[apple/icu.git] / icuSources / common / uassert.h
index 9b1a14168fb684106783d33d1a3c662ddf8985b9..f0f7a92574b4d41b1aef6531d56db3e2c48b0228 100644 (file)
@@ -1,32 +1,49 @@
+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 ******************************************************************************
 *
-*   Copyright (C) 2002-2003, International Business Machines
+*   Copyright (C) 2002-2011, International Business Machines
 *   Corporation and others.  All Rights Reserved.
 *
 ******************************************************************************
 *
 * File uassert.h
 *
-*  Contains U_ASSERT macro
-*
-*    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().
+*  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"
-#if U_RELEASE
-#define U_ASSERT(exp)
+/* 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)
 #else
-#include <assert.h>
-#define U_ASSERT(exp) assert(exp)
-#endif
+#   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