ICU 55.1 55.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
uidna.h
Go to the documentation of this file.
1 /*
2 *******************************************************************************
3 *
4 * Copyright (C) 2003-2014, International Business Machines
5 * Corporation and others. All Rights Reserved.
6 *
7 *******************************************************************************
8 * file name: uidna.h
9 * encoding: US-ASCII
10 * tab size: 8 (not used)
11 * indentation:4
12 *
13 * created on: 2003feb1
14 * created by: Ram Viswanadha
15 */
16
17 #ifndef __UIDNA_H__
18 #define __UIDNA_H__
19
20 #include "unicode/utypes.h"
21
22 #if !UCONFIG_NO_IDNA
23
24 #include "unicode/localpointer.h"
25 #include "unicode/parseerr.h"
26
41 /*
42 * IDNA option bit set values.
43 */
44 enum {
50 UIDNA_DEFAULT=0,
51 #ifndef U_HIDE_DEPRECATED_API
52
59 UIDNA_ALLOW_UNASSIGNED=1,
60 #endif /* U_HIDE_DEPRECATED_API */
61
68 UIDNA_USE_STD3_RULES=2,
76 UIDNA_CHECK_BIDI=4,
84 UIDNA_CHECK_CONTEXTJ=8,
93 UIDNA_NONTRANSITIONAL_TO_ASCII=0x10,
102 UIDNA_NONTRANSITIONAL_TO_UNICODE=0x20,
112 UIDNA_CHECK_CONTEXTO=0x40
113 };
114
119 struct UIDNA;
120 typedef struct UIDNA UIDNA;
139 U_STABLE UIDNA * U_EXPORT2
140 uidna_openUTS46(uint32_t options, UErrorCode *pErrorCode);
141
147 U_STABLE void U_EXPORT2
148 uidna_close(UIDNA *idna);
149
150 #if U_SHOW_CPLUSPLUS_API
151
152 U_NAMESPACE_BEGIN
153
163 U_DEFINE_LOCAL_OPEN_POINTER(LocalUIDNAPointer, UIDNA, uidna_close);
164
165 U_NAMESPACE_END
166
167 #endif
168
179 typedef struct UIDNAInfo {
181 int16_t size;
187 UBool isTransitionalDifferent;
188 UBool reservedB3;
194 uint32_t errors;
195 int32_t reservedI2;
196 int32_t reservedI3;
197 } UIDNAInfo;
198
203 #define UIDNA_INFO_INITIALIZER { \
204 (int16_t)sizeof(UIDNAInfo), \
205 FALSE, FALSE, \
206 0, 0, 0 }
207
231 U_STABLE int32_t U_EXPORT2
232 uidna_labelToASCII(const UIDNA *idna,
233 const UChar *label, int32_t length,
234 UChar *dest, int32_t capacity,
235 UIDNAInfo *pInfo, UErrorCode *pErrorCode);
236
258 U_STABLE int32_t U_EXPORT2
259 uidna_labelToUnicode(const UIDNA *idna,
260 const UChar *label, int32_t length,
261 UChar *dest, int32_t capacity,
262 UIDNAInfo *pInfo, UErrorCode *pErrorCode);
263
287 U_STABLE int32_t U_EXPORT2
288 uidna_nameToASCII(const UIDNA *idna,
289 const UChar *name, int32_t length,
290 UChar *dest, int32_t capacity,
291 UIDNAInfo *pInfo, UErrorCode *pErrorCode);
292
314 U_STABLE int32_t U_EXPORT2
315 uidna_nameToUnicode(const UIDNA *idna,
316 const UChar *name, int32_t length,
317 UChar *dest, int32_t capacity,
318 UIDNAInfo *pInfo, UErrorCode *pErrorCode);
319
320 /* UTF-8 versions of the processing methods --------------------------------- */
321
339 U_STABLE int32_t U_EXPORT2
340 uidna_labelToASCII_UTF8(const UIDNA *idna,
341 const char *label, int32_t length,
342 char *dest, int32_t capacity,
343 UIDNAInfo *pInfo, UErrorCode *pErrorCode);
344
362 U_STABLE int32_t U_EXPORT2
363 uidna_labelToUnicodeUTF8(const UIDNA *idna,
364 const char *label, int32_t length,
365 char *dest, int32_t capacity,
366 UIDNAInfo *pInfo, UErrorCode *pErrorCode);
367
385 U_STABLE int32_t U_EXPORT2
386 uidna_nameToASCII_UTF8(const UIDNA *idna,
387 const char *name, int32_t length,
388 char *dest, int32_t capacity,
389 UIDNAInfo *pInfo, UErrorCode *pErrorCode);
390
408 U_STABLE int32_t U_EXPORT2
409 uidna_nameToUnicodeUTF8(const UIDNA *idna,
410 const char *name, int32_t length,
411 char *dest, int32_t capacity,
412 UIDNAInfo *pInfo, UErrorCode *pErrorCode);
413
414 /*
415 * IDNA error bit set values.
416 * When a domain name or label fails a processing step or does not meet the
417 * validity criteria, then one or more of these error bits are set.
418 */
419 enum {
424 UIDNA_ERROR_EMPTY_LABEL=1,
431 UIDNA_ERROR_LABEL_TOO_LONG=2,
438 UIDNA_ERROR_DOMAIN_NAME_TOO_LONG=4,
443 UIDNA_ERROR_LEADING_HYPHEN=8,
448 UIDNA_ERROR_TRAILING_HYPHEN=0x10,
453 UIDNA_ERROR_HYPHEN_3_4=0x20,
458 UIDNA_ERROR_LEADING_COMBINING_MARK=0x40,
463 UIDNA_ERROR_DISALLOWED=0x80,
469 UIDNA_ERROR_PUNYCODE=0x100,
475 UIDNA_ERROR_LABEL_HAS_DOT=0x200,
484 UIDNA_ERROR_INVALID_ACE_LABEL=0x400,
489 UIDNA_ERROR_BIDI=0x800,
494 UIDNA_ERROR_CONTEXTJ=0x1000,
501 UIDNA_ERROR_CONTEXTO_PUNCTUATION=0x2000,
507 UIDNA_ERROR_CONTEXTO_DIGITS=0x4000
508 };
509
510 #ifndef U_HIDE_DEPRECATED_API
511
512 /* IDNA2003 API ------------------------------------------------------------- */
513
573 U_DEPRECATED int32_t U_EXPORT2
574 uidna_toASCII(const UChar* src, int32_t srcLength,
575 UChar* dest, int32_t destCapacity,
576 int32_t options,
577 UParseError* parseError,
578 UErrorCode* status);
579
580
621 U_DEPRECATED int32_t U_EXPORT2
622 uidna_toUnicode(const UChar* src, int32_t srcLength,
623 UChar* dest, int32_t destCapacity,
624 int32_t options,
625 UParseError* parseError,
626 UErrorCode* status);
627
628
672 U_DEPRECATED int32_t U_EXPORT2
673 uidna_IDNToASCII( const UChar* src, int32_t srcLength,
674 UChar* dest, int32_t destCapacity,
675 int32_t options,
676 UParseError* parseError,
677 UErrorCode* status);
678
719 U_DEPRECATED int32_t U_EXPORT2
720 uidna_IDNToUnicode( const UChar* src, int32_t srcLength,
721 UChar* dest, int32_t destCapacity,
722 int32_t options,
723 UParseError* parseError,
724 UErrorCode* status);
725
760 U_DEPRECATED int32_t U_EXPORT2
761 uidna_compare( const UChar *s1, int32_t length1,
762 const UChar *s2, int32_t length2,
763 int32_t options,
764 UErrorCode* status);
765
766 #endif /* U_HIDE_DEPRECATED_API */
767
768 #endif /* #if !UCONFIG_NO_IDNA */
769
770 #endif