18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project****************************************************************************** 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Copyright (C) 1997-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* 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* FILE NAME : putil.h 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* Date Name Description 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 05/14/98 nos Creation (content moved here from utypes.h). 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 06/17/99 erm Added IEEE_754 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 07/22/98 stephen Added IEEEremainder, max, min, trunc 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 08/13/98 stephen Added isNegativeInfinity, isPositiveInfinity 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 08/24/98 stephen Added longBitsFromDouble 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 03/02/99 stephen Removed openFile(). Added AS400 support. 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 04/15/99 stephen Converted to C 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 11/15/99 helena Integrated S/390 changes for IEEE support. 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project* 01/11/00 helena Added u_getVersion. 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project****************************************************************************** 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef PUTIL_H 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define PUTIL_H 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "unicode/utypes.h" 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Define this to 1 if your platform supports IEEE 754 floating point, 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project to 0 if it does not. */ 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef IEEE_754 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define IEEE_754 1 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/ 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* Platform utilities */ 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*==========================================================================*/ 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Platform utilities isolates the platform dependencies of the 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * libarary. For each platform which this code is ported to, these 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * functions may have to be re-implemented. 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Return the ICU data directory. 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The data directory is where common format ICU data files (.dat files) 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are loaded from. Note that normal use of the built-in ICU 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * facilities does not require loading of an external data file; 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * unless you are adding custom data to ICU, the data directory 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * does not need to be set. 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The data directory is determined as follows: 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If u_setDataDirectory() has been called, that is it, otherwise 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * if the ICU_DATA environment variable is set, use that, otherwise 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If a data directory was specifed at ICU build time 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (#define ICU_DATA_DIR "path"), use that, 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * otherwise no data directory is available. 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return the data directory, or an empty string ("") if no data directory has 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * been specified. 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE const char* U_EXPORT2 u_getDataDirectory(void); 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Set the ICU data directory. 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The data directory is where common format ICU data files (.dat files) 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are loaded from. Note that normal use of the built-in ICU 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * facilities does not require loading of an external data file; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * unless you are adding custom data to ICU, the data directory 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * does not need to be set. 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This function should be called at most once in a process, before the 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * first ICU operation (e.g., u_init()) that will require the loading of an 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * ICU data file. 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This function is not thread-safe. Use it before calling ICU APIs from 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * multiple threads. 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param directory The directory to be set. 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @see u_init 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2 u_setDataDirectory(const char *directory); 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Please use ucnv_getDefaultName() instead. 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Return the default codepage for this platform and locale. 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This function can call setlocale() on Unix platforms. Please read the 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * platform documentation on setlocale() before calling this function. 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return the default codepage for this platform 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @internal 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_INTERNAL const char* U_EXPORT2 uprv_getDefaultCodepage(void); 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Please use uloc_getDefault() instead. 1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Return the default locale ID string by querying ths system, or 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * zero if one cannot be found. 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This function can call setlocale() on Unix platforms. Please read the 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * platform documentation on setlocale() before calling this function. 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return the default locale ID string 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @internal 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_INTERNAL const char* U_EXPORT2 uprv_getDefaultLocaleID(void); 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Filesystem file and path separator characters. 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Example: '/' and ':' on Unix, '\\' and ';' on Windows. 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef XP_MAC 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_SEP_CHAR ':' 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_ALT_SEP_CHAR ':' 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_PATH_SEP_CHAR ';' 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_SEP_STRING ":" 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_ALT_SEP_STRING ":" 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_PATH_SEP_STRING ";" 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#elif defined(WIN32) || defined(OS2) 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_SEP_CHAR '\\' 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_ALT_SEP_CHAR '/' 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_PATH_SEP_CHAR ';' 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_SEP_STRING "\\" 1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_ALT_SEP_STRING "/" 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_PATH_SEP_STRING ";" 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#else 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_SEP_CHAR '/' 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_ALT_SEP_CHAR '/' 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_PATH_SEP_CHAR ':' 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_SEP_STRING "/" 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_FILE_ALT_SEP_STRING "/" 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project# define U_PATH_SEP_STRING ":" 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Convert char characters to UChar characters. 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This utility function is useful only for "invariant characters" 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * that are encoded in the platform default encoding. 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * They are a small, constant subset of the encoding and include 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * just the latin letters, digits, and some punctuation. 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * For details, see U_CHARSET_FAMILY. 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param cs Input string, points to <code>length</code> 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * character bytes from a subset of the platform encoding. 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param us Output string, points to memory for <code>length</code> 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Unicode characters. 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param length The number of characters to convert; this may 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * include the terminating <code>NUL</code>. 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @see U_CHARSET_FAMILY 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectu_charsToUChars(const char *cs, UChar *us, int32_t length); 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Convert UChar characters to char characters. 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This utility function is useful only for "invariant characters" 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * that can be encoded in the platform default encoding. 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * They are a small, constant subset of the encoding and include 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * just the latin letters, digits, and some punctuation. 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * For details, see U_CHARSET_FAMILY. 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param us Input string, points to <code>length</code> 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Unicode characters that can be encoded with the 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * codepage-invariant subset of the platform encoding. 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param cs Output string, points to memory for <code>length</code> 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * character bytes. 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param length The number of characters to convert; this may 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * include the terminating <code>NUL</code>. 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @see U_CHARSET_FAMILY 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.0 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectu_UCharsToChars(const UChar *us, char *cs, int32_t length); 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif 181