|
ICU 73.2
73.2
|
00001 // © 2016 and later: Unicode, Inc. and others. 00002 // License & terms of use: http://www.unicode.org/copyright.html 00003 /* 00004 ********************************************************************** 00005 * Copyright (C) 1999-2014, International Business Machines 00006 * Corporation and others. All Rights Reserved. 00007 ********************************************************************** 00008 * ucnv.h: 00009 * External APIs for the ICU's codeset conversion library 00010 * Bertrand A. Damiba 00011 * 00012 * Modification History: 00013 * 00014 * Date Name Description 00015 * 04/04/99 helena Fixed internal header inclusion. 00016 * 05/11/00 helena Added setFallback and usesFallback APIs. 00017 * 06/29/2000 helena Major rewrite of the callback APIs. 00018 * 12/07/2000 srl Update of documentation 00019 */ 00020 00048 #ifndef UCNV_H 00049 #define UCNV_H 00050 00051 #include "unicode/ucnv_err.h" 00052 #include "unicode/uenum.h" 00053 00054 #if U_SHOW_CPLUSPLUS_API 00055 #include "unicode/localpointer.h" 00056 #endif // U_SHOW_CPLUSPLUS_API 00057 00058 #if !defined(USET_DEFINED) && !defined(U_IN_DOXYGEN) 00059 00060 #define USET_DEFINED 00061 00070 typedef struct USet USet; 00071 00072 #endif 00073 00074 #if !UCONFIG_NO_CONVERSION 00075 00076 U_CDECL_BEGIN 00077 00079 #define UCNV_MAX_CONVERTER_NAME_LENGTH 60 00080 00081 #define UCNV_MAX_FULL_FILE_NAME_LENGTH (600+UCNV_MAX_CONVERTER_NAME_LENGTH) 00082 00084 #define UCNV_SI 0x0F 00085 00086 #define UCNV_SO 0x0E 00087 00093 typedef enum { 00095 UCNV_UNSUPPORTED_CONVERTER = -1, 00097 UCNV_SBCS = 0, 00099 UCNV_DBCS = 1, 00101 UCNV_MBCS = 2, 00103 UCNV_LATIN_1 = 3, 00105 UCNV_UTF8 = 4, 00107 UCNV_UTF16_BigEndian = 5, 00109 UCNV_UTF16_LittleEndian = 6, 00111 UCNV_UTF32_BigEndian = 7, 00113 UCNV_UTF32_LittleEndian = 8, 00115 UCNV_EBCDIC_STATEFUL = 9, 00117 UCNV_ISO_2022 = 10, 00118 00120 UCNV_LMBCS_1 = 11, 00122 UCNV_LMBCS_2, 00124 UCNV_LMBCS_3, 00126 UCNV_LMBCS_4, 00128 UCNV_LMBCS_5, 00130 UCNV_LMBCS_6, 00132 UCNV_LMBCS_8, 00134 UCNV_LMBCS_11, 00136 UCNV_LMBCS_16, 00138 UCNV_LMBCS_17, 00140 UCNV_LMBCS_18, 00142 UCNV_LMBCS_19, 00144 UCNV_LMBCS_LAST = UCNV_LMBCS_19, 00146 UCNV_HZ, 00148 UCNV_SCSU, 00150 UCNV_ISCII, 00152 UCNV_US_ASCII, 00154 UCNV_UTF7, 00156 UCNV_BOCU1, 00158 UCNV_UTF16, 00160 UCNV_UTF32, 00162 UCNV_CESU8, 00164 UCNV_IMAP_MAILBOX, 00166 UCNV_COMPOUND_TEXT, 00167 00168 /* Number of converter types for which we have conversion routines. */ 00169 UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES 00170 } UConverterType; 00171 00181 typedef enum { 00182 UCNV_UNKNOWN = -1, 00183 UCNV_IBM = 0 00184 } UConverterPlatform; 00185 00201 typedef void (U_EXPORT2 *UConverterToUCallback) ( 00202 const void* context, 00203 UConverterToUnicodeArgs *args, 00204 const char *codeUnits, 00205 int32_t length, 00206 UConverterCallbackReason reason, 00207 UErrorCode *pErrorCode); 00208 00224 typedef void (U_EXPORT2 *UConverterFromUCallback) ( 00225 const void* context, 00226 UConverterFromUnicodeArgs *args, 00227 const UChar* codeUnits, 00228 int32_t length, 00229 UChar32 codePoint, 00230 UConverterCallbackReason reason, 00231 UErrorCode *pErrorCode); 00232 00233 U_CDECL_END 00234 00240 #define UCNV_OPTION_SEP_CHAR ',' 00241 00247 #define UCNV_OPTION_SEP_STRING "," 00248 00254 #define UCNV_VALUE_SEP_CHAR '=' 00255 00261 #define UCNV_VALUE_SEP_STRING "=" 00262 00271 #define UCNV_LOCALE_OPTION_STRING ",locale=" 00272 00284 #define UCNV_VERSION_OPTION_STRING ",version=" 00285 00296 #define UCNV_SWAP_LFNL_OPTION_STRING ",swaplfnl" 00297 00313 U_CAPI int U_EXPORT2 00314 ucnv_compareNames(const char *name1, const char *name2); 00315 00316 00367 U_CAPI UConverter* U_EXPORT2 00368 ucnv_open(const char *converterName, UErrorCode *err); 00369 00370 00397 U_CAPI UConverter* U_EXPORT2 00398 ucnv_openU(const UChar *name, 00399 UErrorCode *err); 00400 00465 U_CAPI UConverter* U_EXPORT2 00466 ucnv_openCCSID(int32_t codepage, 00467 UConverterPlatform platform, 00468 UErrorCode * err); 00469 00500 U_CAPI UConverter* U_EXPORT2 00501 ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err); 00502 00513 U_CAPI UConverter* U_EXPORT2 ucnv_clone(const UConverter *cnv, UErrorCode *status); 00514 00515 #ifndef U_HIDE_DEPRECATED_API 00516 00556 U_DEPRECATED UConverter * U_EXPORT2 00557 ucnv_safeClone(const UConverter *cnv, 00558 void *stackBuffer, 00559 int32_t *pBufferSize, 00560 UErrorCode *status); 00561 00568 #define U_CNV_SAFECLONE_BUFFERSIZE 1024 00569 00570 #endif /* U_HIDE_DEPRECATED_API */ 00571 00583 U_CAPI void U_EXPORT2 00584 ucnv_close(UConverter * converter); 00585 00586 #if U_SHOW_CPLUSPLUS_API 00587 00588 U_NAMESPACE_BEGIN 00589 00599 U_DEFINE_LOCAL_OPEN_POINTER(LocalUConverterPointer, UConverter, ucnv_close); 00600 00601 U_NAMESPACE_END 00602 00603 #endif 00604 00622 U_CAPI void U_EXPORT2 00623 ucnv_getSubstChars(const UConverter *converter, 00624 char *subChars, 00625 int8_t *len, 00626 UErrorCode *err); 00627 00647 U_CAPI void U_EXPORT2 00648 ucnv_setSubstChars(UConverter *converter, 00649 const char *subChars, 00650 int8_t len, 00651 UErrorCode *err); 00652 00680 U_CAPI void U_EXPORT2 00681 ucnv_setSubstString(UConverter *cnv, 00682 const UChar *s, 00683 int32_t length, 00684 UErrorCode *err); 00685 00699 U_CAPI void U_EXPORT2 00700 ucnv_getInvalidChars(const UConverter *converter, 00701 char *errBytes, 00702 int8_t *len, 00703 UErrorCode *err); 00704 00718 U_CAPI void U_EXPORT2 00719 ucnv_getInvalidUChars(const UConverter *converter, 00720 UChar *errUChars, 00721 int8_t *len, 00722 UErrorCode *err); 00723 00731 U_CAPI void U_EXPORT2 00732 ucnv_reset(UConverter *converter); 00733 00742 U_CAPI void U_EXPORT2 00743 ucnv_resetToUnicode(UConverter *converter); 00744 00753 U_CAPI void U_EXPORT2 00754 ucnv_resetFromUnicode(UConverter *converter); 00755 00806 U_CAPI int8_t U_EXPORT2 00807 ucnv_getMaxCharSize(const UConverter *converter); 00808 00828 #define UCNV_GET_MAX_BYTES_FOR_STRING(length, maxCharSize) \ 00829 (((int32_t)(length)+10)*(int32_t)(maxCharSize)) 00830 00839 U_CAPI int8_t U_EXPORT2 00840 ucnv_getMinCharSize(const UConverter *converter); 00841 00856 U_CAPI int32_t U_EXPORT2 00857 ucnv_getDisplayName(const UConverter *converter, 00858 const char *displayLocale, 00859 UChar *displayName, 00860 int32_t displayNameCapacity, 00861 UErrorCode *err); 00862 00873 U_CAPI const char * U_EXPORT2 00874 ucnv_getName(const UConverter *converter, UErrorCode *err); 00875 00899 U_CAPI int32_t U_EXPORT2 00900 ucnv_getCCSID(const UConverter *converter, 00901 UErrorCode *err); 00902 00913 U_CAPI UConverterPlatform U_EXPORT2 00914 ucnv_getPlatform(const UConverter *converter, 00915 UErrorCode *err); 00916 00925 U_CAPI UConverterType U_EXPORT2 00926 ucnv_getType(const UConverter * converter); 00927 00943 U_CAPI void U_EXPORT2 00944 ucnv_getStarters(const UConverter* converter, 00945 UBool starters[256], 00946 UErrorCode* err); 00947 00948 00954 typedef enum UConverterUnicodeSet { 00956 UCNV_ROUNDTRIP_SET, 00958 UCNV_ROUNDTRIP_AND_FALLBACK_SET, 00959 #ifndef U_HIDE_DEPRECATED_API 00960 00964 UCNV_SET_COUNT 00965 #endif // U_HIDE_DEPRECATED_API 00966 } UConverterUnicodeSet; 00967 00968 01014 U_CAPI void U_EXPORT2 01015 ucnv_getUnicodeSet(const UConverter *cnv, 01016 USet *setFillIn, 01017 UConverterUnicodeSet whichSet, 01018 UErrorCode *pErrorCode); 01019 01031 U_CAPI void U_EXPORT2 01032 ucnv_getToUCallBack (const UConverter * converter, 01033 UConverterToUCallback *action, 01034 const void **context); 01035 01047 U_CAPI void U_EXPORT2 01048 ucnv_getFromUCallBack (const UConverter * converter, 01049 UConverterFromUCallback *action, 01050 const void **context); 01051 01067 U_CAPI void U_EXPORT2 01068 ucnv_setToUCallBack (UConverter * converter, 01069 UConverterToUCallback newAction, 01070 const void* newContext, 01071 UConverterToUCallback *oldAction, 01072 const void** oldContext, 01073 UErrorCode * err); 01074 01090 U_CAPI void U_EXPORT2 01091 ucnv_setFromUCallBack (UConverter * converter, 01092 UConverterFromUCallback newAction, 01093 const void *newContext, 01094 UConverterFromUCallback *oldAction, 01095 const void **oldContext, 01096 UErrorCode * err); 01097 01156 U_CAPI void U_EXPORT2 01157 ucnv_fromUnicode (UConverter * converter, 01158 char **target, 01159 const char *targetLimit, 01160 const UChar ** source, 01161 const UChar * sourceLimit, 01162 int32_t* offsets, 01163 UBool flush, 01164 UErrorCode * err); 01165 01225 U_CAPI void U_EXPORT2 01226 ucnv_toUnicode(UConverter *converter, 01227 UChar **target, 01228 const UChar *targetLimit, 01229 const char **source, 01230 const char *sourceLimit, 01231 int32_t *offsets, 01232 UBool flush, 01233 UErrorCode *err); 01234 01262 U_CAPI int32_t U_EXPORT2 01263 ucnv_fromUChars(UConverter *cnv, 01264 char *dest, int32_t destCapacity, 01265 const UChar *src, int32_t srcLength, 01266 UErrorCode *pErrorCode); 01267 01294 U_CAPI int32_t U_EXPORT2 01295 ucnv_toUChars(UConverter *cnv, 01296 UChar *dest, int32_t destCapacity, 01297 const char *src, int32_t srcLength, 01298 UErrorCode *pErrorCode); 01299 01370 U_CAPI UChar32 U_EXPORT2 01371 ucnv_getNextUChar(UConverter * converter, 01372 const char **source, 01373 const char * sourceLimit, 01374 UErrorCode * err); 01375 01514 U_CAPI void U_EXPORT2 01515 ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv, 01516 char **target, const char *targetLimit, 01517 const char **source, const char *sourceLimit, 01518 UChar *pivotStart, UChar **pivotSource, 01519 UChar **pivotTarget, const UChar *pivotLimit, 01520 UBool reset, UBool flush, 01521 UErrorCode *pErrorCode); 01522 01578 U_CAPI int32_t U_EXPORT2 01579 ucnv_convert(const char *toConverterName, 01580 const char *fromConverterName, 01581 char *target, 01582 int32_t targetCapacity, 01583 const char *source, 01584 int32_t sourceLength, 01585 UErrorCode *pErrorCode); 01586 01632 U_CAPI int32_t U_EXPORT2 01633 ucnv_toAlgorithmic(UConverterType algorithmicType, 01634 UConverter *cnv, 01635 char *target, int32_t targetCapacity, 01636 const char *source, int32_t sourceLength, 01637 UErrorCode *pErrorCode); 01638 01684 U_CAPI int32_t U_EXPORT2 01685 ucnv_fromAlgorithmic(UConverter *cnv, 01686 UConverterType algorithmicType, 01687 char *target, int32_t targetCapacity, 01688 const char *source, int32_t sourceLength, 01689 UErrorCode *pErrorCode); 01690 01698 U_CAPI int32_t U_EXPORT2 01699 ucnv_flushCache(void); 01700 01708 U_CAPI int32_t U_EXPORT2 01709 ucnv_countAvailable(void); 01710 01721 U_CAPI const char* U_EXPORT2 01722 ucnv_getAvailableName(int32_t n); 01723 01736 U_CAPI UEnumeration * U_EXPORT2 01737 ucnv_openAllNames(UErrorCode *pErrorCode); 01738 01749 U_CAPI uint16_t U_EXPORT2 01750 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode); 01751 01764 U_CAPI const char * U_EXPORT2 01765 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode); 01766 01780 U_CAPI void U_EXPORT2 01781 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode); 01782 01806 U_CAPI UEnumeration * U_EXPORT2 01807 ucnv_openStandardNames(const char *convName, 01808 const char *standard, 01809 UErrorCode *pErrorCode); 01810 01816 U_CAPI uint16_t U_EXPORT2 01817 ucnv_countStandards(void); 01818 01826 U_CAPI const char * U_EXPORT2 01827 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode); 01828 01848 U_CAPI const char * U_EXPORT2 01849 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode); 01850 01870 U_CAPI const char * U_EXPORT2 01871 ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode); 01872 01887 U_CAPI const char * U_EXPORT2 01888 ucnv_getDefaultName(void); 01889 01890 #ifndef U_HIDE_SYSTEM_API 01891 01907 U_CAPI void U_EXPORT2 01908 ucnv_setDefaultName(const char *name); 01909 #endif /* U_HIDE_SYSTEM_API */ 01910 01928 U_CAPI void U_EXPORT2 01929 ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen); 01930 01939 U_CAPI UBool U_EXPORT2 01940 ucnv_isAmbiguous(const UConverter *cnv); 01941 01957 U_CAPI void U_EXPORT2 01958 ucnv_setFallback(UConverter *cnv, UBool usesFallback); 01959 01969 U_CAPI UBool U_EXPORT2 01970 ucnv_usesFallback(const UConverter *cnv); 01971 02001 U_CAPI const char* U_EXPORT2 02002 ucnv_detectUnicodeSignature(const char* source, 02003 int32_t sourceLength, 02004 int32_t *signatureLength, 02005 UErrorCode *pErrorCode); 02006 02018 U_CAPI int32_t U_EXPORT2 02019 ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status); 02020 02032 U_CAPI int32_t U_EXPORT2 02033 ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status); 02034 02050 U_CAPI UBool U_EXPORT2 02051 ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status); 02052 02053 #endif 02054 02055 #endif 02056 /*_UCNV*/
1.7.6.1