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