- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- Search for |

- File List
- Globals

# ucnv.h

Go to the documentation of this file.

    00001 /*
    00002 **********************************************************************
    00003 *   Copyright (C) 1999-2009, International Business Machines
    00004 *   Corporation and others.  All Rights Reserved.
    00005 **********************************************************************
    00006  *  ucnv.h:
    00007  *  External APIs for the ICU's codeset conversion library
    00008  *  Bertrand A. Damiba
    00009  *
    00010  * Modification History:
    00011  *
    00012  *   Date        Name        Description
    00013  *   04/04/99    helena      Fixed internal header inclusion.
    00014  *   05/11/00    helena      Added setFallback and usesFallback APIs.
    00015  *   06/29/2000  helena      Major rewrite of the callback APIs.
    00016  *   12/07/2000  srl         Update of documentation
    00017  */
    00018
    00047 #ifndef UCNV_H
    00048 #define UCNV_H
    00049
    00050 #include "unicode/ucnv_err.h"
    00051 #include "unicode/uenum.h"
    00052
    00053 #ifndef __USET_H__
    00054
    00064 struct USet;
    00066 typedef struct USet USet;
    00067
    00068 #endif
    00069
    00070 #if !UCONFIG_NO_CONVERSION
    00071
    00072 U_CDECL_BEGIN
    00073
    00075 #define UCNV_MAX_CONVERTER_NAME_LENGTH 60
    00076
    00077 #define UCNV_MAX_FULL_FILE_NAME_LENGTH (600+UCNV_MAX_CONVERTER_NAME_LENGTH)
    00078
    00080 #define  UCNV_SI 0x0F
    00081
    00082 #define  UCNV_SO 0x0E
    00083
    00089 typedef enum {
    00090     UCNV_UNSUPPORTED_CONVERTER = -1,
    00091     UCNV_SBCS = 0,
    00092     UCNV_DBCS = 1,
    00093     UCNV_MBCS = 2,
    00094     UCNV_LATIN_1 = 3,
    00095     UCNV_UTF8 = 4,
    00096     UCNV_UTF16_BigEndian = 5,
    00097     UCNV_UTF16_LittleEndian = 6,
    00098     UCNV_UTF32_BigEndian = 7,
    00099     UCNV_UTF32_LittleEndian = 8,
    00100     UCNV_EBCDIC_STATEFUL = 9,
    00101     UCNV_ISO_2022 = 10,
    00102
    00103     UCNV_LMBCS_1 = 11,
    00104     UCNV_LMBCS_2,
    00105     UCNV_LMBCS_3,
    00106     UCNV_LMBCS_4,
    00107     UCNV_LMBCS_5,
    00108     UCNV_LMBCS_6,
    00109     UCNV_LMBCS_8,
    00110     UCNV_LMBCS_11,
    00111     UCNV_LMBCS_16,
    00112     UCNV_LMBCS_17,
    00113     UCNV_LMBCS_18,
    00114     UCNV_LMBCS_19,
    00115     UCNV_LMBCS_LAST = UCNV_LMBCS_19,
    00116     UCNV_HZ,
    00117     UCNV_SCSU,
    00118     UCNV_ISCII,
    00119     UCNV_US_ASCII,
    00120     UCNV_UTF7,
    00121     UCNV_BOCU1,
    00122     UCNV_UTF16,
    00123     UCNV_UTF32,
    00124     UCNV_CESU8,
    00125     UCNV_IMAP_MAILBOX,
    00126
    00127     /* Number of converter types for which we have conversion routines. */
    00128     UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES
    00129
    00130 } UConverterType;
    00131
    00141 typedef enum {
    00142     UCNV_UNKNOWN = -1,
    00143     UCNV_IBM = 0
    00144 } UConverterPlatform;
    00145
    00161 typedef void (U_EXPORT2 *UConverterToUCallback) (
    00162                   const void* context,
    00163                   UConverterToUnicodeArgs *args,
    00164                   const char *codeUnits,
    00165                   int32_t length,
    00166                   UConverterCallbackReason reason,
    00167                   UErrorCode *pErrorCode);
    00168
    00184 typedef void (U_EXPORT2 *UConverterFromUCallback) (
    00185                     const void* context,
    00186                     UConverterFromUnicodeArgs *args,
    00187                     const UChar* codeUnits,
    00188                     int32_t length,
    00189                     UChar32 codePoint,
    00190                     UConverterCallbackReason reason,
    00191                     UErrorCode *pErrorCode);
    00192
    00193 U_CDECL_END
    00194
    00200 #define UCNV_OPTION_SEP_CHAR ','
    00201
    00207 #define UCNV_OPTION_SEP_STRING ","
    00208
    00214 #define UCNV_VALUE_SEP_CHAR '='
    00215
    00221 #define UCNV_VALUE_SEP_STRING "="
    00222
    00231 #define UCNV_LOCALE_OPTION_STRING ",locale="
    00232
    00244 #define UCNV_VERSION_OPTION_STRING ",version="
    00245
    00256 #define UCNV_SWAP_LFNL_OPTION_STRING ",swaplfnl"
    00257
    00273 U_STABLE int U_EXPORT2
    00274 ucnv_compareNames(const char *name1, const char *name2);
    00275
    00276
    00325 U_STABLE UConverter* U_EXPORT2
    00326 ucnv_open(const char *converterName, UErrorCode *err);
    00327
    00328
    00355 U_STABLE UConverter* U_EXPORT2
    00356 ucnv_openU(const UChar *name,
    00357            UErrorCode *err);
    00358
    00423 U_STABLE UConverter* U_EXPORT2
    00424 ucnv_openCCSID(int32_t codepage,
    00425                UConverterPlatform platform,
    00426                UErrorCode * err);
    00427
    00458 U_STABLE UConverter* U_EXPORT2
    00459 ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err);
    00460
    00498 U_STABLE UConverter * U_EXPORT2
    00499 ucnv_safeClone(const UConverter *cnv,
    00500                void             *stackBuffer,
    00501                int32_t          *pBufferSize,
    00502                UErrorCode       *status);
    00503
    00510 #define U_CNV_SAFECLONE_BUFFERSIZE  1024
    00511
    00523 U_STABLE void  U_EXPORT2
    00524 ucnv_close(UConverter * converter);
    00525
    00543 U_STABLE void U_EXPORT2
    00544 ucnv_getSubstChars(const UConverter *converter,
    00545                    char *subChars,
    00546                    int8_t *len,
    00547                    UErrorCode *err);
    00548
    00568 U_STABLE void U_EXPORT2
    00569 ucnv_setSubstChars(UConverter *converter,
    00570                    const char *subChars,
    00571                    int8_t len,
    00572                    UErrorCode *err);
    00573
    00601 U_STABLE void U_EXPORT2
    00602 ucnv_setSubstString(UConverter *cnv,
    00603                     const UChar *s,
    00604                     int32_t length,
    00605                     UErrorCode *err);
    00606
    00620 U_STABLE void U_EXPORT2
    00621 ucnv_getInvalidChars(const UConverter *converter,
    00622                      char *errBytes,
    00623                      int8_t *len,
    00624                      UErrorCode *err);
    00625
    00639 U_STABLE void U_EXPORT2
    00640 ucnv_getInvalidUChars(const UConverter *converter,
    00641                       UChar *errUChars,
    00642                       int8_t *len,
    00643                       UErrorCode *err);
    00644
    00652 U_STABLE void U_EXPORT2
    00653 ucnv_reset(UConverter *converter);
    00654
    00663 U_STABLE void U_EXPORT2
    00664 ucnv_resetToUnicode(UConverter *converter);
    00665
    00674 U_STABLE void U_EXPORT2
    00675 ucnv_resetFromUnicode(UConverter *converter);
    00676
    00725 U_STABLE int8_t U_EXPORT2
    00726 ucnv_getMaxCharSize(const UConverter *converter);
    00727
    00747 #define UCNV_GET_MAX_BYTES_FOR_STRING(length, maxCharSize) \
    00748      (((int32_t)(length)+10)*(int32_t)(maxCharSize))
    00749
    00758 U_STABLE int8_t U_EXPORT2
    00759 ucnv_getMinCharSize(const UConverter *converter);
    00760
    00775 U_STABLE int32_t U_EXPORT2
    00776 ucnv_getDisplayName(const UConverter *converter,
    00777                     const char *displayLocale,
    00778                     UChar *displayName,
    00779                     int32_t displayNameCapacity,
    00780                     UErrorCode *err);
    00781
    00792 U_STABLE const char * U_EXPORT2
    00793 ucnv_getName(const UConverter *converter, UErrorCode *err);
    00794
    00818 U_STABLE int32_t U_EXPORT2
    00819 ucnv_getCCSID(const UConverter *converter,
    00820               UErrorCode *err);
    00821
    00832 U_STABLE UConverterPlatform U_EXPORT2
    00833 ucnv_getPlatform(const UConverter *converter,
    00834                  UErrorCode *err);
    00835
    00844 U_STABLE UConverterType U_EXPORT2
    00845 ucnv_getType(const UConverter * converter);
    00846
    00862 U_STABLE void U_EXPORT2
    00863 ucnv_getStarters(const UConverter* converter,
    00864                  UBool starters[256],
    00865                  UErrorCode* err);
    00866
    00867
    00873 typedef enum UConverterUnicodeSet {
    00875     UCNV_ROUNDTRIP_SET,
    00877     UCNV_ROUNDTRIP_AND_FALLBACK_SET,
    00879     UCNV_SET_COUNT
    00880 } UConverterUnicodeSet;
    00881
    00882
    00928 U_STABLE void U_EXPORT2
    00929 ucnv_getUnicodeSet(const UConverter *cnv,
    00930                    USet *setFillIn,
    00931                    UConverterUnicodeSet whichSet,
    00932                    UErrorCode *pErrorCode);
    00933
    00945 U_STABLE void U_EXPORT2
    00946 ucnv_getToUCallBack (const UConverter * converter,
    00947                      UConverterToUCallback *action,
    00948                      const void **context);
    00949
    00961 U_STABLE void U_EXPORT2
    00962 ucnv_getFromUCallBack (const UConverter * converter,
    00963                        UConverterFromUCallback *action,
    00964                        const void **context);
    00965
    00981 U_STABLE void U_EXPORT2
    00982 ucnv_setToUCallBack (UConverter * converter,
    00983                      UConverterToUCallback newAction,
    00984                      const void* newContext,
    00985                      UConverterToUCallback *oldAction,
    00986                      const void** oldContext,
    00987                      UErrorCode * err);
    00988
    01004 U_STABLE void U_EXPORT2
    01005 ucnv_setFromUCallBack (UConverter * converter,
    01006                        UConverterFromUCallback newAction,
    01007                        const void *newContext,
    01008                        UConverterFromUCallback *oldAction,
    01009                        const void **oldContext,
    01010                        UErrorCode * err);
    01011
    01070 U_STABLE void U_EXPORT2
    01071 ucnv_fromUnicode (UConverter * converter,
    01072                   char **target,
    01073                   const char *targetLimit,
    01074                   const UChar ** source,
    01075                   const UChar * sourceLimit,
    01076                   int32_t* offsets,
    01077                   UBool flush,
    01078                   UErrorCode * err);
    01079
    01139 U_STABLE void U_EXPORT2
    01140 ucnv_toUnicode(UConverter *converter,
    01141                UChar **target,
    01142                const UChar *targetLimit,
    01143                const char **source,
    01144                const char *sourceLimit,
    01145                int32_t *offsets,
    01146                UBool flush,
    01147                UErrorCode *err);
    01148
    01176 U_STABLE int32_t U_EXPORT2
    01177 ucnv_fromUChars(UConverter *cnv,
    01178                 char *dest, int32_t destCapacity,
    01179                 const UChar *src, int32_t srcLength,
    01180                 UErrorCode *pErrorCode);
    01181
    01208 U_STABLE int32_t U_EXPORT2
    01209 ucnv_toUChars(UConverter *cnv,
    01210               UChar *dest, int32_t destCapacity,
    01211               const char *src, int32_t srcLength,
    01212               UErrorCode *pErrorCode);
    01213
    01284 U_STABLE UChar32 U_EXPORT2
    01285 ucnv_getNextUChar(UConverter * converter,
    01286                   const char **source,
    01287                   const char * sourceLimit,
    01288                   UErrorCode * err);
    01289
    01428 U_STABLE void U_EXPORT2
    01429 ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
    01430                char **target, const char *targetLimit,
    01431                const char **source, const char *sourceLimit,
    01432                UChar *pivotStart, UChar **pivotSource,
    01433                UChar **pivotTarget, const UChar *pivotLimit,
    01434                UBool reset, UBool flush,
    01435                UErrorCode *pErrorCode);
    01436
    01492 U_STABLE int32_t U_EXPORT2
    01493 ucnv_convert(const char *toConverterName,
    01494              const char *fromConverterName,
    01495              char *target,
    01496              int32_t targetCapacity,
    01497              const char *source,
    01498              int32_t sourceLength,
    01499              UErrorCode *pErrorCode);
    01500
    01546 U_STABLE int32_t U_EXPORT2
    01547 ucnv_toAlgorithmic(UConverterType algorithmicType,
    01548                    UConverter *cnv,
    01549                    char *target, int32_t targetCapacity,
    01550                    const char *source, int32_t sourceLength,
    01551                    UErrorCode *pErrorCode);
    01552
    01598 U_STABLE int32_t U_EXPORT2
    01599 ucnv_fromAlgorithmic(UConverter *cnv,
    01600                      UConverterType algorithmicType,
    01601                      char *target, int32_t targetCapacity,
    01602                      const char *source, int32_t sourceLength,
    01603                      UErrorCode *pErrorCode);
    01604
    01612 U_STABLE int32_t U_EXPORT2
    01613 ucnv_flushCache(void);
    01614
    01622 U_STABLE int32_t U_EXPORT2
    01623 ucnv_countAvailable(void);
    01624
    01635 U_STABLE const char* U_EXPORT2
    01636 ucnv_getAvailableName(int32_t n);
    01637
    01650 U_STABLE UEnumeration * U_EXPORT2
    01651 ucnv_openAllNames(UErrorCode *pErrorCode);
    01652
    01663 U_STABLE uint16_t U_EXPORT2
    01664 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode);
    01665
    01678 U_STABLE const char * U_EXPORT2
    01679 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
    01680
    01694 U_STABLE void U_EXPORT2
    01695 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode);
    01696
    01720 U_STABLE UEnumeration * U_EXPORT2
    01721 ucnv_openStandardNames(const char *convName,
    01722                        const char *standard,
    01723                        UErrorCode *pErrorCode);
    01724
    01730 U_STABLE uint16_t U_EXPORT2
    01731 ucnv_countStandards(void);
    01732
    01740 U_STABLE const char * U_EXPORT2
    01741 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode);
    01742
    01762 U_STABLE const char * U_EXPORT2
    01763 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode);
    01764
    01784 U_STABLE const char * U_EXPORT2
    01785 ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode);
    01786
    01801 U_STABLE const char * U_EXPORT2
    01802 ucnv_getDefaultName(void);
    01803
    01820 U_STABLE void U_EXPORT2
    01821 ucnv_setDefaultName(const char *name);
    01822
    01840 U_STABLE void U_EXPORT2
    01841 ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen);
    01842
    01851 U_STABLE UBool U_EXPORT2
    01852 ucnv_isAmbiguous(const UConverter *cnv);
    01853
    01869 U_STABLE void U_EXPORT2
    01870 ucnv_setFallback(UConverter *cnv, UBool usesFallback);
    01871
    01881 U_STABLE UBool U_EXPORT2
    01882 ucnv_usesFallback(const UConverter *cnv);
    01883
    01940 U_STABLE const char* U_EXPORT2
    01941 ucnv_detectUnicodeSignature(const char* source,
    01942                             int32_t sourceLength,
    01943                             int32_t *signatureLength,
    01944                             UErrorCode *pErrorCode);
    01945
    01957 U_STABLE int32_t U_EXPORT2
    01958 ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status);
    01959
    01971 U_STABLE int32_t U_EXPORT2
    01972 ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status);
    01973
    01974 #endif
    01975
    01976 #endif
    01977 /*_UCNV*/