ICU 50.1.2  50.1.2
uidna.h
Go to the documentation of this file.
1 /*
2  *******************************************************************************
3  *
4  * Copyright (C) 2003-2012, 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 
39 /*
40  * IDNA option bit set values.
41  */
42 enum {
99 #ifndef U_HIDE_DRAFT_API
100 
110 #endif /* U_HIDE_DRAFT_API */
111 };
112 
117 struct UIDNA;
118 typedef struct UIDNA UIDNA;
137 U_STABLE UIDNA * U_EXPORT2
138 uidna_openUTS46(uint32_t options, UErrorCode *pErrorCode);
139 
145 U_STABLE void U_EXPORT2
146 uidna_close(UIDNA *idna);
147 
148 #if U_SHOW_CPLUSPLUS_API
149 
151 
162 
164 
165 #endif
166 
177 typedef struct UIDNAInfo {
179  int16_t size;
192  uint32_t errors;
193  int32_t reservedI2;
194  int32_t reservedI3;
195 } UIDNAInfo;
196 
201 #define UIDNA_INFO_INITIALIZER { \
202  (int16_t)sizeof(UIDNAInfo), \
203  FALSE, FALSE, \
204  0, 0, 0 }
205 
229 U_STABLE int32_t U_EXPORT2
230 uidna_labelToASCII(const UIDNA *idna,
231  const UChar *label, int32_t length,
232  UChar *dest, int32_t capacity,
233  UIDNAInfo *pInfo, UErrorCode *pErrorCode);
234 
256 U_STABLE int32_t U_EXPORT2
257 uidna_labelToUnicode(const UIDNA *idna,
258  const UChar *label, int32_t length,
259  UChar *dest, int32_t capacity,
260  UIDNAInfo *pInfo, UErrorCode *pErrorCode);
261 
285 U_STABLE int32_t U_EXPORT2
286 uidna_nameToASCII(const UIDNA *idna,
287  const UChar *name, int32_t length,
288  UChar *dest, int32_t capacity,
289  UIDNAInfo *pInfo, UErrorCode *pErrorCode);
290 
312 U_STABLE int32_t U_EXPORT2
313 uidna_nameToUnicode(const UIDNA *idna,
314  const UChar *name, int32_t length,
315  UChar *dest, int32_t capacity,
316  UIDNAInfo *pInfo, UErrorCode *pErrorCode);
317 
318 /* UTF-8 versions of the processing methods --------------------------------- */
319 
337 U_STABLE int32_t U_EXPORT2
338 uidna_labelToASCII_UTF8(const UIDNA *idna,
339  const char *label, int32_t length,
340  char *dest, int32_t capacity,
341  UIDNAInfo *pInfo, UErrorCode *pErrorCode);
342 
360 U_STABLE int32_t U_EXPORT2
361 uidna_labelToUnicodeUTF8(const UIDNA *idna,
362  const char *label, int32_t length,
363  char *dest, int32_t capacity,
364  UIDNAInfo *pInfo, UErrorCode *pErrorCode);
365 
383 U_STABLE int32_t U_EXPORT2
384 uidna_nameToASCII_UTF8(const UIDNA *idna,
385  const char *name, int32_t length,
386  char *dest, int32_t capacity,
387  UIDNAInfo *pInfo, UErrorCode *pErrorCode);
388 
406 U_STABLE int32_t U_EXPORT2
407 uidna_nameToUnicodeUTF8(const UIDNA *idna,
408  const char *name, int32_t length,
409  char *dest, int32_t capacity,
410  UIDNAInfo *pInfo, UErrorCode *pErrorCode);
411 
412 /*
413  * IDNA error bit set values.
414  * When a domain name or label fails a processing step or does not meet the
415  * validity criteria, then one or more of these error bits are set.
416  */
417 enum {
493 #ifndef U_HIDE_DRAFT_API
494 
507 #endif /* U_HIDE_DRAFT_API */
508 };
509 
510 /* IDNA2003 API ------------------------------------------------------------- */
511 
571 U_STABLE int32_t U_EXPORT2
572 uidna_toASCII(const UChar* src, int32_t srcLength,
573  UChar* dest, int32_t destCapacity,
574  int32_t options,
575  UParseError* parseError,
576  UErrorCode* status);
577 
578 
619 U_STABLE int32_t U_EXPORT2
620 uidna_toUnicode(const UChar* src, int32_t srcLength,
621  UChar* dest, int32_t destCapacity,
622  int32_t options,
623  UParseError* parseError,
624  UErrorCode* status);
625 
626 
670 U_STABLE int32_t U_EXPORT2
671 uidna_IDNToASCII( const UChar* src, int32_t srcLength,
672  UChar* dest, int32_t destCapacity,
673  int32_t options,
674  UParseError* parseError,
675  UErrorCode* status);
676 
717 U_STABLE int32_t U_EXPORT2
718 uidna_IDNToUnicode( const UChar* src, int32_t srcLength,
719  UChar* dest, int32_t destCapacity,
720  int32_t options,
721  UParseError* parseError,
722  UErrorCode* status);
723 
758 U_STABLE int32_t U_EXPORT2
759 uidna_compare( const UChar *s1, int32_t length1,
760  const UChar *s2, int32_t length2,
761  int32_t options,
762  UErrorCode* status);
763 
764 #endif /* #if !UCONFIG_NO_IDNA */
765 
766 #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:64
A label contains hyphen-minus ('-') in the third and fourth positions.
Definition: uidna.h:451
A label does not meet the IDNA BiDi requirements (for right-to-left characters).
Definition: uidna.h:487
A label does not meet the IDNA CONTEXTJ requirements.
Definition: uidna.h:492
A label starts with a hyphen-minus ('-').
Definition: uidna.h:441
A label contains a dot=full stop.
Definition: uidna.h:473
A domain name is longer than 255 bytes in its storage form.
Definition: uidna.h:436
IDNA option for nontransitional processing in ToUnicode().
Definition: uidna.h:98
IDNA option to check for whether the input conforms to the CONTEXTJ rules.
Definition: uidna.h:80
IDNA option to check for whether the input conforms to the CONTEXTO rules.
Definition: uidna.h:109
struct UIDNAInfo UIDNAInfo
Output container for IDNA processing errors.
A label does not meet the IDNA CONTEXTO requirements for punctuation characters.
Definition: uidna.h:500
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:177
A non-final domain name label (or the whole domain name) is empty.
Definition: uidna.h:422
A label or domain name contains disallowed characters.
Definition: uidna.h:461
A label ends with a hyphen-minus ('-').
Definition: uidna.h:446
int16_t size
sizeof(UIDNAInfo)
Definition: uidna.h:179
#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:290
IDNA option for nontransitional processing in ToASCII().
Definition: uidna.h:89
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
UBool reservedB3
Reserved field, do not use.
Definition: uidna.h:186
IDNA option to check for whether the input conforms to the BiDi rules.
Definition: uidna.h:72
UBool isTransitionalDifferent
Set to TRUE if transitional and nontransitional processing produce different results.
Definition: uidna.h:185
Option to allow unassigned code points in domain names and labels.
Definition: uidna.h:56
An ACE label does not contain a valid label string.
Definition: uidna.h:482
int32_t reservedI3
Reserved field, do not use.
Definition: uidna.h:194
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:278
struct UIDNA UIDNA
C typedef for struct UIDNA.
Definition: uidna.h:118
#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:192
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:506
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:429
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:456
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:48
int32_t reservedI2
Reserved field, do not use.
Definition: uidna.h:193
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:467
"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:200