Main Page   Class Hierarchy   Compound List   File List   Header Files   Sources   Compound Members   File Members  

putil.h

00001 /*
00002 *******************************************************************************
00003 *
00004 *   Copyright (C) 1997-2000, International Business Machines
00005 *   Corporation and others.  All Rights Reserved.
00006 *
00007 *******************************************************************************
00008 *
00009 *  FILE NAME : putil.h
00010 *
00011 *   Date        Name        Description
00012 *   05/14/98    nos         Creation (content moved here from utypes.h).
00013 *   06/17/99    erm         Added IEEE_754
00014 *   07/22/98    stephen     Added IEEEremainder, max, min, trunc
00015 *   08/13/98    stephen     Added isNegativeInfinity, isPositiveInfinity
00016 *   08/24/98    stephen     Added longBitsFromDouble
00017 *   03/02/99    stephen     Removed openFile().  Added AS400 support.
00018 *   04/15/99    stephen     Converted to C
00019 *   11/15/99    helena      Integrated S/390 changes for IEEE support.
00020 *   01/11/00    helena      Added u_getVersion.
00021 *******************************************************************************
00022 */
00023 
00024 #ifndef PUTIL_H
00025 #define PUTIL_H
00026 
00027 #include "unicode/utypes.h"
00028 
00029 /* Define this to 1 if your platform supports IEEE 754 floating point,
00030    to 0 if it does not. */
00031 #ifndef IEEE_754
00032 #   define IEEE_754 1
00033 #endif
00034 
00035 /*===========================================================================*/
00036 /* Platform utilities                                                        */
00037 /*===========================================================================*/
00038 
00044 /* Floating point utilities 
00045  * @draft
00046  */
00047 U_CAPI UBool  U_EXPORT2  uprv_isNaN(double);
00048 U_CAPI UBool  U_EXPORT2 uprv_isInfinite(double);
00049 U_CAPI UBool   U_EXPORT2 uprv_isPositiveInfinity(double);
00050 U_CAPI UBool   U_EXPORT2 uprv_isNegativeInfinity(double);
00051 U_CAPI double   U_EXPORT2 uprv_getNaN(void);
00052 U_CAPI double   U_EXPORT2 uprv_getInfinity(void);
00053 
00054 U_CAPI double   U_EXPORT2 uprv_floor(double x);
00055 U_CAPI double   U_EXPORT2 uprv_ceil(double x);
00056 U_CAPI double   U_EXPORT2 uprv_fabs(double x);
00057 U_CAPI double   U_EXPORT2 uprv_modf(double x, double* y);
00058 U_CAPI double   U_EXPORT2 uprv_fmod(double x, double y);
00059 U_CAPI double   U_EXPORT2 uprv_pow10(int32_t x);
00060 U_CAPI double   U_EXPORT2 uprv_IEEEremainder(double x, double y);
00061 U_CAPI double   U_EXPORT2 uprv_fmax(double x, double y);
00062 U_CAPI double   U_EXPORT2 uprv_fmin(double x, double y);
00063 U_CAPI int32_t  U_EXPORT2 uprv_max(int32_t x, int32_t y);
00064 U_CAPI int32_t  U_EXPORT2 uprv_min(int32_t x, int32_t y);
00065 U_CAPI double   U_EXPORT2 uprv_trunc(double d);
00066 U_CAPI void     U_EXPORT2 uprv_longBitsFromDouble(double d, int32_t *hi, uint32_t *lo);
00067 #if U_IS_BIG_ENDIAN
00068 #   define uprv_isNegative(number) (*((signed char *)&(number))<0)
00069 #else
00070 #   define uprv_isNegative(number) (*((signed char *)&(number)+sizeof(number)-1)<0)
00071 #endif
00072 
00073 /* Conversion from a digit to the character with radix base from 2-19 */
00074 #define T_CString_itosOffset(a) ((a)<=9?('0'+(a)):('A'+(a)-10))
00075 
00076 /*
00077  * Return the floor of the log base 10 of a given double.
00078  * This method compensates for inaccuracies which arise naturally when
00079  * computing logs, and always gives the correct value.  The parameter
00080  * must be positive and finite.
00081  * (Thanks to Alan Liu for supplying this function.)
00082  */
00090 U_CAPI int16_t  U_EXPORT2 uprv_log10(double d);
00091 
00098 U_CAPI int32_t  U_EXPORT2 uprv_digitsAfterDecimal(double x);
00099 
00132 U_CAPI void     U_EXPORT2 uprv_tzset(void);
00133 U_CAPI int32_t  U_EXPORT2 uprv_timezone(void);
00134 U_CAPI char*    U_EXPORT2 uprv_tzname(int n);
00135 
00140 U_CAPI int32_t  U_EXPORT2 uprv_getUTCtime(void);
00141 
00146 U_CAPI const char* U_EXPORT2 u_getDataDirectory(void);
00147 
00152 U_CAPI void U_EXPORT2 u_setDataDirectory(const char *directory);
00153 
00158 U_CAPI const char*  U_EXPORT2 uprv_getDefaultCodepage(void);
00159 
00165 U_CAPI const char*  U_EXPORT2 uprv_getDefaultLocaleID(void);
00166 
00167 /*
00168  * Finds the least double greater than d (if positive == true),
00169  * or the greatest double less than d (if positive == false).
00170  *
00171  * This is a special purpose function defined by the ChoiceFormat API
00172  * documentation.
00173  * It is not a general purpose function and not defined for NaN or Infinity
00174  * @draft
00175  */
00176 U_CAPI double           U_EXPORT2 uprv_nextDouble(double d, UBool positive);
00177 
00183 #ifdef XP_MAC
00184 #   define U_FILE_SEP_CHAR ':'
00185 #   define U_PATH_SEP_CHAR ';'
00186 #   define U_FILE_SEP_STRING ":"
00187 #   define U_PATH_SEP_STRING ";"
00188 #elif defined(WIN32) || defined(OS2)
00189 #   define U_FILE_SEP_CHAR '\\'
00190 #   define U_PATH_SEP_CHAR ';'
00191 #   define U_FILE_SEP_STRING "\\"
00192 #   define U_PATH_SEP_STRING ";"
00193 #else
00194 #   define U_FILE_SEP_CHAR '/'
00195 #   define U_PATH_SEP_CHAR ':'
00196 #   define U_FILE_SEP_STRING "/"
00197 #   define U_PATH_SEP_STRING ":"
00198 #endif
00199 
00216 U_CAPI void U_EXPORT2
00217 u_charsToUChars(const char *cs, UChar *us, UTextOffset length);
00218 
00236 U_CAPI void U_EXPORT2
00237 u_UCharsToChars(const UChar *us, char *cs, UTextOffset length);
00238 
00248 U_CAPI void U_EXPORT2
00249 u_versionFromString(UVersionInfo versionArray, const char *versionString);
00250 
00261 U_CAPI void U_EXPORT2
00262 u_versionToString(UVersionInfo versionArray, char *versionString);
00263 
00271 U_CAPI void U_EXPORT2
00272 u_getVersion(UVersionInfo versionArray);
00273 
00274 #endif

Generated at Mon Jun 5 12:53:04 2000 for ICU1.5 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999