utypes.h

Go to the documentation of this file.
00001 /*
00002 **********************************************************************
00003 *   Copyright (C) 1996-2012, International Business Machines
00004 *   Corporation and others.  All Rights Reserved.
00005 **********************************************************************
00006 *
00007 *  FILE NAME : UTYPES.H (formerly ptypes.h)
00008 *
00009 *   Date        Name        Description
00010 *   12/11/96    helena      Creation.
00011 *   02/27/97    aliu        Added typedefs for UClassID, int8, int16, int32,
00012 *                           uint8, uint16, and uint32.
00013 *   04/01/97    aliu        Added XP_CPLUSPLUS and modified to work under C as
00014 *                            well as C++.
00015 *                           Modified to use memcpy() for uprv_arrayCopy() fns.
00016 *   04/14/97    aliu        Added TPlatformUtilities.
00017 *   05/07/97    aliu        Added import/export specifiers (replacing the old
00018 *                           broken EXT_CLASS).  Added version number for our
00019 *                           code.  Cleaned up header.
00020 *    6/20/97    helena      Java class name change.
00021 *   08/11/98    stephen     UErrorCode changed from typedef to enum
00022 *   08/12/98    erm         Changed T_ANALYTIC_PACKAGE_VERSION to 3
00023 *   08/14/98    stephen     Added uprv_arrayCopy() for int8_t, int16_t, int32_t
00024 *   12/09/98    jfitz       Added BUFFER_OVERFLOW_ERROR (bug 1100066)
00025 *   04/20/99    stephen     Cleaned up & reworked for autoconf.
00026 *                           Renamed to utypes.h.
00027 *   05/05/99    stephen     Changed to use <inttypes.h>
00028 *   12/07/99    helena      Moved copyright notice string from ucnv_bld.h here.
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 /* ICUDATA naming scheme                                                     */
00092 /*===========================================================================*/
00093 
00110 #if U_CHARSET_FAMILY
00111 #   if U_IS_BIG_ENDIAN
00112    /* EBCDIC - should always be BE */
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       /* Big-endian ASCII */
00123 #     define U_ICUDATA_TYPE_LETTER "b"
00124 #     define U_ICUDATA_TYPE_LITLETTER b
00125 #   else
00126       /* Little-endian ASCII */
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  /* U_HIDE_INTERNAL_API */
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 /* affected by symbol renaming. See platform.h */
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  /* U_HIDE_INTERNAL_API */
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 /* Calendar/TimeZone data types                                              */
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 /* Shared library/DLL import-export API control                              */
00226 /*===========================================================================*/
00227 
00228 /*
00229  * Control of symbol import/export.
00230  * ICU is separated into three libraries.
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 /* Global delete operator                                                    */
00379 /*===========================================================================*/
00380 
00381 /*
00382  * The ICU4C library must not use the global new and delete operators.
00383  * These operators here are defined to enable testing for this.
00384  * See Jitterbug 2581 for details of why this is necessary.
00385  *
00386  * Verification that ICU4C's memory usage is correct, i.e.,
00387  * that global new/delete are not used:
00388  *
00389  * a) Check for imports of global new/delete (see uobject.cpp for details)
00390  * b) Verify that new is never imported.
00391  * c) Verify that delete is only imported from object code for interface/mixin classes.
00392  * d) Add global delete and delete[] only for the ICU4C library itself
00393  *    and define them in a way that crashes or otherwise easily shows a problem.
00394  *
00395  * The following implements d).
00396  * The operator implementations crash; this is intentional and used for library debugging.
00397  *
00398  * Note: This is currently only done on Windows because
00399  * some Linux/Unix compilers have problems with defining global new/delete.
00400  * On Windows, it is _MSC_VER>=1200 for MSVC 6.0 and higher.
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 /*size*/) {
00412     char *q=NULL;
00413     *q=5; /* break it */
00414     return q;
00415 }
00416 
00417 #ifdef _Ret_bytecap_
00418 /* This is only needed to suppress a Visual C++ 2008 warning for operator new[]. */
00419 _Ret_bytecap_(_Size)
00420 #endif
00421 
00426 inline void *
00427 operator new[](size_t /*size*/) {
00428     char *q=NULL;
00429     *q=5; /* break it */
00430     return q;
00431 }
00432 
00438 inline void
00439 operator delete(void * /*p*/) {
00440     char *q=NULL;
00441     *q=5; /* break it */
00442 }
00443 
00449 inline void
00450 operator delete[](void * /*p*/) {
00451     char *q=NULL;
00452     *q=5; /* break it */
00453 }
00454 
00455 #endif /* U_HIDE_INTERNAL_API */
00456 #endif
00457 
00458 /*===========================================================================*/
00459 /* UErrorCode */
00460 /*===========================================================================*/
00461 
00476 typedef enum UErrorCode {
00477     /* The ordering of U_ERROR_INFO_START Vs U_USING_FALLBACK_WARNING looks weird
00478      * and is that way because VC++ debugger displays first encountered constant,
00479      * which is not the what the code is used for
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      * the error code range 0x10000 0x10100 are reserved for Transliterator
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      * the error code range 0x10100 0x10200 are reserved for formatting API parsing error
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      * the error code range 0x10200 0x102ff are reserved for Break Iterator related error
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      * The error codes in the range 0x10300-0x103ff are reserved for regular expression related errrs
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      * The error code in the range 0x10400-0x104ff are reserved for IDNA related error codes
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      * Aliases for StringPrep
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      * The error code in the range 0x10500-0x105ff are reserved for Plugin related error codes
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 /* Use the following to determine if an UErrorCode represents */
00685 /* operational success or failure. */
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 /* _UTYPES */

Generated on 25 Nov 2014 for ICU 50.1.2 by  doxygen 1.4.7