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 #ifdef U_IN_DOXYGEN
00294
00295 #define U_COMBINED_IMPLEMENTATION 1
00296 #endif
00297
00298 #if defined(U_COMBINED_IMPLEMENTATION)
00299 #define U_DATA_API U_EXPORT
00300 #define U_COMMON_API U_EXPORT
00301 #define U_I18N_API U_EXPORT
00302 #define U_LAYOUT_API U_EXPORT
00303 #define U_LAYOUTEX_API U_EXPORT
00304 #define U_IO_API U_EXPORT
00305 #define U_TOOLUTIL_API U_EXPORT
00306 #elif defined(U_STATIC_IMPLEMENTATION)
00307 #define U_DATA_API
00308 #define U_COMMON_API
00309 #define U_I18N_API
00310 #define U_LAYOUT_API
00311 #define U_LAYOUTEX_API
00312 #define U_IO_API
00313 #define U_TOOLUTIL_API
00314 #elif defined(U_COMMON_IMPLEMENTATION)
00315 #define U_DATA_API U_IMPORT
00316 #define U_COMMON_API U_EXPORT
00317 #define U_I18N_API U_IMPORT
00318 #define U_LAYOUT_API U_IMPORT
00319 #define U_LAYOUTEX_API U_IMPORT
00320 #define U_IO_API U_IMPORT
00321 #define U_TOOLUTIL_API U_IMPORT
00322 #elif defined(U_I18N_IMPLEMENTATION)
00323 #define U_DATA_API U_IMPORT
00324 #define U_COMMON_API U_IMPORT
00325 #define U_I18N_API U_EXPORT
00326 #define U_LAYOUT_API U_IMPORT
00327 #define U_LAYOUTEX_API U_IMPORT
00328 #define U_IO_API U_IMPORT
00329 #define U_TOOLUTIL_API U_IMPORT
00330 #elif defined(U_LAYOUT_IMPLEMENTATION)
00331 #define U_DATA_API U_IMPORT
00332 #define U_COMMON_API U_IMPORT
00333 #define U_I18N_API U_IMPORT
00334 #define U_LAYOUT_API U_EXPORT
00335 #define U_LAYOUTEX_API U_IMPORT
00336 #define U_IO_API U_IMPORT
00337 #define U_TOOLUTIL_API U_IMPORT
00338 #elif defined(U_LAYOUTEX_IMPLEMENTATION)
00339 #define U_DATA_API U_IMPORT
00340 #define U_COMMON_API U_IMPORT
00341 #define U_I18N_API U_IMPORT
00342 #define U_LAYOUT_API U_IMPORT
00343 #define U_LAYOUTEX_API U_EXPORT
00344 #define U_IO_API U_IMPORT
00345 #define U_TOOLUTIL_API U_IMPORT
00346 #elif defined(U_IO_IMPLEMENTATION)
00347 #define U_DATA_API U_IMPORT
00348 #define U_COMMON_API U_IMPORT
00349 #define U_I18N_API U_IMPORT
00350 #define U_LAYOUT_API U_IMPORT
00351 #define U_LAYOUTEX_API U_IMPORT
00352 #define U_IO_API U_EXPORT
00353 #define U_TOOLUTIL_API U_IMPORT
00354 #elif defined(U_TOOLUTIL_IMPLEMENTATION)
00355 #define U_DATA_API U_IMPORT
00356 #define U_COMMON_API U_IMPORT
00357 #define U_I18N_API U_IMPORT
00358 #define U_LAYOUT_API U_IMPORT
00359 #define U_LAYOUTEX_API U_IMPORT
00360 #define U_IO_API U_IMPORT
00361 #define U_TOOLUTIL_API U_EXPORT
00362 #else
00363 #define U_DATA_API U_IMPORT
00364 #define U_COMMON_API U_IMPORT
00365 #define U_I18N_API U_IMPORT
00366 #define U_LAYOUT_API U_IMPORT
00367 #define U_LAYOUTEX_API U_IMPORT
00368 #define U_IO_API U_IMPORT
00369 #define U_TOOLUTIL_API U_IMPORT
00370 #endif
00371
00377 #ifdef __cplusplus
00378 #define U_STANDARD_CPP_NAMESPACE ::
00379 #else
00380 #define U_STANDARD_CPP_NAMESPACE
00381 #endif
00382
00383
00384
00385
00386
00401 typedef enum UErrorCode {
00402
00403
00404
00405
00406
00407 U_USING_FALLBACK_WARNING = -128,
00409 U_ERROR_WARNING_START = -128,
00411 U_USING_DEFAULT_WARNING = -127,
00413 U_SAFECLONE_ALLOCATED_WARNING = -126,
00415 U_STATE_OLD_WARNING = -125,
00417 U_STRING_NOT_TERMINATED_WARNING = -124,
00419 U_SORT_KEY_TOO_SHORT_WARNING = -123,
00421 U_AMBIGUOUS_ALIAS_WARNING = -122,
00423 U_DIFFERENT_UCA_VERSION = -121,
00425 U_PLUGIN_CHANGED_LEVEL_WARNING = -120,
00427 #ifndef U_HIDE_DEPRECATED_API
00428
00432 U_ERROR_WARNING_LIMIT,
00433 #endif // U_HIDE_DEPRECATED_API
00434
00435 U_ZERO_ERROR = 0,
00437 U_ILLEGAL_ARGUMENT_ERROR = 1,
00438 U_MISSING_RESOURCE_ERROR = 2,
00439 U_INVALID_FORMAT_ERROR = 3,
00440 U_FILE_ACCESS_ERROR = 4,
00441 U_INTERNAL_PROGRAM_ERROR = 5,
00442 U_MESSAGE_PARSE_ERROR = 6,
00443 U_MEMORY_ALLOCATION_ERROR = 7,
00444 U_INDEX_OUTOFBOUNDS_ERROR = 8,
00445 U_PARSE_ERROR = 9,
00446 U_INVALID_CHAR_FOUND = 10,
00447 U_TRUNCATED_CHAR_FOUND = 11,
00448 U_ILLEGAL_CHAR_FOUND = 12,
00449 U_INVALID_TABLE_FORMAT = 13,
00450 U_INVALID_TABLE_FILE = 14,
00451 U_BUFFER_OVERFLOW_ERROR = 15,
00452 U_UNSUPPORTED_ERROR = 16,
00453 U_RESOURCE_TYPE_MISMATCH = 17,
00454 U_ILLEGAL_ESCAPE_SEQUENCE = 18,
00455 U_UNSUPPORTED_ESCAPE_SEQUENCE = 19,
00456 U_NO_SPACE_AVAILABLE = 20,
00457 U_CE_NOT_FOUND_ERROR = 21,
00458 U_PRIMARY_TOO_LONG_ERROR = 22,
00459 U_STATE_TOO_OLD_ERROR = 23,
00460 U_TOO_MANY_ALIASES_ERROR = 24,
00462 U_ENUM_OUT_OF_SYNC_ERROR = 25,
00463 U_INVARIANT_CONVERSION_ERROR = 26,
00464 U_INVALID_STATE_ERROR = 27,
00465 U_COLLATOR_VERSION_MISMATCH = 28,
00466 U_USELESS_COLLATOR_ERROR = 29,
00467 U_NO_WRITE_PERMISSION = 30,
00469 #ifndef U_HIDE_DEPRECATED_API
00470
00474 U_STANDARD_ERROR_LIMIT,
00475 #endif // U_HIDE_DEPRECATED_API
00476
00477
00478
00479
00480 U_BAD_VARIABLE_DEFINITION=0x10000,
00481 U_PARSE_ERROR_START = 0x10000,
00482 U_MALFORMED_RULE,
00483 U_MALFORMED_SET,
00484 U_MALFORMED_SYMBOL_REFERENCE,
00485 U_MALFORMED_UNICODE_ESCAPE,
00486 U_MALFORMED_VARIABLE_DEFINITION,
00487 U_MALFORMED_VARIABLE_REFERENCE,
00488 U_MISMATCHED_SEGMENT_DELIMITERS,
00489 U_MISPLACED_ANCHOR_START,
00490 U_MISPLACED_CURSOR_OFFSET,
00491 U_MISPLACED_QUANTIFIER,
00492 U_MISSING_OPERATOR,
00493 U_MISSING_SEGMENT_CLOSE,
00494 U_MULTIPLE_ANTE_CONTEXTS,
00495 U_MULTIPLE_CURSORS,
00496 U_MULTIPLE_POST_CONTEXTS,
00497 U_TRAILING_BACKSLASH,
00498 U_UNDEFINED_SEGMENT_REFERENCE,
00499 U_UNDEFINED_VARIABLE,
00500 U_UNQUOTED_SPECIAL,
00501 U_UNTERMINATED_QUOTE,
00502 U_RULE_MASK_ERROR,
00503 U_MISPLACED_COMPOUND_FILTER,
00504 U_MULTIPLE_COMPOUND_FILTERS,
00505 U_INVALID_RBT_SYNTAX,
00506 U_INVALID_PROPERTY_PATTERN,
00507 U_MALFORMED_PRAGMA,
00508 U_UNCLOSED_SEGMENT,
00509 U_ILLEGAL_CHAR_IN_SEGMENT,
00510 U_VARIABLE_RANGE_EXHAUSTED,
00511 U_VARIABLE_RANGE_OVERLAP,
00512 U_ILLEGAL_CHARACTER,
00513 U_INTERNAL_TRANSLITERATOR_ERROR,
00514 U_INVALID_ID,
00515 U_INVALID_FUNCTION,
00516 #ifndef U_HIDE_DEPRECATED_API
00517
00521 U_PARSE_ERROR_LIMIT,
00522 #endif // U_HIDE_DEPRECATED_API
00523
00524
00525
00526
00527 U_UNEXPECTED_TOKEN=0x10100,
00528 U_FMT_PARSE_ERROR_START=0x10100,
00529 U_MULTIPLE_DECIMAL_SEPARATORS,
00530 U_MULTIPLE_DECIMAL_SEPERATORS = U_MULTIPLE_DECIMAL_SEPARATORS,
00531 U_MULTIPLE_EXPONENTIAL_SYMBOLS,
00532 U_MALFORMED_EXPONENTIAL_PATTERN,
00533 U_MULTIPLE_PERCENT_SYMBOLS,
00534 U_MULTIPLE_PERMILL_SYMBOLS,
00535 U_MULTIPLE_PAD_SPECIFIERS,
00536 U_PATTERN_SYNTAX_ERROR,
00537 U_ILLEGAL_PAD_POSITION,
00538 U_UNMATCHED_BRACES,
00539 U_UNSUPPORTED_PROPERTY,
00540 U_UNSUPPORTED_ATTRIBUTE,
00541 U_ARGUMENT_TYPE_MISMATCH,
00542 U_DUPLICATE_KEYWORD,
00543 U_UNDEFINED_KEYWORD,
00544 U_DEFAULT_KEYWORD_MISSING,
00545 U_DECIMAL_NUMBER_SYNTAX_ERROR,
00546 U_FORMAT_INEXACT_ERROR,
00547 U_NUMBER_ARG_OUTOFBOUNDS_ERROR,
00548 U_NUMBER_SKELETON_SYNTAX_ERROR,
00549 #ifndef U_HIDE_DEPRECATED_API
00550
00554 U_FMT_PARSE_ERROR_LIMIT = 0x10114,
00555 #endif // U_HIDE_DEPRECATED_API
00556
00557
00558
00559
00560 U_BRK_INTERNAL_ERROR=0x10200,
00561 U_BRK_ERROR_START=0x10200,
00562 U_BRK_HEX_DIGITS_EXPECTED,
00563 U_BRK_SEMICOLON_EXPECTED,
00564 U_BRK_RULE_SYNTAX,
00565 U_BRK_UNCLOSED_SET,
00566 U_BRK_ASSIGN_ERROR,
00567 U_BRK_VARIABLE_REDFINITION,
00568 U_BRK_MISMATCHED_PAREN,
00569 U_BRK_NEW_LINE_IN_QUOTED_STRING,
00570 U_BRK_UNDEFINED_VARIABLE,
00571 U_BRK_INIT_ERROR,
00572 U_BRK_RULE_EMPTY_SET,
00573 U_BRK_UNRECOGNIZED_OPTION,
00574 U_BRK_MALFORMED_RULE_TAG,
00575 #ifndef U_HIDE_DEPRECATED_API
00576
00580 U_BRK_ERROR_LIMIT,
00581 #endif // U_HIDE_DEPRECATED_API
00582
00583
00584
00585
00586 U_REGEX_INTERNAL_ERROR=0x10300,
00587 U_REGEX_ERROR_START=0x10300,
00588 U_REGEX_RULE_SYNTAX,
00589 U_REGEX_INVALID_STATE,
00590 U_REGEX_BAD_ESCAPE_SEQUENCE,
00591 U_REGEX_PROPERTY_SYNTAX,
00592 U_REGEX_UNIMPLEMENTED,
00593 U_REGEX_MISMATCHED_PAREN,
00594 U_REGEX_NUMBER_TOO_BIG,
00595 U_REGEX_BAD_INTERVAL,
00596 U_REGEX_MAX_LT_MIN,
00597 U_REGEX_INVALID_BACK_REF,
00598 U_REGEX_INVALID_FLAG,
00599 U_REGEX_LOOK_BEHIND_LIMIT,
00600 U_REGEX_SET_CONTAINS_STRING,
00601 #ifndef U_HIDE_DEPRECATED_API
00602 U_REGEX_OCTAL_TOO_BIG,
00603 #endif
00604 U_REGEX_MISSING_CLOSE_BRACKET=U_REGEX_SET_CONTAINS_STRING+2,
00605 U_REGEX_INVALID_RANGE,
00606 U_REGEX_STACK_OVERFLOW,
00607 U_REGEX_TIME_OUT,
00608 U_REGEX_STOPPED_BY_CALLER,
00609 U_REGEX_PATTERN_TOO_BIG,
00610 U_REGEX_INVALID_CAPTURE_GROUP_NAME,
00611 #ifndef U_HIDE_DEPRECATED_API
00612
00616 U_REGEX_ERROR_LIMIT=U_REGEX_STOPPED_BY_CALLER+3,
00617 #endif // U_HIDE_DEPRECATED_API
00618
00619
00620
00621
00622 U_IDNA_PROHIBITED_ERROR=0x10400,
00623 U_IDNA_ERROR_START=0x10400,
00624 U_IDNA_UNASSIGNED_ERROR,
00625 U_IDNA_CHECK_BIDI_ERROR,
00626 U_IDNA_STD3_ASCII_RULES_ERROR,
00627 U_IDNA_ACE_PREFIX_ERROR,
00628 U_IDNA_VERIFICATION_ERROR,
00629 U_IDNA_LABEL_TOO_LONG_ERROR,
00630 U_IDNA_ZERO_LENGTH_LABEL_ERROR,
00631 U_IDNA_DOMAIN_NAME_TOO_LONG_ERROR,
00632 #ifndef U_HIDE_DEPRECATED_API
00633
00637 U_IDNA_ERROR_LIMIT,
00638 #endif // U_HIDE_DEPRECATED_API
00639
00640
00641
00642 U_STRINGPREP_PROHIBITED_ERROR = U_IDNA_PROHIBITED_ERROR,
00643 U_STRINGPREP_UNASSIGNED_ERROR = U_IDNA_UNASSIGNED_ERROR,
00644 U_STRINGPREP_CHECK_BIDI_ERROR = U_IDNA_CHECK_BIDI_ERROR,
00645
00646
00647
00648
00649 U_PLUGIN_ERROR_START=0x10500,
00650 U_PLUGIN_TOO_HIGH=0x10500,
00651 U_PLUGIN_DIDNT_SET_LEVEL,
00652 #ifndef U_HIDE_DEPRECATED_API
00653
00657 U_PLUGIN_ERROR_LIMIT,
00658 #endif // U_HIDE_DEPRECATED_API
00659
00660 #ifndef U_HIDE_DEPRECATED_API
00661
00665 U_ERROR_LIMIT=U_PLUGIN_ERROR_LIMIT
00666 #endif // U_HIDE_DEPRECATED_API
00667 } UErrorCode;
00668
00669
00670
00671
00672 #ifdef __cplusplus
00673
00677 static
00678 inline UBool U_SUCCESS(UErrorCode code) { return (UBool)(code<=U_ZERO_ERROR); }
00683 static
00684 inline UBool U_FAILURE(UErrorCode code) { return (UBool)(code>U_ZERO_ERROR); }
00685 #else
00686
00690 # define U_SUCCESS(x) ((x)<=U_ZERO_ERROR)
00691
00695 # define U_FAILURE(x) ((x)>U_ZERO_ERROR)
00696 #endif
00697
00704 U_STABLE const char * U_EXPORT2
00705 u_errorName(UErrorCode code);
00706
00707
00708 #endif