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
00033
00034 #ifndef UTYPES_H
00035 #define UTYPES_H
00036
00037
00038 #include "unicode/umachine.h"
00039 #include "unicode/uversion.h"
00040 #include "unicode/uconfig.h"
00041 #include <float.h>
00042
00043 #if !U_NO_DEFAULT_INCLUDE_UTF_HEADERS
00044 # include "unicode/utf.h"
00045 #endif
00046
00062 #ifdef __cplusplus
00063 # ifndef U_SHOW_CPLUSPLUS_API
00064 # define U_SHOW_CPLUSPLUS_API 1
00065 # endif
00066 #else
00067 # undef U_SHOW_CPLUSPLUS_API
00068 # define U_SHOW_CPLUSPLUS_API 0
00069 #endif
00070
00083 #if !U_DEFAULT_SHOW_DRAFT && !defined(U_SHOW_DRAFT_API)
00084 #define U_HIDE_DRAFT_API 1
00085 #endif
00086 #if !U_DEFAULT_SHOW_DRAFT && !defined(U_SHOW_INTERNAL_API)
00087 #define U_HIDE_INTERNAL_API 1
00088 #endif
00089
00092
00093
00094
00095
00112 #if U_CHARSET_FAMILY
00113 # if U_IS_BIG_ENDIAN
00114
00115 # define U_ICUDATA_TYPE_LETTER "e"
00116 # define U_ICUDATA_TYPE_LITLETTER e
00117 # else
00118 # error "Don't know what to do with little endian EBCDIC!"
00119 # define U_ICUDATA_TYPE_LETTER "x"
00120 # define U_ICUDATA_TYPE_LITLETTER x
00121 # endif
00122 #else
00123 # if U_IS_BIG_ENDIAN
00124
00125 # define U_ICUDATA_TYPE_LETTER "b"
00126 # define U_ICUDATA_TYPE_LITLETTER b
00127 # else
00128
00129 # define U_ICUDATA_TYPE_LETTER "l"
00130 # define U_ICUDATA_TYPE_LITLETTER l
00131 # endif
00132 #endif
00133
00139 #define U_ICUDATA_NAME "icudt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER
00140 #ifndef U_HIDE_INTERNAL_API
00141 #define U_USRDATA_NAME "usrdt" U_ICU_VERSION_SHORT U_ICUDATA_TYPE_LETTER
00142 #define U_USE_USRDATA 0
00143 #endif
00144
00156 #define U_ICUDATA_ENTRY_POINT U_DEF2_ICUDATA_ENTRY_POINT(U_ICU_VERSION_MAJOR_NUM,U_LIB_SUFFIX_C_NAME)
00157
00158 #ifndef U_HIDE_INTERNAL_API
00159
00163 #define U_DEF2_ICUDATA_ENTRY_POINT(major,suff) U_DEF_ICUDATA_ENTRY_POINT(major,suff)
00164
00169 #ifndef U_DEF_ICUDATA_ENTRY_POINT
00170
00171 #ifndef U_LIB_SUFFIX_C_NAME
00172 #define U_DEF_ICUDATA_ENTRY_POINT(major, suff) icudt##major##_dat
00173 #else
00174 #define U_DEF_ICUDATA_ENTRY_POINT(major, suff) icudt##suff ## major##_dat
00175 #endif
00176 #endif
00177 #endif
00178
00184 #ifndef NULL
00185 #ifdef __cplusplus
00186 #define NULL nullptr
00187 #else
00188 #define NULL ((void *)0)
00189 #endif
00190 #endif
00191
00192
00193
00194
00195
00203 typedef double UDate;
00204
00206 #define U_MILLIS_PER_SECOND (1000)
00207
00208 #define U_MILLIS_PER_MINUTE (60000)
00209
00210 #define U_MILLIS_PER_HOUR (3600000)
00211
00212 #define U_MILLIS_PER_DAY (86400000)
00213
00218 #define U_DATE_MAX DBL_MAX
00219
00224 #define U_DATE_MIN -U_DATE_MAX
00225
00226
00227
00228
00229
00230
00231
00232
00233
00234
00293 #if defined(U_COMBINED_IMPLEMENTATION)
00294 #define U_DATA_API U_EXPORT
00295 #define U_COMMON_API U_EXPORT
00296 #define U_I18N_API U_EXPORT
00297 #define U_LAYOUT_API U_EXPORT
00298 #define U_LAYOUTEX_API U_EXPORT
00299 #define U_IO_API U_EXPORT
00300 #define U_TOOLUTIL_API U_EXPORT
00301 #elif defined(U_STATIC_IMPLEMENTATION)
00302 #define U_DATA_API
00303 #define U_COMMON_API
00304 #define U_I18N_API
00305 #define U_LAYOUT_API
00306 #define U_LAYOUTEX_API
00307 #define U_IO_API
00308 #define U_TOOLUTIL_API
00309 #elif defined(U_COMMON_IMPLEMENTATION)
00310 #define U_DATA_API U_IMPORT
00311 #define U_COMMON_API U_EXPORT
00312 #define U_I18N_API U_IMPORT
00313 #define U_LAYOUT_API U_IMPORT
00314 #define U_LAYOUTEX_API U_IMPORT
00315 #define U_IO_API U_IMPORT
00316 #define U_TOOLUTIL_API U_IMPORT
00317 #elif defined(U_I18N_IMPLEMENTATION)
00318 #define U_DATA_API U_IMPORT
00319 #define U_COMMON_API U_IMPORT
00320 #define U_I18N_API U_EXPORT
00321 #define U_LAYOUT_API U_IMPORT
00322 #define U_LAYOUTEX_API U_IMPORT
00323 #define U_IO_API U_IMPORT
00324 #define U_TOOLUTIL_API U_IMPORT
00325 #elif defined(U_LAYOUT_IMPLEMENTATION)
00326 #define U_DATA_API U_IMPORT
00327 #define U_COMMON_API U_IMPORT
00328 #define U_I18N_API U_IMPORT
00329 #define U_LAYOUT_API U_EXPORT
00330 #define U_LAYOUTEX_API U_IMPORT
00331 #define U_IO_API U_IMPORT
00332 #define U_TOOLUTIL_API U_IMPORT
00333 #elif defined(U_LAYOUTEX_IMPLEMENTATION)
00334 #define U_DATA_API U_IMPORT
00335 #define U_COMMON_API U_IMPORT
00336 #define U_I18N_API U_IMPORT
00337 #define U_LAYOUT_API U_IMPORT
00338 #define U_LAYOUTEX_API U_EXPORT
00339 #define U_IO_API U_IMPORT
00340 #define U_TOOLUTIL_API U_IMPORT
00341 #elif defined(U_IO_IMPLEMENTATION)
00342 #define U_DATA_API U_IMPORT
00343 #define U_COMMON_API U_IMPORT
00344 #define U_I18N_API U_IMPORT
00345 #define U_LAYOUT_API U_IMPORT
00346 #define U_LAYOUTEX_API U_IMPORT
00347 #define U_IO_API U_EXPORT
00348 #define U_TOOLUTIL_API U_IMPORT
00349 #elif defined(U_TOOLUTIL_IMPLEMENTATION)
00350 #define U_DATA_API U_IMPORT
00351 #define U_COMMON_API U_IMPORT
00352 #define U_I18N_API U_IMPORT
00353 #define U_LAYOUT_API U_IMPORT
00354 #define U_LAYOUTEX_API U_IMPORT
00355 #define U_IO_API U_IMPORT
00356 #define U_TOOLUTIL_API U_EXPORT
00357 #else
00358 #define U_DATA_API U_IMPORT
00359 #define U_COMMON_API U_IMPORT
00360 #define U_I18N_API U_IMPORT
00361 #define U_LAYOUT_API U_IMPORT
00362 #define U_LAYOUTEX_API U_IMPORT
00363 #define U_IO_API U_IMPORT
00364 #define U_TOOLUTIL_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
00396 typedef enum UErrorCode {
00397
00398
00399
00400
00401
00402 U_USING_FALLBACK_WARNING = -128,
00404 U_ERROR_WARNING_START = -128,
00406 U_USING_DEFAULT_WARNING = -127,
00408 U_SAFECLONE_ALLOCATED_WARNING = -126,
00410 U_STATE_OLD_WARNING = -125,
00412 U_STRING_NOT_TERMINATED_WARNING = -124,
00414 U_SORT_KEY_TOO_SHORT_WARNING = -123,
00416 U_AMBIGUOUS_ALIAS_WARNING = -122,
00418 U_DIFFERENT_UCA_VERSION = -121,
00420 U_PLUGIN_CHANGED_LEVEL_WARNING = -120,
00422 #ifndef U_HIDE_DEPRECATED_API
00423
00427 U_ERROR_WARNING_LIMIT,
00428 #endif // U_HIDE_DEPRECATED_API
00429
00430 U_ZERO_ERROR = 0,
00432 U_ILLEGAL_ARGUMENT_ERROR = 1,
00433 U_MISSING_RESOURCE_ERROR = 2,
00434 U_INVALID_FORMAT_ERROR = 3,
00435 U_FILE_ACCESS_ERROR = 4,
00436 U_INTERNAL_PROGRAM_ERROR = 5,
00437 U_MESSAGE_PARSE_ERROR = 6,
00438 U_MEMORY_ALLOCATION_ERROR = 7,
00439 U_INDEX_OUTOFBOUNDS_ERROR = 8,
00440 U_PARSE_ERROR = 9,
00441 U_INVALID_CHAR_FOUND = 10,
00442 U_TRUNCATED_CHAR_FOUND = 11,
00443 U_ILLEGAL_CHAR_FOUND = 12,
00444 U_INVALID_TABLE_FORMAT = 13,
00445 U_INVALID_TABLE_FILE = 14,
00446 U_BUFFER_OVERFLOW_ERROR = 15,
00447 U_UNSUPPORTED_ERROR = 16,
00448 U_RESOURCE_TYPE_MISMATCH = 17,
00449 U_ILLEGAL_ESCAPE_SEQUENCE = 18,
00450 U_UNSUPPORTED_ESCAPE_SEQUENCE = 19,
00451 U_NO_SPACE_AVAILABLE = 20,
00452 U_CE_NOT_FOUND_ERROR = 21,
00453 U_PRIMARY_TOO_LONG_ERROR = 22,
00454 U_STATE_TOO_OLD_ERROR = 23,
00455 U_TOO_MANY_ALIASES_ERROR = 24,
00457 U_ENUM_OUT_OF_SYNC_ERROR = 25,
00458 U_INVARIANT_CONVERSION_ERROR = 26,
00459 U_INVALID_STATE_ERROR = 27,
00460 U_COLLATOR_VERSION_MISMATCH = 28,
00461 U_USELESS_COLLATOR_ERROR = 29,
00462 U_NO_WRITE_PERMISSION = 30,
00464 #ifndef U_HIDE_DEPRECATED_API
00465
00469 U_STANDARD_ERROR_LIMIT,
00470 #endif // U_HIDE_DEPRECATED_API
00471
00472
00473
00474
00475 U_BAD_VARIABLE_DEFINITION=0x10000,
00476 U_PARSE_ERROR_START = 0x10000,
00477 U_MALFORMED_RULE,
00478 U_MALFORMED_SET,
00479 U_MALFORMED_SYMBOL_REFERENCE,
00480 U_MALFORMED_UNICODE_ESCAPE,
00481 U_MALFORMED_VARIABLE_DEFINITION,
00482 U_MALFORMED_VARIABLE_REFERENCE,
00483 U_MISMATCHED_SEGMENT_DELIMITERS,
00484 U_MISPLACED_ANCHOR_START,
00485 U_MISPLACED_CURSOR_OFFSET,
00486 U_MISPLACED_QUANTIFIER,
00487 U_MISSING_OPERATOR,
00488 U_MISSING_SEGMENT_CLOSE,
00489 U_MULTIPLE_ANTE_CONTEXTS,
00490 U_MULTIPLE_CURSORS,
00491 U_MULTIPLE_POST_CONTEXTS,
00492 U_TRAILING_BACKSLASH,
00493 U_UNDEFINED_SEGMENT_REFERENCE,
00494 U_UNDEFINED_VARIABLE,
00495 U_UNQUOTED_SPECIAL,
00496 U_UNTERMINATED_QUOTE,
00497 U_RULE_MASK_ERROR,
00498 U_MISPLACED_COMPOUND_FILTER,
00499 U_MULTIPLE_COMPOUND_FILTERS,
00500 U_INVALID_RBT_SYNTAX,
00501 U_INVALID_PROPERTY_PATTERN,
00502 U_MALFORMED_PRAGMA,
00503 U_UNCLOSED_SEGMENT,
00504 U_ILLEGAL_CHAR_IN_SEGMENT,
00505 U_VARIABLE_RANGE_EXHAUSTED,
00506 U_VARIABLE_RANGE_OVERLAP,
00507 U_ILLEGAL_CHARACTER,
00508 U_INTERNAL_TRANSLITERATOR_ERROR,
00509 U_INVALID_ID,
00510 U_INVALID_FUNCTION,
00511 #ifndef U_HIDE_DEPRECATED_API
00512
00516 U_PARSE_ERROR_LIMIT,
00517 #endif // U_HIDE_DEPRECATED_API
00518
00519
00520
00521
00522 U_UNEXPECTED_TOKEN=0x10100,
00523 U_FMT_PARSE_ERROR_START=0x10100,
00524 U_MULTIPLE_DECIMAL_SEPARATORS,
00525 U_MULTIPLE_DECIMAL_SEPERATORS = U_MULTIPLE_DECIMAL_SEPARATORS,
00526 U_MULTIPLE_EXPONENTIAL_SYMBOLS,
00527 U_MALFORMED_EXPONENTIAL_PATTERN,
00528 U_MULTIPLE_PERCENT_SYMBOLS,
00529 U_MULTIPLE_PERMILL_SYMBOLS,
00530 U_MULTIPLE_PAD_SPECIFIERS,
00531 U_PATTERN_SYNTAX_ERROR,
00532 U_ILLEGAL_PAD_POSITION,
00533 U_UNMATCHED_BRACES,
00534 U_UNSUPPORTED_PROPERTY,
00535 U_UNSUPPORTED_ATTRIBUTE,
00536 U_ARGUMENT_TYPE_MISMATCH,
00537 U_DUPLICATE_KEYWORD,
00538 U_UNDEFINED_KEYWORD,
00539 U_DEFAULT_KEYWORD_MISSING,
00540 U_DECIMAL_NUMBER_SYNTAX_ERROR,
00541 U_FORMAT_INEXACT_ERROR,
00542 #ifndef U_HIDE_DEPRECATED_API
00543
00547 U_FMT_PARSE_ERROR_LIMIT,
00548 #endif // U_HIDE_DEPRECATED_API
00549
00550
00551
00552
00553 U_BRK_INTERNAL_ERROR=0x10200,
00554 U_BRK_ERROR_START=0x10200,
00555 U_BRK_HEX_DIGITS_EXPECTED,
00556 U_BRK_SEMICOLON_EXPECTED,
00557 U_BRK_RULE_SYNTAX,
00558 U_BRK_UNCLOSED_SET,
00559 U_BRK_ASSIGN_ERROR,
00560 U_BRK_VARIABLE_REDFINITION,
00561 U_BRK_MISMATCHED_PAREN,
00562 U_BRK_NEW_LINE_IN_QUOTED_STRING,
00563 U_BRK_UNDEFINED_VARIABLE,
00564 U_BRK_INIT_ERROR,
00565 U_BRK_RULE_EMPTY_SET,
00566 U_BRK_UNRECOGNIZED_OPTION,
00567 U_BRK_MALFORMED_RULE_TAG,
00568 #ifndef U_HIDE_DEPRECATED_API
00569
00573 U_BRK_ERROR_LIMIT,
00574 #endif // U_HIDE_DEPRECATED_API
00575
00576
00577
00578
00579 U_REGEX_INTERNAL_ERROR=0x10300,
00580 U_REGEX_ERROR_START=0x10300,
00581 U_REGEX_RULE_SYNTAX,
00582 U_REGEX_INVALID_STATE,
00583 U_REGEX_BAD_ESCAPE_SEQUENCE,
00584 U_REGEX_PROPERTY_SYNTAX,
00585 U_REGEX_UNIMPLEMENTED,
00586 U_REGEX_MISMATCHED_PAREN,
00587 U_REGEX_NUMBER_TOO_BIG,
00588 U_REGEX_BAD_INTERVAL,
00589 U_REGEX_MAX_LT_MIN,
00590 U_REGEX_INVALID_BACK_REF,
00591 U_REGEX_INVALID_FLAG,
00592 U_REGEX_LOOK_BEHIND_LIMIT,
00593 U_REGEX_SET_CONTAINS_STRING,
00594 #ifndef U_HIDE_DEPRECATED_API
00595 U_REGEX_OCTAL_TOO_BIG,
00596 #endif
00597 U_REGEX_MISSING_CLOSE_BRACKET=U_REGEX_SET_CONTAINS_STRING+2,
00598 U_REGEX_INVALID_RANGE,
00599 U_REGEX_STACK_OVERFLOW,
00600 U_REGEX_TIME_OUT,
00601 U_REGEX_STOPPED_BY_CALLER,
00602 U_REGEX_PATTERN_TOO_BIG,
00603 U_REGEX_INVALID_CAPTURE_GROUP_NAME,
00604 #ifndef U_HIDE_DEPRECATED_API
00605
00609 U_REGEX_ERROR_LIMIT=U_REGEX_STOPPED_BY_CALLER+3,
00610 #endif // U_HIDE_DEPRECATED_API
00611
00612
00613
00614
00615 U_IDNA_PROHIBITED_ERROR=0x10400,
00616 U_IDNA_ERROR_START=0x10400,
00617 U_IDNA_UNASSIGNED_ERROR,
00618 U_IDNA_CHECK_BIDI_ERROR,
00619 U_IDNA_STD3_ASCII_RULES_ERROR,
00620 U_IDNA_ACE_PREFIX_ERROR,
00621 U_IDNA_VERIFICATION_ERROR,
00622 U_IDNA_LABEL_TOO_LONG_ERROR,
00623 U_IDNA_ZERO_LENGTH_LABEL_ERROR,
00624 U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR,
00625 #ifndef U_HIDE_DEPRECATED_API
00626
00630 U_IDNA_ERROR_LIMIT,
00631 #endif // U_HIDE_DEPRECATED_API
00632
00633
00634
00635 U_STRINGPREP_PROHIBITED_ERROR = U_IDNA_PROHIBITED_ERROR,
00636 U_STRINGPREP_UNASSIGNED_ERROR = U_IDNA_UNASSIGNED_ERROR,
00637 U_STRINGPREP_CHECK_BIDI_ERROR = U_IDNA_CHECK_BIDI_ERROR,
00638
00639
00640
00641
00642 U_PLUGIN_ERROR_START=0x10500,
00643 U_PLUGIN_TOO_HIGH=0x10500,
00644 U_PLUGIN_DIDNT_SET_LEVEL,
00645 #ifndef U_HIDE_DEPRECATED_API
00646
00650 U_PLUGIN_ERROR_LIMIT,
00651 #endif // U_HIDE_DEPRECATED_API
00652
00653 #ifndef U_HIDE_DEPRECATED_API
00654
00658 U_ERROR_LIMIT=U_PLUGIN_ERROR_LIMIT
00659 #endif // U_HIDE_DEPRECATED_API
00660 } UErrorCode;
00661
00662
00663
00664
00665 #ifdef __cplusplus
00666
00670 static
00671 inline UBool U_SUCCESS(UErrorCode code) { return (UBool)(code<=U_ZERO_ERROR); }
00676 static
00677 inline UBool U_FAILURE(UErrorCode code) { return (UBool)(code>U_ZERO_ERROR); }
00678 #else
00679
00683 # define U_SUCCESS(x) ((x)<=U_ZERO_ERROR)
00684
00688 # define U_FAILURE(x) ((x)>U_ZERO_ERROR)
00689 #endif
00690
00697 U_STABLE const char * U_EXPORT2
00698 u_errorName(UErrorCode code);
00699
00700
00701 #endif