00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00027 #ifndef UCNV_H
00028 #define UCNV_H
00029
00031 struct UConverter;
00032
00034 typedef struct UConverter UConverter;
00035
00036 #include "unicode/utypes.h"
00037 #include "unicode/ucnv_err.h"
00038
00039 U_CDECL_BEGIN
00040
00041
00042 #define UCNV_MAX_CONVERTER_NAME_LENGTH 60
00043 #define UCNV_MAX_FULL_FILE_NAME_LENGTH (600+UCNV_MAX_CONVERTER_NAME_LENGTH)
00044
00045 #define UCNV_SI 0x0F
00046 #define UCNV_SO 0x0E
00047
00053 typedef enum {
00054 UCNV_UNSUPPORTED_CONVERTER = -1,
00055 UCNV_SBCS = 0,
00056 UCNV_DBCS = 1,
00057 UCNV_MBCS = 2,
00058 UCNV_LATIN_1 = 3,
00059 UCNV_UTF8 = 4,
00060 UCNV_UTF16_BigEndian = 5,
00061 UCNV_UTF16_LittleEndian = 6,
00062 UCNV_UTF32_BigEndian = 7,
00063 UCNV_UTF32_LittleEndian = 8,
00064 UCNV_EBCDIC_STATEFUL = 9,
00065 UCNV_ISO_2022 = 10,
00066
00067 UCNV_LMBCS_1 = 11,
00068 UCNV_LMBCS_2,
00069 UCNV_LMBCS_3,
00070 UCNV_LMBCS_4,
00071 UCNV_LMBCS_5,
00072 UCNV_LMBCS_6,
00073 UCNV_LMBCS_8,
00074 UCNV_LMBCS_11,
00075 UCNV_LMBCS_16,
00076 UCNV_LMBCS_17,
00077 UCNV_LMBCS_18,
00078 UCNV_LMBCS_19,
00079 UCNV_LMBCS_LAST = UCNV_LMBCS_19,
00080 UCNV_HZ,
00081 UCNV_SCSU,
00082 UCNV_ISCII,
00083 UCNV_US_ASCII,
00084 UCNV_UTF7,
00085
00086
00087 UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES
00088
00089 } UConverterType;
00090
00100 typedef enum {
00101 UCNV_UNKNOWN = -1,
00102 UCNV_IBM = 0
00103 } UConverterPlatform;
00104
00117 typedef void (U_EXPORT2 *UConverterToUCallback) (
00118 const void* context,
00119 UConverterToUnicodeArgs *args,
00120 const char *codePoints,
00121 int32_t length,
00122 UConverterCallbackReason reason,
00123 UErrorCode *);
00124
00137 typedef void (U_EXPORT2 *UConverterFromUCallback) (
00138 const void* context,
00139 UConverterFromUnicodeArgs *args,
00140 const UChar* codeUnits,
00141 int32_t length,
00142 UChar32 codePoint,
00143 UConverterCallbackReason reason,
00144 UErrorCode *);
00145
00146 U_CDECL_END
00147
00153 #define UCNV_OPTION_SEP_CHAR ','
00154
00160 #define UCNV_OPTION_SEP_STRING ","
00161
00167 #define UCNV_VALUE_SEP_CHAR '='
00168
00174 #define UCNV_VALUE_SEP_STRING "="
00175
00181 #define UCNV_LOCALE_OPTION_STRING ",locale="
00182
00196 U_CAPI int U_EXPORT2
00197 ucnv_compareNames(const char *name1, const char *name2);
00198
00199
00227 U_CAPI UConverter* U_EXPORT2
00228 ucnv_open (const char *converterName, UErrorCode * err);
00229
00230
00252 U_CAPI UConverter* U_EXPORT2
00253 ucnv_openU (const UChar * name,
00254 UErrorCode * err);
00255
00316 U_CAPI UConverter* U_EXPORT2
00317 ucnv_openCCSID (int32_t codepage,
00318 UConverterPlatform platform,
00319 UErrorCode * err);
00320
00337 U_CAPI UConverter * U_EXPORT2
00338 ucnv_safeClone(const UConverter *cnv,
00339 void *stackBuffer,
00340 int32_t *pBufferSize,
00341 UErrorCode *status);
00342
00344 #define U_CNV_SAFECLONE_BUFFERSIZE 512
00345
00357 U_CAPI void U_EXPORT2
00358 ucnv_close (UConverter * converter);
00359
00374 U_CAPI void U_EXPORT2
00375 ucnv_getSubstChars (const UConverter * converter,
00376 char *subChars,
00377 int8_t * len,
00378 UErrorCode * err);
00379
00392 U_CAPI void U_EXPORT2
00393 ucnv_setSubstChars (UConverter * converter,
00394 const char *subChars,
00395 int8_t len,
00396 UErrorCode * err);
00397
00411 U_CAPI void U_EXPORT2
00412 ucnv_getInvalidChars (const UConverter * converter,
00413 char *errBytes,
00414 int8_t * len,
00415 UErrorCode * err);
00416
00430 U_CAPI void U_EXPORT2
00431 ucnv_getInvalidUChars (const UConverter * converter,
00432 UChar *errUChars,
00433 int8_t * len,
00434 UErrorCode * err);
00435
00443 U_CAPI void U_EXPORT2
00444 ucnv_reset (UConverter * converter);
00445
00454 U_CAPI void U_EXPORT2
00455 ucnv_resetToUnicode(UConverter *converter);
00456
00465 U_CAPI void U_EXPORT2
00466 ucnv_resetFromUnicode(UConverter *converter);
00467
00476 U_CAPI int8_t U_EXPORT2
00477 ucnv_getMaxCharSize (const UConverter * converter);
00478
00479
00488 U_CAPI int8_t U_EXPORT2
00489 ucnv_getMinCharSize (const UConverter * converter);
00490
00505 U_CAPI int32_t U_EXPORT2
00506 ucnv_getDisplayName (const UConverter * converter,
00507 const char *displayLocale,
00508 UChar * displayName,
00509 int32_t displayNameCapacity,
00510 UErrorCode * err);
00511
00522 U_CAPI const char * U_EXPORT2
00523 ucnv_getName (const UConverter * converter, UErrorCode * err);
00524
00525
00549 U_CAPI int32_t U_EXPORT2
00550 ucnv_getCCSID (const UConverter * converter,
00551 UErrorCode * err);
00552
00563 U_CAPI UConverterPlatform U_EXPORT2
00564 ucnv_getPlatform (const UConverter * converter,
00565 UErrorCode * err);
00566
00575 U_CAPI UConverterType U_EXPORT2
00576 ucnv_getType (const UConverter * converter);
00577
00593 U_CAPI void U_EXPORT2 ucnv_getStarters(const UConverter* converter,
00594 UBool starters[256],
00595 UErrorCode* err);
00596
00597
00609 U_CAPI void U_EXPORT2
00610 ucnv_getToUCallBack (const UConverter * converter,
00611 UConverterToUCallback *action,
00612 const void **context);
00613
00625 U_CAPI void U_EXPORT2
00626 ucnv_getFromUCallBack (const UConverter * converter,
00627 UConverterFromUCallback *action,
00628 const void **context);
00629
00644 U_CAPI void U_EXPORT2
00645 ucnv_setToUCallBack (UConverter * converter,
00646 UConverterToUCallback newAction,
00647 const void* newContext,
00648 UConverterToUCallback *oldAction,
00649 const void** oldContext,
00650 UErrorCode * err);
00651
00666 U_CAPI void U_EXPORT2
00667 ucnv_setFromUCallBack (UConverter * converter,
00668 UConverterFromUCallback newAction,
00669 const void *newContext,
00670 UConverterFromUCallback *oldAction,
00671 const void **oldContext,
00672 UErrorCode * err);
00673
00726 U_CAPI void U_EXPORT2
00727 ucnv_fromUnicode (UConverter * converter,
00728 char **target,
00729 const char *targetLimit,
00730 const UChar ** source,
00731 const UChar * sourceLimit,
00732 int32_t* offsets,
00733 UBool flush,
00734 UErrorCode * err);
00735
00789 U_CAPI void U_EXPORT2
00790 ucnv_toUnicode (UConverter * converter,
00791 UChar ** target,
00792 const UChar * targetLimit,
00793 const char **source,
00794 const char *sourceLimit,
00795 int32_t* offsets,
00796 UBool flush,
00797 UErrorCode * err);
00798
00799
00826 U_CAPI int32_t U_EXPORT2
00827 ucnv_fromUChars(UConverter *cnv,
00828 char *dest, int32_t destCapacity,
00829 const UChar *src, int32_t srcLength,
00830 UErrorCode *pErrorCode);
00831
00832
00859 U_CAPI int32_t U_EXPORT2
00860 ucnv_toUChars(UConverter *cnv,
00861 UChar *dest, int32_t destCapacity,
00862 const char *src, int32_t srcLength,
00863 UErrorCode *pErrorCode);
00864
00907 U_CAPI UChar32 U_EXPORT2
00908 ucnv_getNextUChar (UConverter * converter,
00909 const char **source,
00910 const char * sourceLimit,
00911 UErrorCode * err);
00912
00913
00936 U_CAPI int32_t U_EXPORT2
00937 ucnv_convert (const char *toConverterName,
00938 const char *fromConverterName,
00939 char *target,
00940 int32_t targetCapacity,
00941 const char *source,
00942 int32_t sourceLength,
00943 UErrorCode * err);
00944
00952 U_CAPI int32_t U_EXPORT2
00953 ucnv_flushCache (void);
00954
00955
00963 U_CAPI int32_t U_EXPORT2
00964 ucnv_countAvailable (void);
00965
00974 U_CAPI const char* U_EXPORT2
00975 ucnv_getAvailableName (int32_t n);
00976
00986 U_CAPI uint16_t U_EXPORT2
00987 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode);
00988
01000 U_CAPI const char * U_EXPORT2
01001 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
01002
01015 U_CAPI void U_EXPORT2
01016 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode);
01017
01023 U_CAPI uint16_t U_EXPORT2
01024 ucnv_countStandards(void);
01025
01033 U_CAPI const char * U_EXPORT2
01034 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode);
01035
01047 U_CAPI const char * U_EXPORT2
01048 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode);
01049
01060 U_CAPI const char * U_EXPORT2
01061 ucnv_getDefaultName (void);
01062
01071 U_CAPI void U_EXPORT2
01072 ucnv_setDefaultName (const char *name);
01073
01091 U_CAPI void U_EXPORT2
01092 ucnv_fixFileSeparator(const UConverter *cnv, UChar* source, int32_t sourceLen);
01093
01101 U_CAPI UBool U_EXPORT2
01102 ucnv_isAmbiguous(const UConverter *cnv);
01103
01111 U_CAPI void U_EXPORT2
01112 ucnv_setFallback(UConverter *cnv, UBool usesFallback);
01113
01119 U_CAPI UBool U_EXPORT2
01120 ucnv_usesFallback(const UConverter *cnv);
01121
01156 U_CAPI const char* U_EXPORT2
01157 ucnv_detectUnicodeSignature( const char* source,
01158 int32_t sourceLength,
01159 int32_t* signatureLength,
01160 UErrorCode* pErrorCode);
01161
01162 #endif
01163
01164