18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project******************************************************************************
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   Copyright (C) 1999-2004, International Business Machines
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   Corporation and others.  All Rights Reserved.
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project******************************************************************************
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   file name:  umachine.h
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   encoding:   US-ASCII
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   tab size:   8 (not used)
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   indentation:4
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   created on: 1999sep13
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   created by: Markus W. Scherer
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   This file defines basic types and constants for utf.h to be
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   platform-independent. umachine.h and utf.h are included into
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   utypes.h to provide all the general definitions for ICU.
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   All of these definitions used to be in utypes.h before
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   the UTF-handling macros made this unmaintainable.
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef __UMACHINE_H__
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define __UMACHINE_H__
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \file
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \brief Basic types and constants for UTF
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <h2> Basic types and constants for UTF </h2>
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   This file defines basic types and constants for utf.h to be
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   platform-independent. umachine.h and utf.h are included into
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   utypes.h to provide all the general definitions for ICU.
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   All of these definitions used to be in utypes.h before
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *   the UTF-handling macros made this unmaintainable.
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Include platform-dependent definitions                                   */
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* which are contained in the platform-specific file platform.h             */
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   include "unicode/pwin32.h"
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   include "unicode/platform.h"
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ANSI C headers:
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * stddef.h defines wchar_t
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <stddef.h>
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* XP_CPLUSPLUS is a cross-platform symbol which should be defined when     */
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* using C++.  It should not be defined when compiling under C.             */
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef __cplusplus
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   ifndef XP_CPLUSPLUS
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       define XP_CPLUSPLUS
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   endif
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   undef XP_CPLUSPLUS
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* For C wrappers, we use the symbol U_STABLE.                                */
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* This works properly if the includer is C or C++.                         */
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Functions are declared   U_STABLE return-type U_EXPORT2 function-name()... */
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_CFUNC
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is used in a declaration of a library private ICU C function.
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_CDECL_BEGIN
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is used to begin a declaration of a library private ICU C API.
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_CDECL_END
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is used to end a declaration of a library private ICU C API
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef XP_CPLUSPLUS
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_CFUNC extern "C"
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_CDECL_BEGIN extern "C" {
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_CDECL_END   }
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_CFUNC extern
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_CDECL_BEGIN
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_CDECL_END
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_NAMESPACE_BEGIN
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is used to begin a declaration of a public ICU C++ API.
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If the compiler doesn't support namespaces, this does nothing.
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_NAMESPACE_END
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is used to end a declaration of a public ICU C++ API
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If the compiler doesn't support namespaces, this does nothing.
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_NAMESPACE_USE
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is used to specify that the rest of the code uses the
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * public ICU C++ API namespace.
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If the compiler doesn't support namespaces, this does nothing.
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_NAMESPACE_QUALIFIER
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is used to qualify that a function or class is part of
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the public ICU C++ API namespace.
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If the compiler doesn't support namespaces, this does nothing.
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Define namespace symbols if the compiler supports it. */
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if U_HAVE_NAMESPACE
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_NAMESPACE_BEGIN namespace U_ICU_NAMESPACE {
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_NAMESPACE_END  }
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_NAMESPACE_USE using namespace U_ICU_NAMESPACE;
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_NAMESPACE_QUALIFIER U_ICU_NAMESPACE::
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_NAMESPACE_BEGIN
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_NAMESPACE_END
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_NAMESPACE_USE
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_NAMESPACE_QUALIFIER
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** This is used to declare a function as a public ICU C API @stable ICU 2.0*/
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define U_CAPI U_CFUNC U_EXPORT
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define U_STABLE U_CAPI
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define U_DRAFT  U_CAPI
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define U_DEPRECATED U_CAPI
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define U_OBSOLETE U_CAPI
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define U_INTERNAL U_CAPI
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* limits for int32_t etc., like in POSIX inttypes.h                        */
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef INT8_MIN
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The smallest value an 8 bit signed integer can hold @stable ICU 2.0 */
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define INT8_MIN        ((int8_t)(-128))
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef INT16_MIN
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The smallest value a 16 bit signed integer can hold @stable ICU 2.0 */
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define INT16_MIN       ((int16_t)(-32767-1))
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef INT32_MIN
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The smallest value a 32 bit signed integer can hold @stable ICU 2.0 */
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define INT32_MIN       ((int32_t)(-2147483647-1))
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef INT8_MAX
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The largest value an 8 bit signed integer can hold @stable ICU 2.0 */
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define INT8_MAX        ((int8_t)(127))
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef INT16_MAX
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The largest value a 16 bit signed integer can hold @stable ICU 2.0 */
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define INT16_MAX       ((int16_t)(32767))
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef INT32_MAX
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The largest value a 32 bit signed integer can hold @stable ICU 2.0 */
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define INT32_MAX       ((int32_t)(2147483647))
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef UINT8_MAX
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The largest value an 8 bit unsigned integer can hold @stable ICU 2.0 */
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define UINT8_MAX       ((uint8_t)(255U))
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef UINT16_MAX
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The largest value a 16 bit unsigned integer can hold @stable ICU 2.0 */
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define UINT16_MAX      ((uint16_t)(65535U))
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef UINT32_MAX
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The largest value a 32 bit unsigned integer can hold @stable ICU 2.0 */
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define UINT32_MAX      ((uint32_t)(4294967295U))
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if defined(U_INT64_T_UNAVAILABLE)
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# error int64_t is required for decimal format and rule-based number format.
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# ifndef INT64_C
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Provides a platform independent way to specify a signed 64-bit integer constant.
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * note: may be wrong for some 64 bit platforms - ensure your compiler provides INT64_C
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 2.8
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define INT64_C(c) c ## LL
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# endif
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# ifndef UINT64_C
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Provides a platform independent way to specify an unsigned 64-bit integer constant.
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * note: may be wrong for some 64 bit platforms - ensure your compiler provides UINT64_C
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 2.8
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define UINT64_C(c) c ## ULL
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# endif
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# ifndef U_INT64_MIN
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The smallest value a 64 bit signed integer can hold @stable ICU 2.8 */
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#     define U_INT64_MIN       ((int64_t)(INT64_C(-9223372036854775807)-1))
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# endif
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# ifndef U_INT64_MAX
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The largest value a 64 bit signed integer can hold @stable ICU 2.8 */
2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#     define U_INT64_MAX       ((int64_t)(INT64_C(9223372036854775807)))
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# endif
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# ifndef U_UINT64_MAX
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The largest value a 64 bit unsigned integer can hold @stable ICU 2.8 */
2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#     define U_UINT64_MAX      ((uint64_t)(UINT64_C(18446744073709551615)))
2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# endif
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Boolean data type                                                        */
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The ICU boolean type @stable ICU 2.0 */
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef int8_t UBool;
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef TRUE
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The TRUE value of a UBool @stable ICU 2.0 */
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define TRUE  1
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef FALSE
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** The FALSE value of a UBool @stable ICU 2.0 */
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define FALSE 0
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Unicode data types                                                       */
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* wchar_t-related definitions -------------------------------------------- */
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_HAVE_WCHAR_H
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Indicates whether <wchar.h> is available (1) or not (0). Set to 1 by default.
2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0
2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef U_HAVE_WCHAR_H
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_HAVE_WCHAR_H 1
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_SIZEOF_WCHAR_T
2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * U_SIZEOF_WCHAR_T==sizeof(wchar_t) (0 means it is not defined or autoconf could not set it)
2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0
2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if U_SIZEOF_WCHAR_T==0
2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   undef U_SIZEOF_WCHAR_T
2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_SIZEOF_WCHAR_T 4
2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_WCHAR_IS_UTF16
2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Defined if wchar_t uses UTF-16.
2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0
2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_WCHAR_IS_UTF32
2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Defined if wchar_t uses UTF-32.
2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0
2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if !defined(U_WCHAR_IS_UTF16) && !defined(U_WCHAR_IS_UTF32)
2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   ifdef __STDC_ISO_10646__
2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       if (U_SIZEOF_WCHAR_T==2)
2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#           define U_WCHAR_IS_UTF16
2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       elif (U_SIZEOF_WCHAR_T==4)
2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#           define  U_WCHAR_IS_UTF32
2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       endif
2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   elif defined __UCS2__
2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       if (__OS390__ || __OS400__) && (U_SIZEOF_WCHAR_T==2)
2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#           define U_WCHAR_IS_UTF16
2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       endif
2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   elif defined __UCS4__
2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       if (U_SIZEOF_WCHAR_T==4)
2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#           define U_WCHAR_IS_UTF32
3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       endif
3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   elif defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#       define U_WCHAR_IS_UTF16
3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   endif
3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* UChar and UChar32 definitions -------------------------------------------- */
3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** Number of bytes in a UChar. @stable ICU 2.0 */
3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define U_SIZEOF_UCHAR 2
3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \var UChar
3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Define UChar to be wchar_t if that is 16 bits wide; always assumed to be unsigned.
3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If wchar_t is not 16 bits wide, then define UChar to be uint16_t.
3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This makes the definition of UChar platform-dependent
3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but allows direct string type compatibility with platforms with
3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 16-bit wchar_t types.
3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0
3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Define UChar to be compatible with wchar_t if possible. */
3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if U_SIZEOF_WCHAR_T==2
3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    typedef wchar_t UChar;
3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else
3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    typedef uint16_t UChar;
3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Define UChar32 as a type for single Unicode code points.
3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * UChar32 is a signed 32-bit integer (same as int32_t).
3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The Unicode code point range is 0..0x10ffff.
3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * All other values (negative or >=0x110000) are illegal as Unicode code points.
3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * They may be used as sentinel values to indicate "done", "error"
3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * or similar non-code point conditions.
3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Before ICU 2.4 (Jitterbug 2146), UChar32 was defined
3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * to be wchar_t if that is 32 bits wide (wchar_t may be signed or unsigned)
3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * or else to be uint32_t.
3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * That is, the definition of UChar32 was platform-dependent.
3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @see U_SENTINEL
3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef int32_t UChar32;
3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* U_INLINE and U_ALIGN_CODE   Set default values if these are not already  */
3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*                             defined.  Definitions normally are in        */
3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*                             platform.h or the corresponding file for     */
3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*                             the OS in use.                               */
3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/
3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \def U_ALIGN_CODE
3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is used to align code fragments to a specific byte boundary.
3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This is useful for getting consistent performance test results.
3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @internal
3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef U_ALIGN_CODE
3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_ALIGN_CODE(n)
3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef U_INLINE
3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#   define U_INLINE
3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "unicode/urename.h"
3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
372