00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef UTYPES_H
00033 #define UTYPES_H
00034
00035
00036 #include "unicode/umachine.h"
00037 #include "unicode/utf.h"
00038 #include "unicode/uversion.h"
00039 #include "unicode/uconfig.h"
00040
00051
00052
00053
00054
00059 #define U_ASCII_FAMILY 0
00060
00065 #define U_EBCDIC_FAMILY 1
00066
00108 #ifndef U_CHARSET_FAMILY
00109 # define U_CHARSET_FAMILY 0
00110 #endif
00111
00112
00113
00114
00115
00132 #if U_CHARSET_FAMILY
00133 # if U_IS_BIG_ENDIAN
00134
00135 # define U_ICUDATA_TYPE_LETTER "e"
00136 # define U_ICUDATA_TYPE_LITLETTER e
00137 # else
00138 # error "Don't know what to do with little endian EBCDIC!"
00139 # define U_ICUDATA_TYPE_LETTER "x"
00140 # define U_ICUDATA_TYPE_LITLETTER x
00141 # endif
00142 #else
00143 # if U_IS_BIG_ENDIAN
00144
00145 # define U_ICUDATA_TYPE_LETTER "b"
00146 # define U_ICUDATA_TYPE_LITLETTER b
00147 # else
00148
00149 # define U_ICUDATA_TYPE_LETTER "l"
00150 # define U_ICUDATA_TYPE_LITLETTER l
00151 # endif
00152 #endif
00153
00159 #define U_ICUDATA_NAME "icudt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER
00160
00161
00173 #define U_ICUDATA_ENTRY_POINT U_DEF2_ICUDATA_ENTRY_POINT(U_ICU_VERSION_MAJOR_NUM, U_ICU_VERSION_MINOR_NUM)
00174
00177 #define U_DEF2_ICUDATA_ENTRY_POINT(major, minor) U_DEF_ICUDATA_ENTRY_POINT(major, minor)
00178
00181 #define U_DEF_ICUDATA_ENTRY_POINT(major, minor) icudt##major##minor##_dat
00182
00194 #if defined(OS390) && (__COMPILER_VER__ < 0x41020000) && defined(XP_CPLUSPLUS)
00195 # define U_CALLCONV __cdecl
00196 #else
00197 # define U_CALLCONV U_EXPORT2
00198 #endif
00199
00205 #ifndef NULL
00206 #ifdef XP_CPLUSPLUS
00207 #define NULL 0
00208 #else
00209 #define NULL ((void *)0)
00210 #endif
00211 #endif
00212
00213
00214
00215
00216
00224 typedef double UDate;
00225
00227 #define U_MILLIS_PER_SECOND (1000)
00228
00229 #define U_MILLIS_PER_MINUTE (60000)
00230
00231 #define U_MILLIS_PER_HOUR (3600000)
00232
00233 #define U_MILLIS_PER_DAY (86400000)
00234
00235
00236
00237
00238
00239
00282 typedef void* UClassID;
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00330 #if defined(U_COMBINED_IMPLEMENTATION)
00331 #define U_COMMON_API U_EXPORT
00332 #define U_I18N_API U_EXPORT
00333 #define U_LAYOUT_API U_EXPORT
00334 #define U_USTDIO_API U_EXPORT
00335 #elif defined(U_STATIC_IMPLEMENTATION)
00336 #define U_COMMON_API
00337 #define U_I18N_API
00338 #define U_LAYOUT_API
00339 #define U_USTDIO_API
00340 #elif defined(U_COMMON_IMPLEMENTATION)
00341 #define U_COMMON_API U_EXPORT
00342 #define U_I18N_API U_IMPORT
00343 #define U_LAYOUT_API U_IMPORT
00344 #define U_USTDIO_API U_IMPORT
00345 #elif defined(U_I18N_IMPLEMENTATION)
00346 #define U_COMMON_API U_IMPORT
00347 #define U_I18N_API U_EXPORT
00348 #define U_LAYOUT_API U_IMPORT
00349 #define U_USTDIO_API U_IMPORT
00350 #elif defined(U_LAYOUT_IMPLEMENTATION)
00351 #define U_COMMON_API U_IMPORT
00352 #define U_I18N_API U_IMPORT
00353 #define U_LAYOUT_API U_EXPORT
00354 #define U_USTDIO_API U_IMPORT
00355 #elif defined(U_USTDIO_IMPLEMENTATION)
00356 #define U_COMMON_API U_IMPORT
00357 #define U_I18N_API U_IMPORT
00358 #define U_LAYOUT_API U_IMPORT
00359 #define U_USTDIO_API U_EXPORT
00360 #else
00361 #define U_COMMON_API U_IMPORT
00362 #define U_I18N_API U_IMPORT
00363 #define U_LAYOUT_API U_IMPORT
00364 #define U_USTDIO_API U_IMPORT
00365 #endif
00366
00372 #ifdef __cplusplus
00373 #define U_STANDARD_CPP_NAMESPACE ::
00374 #else
00375 #define U_STANDARD_CPP_NAMESPACE
00376 #endif
00377
00378
00379
00380
00381
00382
00383
00384
00385
00386
00387
00388
00389
00390
00391
00392
00393
00394
00395
00396
00397
00398
00399
00400
00401
00402
00403 #if defined(XP_CPLUSPLUS) && defined(WIN32) && (_MSC_Ver>=1200) && (defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || defined(U_LAYOUT_IMPLEMENTATION) || defined(U_USTDIO_IMPLEMENTATION))
00404
00410 inline void *
00411 operator new(size_t ) {
00412 char *q=NULL;
00413 *q=5;
00414 return q;
00415 }
00416
00422 inline void *
00423 operator new[](size_t ) {
00424 char *q=NULL;
00425 *q=5;
00426 return q;
00427 }
00428
00434 inline void
00435 operator delete(void * ) {
00436 char *q=NULL;
00437 *q=5;
00438 }
00439
00445 inline void
00446 operator delete[](void * ) {
00447 char *q=NULL;
00448 *q=5;
00449 }
00450
00451 #endif
00452
00453
00454
00455
00456
00471 typedef enum UErrorCode {
00472
00473
00474
00475
00476
00477 U_USING_FALLBACK_WARNING = -128,
00479 U_ERROR_WARNING_START = -128,
00481 U_USING_DEFAULT_WARNING = -127,
00483 U_SAFECLONE_ALLOCATED_WARNING = -126,
00485 U_STATE_OLD_WARNING = -125,
00487 U_STRING_NOT_TERMINATED_WARNING = -124,
00489 U_SORT_KEY_TOO_SHORT_WARNING = -123,
00491 U_AMBIGUOUS_ALIAS_WARNING = -122,
00493 U_ERROR_WARNING_LIMIT,
00495 #ifdef ICU_UERRORCODE_USE_DEPRECATES
00496
00497 U_USING_FALLBACK_ERROR = -128,
00499 U_ERROR_INFO_START = U_ERROR_WARNING_START,
00501 U_USING_DEFAULT_ERROR = -127,
00503 U_SAFECLONE_ALLOCATED_ERROR = -126,
00505 U_ERROR_INFO_LIMIT = U_ERROR_WARNING_LIMIT,
00506 #endif
00507
00508
00509 U_ZERO_ERROR = 0,
00511 U_ILLEGAL_ARGUMENT_ERROR = 1,
00512 U_MISSING_RESOURCE_ERROR = 2,
00513 U_INVALID_FORMAT_ERROR = 3,
00514 U_FILE_ACCESS_ERROR = 4,
00515 U_INTERNAL_PROGRAM_ERROR = 5,
00516 U_MESSAGE_PARSE_ERROR = 6,
00517 U_MEMORY_ALLOCATION_ERROR = 7,
00518 U_INDEX_OUTOFBOUNDS_ERROR = 8,
00519 U_PARSE_ERROR = 9,
00520 U_INVALID_CHAR_FOUND = 10,
00521 U_TRUNCATED_CHAR_FOUND = 11,
00522 U_ILLEGAL_CHAR_FOUND = 12,
00523 U_INVALID_TABLE_FORMAT = 13,
00524 U_INVALID_TABLE_FILE = 14,
00525 U_BUFFER_OVERFLOW_ERROR = 15,
00526 U_UNSUPPORTED_ERROR = 16,
00527 U_RESOURCE_TYPE_MISMATCH = 17,
00528 U_ILLEGAL_ESCAPE_SEQUENCE = 18,
00529 U_UNSUPPORTED_ESCAPE_SEQUENCE = 19,
00530 U_NO_SPACE_AVAILABLE = 20,
00531 U_CE_NOT_FOUND_ERROR = 21,
00532 U_PRIMARY_TOO_LONG_ERROR = 22,
00533 U_STATE_TOO_OLD_ERROR = 23,
00534 U_TOO_MANY_ALIASES_ERROR = 24,
00536 U_ENUM_OUT_OF_SYNC_ERROR = 25,
00537 U_INVARIANT_CONVERSION_ERROR = 26,
00539 U_STANDARD_ERROR_LIMIT,
00540
00541
00542
00543 U_BAD_VARIABLE_DEFINITION=0x10000,
00544 U_PARSE_ERROR_START = 0x10000,
00545 U_MALFORMED_RULE,
00546 U_MALFORMED_SET,
00547 U_MALFORMED_SYMBOL_REFERENCE,
00548 U_MALFORMED_UNICODE_ESCAPE,
00549 U_MALFORMED_VARIABLE_DEFINITION,
00550 U_MALFORMED_VARIABLE_REFERENCE,
00551 U_MISMATCHED_SEGMENT_DELIMITERS,
00552 U_MISPLACED_ANCHOR_START,
00553 U_MISPLACED_CURSOR_OFFSET,
00554 U_MISPLACED_QUANTIFIER,
00555 U_MISSING_OPERATOR,
00556 U_MISSING_SEGMENT_CLOSE,
00557 U_MULTIPLE_ANTE_CONTEXTS,
00558 U_MULTIPLE_CURSORS,
00559 U_MULTIPLE_POST_CONTEXTS,
00560 U_TRAILING_BACKSLASH,
00561 U_UNDEFINED_SEGMENT_REFERENCE,
00562 U_UNDEFINED_VARIABLE,
00563 U_UNQUOTED_SPECIAL,
00564 U_UNTERMINATED_QUOTE,
00565 U_RULE_MASK_ERROR,
00566 U_MISPLACED_COMPOUND_FILTER,
00567 U_MULTIPLE_COMPOUND_FILTERS,
00568 U_INVALID_RBT_SYNTAX,
00569 U_INVALID_PROPERTY_PATTERN,
00570 U_MALFORMED_PRAGMA,
00571 U_UNCLOSED_SEGMENT,
00572 U_ILLEGAL_CHAR_IN_SEGMENT,
00573 U_VARIABLE_RANGE_EXHAUSTED,
00574 U_VARIABLE_RANGE_OVERLAP,
00575 U_ILLEGAL_CHARACTER,
00576 U_INTERNAL_TRANSLITERATOR_ERROR,
00577 U_INVALID_ID,
00578 U_INVALID_FUNCTION,
00579 U_PARSE_ERROR_LIMIT,
00581
00582
00583
00584 U_UNEXPECTED_TOKEN=0x10100,
00585 U_FMT_PARSE_ERROR_START=0x10100,
00586 U_MULTIPLE_DECIMAL_SEPARATORS,
00587 U_MULTIPLE_DECIMAL_SEPERATORS = U_MULTIPLE_DECIMAL_SEPARATORS,
00588 U_MULTIPLE_EXPONENTIAL_SYMBOLS,
00589 U_MALFORMED_EXPONENTIAL_PATTERN,
00590 U_MULTIPLE_PERCENT_SYMBOLS,
00591 U_MULTIPLE_PERMILL_SYMBOLS,
00592 U_MULTIPLE_PAD_SPECIFIERS,
00593 U_PATTERN_SYNTAX_ERROR,
00594 U_ILLEGAL_PAD_POSITION,
00595 U_UNMATCHED_BRACES,
00596 U_UNSUPPORTED_PROPERTY,
00597 U_UNSUPPORTED_ATTRIBUTE,
00598 U_FMT_PARSE_ERROR_LIMIT,
00600
00601
00602
00603 U_BRK_ERROR_START=0x10200,
00604 U_BRK_INTERNAL_ERROR,
00605 U_BRK_HEX_DIGITS_EXPECTED,
00606 U_BRK_SEMICOLON_EXPECTED,
00607 U_BRK_RULE_SYNTAX,
00608 U_BRK_UNCLOSED_SET,
00609 U_BRK_ASSIGN_ERROR,
00610 U_BRK_VARIABLE_REDFINITION,
00611 U_BRK_MISMATCHED_PAREN,
00612 U_BRK_NEW_LINE_IN_QUOTED_STRING,
00613 U_BRK_UNDEFINED_VARIABLE,
00614 U_BRK_INIT_ERROR,
00615 U_BRK_ERROR_LIMIT,
00617
00618
00619
00620 U_REGEX_ERROR_START=0x10300,
00621 U_REGEX_INTERNAL_ERROR,
00622 U_REGEX_RULE_SYNTAX,
00623 U_REGEX_INVALID_STATE,
00624 U_REGEX_BAD_ESCAPE_SEQUENCE,
00625 U_REGEX_PROPERTY_SYNTAX,
00626 U_REGEX_UNIMPLEMENTED,
00627 U_REGEX_MISMATCHED_PAREN,
00628 U_REGEX_ERROR_LIMIT,
00630 U_ERROR_LIMIT=U_REGEX_ERROR_LIMIT
00631 } UErrorCode;
00632
00633
00634
00635
00636 #ifdef XP_CPLUSPLUS
00637
00641 static
00642 inline UBool U_SUCCESS(UErrorCode code) { return (UBool)(code<=U_ZERO_ERROR); }
00647 static
00648 inline UBool U_FAILURE(UErrorCode code) { return (UBool)(code>U_ZERO_ERROR); }
00649 #else
00650
00654 # define U_SUCCESS(x) ((x)<=U_ZERO_ERROR)
00655
00659 # define U_FAILURE(x) ((x)>U_ZERO_ERROR)
00660 #endif
00661
00668 U_CAPI const char * U_EXPORT2
00669 u_errorName(UErrorCode code);
00670
00671
00672
00673
00674
00675
00676
00677 #include "unicode/putil.h"
00678
00679 #endif