ICU 57.1  57.1
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 {
51 #ifndef U_HIDE_DEPRECATED_API
52 
60 #endif /* U_HIDE_DEPRECATED_API */
61 
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 
153 
164 
166 
167 #endif
168 
179 typedef struct UIDNAInfo {
181  int16_t size;
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 {
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
int32_t uidna_IDNToUnicode(const UChar *src, int32_t srcLength, UChar *dest, int32_t destCapacity, int32_t options, UParseError *parseError, UErrorCode *status)
IDNA2003: Convenience function that implements the IDNToUnicode operation as defined in the IDNA RFC...
Option to check whether the input conforms to the STD3 ASCII rules, for example the restriction of la...
Definition: uidna.h:68
A label contains hyphen-minus ('-') in the third and fourth positions.
Definition: uidna.h:453
A label does not meet the IDNA BiDi requirements (for right-to-left characters).
Definition: uidna.h:489
A label does not meet the IDNA CONTEXTJ requirements.
Definition: uidna.h:494
A label starts with a hyphen-minus ('-').
Definition: uidna.h:443
A label contains a dot=full stop.
Definition: uidna.h:475
A domain name is longer than 255 bytes in its storage form.
Definition: uidna.h:438
IDNA option for nontransitional processing in ToUnicode().
Definition: uidna.h:102
IDNA option to check for whether the input conforms to the CONTEXTJ rules.
Definition: uidna.h:84
IDNA option to check for whether the input conforms to the CONTEXTO rules.
Definition: uidna.h:112
struct UIDNAInfo UIDNAInfo
Output container for IDNA processing errors.
A label does not meet the IDNA CONTEXTO requirements for punctuation characters.
Definition: uidna.h:501
int32_t uidna_labelToUnicodeUTF8(const UIDNA *idna, const char *label, int32_t length, char *dest, int32_t capacity, UIDNAInfo *pInfo, UErrorCode *pErrorCode)
Converts a single domain name label into its Unicode form for human-readable display.
Output container for IDNA processing errors.
Definition: uidna.h:179
A non-final domain name label (or the whole domain name) is empty.
Definition: uidna.h:424
#define U_DEPRECATED
This is used to declare a function as a deprecated public ICU C API.
Definition: umachine.h:113
A label or domain name contains disallowed characters.
Definition: uidna.h:463
A label ends with a hyphen-minus ('-').
Definition: uidna.h:448
int16_t size
sizeof(UIDNAInfo)
Definition: uidna.h:181
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129
int32_t uidna_toUnicode(const UChar *src, int32_t srcLength, UChar *dest, int32_t destCapacity, int32_t options, UParseError *parseError, UErrorCode *status)
IDNA2003: This function implements the ToUnicode operation as defined in the IDNA RFC...
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
Definition: localpointer.h:536
IDNA option for nontransitional processing in ToASCII().
Definition: uidna.h:93
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
UBool reservedB3
Reserved field, do not use.
Definition: uidna.h:188
IDNA option to check for whether the input conforms to the BiDi rules.
Definition: uidna.h:76
UBool isTransitionalDifferent
Set to TRUE if transitional and nontransitional processing produce different results.
Definition: uidna.h:187
Option to allow unassigned code points in domain names and labels.
Definition: uidna.h:59
An ACE label does not contain a valid label string.
Definition: uidna.h:484
int32_t reservedI3
Reserved field, do not use.
Definition: uidna.h:196
uint16_t UChar
Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...
Definition: umachine.h:312
struct UIDNA UIDNA
C typedef for struct UIDNA.
Definition: uidna.h:120
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
C API: Parse Error Information.
uint32_t errors
Bit set indicating IDNA processing errors.
Definition: uidna.h:194
int32_t uidna_toASCII(const UChar *src, int32_t srcLength, UChar *dest, int32_t destCapacity, int32_t options, UParseError *parseError, UErrorCode *status)
IDNA2003: This function implements the ToASCII operation as defined in the IDNA RFC.
void uidna_close(UIDNA *idna)
Closes a UIDNA instance.
UIDNA * uidna_openUTS46(uint32_t options, UErrorCode *pErrorCode)
Returns a UIDNA instance which implements UTS #46.
int32_t uidna_compare(const UChar *s1, int32_t length1, const UChar *s2, int32_t length2, int32_t options, UErrorCode *status)
IDNA2003: Compare two IDN strings for equivalence.
A label does not meet the IDNA CONTEXTO requirements for digits.
Definition: uidna.h:507
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers...
Definition: utypes.h:476
A domain name label is longer than 63 bytes.
Definition: uidna.h:431
int32_t uidna_nameToUnicode(const UIDNA *idna, const UChar *name, int32_t length, UChar *dest, int32_t capacity, UIDNAInfo *pInfo, UErrorCode *pErrorCode)
Converts a whole domain name into its Unicode form for human-readable display.
int32_t uidna_nameToUnicodeUTF8(const UIDNA *idna, const char *name, int32_t length, char *dest, int32_t capacity, UIDNAInfo *pInfo, UErrorCode *pErrorCode)
Converts a whole domain name into its Unicode form for human-readable display.
int32_t uidna_labelToASCII(const UIDNA *idna, const UChar *label, int32_t length, UChar *dest, int32_t capacity, UIDNAInfo *pInfo, UErrorCode *pErrorCode)
Converts a single domain name label into its ASCII form for DNS lookup.
int32_t uidna_labelToASCII_UTF8(const UIDNA *idna, const char *label, int32_t length, char *dest, int32_t capacity, UIDNAInfo *pInfo, UErrorCode *pErrorCode)
Converts a single domain name label into its ASCII form for DNS lookup.
int32_t uidna_nameToASCII_UTF8(const UIDNA *idna, const char *name, int32_t length, char *dest, int32_t capacity, UIDNAInfo *pInfo, UErrorCode *pErrorCode)
Converts a whole domain name into its ASCII form for DNS lookup.
int32_t uidna_labelToUnicode(const UIDNA *idna, const UChar *label, int32_t length, UChar *dest, int32_t capacity, UIDNAInfo *pInfo, UErrorCode *pErrorCode)
Converts a single domain name label into its Unicode form for human-readable display.
A UParseError struct is used to returned detailed information about parsing errors.
Definition: parseerr.h:56
Basic definitions for ICU, for both C and C++ APIs.
A label starts with a combining mark.
Definition: uidna.h:458
int32_t uidna_IDNToASCII(const UChar *src, int32_t srcLength, UChar *dest, int32_t destCapacity, int32_t options, UParseError *parseError, UErrorCode *status)
IDNA2003: Convenience function that implements the IDNToASCII operation as defined in the IDNA RFC...
Default options value: None of the other options are set.
Definition: uidna.h:50
int32_t reservedI2
Reserved field, do not use.
Definition: uidna.h:195
int32_t uidna_nameToASCII(const UIDNA *idna, const UChar *name, int32_t length, UChar *dest, int32_t capacity, UIDNAInfo *pInfo, UErrorCode *pErrorCode)
Converts a whole domain name into its ASCII form for DNS lookup.
A label starts with "xn--" but does not contain valid Punycode.
Definition: uidna.h:469
"Smart pointer" class, closes a UIDNA via uidna_close().
#define U_STABLE
This is used to declare a function as a stable public ICU C API.
Definition: umachine.h:109
int8_t UBool
The ICU boolean type.
Definition: umachine.h:234