00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00047 #ifndef UCNV_H
00048 #define UCNV_H
00049
00050 #include "unicode/ucnv_err.h"
00051 #include "unicode/uenum.h"
00052 #include "unicode/localpointer.h"
00053
00054 #ifndef __USET_H__
00055
00065 struct USet;
00067 typedef struct USet USet;
00068
00069 #endif
00070
00071 #if !UCONFIG_NO_CONVERSION
00072
00073 U_CDECL_BEGIN
00074
00076 #define UCNV_MAX_CONVERTER_NAME_LENGTH 60
00077
00078 #define UCNV_MAX_FULL_FILE_NAME_LENGTH (600+UCNV_MAX_CONVERTER_NAME_LENGTH)
00079
00081 #define UCNV_SI 0x0F
00082
00083 #define UCNV_SO 0x0E
00084
00090 typedef enum {
00091 UCNV_UNSUPPORTED_CONVERTER = -1,
00092 UCNV_SBCS = 0,
00093 UCNV_DBCS = 1,
00094 UCNV_MBCS = 2,
00095 UCNV_LATIN_1 = 3,
00096 UCNV_UTF8 = 4,
00097 UCNV_UTF16_BigEndian = 5,
00098 UCNV_UTF16_LittleEndian = 6,
00099 UCNV_UTF32_BigEndian = 7,
00100 UCNV_UTF32_LittleEndian = 8,
00101 UCNV_EBCDIC_STATEFUL = 9,
00102 UCNV_ISO_2022 = 10,
00103
00104 UCNV_LMBCS_1 = 11,
00105 UCNV_LMBCS_2,
00106 UCNV_LMBCS_3,
00107 UCNV_LMBCS_4,
00108 UCNV_LMBCS_5,
00109 UCNV_LMBCS_6,
00110 UCNV_LMBCS_8,
00111 UCNV_LMBCS_11,
00112 UCNV_LMBCS_16,
00113 UCNV_LMBCS_17,
00114 UCNV_LMBCS_18,
00115 UCNV_LMBCS_19,
00116 UCNV_LMBCS_LAST = UCNV_LMBCS_19,
00117 UCNV_HZ,
00118 UCNV_SCSU,
00119 UCNV_ISCII,
00120 UCNV_US_ASCII,
00121 UCNV_UTF7,
00122 UCNV_BOCU1,
00123 UCNV_UTF16,
00124 UCNV_UTF32,
00125 UCNV_CESU8,
00126 UCNV_IMAP_MAILBOX,
00127
00128
00129 UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES
00130
00131 } UConverterType;
00132
00142 typedef enum {
00143 UCNV_UNKNOWN = -1,
00144 UCNV_IBM = 0
00145 } UConverterPlatform;
00146
00162 typedef void (U_EXPORT2 *UConverterToUCallback) (
00163 const void* context,
00164 UConverterToUnicodeArgs *args,
00165 const char *codeUnits,
00166 int32_t length,
00167 UConverterCallbackReason reason,
00168 UErrorCode *pErrorCode);
00169
00185 typedef void (U_EXPORT2 *UConverterFromUCallback) (
00186 const void* context,
00187 UConverterFromUnicodeArgs *args,
00188 const UChar* codeUnits,
00189 int32_t length,
00190 UChar32 codePoint,
00191 UConverterCallbackReason reason,
00192 UErrorCode *pErrorCode);
00193
00194 U_CDECL_END
00195
00201 #define UCNV_OPTION_SEP_CHAR ','
00202
00208 #define UCNV_OPTION_SEP_STRING ","
00209
00215 #define UCNV_VALUE_SEP_CHAR '='
00216
00222 #define UCNV_VALUE_SEP_STRING "="
00223
00232 #define UCNV_LOCALE_OPTION_STRING ",locale="
00233
00245 #define UCNV_VERSION_OPTION_STRING ",version="
00246
00257 #define UCNV_SWAP_LFNL_OPTION_STRING ",swaplfnl"
00258
00274 U_STABLE int U_EXPORT2
00275 ucnv_compareNames(const char *name1, const char *name2);
00276
00277
00326 U_STABLE UConverter* U_EXPORT2
00327 ucnv_open(const char *converterName, UErrorCode *err);
00328
00329
00356 U_STABLE UConverter* U_EXPORT2
00357 ucnv_openU(const UChar *name,
00358 UErrorCode *err);
00359
00424 U_STABLE UConverter* U_EXPORT2
00425 ucnv_openCCSID(int32_t codepage,
00426 UConverterPlatform platform,
00427 UErrorCode * err);
00428
00459 U_STABLE UConverter* U_EXPORT2
00460 ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err);
00461
00499 U_STABLE UConverter * U_EXPORT2
00500 ucnv_safeClone(const UConverter *cnv,
00501 void *stackBuffer,
00502 int32_t *pBufferSize,
00503 UErrorCode *status);
00504
00511 #define U_CNV_SAFECLONE_BUFFERSIZE 1024
00512
00524 U_STABLE void U_EXPORT2
00525 ucnv_close(UConverter * converter);
00526
00527 #if U_SHOW_CPLUSPLUS_API
00528
00529 U_NAMESPACE_BEGIN
00530
00540 U_DEFINE_LOCAL_OPEN_POINTER(LocalUConverterPointer, UConverter, ucnv_close);
00541
00542 U_NAMESPACE_END
00543
00544 #endif
00545
00563 U_STABLE void U_EXPORT2
00564 ucnv_getSubstChars(const UConverter *converter,
00565 char *subChars,
00566 int8_t *len,
00567 UErrorCode *err);
00568
00588 U_STABLE void U_EXPORT2
00589 ucnv_setSubstChars(UConverter *converter,
00590 const char *subChars,
00591 int8_t len,
00592 UErrorCode *err);
00593
00621 U_STABLE void U_EXPORT2
00622 ucnv_setSubstString(UConverter *cnv,
00623 const UChar *s,
00624 int32_t length,
00625 UErrorCode *err);
00626
00640 U_STABLE void U_EXPORT2
00641 ucnv_getInvalidChars(const UConverter *converter,
00642 char *errBytes,
00643 int8_t *len,
00644 UErrorCode *err);
00645
00659 U_STABLE void U_EXPORT2
00660 ucnv_getInvalidUChars(const UConverter *converter,
00661 UChar *errUChars,
00662 int8_t *len,
00663 UErrorCode *err);
00664
00672 U_STABLE void U_EXPORT2
00673 ucnv_reset(UConverter *converter);
00674
00683 U_STABLE void U_EXPORT2
00684 ucnv_resetToUnicode(UConverter *converter);
00685
00694 U_STABLE void U_EXPORT2
00695 ucnv_resetFromUnicode(UConverter *converter);
00696
00745 U_STABLE int8_t U_EXPORT2
00746 ucnv_getMaxCharSize(const UConverter *converter);
00747
00767 #define UCNV_GET_MAX_BYTES_FOR_STRING(length, maxCharSize) \
00768 (((int32_t)(length)+10)*(int32_t)(maxCharSize))
00769
00778 U_STABLE int8_t U_EXPORT2
00779 ucnv_getMinCharSize(const UConverter *converter);
00780
00795 U_STABLE int32_t U_EXPORT2
00796 ucnv_getDisplayName(const UConverter *converter,
00797 const char *displayLocale,
00798 UChar *displayName,
00799 int32_t displayNameCapacity,
00800 UErrorCode *err);
00801
00812 U_STABLE const char * U_EXPORT2
00813 ucnv_getName(const UConverter *converter, UErrorCode *err);
00814
00838 U_STABLE int32_t U_EXPORT2
00839 ucnv_getCCSID(const UConverter *converter,
00840 UErrorCode *err);
00841
00852 U_STABLE UConverterPlatform U_EXPORT2
00853 ucnv_getPlatform(const UConverter *converter,
00854 UErrorCode *err);
00855
00864 U_STABLE UConverterType U_EXPORT2
00865 ucnv_getType(const UConverter * converter);
00866
00882 U_STABLE void U_EXPORT2
00883 ucnv_getStarters(const UConverter* converter,
00884 UBool starters[256],
00885 UErrorCode* err);
00886
00887
00893 typedef enum UConverterUnicodeSet {
00895 UCNV_ROUNDTRIP_SET,
00897 UCNV_ROUNDTRIP_AND_FALLBACK_SET,
00899 UCNV_SET_COUNT
00900 } UConverterUnicodeSet;
00901
00902
00948 U_STABLE void U_EXPORT2
00949 ucnv_getUnicodeSet(const UConverter *cnv,
00950 USet *setFillIn,
00951 UConverterUnicodeSet whichSet,
00952 UErrorCode *pErrorCode);
00953
00965 U_STABLE void U_EXPORT2
00966 ucnv_getToUCallBack (const UConverter * converter,
00967 UConverterToUCallback *action,
00968 const void **context);
00969
00981 U_STABLE void U_EXPORT2
00982 ucnv_getFromUCallBack (const UConverter * converter,
00983 UConverterFromUCallback *action,
00984 const void **context);
00985
01001 U_STABLE void U_EXPORT2
01002 ucnv_setToUCallBack (UConverter * converter,
01003 UConverterToUCallback newAction,
01004 const void* newContext,
01005 UConverterToUCallback *oldAction,
01006 const void** oldContext,
01007 UErrorCode * err);
01008
01024 U_STABLE void U_EXPORT2
01025 ucnv_setFromUCallBack (UConverter * converter,
01026 UConverterFromUCallback newAction,
01027 const void *newContext,
01028 UConverterFromUCallback *oldAction,
01029 const void **oldContext,
01030 UErrorCode * err);
01031
01090 U_STABLE void U_EXPORT2
01091 ucnv_fromUnicode (UConverter * converter,
01092 char **target,
01093 const char *targetLimit,
01094 const UChar ** source,
01095 const UChar * sourceLimit,
01096 int32_t* offsets,
01097 UBool flush,
01098 UErrorCode * err);
01099
01159 U_STABLE void U_EXPORT2
01160 ucnv_toUnicode(UConverter *converter,
01161 UChar **target,
01162 const UChar *targetLimit,
01163 const char **source,
01164 const char *sourceLimit,
01165 int32_t *offsets,
01166 UBool flush,
01167 UErrorCode *err);
01168
01196 U_STABLE int32_t U_EXPORT2
01197 ucnv_fromUChars(UConverter *cnv,
01198 char *dest, int32_t destCapacity,
01199 const UChar *src, int32_t srcLength,
01200 UErrorCode *pErrorCode);
01201
01228 U_STABLE int32_t U_EXPORT2
01229 ucnv_toUChars(UConverter *cnv,
01230 UChar *dest, int32_t destCapacity,
01231 const char *src, int32_t srcLength,
01232 UErrorCode *pErrorCode);
01233
01304 U_STABLE UChar32 U_EXPORT2
01305 ucnv_getNextUChar(UConverter * converter,
01306 const char **source,
01307 const char * sourceLimit,
01308 UErrorCode * err);
01309
01448 U_STABLE void U_EXPORT2
01449 ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
01450 char **target, const char *targetLimit,
01451 const char **source, const char *sourceLimit,
01452 UChar *pivotStart, UChar **pivotSource,
01453 UChar **pivotTarget, const UChar *pivotLimit,
01454 UBool reset, UBool flush,
01455 UErrorCode *pErrorCode);
01456
01512 U_STABLE int32_t U_EXPORT2
01513 ucnv_convert(const char *toConverterName,
01514 const char *fromConverterName,
01515 char *target,
01516 int32_t targetCapacity,
01517 const char *source,
01518 int32_t sourceLength,
01519 UErrorCode *pErrorCode);
01520
01566 U_STABLE int32_t U_EXPORT2
01567 ucnv_toAlgorithmic(UConverterType algorithmicType,
01568 UConverter *cnv,
01569 char *target, int32_t targetCapacity,
01570 const char *source, int32_t sourceLength,
01571 UErrorCode *pErrorCode);
01572
01618 U_STABLE int32_t U_EXPORT2
01619 ucnv_fromAlgorithmic(UConverter *cnv,
01620 UConverterType algorithmicType,
01621 char *target, int32_t targetCapacity,
01622 const char *source, int32_t sourceLength,
01623 UErrorCode *pErrorCode);
01624
01632 U_STABLE int32_t U_EXPORT2
01633 ucnv_flushCache(void);
01634
01642 U_STABLE int32_t U_EXPORT2
01643 ucnv_countAvailable(void);
01644
01655 U_STABLE const char* U_EXPORT2
01656 ucnv_getAvailableName(int32_t n);
01657
01670 U_STABLE UEnumeration * U_EXPORT2
01671 ucnv_openAllNames(UErrorCode *pErrorCode);
01672
01683 U_STABLE uint16_t U_EXPORT2
01684 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode);
01685
01698 U_STABLE const char * U_EXPORT2
01699 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
01700
01714 U_STABLE void U_EXPORT2
01715 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode);
01716
01740 U_STABLE UEnumeration * U_EXPORT2
01741 ucnv_openStandardNames(const char *convName,
01742 const char *standard,
01743 UErrorCode *pErrorCode);
01744
01750 U_STABLE uint16_t U_EXPORT2
01751 ucnv_countStandards(void);
01752
01760 U_STABLE const char * U_EXPORT2
01761 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode);
01762
01782 U_STABLE const char * U_EXPORT2
01783 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode);
01784
01804 U_STABLE const char * U_EXPORT2
01805 ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode);
01806
01821 U_STABLE const char * U_EXPORT2
01822 ucnv_getDefaultName(void);
01823
01840 U_STABLE void U_EXPORT2
01841 ucnv_setDefaultName(const char *name);
01842
01860 U_STABLE void U_EXPORT2
01861 ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen);
01862
01871 U_STABLE UBool U_EXPORT2
01872 ucnv_isAmbiguous(const UConverter *cnv);
01873
01889 U_STABLE void U_EXPORT2
01890 ucnv_setFallback(UConverter *cnv, UBool usesFallback);
01891
01901 U_STABLE UBool U_EXPORT2
01902 ucnv_usesFallback(const UConverter *cnv);
01903
01960 U_STABLE const char* U_EXPORT2
01961 ucnv_detectUnicodeSignature(const char* source,
01962 int32_t sourceLength,
01963 int32_t *signatureLength,
01964 UErrorCode *pErrorCode);
01965
01977 U_STABLE int32_t U_EXPORT2
01978 ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status);
01979
01991 U_STABLE int32_t U_EXPORT2
01992 ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status);
01993
01994 #endif
01995
01996 #endif
01997