ICU 54.1 54.1

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

- File List
- Globals

All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ucnv.h
Go to the documentation of this file.
1 /*
2 **********************************************************************
3 * Copyright (C) 1999-2014, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 **********************************************************************
6 * ucnv.h:
7 * External APIs for the ICU's codeset conversion library
8 * Bertrand A. Damiba
9 *
10 * Modification History:
11 *
12 * Date Name Description
13 * 04/04/99 helena Fixed internal header inclusion.
14 * 05/11/00 helena Added setFallback and usesFallback APIs.
15 * 06/29/2000 helena Major rewrite of the callback APIs.
16 * 12/07/2000 srl Update of documentation
17 */
18
47 #ifndef UCNV_H
48 #define UCNV_H
49
50 #include "unicode/ucnv_err.h"
51 #include "unicode/uenum.h"
52 #include "unicode/localpointer.h"
53
54 #ifndef __USET_H__
55
65 struct USet;
67 typedef struct USet USet;
68
69 #endif
70
71 #if !UCONFIG_NO_CONVERSION
72
73 U_CDECL_BEGIN
74
76 #define UCNV_MAX_CONVERTER_NAME_LENGTH 60
77
78 #define UCNV_MAX_FULL_FILE_NAME_LENGTH (600+UCNV_MAX_CONVERTER_NAME_LENGTH)
79
81 #define UCNV_SI 0x0F
82
83 #define UCNV_SO 0x0E
84
90 typedef enum {
92 UCNV_UNSUPPORTED_CONVERTER = -1,
94 UCNV_SBCS = 0,
96 UCNV_DBCS = 1,
98 UCNV_MBCS = 2,
100 UCNV_LATIN_1 = 3,
102 UCNV_UTF8 = 4,
104 UCNV_UTF16_BigEndian = 5,
106 UCNV_UTF16_LittleEndian = 6,
108 UCNV_UTF32_BigEndian = 7,
110 UCNV_UTF32_LittleEndian = 8,
112 UCNV_EBCDIC_STATEFUL = 9,
114 UCNV_ISO_2022 = 10,
115
117 UCNV_LMBCS_1 = 11,
119 UCNV_LMBCS_2,
121 UCNV_LMBCS_3,
123 UCNV_LMBCS_4,
125 UCNV_LMBCS_5,
127 UCNV_LMBCS_6,
129 UCNV_LMBCS_8,
131 UCNV_LMBCS_11,
133 UCNV_LMBCS_16,
135 UCNV_LMBCS_17,
137 UCNV_LMBCS_18,
139 UCNV_LMBCS_19,
141 UCNV_LMBCS_LAST = UCNV_LMBCS_19,
143 UCNV_HZ,
145 UCNV_SCSU,
147 UCNV_ISCII,
149 UCNV_US_ASCII,
151 UCNV_UTF7,
153 UCNV_BOCU1,
155 UCNV_UTF16,
157 UCNV_UTF32,
159 UCNV_CESU8,
161 UCNV_IMAP_MAILBOX,
163 UCNV_COMPOUND_TEXT,
164
165 /* Number of converter types for which we have conversion routines. */
166 UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES
167 } UConverterType;
168
178 typedef enum {
179 UCNV_UNKNOWN = -1,
180 UCNV_IBM = 0
181 } UConverterPlatform;
182
198 typedef void (U_EXPORT2 *UConverterToUCallback) (
199 const void* context,
200 UConverterToUnicodeArgs *args,
201 const char *codeUnits,
202 int32_t length,
203 UConverterCallbackReason reason,
204 UErrorCode *pErrorCode);
205
221 typedef void (U_EXPORT2 *UConverterFromUCallback) (
222 const void* context,
223 UConverterFromUnicodeArgs *args,
224 const UChar* codeUnits,
225 int32_t length,
226 UChar32 codePoint,
227 UConverterCallbackReason reason,
228 UErrorCode *pErrorCode);
229
230 U_CDECL_END
231
237 #define UCNV_OPTION_SEP_CHAR ','
238
244 #define UCNV_OPTION_SEP_STRING ","
245
251 #define UCNV_VALUE_SEP_CHAR '='
252
258 #define UCNV_VALUE_SEP_STRING "="
259
268 #define UCNV_LOCALE_OPTION_STRING ",locale="
269
281 #define UCNV_VERSION_OPTION_STRING ",version="
282
293 #define UCNV_SWAP_LFNL_OPTION_STRING ",swaplfnl"
294
310 U_STABLE int U_EXPORT2
311 ucnv_compareNames(const char *name1, const char *name2);
312
313
364 U_STABLE UConverter* U_EXPORT2
365 ucnv_open(const char *converterName, UErrorCode *err);
366
367
394 U_STABLE UConverter* U_EXPORT2
395 ucnv_openU(const UChar *name,
396 UErrorCode *err);
397
462 U_STABLE UConverter* U_EXPORT2
463 ucnv_openCCSID(int32_t codepage,
464 UConverterPlatform platform,
465 UErrorCode * err);
466
497 U_STABLE UConverter* U_EXPORT2
498 ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err);
499
539 U_STABLE UConverter * U_EXPORT2
540 ucnv_safeClone(const UConverter *cnv,
541 void *stackBuffer,
542 int32_t *pBufferSize,
543 UErrorCode *status);
544
545 #ifndef U_HIDE_DEPRECATED_API
546
553 #define U_CNV_SAFECLONE_BUFFERSIZE 1024
554
555 #endif /* U_HIDE_DEPRECATED_API */
556
568 U_STABLE void U_EXPORT2
569 ucnv_close(UConverter * converter);
570
571 #if U_SHOW_CPLUSPLUS_API
572
573 U_NAMESPACE_BEGIN
574
584 U_DEFINE_LOCAL_OPEN_POINTER(LocalUConverterPointer, UConverter, ucnv_close);
585
586 U_NAMESPACE_END
587
588 #endif
589
607 U_STABLE void U_EXPORT2
608 ucnv_getSubstChars(const UConverter *converter,
609 char *subChars,
610 int8_t *len,
611 UErrorCode *err);
612
632 U_STABLE void U_EXPORT2
633 ucnv_setSubstChars(UConverter *converter,
634 const char *subChars,
635 int8_t len,
636 UErrorCode *err);
637
665 U_STABLE void U_EXPORT2
666 ucnv_setSubstString(UConverter *cnv,
667 const UChar *s,
668 int32_t length,
669 UErrorCode *err);
670
684 U_STABLE void U_EXPORT2
685 ucnv_getInvalidChars(const UConverter *converter,
686 char *errBytes,
687 int8_t *len,
688 UErrorCode *err);
689
703 U_STABLE void U_EXPORT2
704 ucnv_getInvalidUChars(const UConverter *converter,
705 UChar *errUChars,
706 int8_t *len,
707 UErrorCode *err);
708
716 U_STABLE void U_EXPORT2
717 ucnv_reset(UConverter *converter);
718
727 U_STABLE void U_EXPORT2
728 ucnv_resetToUnicode(UConverter *converter);
729
738 U_STABLE void U_EXPORT2
739 ucnv_resetFromUnicode(UConverter *converter);
740
791 U_STABLE int8_t U_EXPORT2
792 ucnv_getMaxCharSize(const UConverter *converter);
793
813 #define UCNV_GET_MAX_BYTES_FOR_STRING(length, maxCharSize) \
814 (((int32_t)(length)+10)*(int32_t)(maxCharSize))
815
824 U_STABLE int8_t U_EXPORT2
825 ucnv_getMinCharSize(const UConverter *converter);
826
841 U_STABLE int32_t U_EXPORT2
842 ucnv_getDisplayName(const UConverter *converter,
843 const char *displayLocale,
844 UChar *displayName,
845 int32_t displayNameCapacity,
846 UErrorCode *err);
847
858 U_STABLE const char * U_EXPORT2
859 ucnv_getName(const UConverter *converter, UErrorCode *err);
860
884 U_STABLE int32_t U_EXPORT2
885 ucnv_getCCSID(const UConverter *converter,
886 UErrorCode *err);
887
898 U_STABLE UConverterPlatform U_EXPORT2
899 ucnv_getPlatform(const UConverter *converter,
900 UErrorCode *err);
901
910 U_STABLE UConverterType U_EXPORT2
911 ucnv_getType(const UConverter * converter);
912
928 U_STABLE void U_EXPORT2
929 ucnv_getStarters(const UConverter* converter,
930 UBool starters[256],
931 UErrorCode* err);
932
933
939 typedef enum UConverterUnicodeSet {
941 UCNV_ROUNDTRIP_SET,
943 UCNV_ROUNDTRIP_AND_FALLBACK_SET,
945 UCNV_SET_COUNT
946 } UConverterUnicodeSet;
947
948
994 U_STABLE void U_EXPORT2
995 ucnv_getUnicodeSet(const UConverter *cnv,
996 USet *setFillIn,
997 UConverterUnicodeSet whichSet,
998 UErrorCode *pErrorCode);
999
1011 U_STABLE void U_EXPORT2
1012 ucnv_getToUCallBack (const UConverter * converter,
1013 UConverterToUCallback *action,
1014 const void **context);
1015
1027 U_STABLE void U_EXPORT2
1028 ucnv_getFromUCallBack (const UConverter * converter,
1029 UConverterFromUCallback *action,
1030 const void **context);
1031
1047 U_STABLE void U_EXPORT2
1048 ucnv_setToUCallBack (UConverter * converter,
1049 UConverterToUCallback newAction,
1050 const void* newContext,
1051 UConverterToUCallback *oldAction,
1052 const void** oldContext,
1053 UErrorCode * err);
1054
1070 U_STABLE void U_EXPORT2
1071 ucnv_setFromUCallBack (UConverter * converter,
1072 UConverterFromUCallback newAction,
1073 const void *newContext,
1074 UConverterFromUCallback *oldAction,
1075 const void **oldContext,
1076 UErrorCode * err);
1077
1136 U_STABLE void U_EXPORT2
1137 ucnv_fromUnicode (UConverter * converter,
1138 char **target,
1139 const char *targetLimit,
1140 const UChar ** source,
1141 const UChar * sourceLimit,
1142 int32_t* offsets,
1143 UBool flush,
1144 UErrorCode * err);
1145
1205 U_STABLE void U_EXPORT2
1206 ucnv_toUnicode(UConverter *converter,
1207 UChar **target,
1208 const UChar *targetLimit,
1209 const char **source,
1210 const char *sourceLimit,
1211 int32_t *offsets,
1212 UBool flush,
1213 UErrorCode *err);
1214
1242 U_STABLE int32_t U_EXPORT2
1243 ucnv_fromUChars(UConverter *cnv,
1244 char *dest, int32_t destCapacity,
1245 const UChar *src, int32_t srcLength,
1246 UErrorCode *pErrorCode);
1247
1274 U_STABLE int32_t U_EXPORT2
1275 ucnv_toUChars(UConverter *cnv,
1276 UChar *dest, int32_t destCapacity,
1277 const char *src, int32_t srcLength,
1278 UErrorCode *pErrorCode);
1279
1350 U_STABLE UChar32 U_EXPORT2
1351 ucnv_getNextUChar(UConverter * converter,
1352 const char **source,
1353 const char * sourceLimit,
1354 UErrorCode * err);
1355
1494 U_STABLE void U_EXPORT2
1495 ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
1496 char **target, const char *targetLimit,
1497 const char **source, const char *sourceLimit,
1498 UChar *pivotStart, UChar **pivotSource,
1499 UChar **pivotTarget, const UChar *pivotLimit,
1500 UBool reset, UBool flush,
1501 UErrorCode *pErrorCode);
1502
1558 U_STABLE int32_t U_EXPORT2
1559 ucnv_convert(const char *toConverterName,
1560 const char *fromConverterName,
1561 char *target,
1562 int32_t targetCapacity,
1563 const char *source,
1564 int32_t sourceLength,
1565 UErrorCode *pErrorCode);
1566
1612 U_STABLE int32_t U_EXPORT2
1613 ucnv_toAlgorithmic(UConverterType algorithmicType,
1614 UConverter *cnv,
1615 char *target, int32_t targetCapacity,
1616 const char *source, int32_t sourceLength,
1617 UErrorCode *pErrorCode);
1618
1664 U_STABLE int32_t U_EXPORT2
1665 ucnv_fromAlgorithmic(UConverter *cnv,
1666 UConverterType algorithmicType,
1667 char *target, int32_t targetCapacity,
1668 const char *source, int32_t sourceLength,
1669 UErrorCode *pErrorCode);
1670
1678 U_STABLE int32_t U_EXPORT2
1679 ucnv_flushCache(void);
1680
1688 U_STABLE int32_t U_EXPORT2
1689 ucnv_countAvailable(void);
1690
1701 U_STABLE const char* U_EXPORT2
1702 ucnv_getAvailableName(int32_t n);
1703
1716 U_STABLE UEnumeration * U_EXPORT2
1717 ucnv_openAllNames(UErrorCode *pErrorCode);
1718
1729 U_STABLE uint16_t U_EXPORT2
1730 ucnv_countAliases(const char *alias, UErrorCode *pErrorCode);
1731
1744 U_STABLE const char * U_EXPORT2
1745 ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
1746
1760 U_STABLE void U_EXPORT2
1761 ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode);
1762
1786 U_STABLE UEnumeration * U_EXPORT2
1787 ucnv_openStandardNames(const char *convName,
1788 const char *standard,
1789 UErrorCode *pErrorCode);
1790
1796 U_STABLE uint16_t U_EXPORT2
1797 ucnv_countStandards(void);
1798
1806 U_STABLE const char * U_EXPORT2
1807 ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode);
1808
1828 U_STABLE const char * U_EXPORT2
1829 ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode);
1830
1850 U_STABLE const char * U_EXPORT2
1851 ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode);
1852
1867 U_STABLE const char * U_EXPORT2
1868 ucnv_getDefaultName(void);
1869
1870 #ifndef U_HIDE_SYSTEM_API
1871
1887 U_STABLE void U_EXPORT2
1888 ucnv_setDefaultName(const char *name);
1889 #endif /* U_HIDE_SYSTEM_API */
1890
1908 U_STABLE void U_EXPORT2
1909 ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen);
1910
1919 U_STABLE UBool U_EXPORT2
1920 ucnv_isAmbiguous(const UConverter *cnv);
1921
1937 U_STABLE void U_EXPORT2
1938 ucnv_setFallback(UConverter *cnv, UBool usesFallback);
1939
1949 U_STABLE UBool U_EXPORT2
1950 ucnv_usesFallback(const UConverter *cnv);
1951
1981 U_STABLE const char* U_EXPORT2
1982 ucnv_detectUnicodeSignature(const char* source,
1983 int32_t sourceLength,
1984 int32_t *signatureLength,
1985 UErrorCode *pErrorCode);
1986
1998 U_STABLE int32_t U_EXPORT2
1999 ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status);
2000
2012 U_STABLE int32_t U_EXPORT2
2013 ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status);
2014
2030 U_STABLE UBool U_EXPORT2
2031 ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status);
2032
2033 #endif
2034
2035 #endif
2036 /*_UCNV*/