Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

ucnv.h

Go to the documentation of this file.
00001 /* 00002 ********************************************************************** 00003 * Copyright (C) 1999-2003, 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 00051 struct UConverter; 00052 00054 typedef struct UConverter UConverter; 00055 00056 #include "unicode/utypes.h" 00057 #include "unicode/ucnv_err.h" 00058 #include "unicode/uenum.h" 00059 00060 #ifndef __USET_H__ 00061 00071 struct USet; 00072 typedef struct USet USet; 00073 00074 #endif 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 { 00094 UCNV_UNSUPPORTED_CONVERTER = -1, 00095 UCNV_SBCS = 0, 00096 UCNV_DBCS = 1, 00097 UCNV_MBCS = 2, 00098 UCNV_LATIN_1 = 3, 00099 UCNV_UTF8 = 4, 00100 UCNV_UTF16_BigEndian = 5, 00101 UCNV_UTF16_LittleEndian = 6, 00102 UCNV_UTF32_BigEndian = 7, 00103 UCNV_UTF32_LittleEndian = 8, 00104 UCNV_EBCDIC_STATEFUL = 9, 00105 UCNV_ISO_2022 = 10, 00106 00107 UCNV_LMBCS_1 = 11, 00108 UCNV_LMBCS_2, 00109 UCNV_LMBCS_3, 00110 UCNV_LMBCS_4, 00111 UCNV_LMBCS_5, 00112 UCNV_LMBCS_6, 00113 UCNV_LMBCS_8, 00114 UCNV_LMBCS_11, 00115 UCNV_LMBCS_16, 00116 UCNV_LMBCS_17, 00117 UCNV_LMBCS_18, 00118 UCNV_LMBCS_19, 00119 UCNV_LMBCS_LAST = UCNV_LMBCS_19, 00120 UCNV_HZ, 00121 UCNV_SCSU, 00122 UCNV_ISCII, 00123 UCNV_US_ASCII, 00124 UCNV_UTF7, 00125 UCNV_BOCU1, 00126 UCNV_UTF16, 00127 UCNV_UTF32, 00128 UCNV_CESU8, 00129 UCNV_IMAP_MAILBOX, 00130 00131 /* Number of converter types for which we have conversion routines. */ 00132 UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES 00133 00134 } UConverterType; 00135 00145 typedef enum { 00146 UCNV_UNKNOWN = -1, 00147 UCNV_IBM = 0 00148 } UConverterPlatform; 00149 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 *); 00169 00182 typedef void (U_EXPORT2 *UConverterFromUCallback) ( 00183 const void* context, 00184 UConverterFromUnicodeArgs *args, 00185 const UChar* codeUnits, 00186 int32_t length, 00187 UChar32 codePoint, 00188 UConverterCallbackReason reason, 00189 UErrorCode *); 00190 00191 U_CDECL_END 00192 00198 #define UCNV_OPTION_SEP_CHAR ',' 00199 00205 #define UCNV_OPTION_SEP_STRING "," 00206 00212 #define UCNV_VALUE_SEP_CHAR '=' 00213 00219 #define UCNV_VALUE_SEP_STRING "=" 00220 00229 #define UCNV_LOCALE_OPTION_STRING ",locale=" 00230 00239 #define UCNV_VERSION_OPTION_STRING ",version=" 00240 00251 #define UCNV_SWAP_LFNL_OPTION_STRING ",swaplfnl" 00252 00266 U_CAPI int U_EXPORT2 00267 ucnv_compareNames(const char *name1, const char *name2); 00268 00269 00305 U_CAPI UConverter* U_EXPORT2 00306 ucnv_open(const char *converterName, UErrorCode *err); 00307 00308 00332 U_CAPI UConverter* U_EXPORT2 00333 ucnv_openU(const UChar *name, 00334 UErrorCode *err); 00335 00400 U_CAPI UConverter* U_EXPORT2 00401 ucnv_openCCSID(int32_t codepage, 00402 UConverterPlatform platform, 00403 UErrorCode * err); 00404 00435 U_CAPI UConverter* U_EXPORT2 00436 ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err); 00437 00454 U_CAPI UConverter * U_EXPORT2 00455 ucnv_safeClone(const UConverter *cnv, 00456 void *stackBuffer, 00457 int32_t *pBufferSize, 00458 UErrorCode *status); 00459 00466 #define U_CNV_SAFECLONE_BUFFERSIZE 1024 00467 00479 U_CAPI void U_EXPORT2 00480 ucnv_close(UConverter * converter); 00481 00496 U_CAPI void U_EXPORT2 00497 ucnv_getSubstChars(const UConverter *converter, 00498 char *subChars, 00499 int8_t *len, 00500 UErrorCode *err); 00501 00514 U_CAPI void U_EXPORT2 00515 ucnv_setSubstChars(UConverter *converter, 00516 const char *subChars, 00517 int8_t len, 00518 UErrorCode *err); 00519 00533 U_CAPI void U_EXPORT2 00534 ucnv_getInvalidChars(const UConverter *converter, 00535 char *errBytes, 00536 int8_t *len, 00537 UErrorCode *err); 00538 00552 U_CAPI void U_EXPORT2 00553 ucnv_getInvalidUChars(const UConverter *converter, 00554 UChar *errUChars, 00555 int8_t *len, 00556 UErrorCode *err); 00557 00565 U_CAPI void U_EXPORT2 00566 ucnv_reset(UConverter *converter); 00567 00576 U_CAPI void U_EXPORT2 00577 ucnv_resetToUnicode(UConverter *converter); 00578 00587 U_CAPI void U_EXPORT2 00588 ucnv_resetFromUnicode(UConverter *converter); 00589 00638 U_CAPI int8_t U_EXPORT2 00639 ucnv_getMaxCharSize(const UConverter *converter); 00640 00660 #define UCNV_GET_MAX_BYTES_FOR_STRING(length, maxCharSize) \ 00661 (((int32_t)(length)+10)*(int32_t)(maxCharSize)) 00662 00671 U_CAPI int8_t U_EXPORT2 00672 ucnv_getMinCharSize(const UConverter *converter); 00673 00688 U_CAPI int32_t U_EXPORT2 00689 ucnv_getDisplayName(const UConverter *converter, 00690 const char *displayLocale, 00691 UChar *displayName, 00692 int32_t displayNameCapacity, 00693 UErrorCode *err); 00694 00705 U_CAPI const char * U_EXPORT2 00706 ucnv_getName(const UConverter *converter, UErrorCode *err); 00707 00731 U_CAPI int32_t U_EXPORT2 00732 ucnv_getCCSID(const UConverter *converter, 00733 UErrorCode *err); 00734 00745 U_CAPI UConverterPlatform U_EXPORT2 00746 ucnv_getPlatform(const UConverter *converter, 00747 UErrorCode *err); 00748 00757 U_CAPI UConverterType U_EXPORT2 00758 ucnv_getType(const UConverter * converter); 00759 00775 U_CAPI void U_EXPORT2 00776 ucnv_getStarters(const UConverter* converter, 00777 UBool starters[256], 00778 UErrorCode* err); 00779 00785 typedef enum UConverterUnicodeSet { 00787 UCNV_ROUNDTRIP_SET, 00789 UCNV_SET_COUNT 00790 } UConverterUnicodeSet; 00791 00826 U_CAPI void U_EXPORT2 00827 ucnv_getUnicodeSet(const UConverter *cnv, 00828 USet *set, 00829 UConverterUnicodeSet which, 00830 UErrorCode *pErrorCode); 00831 00843 U_CAPI void U_EXPORT2 00844 ucnv_getToUCallBack (const UConverter * converter, 00845 UConverterToUCallback *action, 00846 const void **context); 00847 00859 U_CAPI void U_EXPORT2 00860 ucnv_getFromUCallBack (const UConverter * converter, 00861 UConverterFromUCallback *action, 00862 const void **context); 00863 00879 U_CAPI void U_EXPORT2 00880 ucnv_setToUCallBack (UConverter * converter, 00881 UConverterToUCallback newAction, 00882 const void* newContext, 00883 UConverterToUCallback *oldAction, 00884 const void** oldContext, 00885 UErrorCode * err); 00886 00902 U_CAPI void U_EXPORT2 00903 ucnv_setFromUCallBack (UConverter * converter, 00904 UConverterFromUCallback newAction, 00905 const void *newContext, 00906 UConverterFromUCallback *oldAction, 00907 const void **oldContext, 00908 UErrorCode * err); 00909 00968 U_CAPI void U_EXPORT2 00969 ucnv_fromUnicode (UConverter * converter, 00970 char **target, 00971 const char *targetLimit, 00972 const UChar ** source, 00973 const UChar * sourceLimit, 00974 int32_t* offsets, 00975 UBool flush, 00976 UErrorCode * err); 00977 01037 U_CAPI void U_EXPORT2 01038 ucnv_toUnicode(UConverter *converter, 01039 UChar **target, 01040 const UChar *targetLimit, 01041 const char **source, 01042 const char *sourceLimit, 01043 int32_t *offsets, 01044 UBool flush, 01045 UErrorCode *err); 01046 01074 U_CAPI int32_t U_EXPORT2 01075 ucnv_fromUChars(UConverter *cnv, 01076 char *dest, int32_t destCapacity, 01077 const UChar *src, int32_t srcLength, 01078 UErrorCode *pErrorCode); 01079 01106 U_CAPI int32_t U_EXPORT2 01107 ucnv_toUChars(UConverter *cnv, 01108 UChar *dest, int32_t destCapacity, 01109 const char *src, int32_t srcLength, 01110 UErrorCode *pErrorCode); 01111 01182 U_CAPI UChar32 U_EXPORT2 01183 ucnv_getNextUChar(UConverter * converter, 01184 const char **source, 01185 const char * sourceLimit, 01186 UErrorCode * err); 01187 01316 U_CAPI void U_EXPORT2 01317 ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv, 01318 char **target, const char *targetLimit, 01319 const char **source, const char *sourceLimit, 01320 UChar *pivotStart, UChar **pivotSource, 01321 UChar **pivotTarget, const UChar *pivotLimit, 01322 UBool reset, UBool flush, 01323 UErrorCode *pErrorCode); 01324 01380 U_CAPI int32_t U_EXPORT2 01381 ucnv_convert(const char *toConverterName, 01382 const char *fromConverterName, 01383 char *target, 01384 int32_t targetCapacity, 01385 const char *source, 01386 int32_t sourceLength, 01387 UErrorCode *pErrorCode); 01388 01434 U_CAPI int32_t U_EXPORT2 01435 ucnv_toAlgorithmic(UConverterType algorithmicType, 01436 UConverter *cnv, 01437 char *target, int32_t targetCapacity, 01438 const char *source, int32_t sourceLength, 01439 UErrorCode *pErrorCode); 01440 01486 U_CAPI int32_t U_EXPORT2 01487 ucnv_fromAlgorithmic(UConverter *cnv, 01488 UConverterType algorithmicType, 01489 char *target, int32_t targetCapacity, 01490 const char *source, int32_t sourceLength, 01491 UErrorCode *pErrorCode); 01492 01500 U_CAPI int32_t U_EXPORT2 01501 ucnv_flushCache(void); 01502 01510 U_CAPI int32_t U_EXPORT2 01511 ucnv_countAvailable(void); 01512 01523 U_CAPI const char* U_EXPORT2 01524 ucnv_getAvailableName(int32_t n); 01525 01538 U_CAPI UEnumeration * U_EXPORT2 01539 ucnv_openAllNames(UErrorCode *pErrorCode); 01540 01551 U_CAPI uint16_t U_EXPORT2 01552 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode); 01553 01566 U_CAPI const char * U_EXPORT2 01567 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode); 01568 01582 U_CAPI void U_EXPORT2 01583 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode); 01584 01608 U_CAPI UEnumeration * U_EXPORT2 01609 ucnv_openStandardNames(const char *convName, 01610 const char *standard, 01611 UErrorCode *pErrorCode); 01612 01618 U_CAPI uint16_t U_EXPORT2 01619 ucnv_countStandards(void); 01620 01628 U_CAPI const char * U_EXPORT2 01629 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode); 01630 01650 U_CAPI const char * U_EXPORT2 01651 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode); 01652 01672 U_CAPI const char * U_EXPORT2 01673 ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode); 01674 01685 U_CAPI const char * U_EXPORT2 01686 ucnv_getDefaultName(void); 01687 01696 U_CAPI void U_EXPORT2 01697 ucnv_setDefaultName(const char *name); 01698 01716 U_CAPI void U_EXPORT2 01717 ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen); 01718 01727 U_CAPI UBool U_EXPORT2 01728 ucnv_isAmbiguous(const UConverter *cnv); 01729 01737 U_CAPI void U_EXPORT2 01738 ucnv_setFallback(UConverter *cnv, UBool usesFallback); 01739 01746 U_CAPI UBool U_EXPORT2 01747 ucnv_usesFallback(const UConverter *cnv); 01748 01806 U_CAPI const char* U_EXPORT2 01807 ucnv_detectUnicodeSignature(const char* source, 01808 int32_t sourceLength, 01809 int32_t *signatureLength, 01810 UErrorCode *pErrorCode); 01811 01812 #endif 01813 /*_UCNV*/ 01814

Generated on Wed Jul 28 09:15:54 2004 for ICU 2.8 by doxygen 1.3.7