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/uversion.h"
00038 #include "unicode/uconfig.h"
00039 #include <float.h>
00040
00041 #if !U_NO_DEFAULT_INCLUDE_UTF_HEADERS
00042 # include "unicode/utf.h"
00043 #endif
00044
00060 #ifdef __cplusplus
00061 # ifndef U_SHOW_CPLUSPLUS_API
00062 # define U_SHOW_CPLUSPLUS_API 1
00063 # endif
00064 #else
00065 # undef U_SHOW_CPLUSPLUS_API
00066 # define U_SHOW_CPLUSPLUS_API 0
00067 #endif
00068
00081 #if !U_DEFAULT_SHOW_DRAFT && !defined(U_SHOW_DRAFT_API)
00082 #define U_HIDE_DRAFT_API 1
00083 #endif
00084 #if !U_DEFAULT_SHOW_DRAFT && !defined(U_SHOW_INTERNAL_API)
00085 #define U_HIDE_INTERNAL_API 1
00086 #endif
00087
00090
00091
00092
00093
00110 #if U_CHARSET_FAMILY
00111 # if U_IS_BIG_ENDIAN
00112
00113 # define U_ICUDATA_TYPE_LETTER "e"
00114 # define U_ICUDATA_TYPE_LITLETTER e
00115 # else
00116 # error "Don't know what to do with little endian EBCDIC!"
00117 # define U_ICUDATA_TYPE_LETTER "x"
00118 # define U_ICUDATA_TYPE_LITLETTER x
00119 # endif
00120 #else
00121 # if U_IS_BIG_ENDIAN
00122
00123 # define U_ICUDATA_TYPE_LETTER "b"
00124 # define U_ICUDATA_TYPE_LITLETTER b
00125 # else
00126
00127 # define U_ICUDATA_TYPE_LETTER "l"
00128 # define U_ICUDATA_TYPE_LITLETTER l
00129 # endif
00130 #endif
00131
00137 #define U_ICUDATA_NAME "icudt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER
00138 #ifndef U_HIDE_INTERNAL_API
00139 #define U_USRDATA_NAME "usrdt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER
00140 #define U_USE_USRDATA 1
00141 #endif
00142
00154 #define U_ICUDATA_ENTRY_POINT U_DEF2_ICUDATA_ENTRY_POINT(U_ICU_VERSION_MAJOR_NUM,U_LIB_SUFFIX_C_NAME)
00155
00156 #ifndef U_HIDE_INTERNAL_API
00157
00161 #define U_DEF2_ICUDATA_ENTRY_POINT(major,suff) U_DEF_ICUDATA_ENTRY_POINT(major,suff)
00162
00167 #ifndef U_DEF_ICUDATA_ENTRY_POINT
00168
00169 #ifndef U_LIB_SUFFIX_C_NAME
00170 #define U_DEF_ICUDATA_ENTRY_POINT(major, suff) icudt##major##_dat
00171 #else
00172 #define U_DEF_ICUDATA_ENTRY_POINT(major, suff) icudt##suff ## major##_dat
00173 #endif
00174 #endif
00175 #endif
00176
00182 #ifndef NULL
00183 #ifdef __cplusplus
00184 #define NULL 0
00185 #else
00186 #define NULL ((void *)0)
00187 #endif
00188 #endif
00189
00190
00191
00192
00193
00201 typedef double UDate;
00202
00204 #define U_MILLIS_PER_SECOND (1000)
00205
00206 #define U_MILLIS_PER_MINUTE (60000)
00207
00208 #define U_MILLIS_PER_HOUR (3600000)
00209
00210 #define U_MILLIS_PER_DAY (86400000)
00211
00216 #define U_DATE_MAX DBL_MAX
00217
00222 #define U_DATE_MIN -U_DATE_MAX
00223
00224
00225
00226
00227
00228
00229
00230
00231
00232
00291 #if defined(U_COMBINED_IMPLEMENTATION)
00292 #define U_DATA_API U_EXPORT
00293 #define U_COMMON_API U_EXPORT
00294 #define U_I18N_API U_EXPORT
00295 #define U_LAYOUT_API U_EXPORT
00296 #define U_LAYOUTEX_API U_EXPORT
00297 #define U_IO_API U_EXPORT
00298 #define U_TOOLUTIL_API U_EXPORT
00299 #elif defined(U_STATIC_IMPLEMENTATION)
00300 #define U_DATA_API
00301 #define U_COMMON_API
00302 #define U_I18N_API
00303 #define U_LAYOUT_API
00304 #define U_LAYOUTEX_API
00305 #define U_IO_API
00306 #define U_TOOLUTIL_API
00307 #elif defined(U_COMMON_IMPLEMENTATION)
00308 #define U_DATA_API U_IMPORT
00309 #define U_COMMON_API U_EXPORT
00310 #define U_I18N_API U_IMPORT
00311 #define U_LAYOUT_API U_IMPORT
00312 #define U_LAYOUTEX_API U_IMPORT
00313 #define U_IO_API U_IMPORT
00314 #define U_TOOLUTIL_API U_IMPORT
00315 #elif defined(U_I18N_IMPLEMENTATION)
00316 #define U_DATA_API U_IMPORT
00317 #define U_COMMON_API U_IMPORT
00318 #define U_I18N_API U_EXPORT
00319 #define U_LAYOUT_API U_IMPORT
00320 #define U_LAYOUTEX_API U_IMPORT
00321 #define U_IO_API U_IMPORT
00322 #define U_TOOLUTIL_API U_IMPORT
00323 #elif defined(U_LAYOUT_IMPLEMENTATION)
00324 #define U_DATA_API U_IMPORT
00325 #define U_COMMON_API U_IMPORT
00326 #define U_I18N_API U_IMPORT
00327 #define U_LAYOUT_API U_EXPORT
00328 #define U_LAYOUTEX_API U_IMPORT
00329 #define U_IO_API U_IMPORT
00330 #define U_TOOLUTIL_API U_IMPORT
00331 #elif defined(U_LAYOUTEX_IMPLEMENTATION)
00332 #define U_DATA_API U_IMPORT
00333 #define U_COMMON_API U_IMPORT
00334 #define U_I18N_API U_IMPORT
00335 #define U_LAYOUT_API U_IMPORT
00336 #define U_LAYOUTEX_API U_EXPORT
00337 #define U_IO_API U_IMPORT
00338 #define U_TOOLUTIL_API U_IMPORT
00339 #elif defined(U_IO_IMPLEMENTATION)
00340 #define U_DATA_API U_IMPORT
00341 #define U_COMMON_API U_IMPORT
00342 #define U_I18N_API U_IMPORT
00343 #define U_LAYOUT_API U_IMPORT
00344 #define U_LAYOUTEX_API U_IMPORT
00345 #define U_IO_API U_EXPORT
00346 #define U_TOOLUTIL_API U_IMPORT
00347 #elif defined(U_TOOLUTIL_IMPLEMENTATION)
00348 #define U_DATA_API U_IMPORT
00349 #define U_COMMON_API U_IMPORT
00350 #define U_I18N_API U_IMPORT
00351 #define U_LAYOUT_API U_IMPORT
00352 #define U_LAYOUTEX_API U_IMPORT
00353 #define U_IO_API U_IMPORT
00354 #define U_TOOLUTIL_API U_EXPORT
00355 #else
00356 #define U_DATA_API U_IMPORT
00357 #define U_COMMON_API U_IMPORT
00358 #define U_I18N_API U_IMPORT
00359 #define U_LAYOUT_API U_IMPORT
00360 #define U_LAYOUTEX_API U_IMPORT
00361 #define U_IO_API U_IMPORT
00362 #define U_TOOLUTIL_API U_IMPORT
00363 #endif
00364
00370 #ifdef __cplusplus
00371 #define U_STANDARD_CPP_NAMESPACE ::
00372 #else
00373 #define U_STANDARD_CPP_NAMESPACE
00374 #endif
00375
00376
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 #if defined(__cplusplus) && U_DEBUG && U_OVERRIDE_CXX_ALLOCATION && (_MSC_VER>=1200) && !defined(U_STATIC_IMPLEMENTATION) && (defined(U_COMMON_IMPLEMENTATION) || defined(U_I18N_IMPLEMENTATION) || defined(U_IO_IMPLEMENTATION) || defined(U_LAYOUT_IMPLEMENTATION) || defined(U_LAYOUTEX_IMPLEMENTATION))
00403
00404 #ifndef U_HIDE_INTERNAL_API
00405
00410 inline void *
00411 operator new(size_t ) {
00412 char *q=NULL;
00413 *q=5;
00414 return q;
00415 }
00416
00417 #ifdef _Ret_bytecap_
00418
00419 _Ret_bytecap_(_Size)
00420 #endif
00421
00426 inline void *
00427 operator new[](size_t ) {
00428 char *q=NULL;
00429 *q=5;
00430 return q;
00431 }
00432
00438 inline void
00439 operator delete(void * ) {
00440 char *q=NULL;
00441 *q=5;
00442 }
00443
00449 inline void
00450 operator delete[](void * ) {
00451 char *q=NULL;
00452 *q=5;
00453 }
00454
00455 #endif
00456 #endif
00457
00458
00459
00460
00461
00476 typedef enum UErrorCode {
00477
00478
00479
00480
00481
00482 U_USING_FALLBACK_WARNING = -128,
00484 U_ERROR_WARNING_START = -128,
00486 U_USING_DEFAULT_WARNING = -127,
00488 U_SAFECLONE_ALLOCATED_WARNING = -126,
00490 U_STATE_OLD_WARNING = -125,
00492 U_STRING_NOT_TERMINATED_WARNING = -124,
00494 U_SORT_KEY_TOO_SHORT_WARNING = -123,
00496 U_AMBIGUOUS_ALIAS_WARNING = -122,
00498 U_DIFFERENT_UCA_VERSION = -121,
00500 U_PLUGIN_CHANGED_LEVEL_WARNING = -120,
00502 U_ERROR_WARNING_LIMIT,
00505 U_ZERO_ERROR = 0,
00507 U_ILLEGAL_ARGUMENT_ERROR = 1,
00508 U_MISSING_RESOURCE_ERROR = 2,
00509 U_INVALID_FORMAT_ERROR = 3,
00510 U_FILE_ACCESS_ERROR = 4,
00511 U_INTERNAL_PROGRAM_ERROR = 5,
00512 U_MESSAGE_PARSE_ERROR = 6,
00513 U_MEMORY_ALLOCATION_ERROR = 7,
00514 U_INDEX_OUTOFBOUNDS_ERROR = 8,
00515 U_PARSE_ERROR = 9,
00516 U_INVALID_CHAR_FOUND = 10,
00517 U_TRUNCATED_CHAR_FOUND = 11,
00518 U_ILLEGAL_CHAR_FOUND = 12,
00519 U_INVALID_TABLE_FORMAT = 13,
00520 U_INVALID_TABLE_FILE = 14,
00521 U_BUFFER_OVERFLOW_ERROR = 15,
00522 U_UNSUPPORTED_ERROR = 16,
00523 U_RESOURCE_TYPE_MISMATCH = 17,
00524 U_ILLEGAL_ESCAPE_SEQUENCE = 18,
00525 U_UNSUPPORTED_ESCAPE_SEQUENCE = 19,
00526 U_NO_SPACE_AVAILABLE = 20,
00527 U_CE_NOT_FOUND_ERROR = 21,
00528 U_PRIMARY_TOO_LONG_ERROR = 22,
00529 U_STATE_TOO_OLD_ERROR = 23,
00530 U_TOO_MANY_ALIASES_ERROR = 24,
00532 U_ENUM_OUT_OF_SYNC_ERROR = 25,
00533 U_INVARIANT_CONVERSION_ERROR = 26,
00534 U_INVALID_STATE_ERROR = 27,
00535 U_COLLATOR_VERSION_MISMATCH = 28,
00536 U_USELESS_COLLATOR_ERROR = 29,
00537 U_NO_WRITE_PERMISSION = 30,
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_ARGUMENT_TYPE_MISMATCH,
00599 U_DUPLICATE_KEYWORD,
00600 U_UNDEFINED_KEYWORD,
00601 U_DEFAULT_KEYWORD_MISSING,
00602 U_DECIMAL_NUMBER_SYNTAX_ERROR,
00603 U_FORMAT_INEXACT_ERROR,
00604 U_FMT_PARSE_ERROR_LIMIT,
00606
00607
00608
00609 U_BRK_INTERNAL_ERROR=0x10200,
00610 U_BRK_ERROR_START=0x10200,
00611 U_BRK_HEX_DIGITS_EXPECTED,
00612 U_BRK_SEMICOLON_EXPECTED,
00613 U_BRK_RULE_SYNTAX,
00614 U_BRK_UNCLOSED_SET,
00615 U_BRK_ASSIGN_ERROR,
00616 U_BRK_VARIABLE_REDFINITION,
00617 U_BRK_MISMATCHED_PAREN,
00618 U_BRK_NEW_LINE_IN_QUOTED_STRING,
00619 U_BRK_UNDEFINED_VARIABLE,
00620 U_BRK_INIT_ERROR,
00621 U_BRK_RULE_EMPTY_SET,
00622 U_BRK_UNRECOGNIZED_OPTION,
00623 U_BRK_MALFORMED_RULE_TAG,
00624 U_BRK_ERROR_LIMIT,
00626
00627
00628
00629 U_REGEX_INTERNAL_ERROR=0x10300,
00630 U_REGEX_ERROR_START=0x10300,
00631 U_REGEX_RULE_SYNTAX,
00632 U_REGEX_INVALID_STATE,
00633 U_REGEX_BAD_ESCAPE_SEQUENCE,
00634 U_REGEX_PROPERTY_SYNTAX,
00635 U_REGEX_UNIMPLEMENTED,
00636 U_REGEX_MISMATCHED_PAREN,
00637 U_REGEX_NUMBER_TOO_BIG,
00638 U_REGEX_BAD_INTERVAL,
00639 U_REGEX_MAX_LT_MIN,
00640 U_REGEX_INVALID_BACK_REF,
00641 U_REGEX_INVALID_FLAG,
00642 U_REGEX_LOOK_BEHIND_LIMIT,
00643 U_REGEX_SET_CONTAINS_STRING,
00644 U_REGEX_OCTAL_TOO_BIG,
00645 U_REGEX_MISSING_CLOSE_BRACKET,
00646 U_REGEX_INVALID_RANGE,
00647 U_REGEX_STACK_OVERFLOW,
00648 U_REGEX_TIME_OUT,
00649 U_REGEX_STOPPED_BY_CALLER,
00650 U_REGEX_ERROR_LIMIT,
00652
00653
00654
00655 U_IDNA_PROHIBITED_ERROR=0x10400,
00656 U_IDNA_ERROR_START=0x10400,
00657 U_IDNA_UNASSIGNED_ERROR,
00658 U_IDNA_CHECK_BIDI_ERROR,
00659 U_IDNA_STD3_ASCII_RULES_ERROR,
00660 U_IDNA_ACE_PREFIX_ERROR,
00661 U_IDNA_VERIFICATION_ERROR,
00662 U_IDNA_LABEL_TOO_LONG_ERROR,
00663 U_IDNA_ZERO_LENGTH_LABEL_ERROR,
00664 U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR,
00665 U_IDNA_ERROR_LIMIT,
00666
00667
00668
00669 U_STRINGPREP_PROHIBITED_ERROR = U_IDNA_PROHIBITED_ERROR,
00670 U_STRINGPREP_UNASSIGNED_ERROR = U_IDNA_UNASSIGNED_ERROR,
00671 U_STRINGPREP_CHECK_BIDI_ERROR = U_IDNA_CHECK_BIDI_ERROR,
00672
00673
00674
00675
00676 U_PLUGIN_ERROR_START=0x10500,
00677 U_PLUGIN_TOO_HIGH=0x10500,
00678 U_PLUGIN_DIDNT_SET_LEVEL,
00679 U_PLUGIN_ERROR_LIMIT,
00681 U_ERROR_LIMIT=U_PLUGIN_ERROR_LIMIT
00682 } UErrorCode;
00683
00684
00685
00686
00687 #ifdef __cplusplus
00688
00692 static
00693 inline UBool U_SUCCESS(UErrorCode code) { return (UBool)(code<=U_ZERO_ERROR); }
00698 static
00699 inline UBool U_FAILURE(UErrorCode code) { return (UBool)(code>U_ZERO_ERROR); }
00700 #else
00701
00705 # define U_SUCCESS(x) ((x)<=U_ZERO_ERROR)
00706
00710 # define U_FAILURE(x) ((x)>U_ZERO_ERROR)
00711 #endif
00712
00719 U_STABLE const char * U_EXPORT2
00720 u_errorName(UErrorCode code);
00721
00722
00723 #endif