00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef PUTIL_H
00025
#define PUTIL_H
00026
00027
#include "unicode/utypes.h"
00028
00029
00030
00031
#ifndef IEEE_754
00032
# define IEEE_754 1
00033
#endif
00034
00035
00036
00037
00038
00045
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_trunc(
double d);
00055 U_CAPI
double U_EXPORT2 uprv_floor(
double x);
00056 U_CAPI
double U_EXPORT2 uprv_ceil(
double x);
00057 U_CAPI
double U_EXPORT2 uprv_fabs(
double x);
00058 U_CAPI
double U_EXPORT2 uprv_modf(
double x,
double* y);
00059 U_CAPI
double U_EXPORT2 uprv_fmod(
double x,
double y);
00060 U_CAPI
double U_EXPORT2 uprv_pow(
double x,
double y);
00061 U_CAPI
double U_EXPORT2 uprv_pow10(int32_t x);
00062 U_CAPI
double U_EXPORT2 uprv_fmax(
double x,
double y);
00063 U_CAPI
double U_EXPORT2 uprv_fmin(
double x,
double y);
00064 U_CAPI int32_t U_EXPORT2 uprv_max(int32_t x, int32_t y);
00065 U_CAPI int32_t U_EXPORT2 uprv_min(int32_t x, int32_t y);
00066
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
00077 U_CAPI
double U_EXPORT2 uprv_maxMantissa(
void);
00078
00089 U_CAPI int16_t U_EXPORT2 uprv_log10(
double d);
00090
00091 U_CAPI
double U_EXPORT2 uprv_log(
double d);
00092
00094 U_CAPI
double U_EXPORT2 uprv_round(
double x);
00095
00101 U_CAPI int32_t U_EXPORT2 uprv_digitsAfterDecimal(
double x);
00102
00135 U_CAPI
void U_EXPORT2 uprv_tzset(
void);
00136
00141 U_CAPI int32_t U_EXPORT2 uprv_timezone(
void);
00142
00150 U_CAPI
char* U_EXPORT2 uprv_tzname(
int n);
00151
00156 U_CAPI int32_t U_EXPORT2 uprv_getUTCtime(
void);
00157
00179 U_CAPI
const char* U_EXPORT2 u_getDataDirectory(
void);
00180
00194 U_CAPI
void U_EXPORT2 u_setDataDirectory(
const char *directory);
00195
00200 U_CAPI
const char* U_EXPORT2 uprv_getDefaultCodepage(
void);
00201
00207 U_CAPI
const char* U_EXPORT2 uprv_getDefaultLocaleID(
void);
00208
00209
00210
00211
00212
00213
00214
00215
00216
00217
00218 U_CAPI
double U_EXPORT2 uprv_nextDouble(
double d, UBool positive);
00219
00225
#ifdef XP_MAC
00226
# define U_FILE_SEP_CHAR ':'
00227
# define U_PATH_SEP_CHAR ';'
00228
# define U_FILE_SEP_STRING ":"
00229
# define U_PATH_SEP_STRING ";"
00230
#elif defined(WIN32) || defined(OS2)
00231
# define U_FILE_SEP_CHAR '\\'
00232
# define U_PATH_SEP_CHAR ';'
00233
# define U_FILE_SEP_STRING "\\"
00234
# define U_PATH_SEP_STRING ";"
00235
#else
00236
# define U_FILE_SEP_CHAR '/'
00237
# define U_PATH_SEP_CHAR ':'
00238
# define U_FILE_SEP_STRING "/"
00239
# define U_PATH_SEP_STRING ":"
00240
#endif
00241
00258 U_CAPI
void U_EXPORT2
00259 u_charsToUChars(
const char *cs, UChar *us, int32_t length);
00260
00278 U_CAPI
void U_EXPORT2
00279 u_UCharsToChars(
const UChar *us,
char *cs, int32_t length);
00280
00281
00282
#if U_CHARSET_FAMILY==U_ASCII_FAMILY
00283
# define U_UPPER_ORDINAL(x) ((x)-'A')
00284
#elif U_CHARSET_FAMILY==U_EBCDIC_FAMILY
00285
# define U_UPPER_ORDINAL(x) (((x) < 'J') ? ((x)-'A') : \
00286
(((x) < 'S') ? ((x)-'J'+9) : \
00287
((x)-'S'+18)))
00288
#else
00289
# error Unknown charset family!
00290
#endif
00291
00306
#ifndef U_MAX_PTR
00307
# ifdef OS390
00308
# define U_MAX_PTR(base) ((void *)0x7fffffff)
00309
# elif defined(OS400)
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320
00321
00322
# define U_MAX_PTR(base) ((void *)(((char *)base)-((int32_t)(base))+((int32_t)0xffefff)))
00323
# else
00324
# define U_MAX_PTR(base) ((void *)(((char *)(base)+0x7fffffff) > (char *)(base) ? ((char *)(base)+0x7fffffff) : (char *)-1))
00325
# endif
00326
#endif
00327
00328
#endif