Next: , Up: Preparation


2.1 Header

The library contains a few independent parts, and each part export the interfaces (data types and functions) in a header file. You must include the appropriate header files in all programs using the library, either directly or through some other header file, like this:

     #include <stringprep.h>

The header files and the functions they define are categorized as follows:

stringprep.h
The low-level stringprep API entry point. For IDN applications, this is usually invoked via IDNA. Some applications, specifically non-IDN ones, may want to prepare strings directly though, and should include this header file.

The name space of the stringprep part of Libidn is stringprep* for function names, Stringprep* for data types and STRINGPREP_* for other symbols. In addition, _stringprep* is reserved for internal use and should never be used by applications.

punycode.h
The entry point to Punycode encoding and decoding functions. Normally punycode is used via the idna.h interface, but some application may want to perform raw punycode operations.

The name space of the punycode part of Libidn is punycode_* for function names, Punycode* for data types and PUNYCODE_* for other symbols. In addition, _punycode* is reserved for internal use and should never be used by applications.

idna.h
The entry point to the IDNA functions. This is the normal entry point for applications that need IDN functionality.

The name space of the IDNA part of Libidn is idna_* for function names, Idna* for data types and IDNA_* for other symbols. In addition, _idna* is reserved for internal use and should never be used by applications.

tld.h
The entry point to the TLD functions. Normal applications are not expected to need this functionality, but it is present for applications that are used by TLDs to validate customer input.

The name space of the TLD part of Libidn is tld_* for function names, Tld_* for data types and TLD_* for other symbols. In addition, _tld* is reserved for internal use and should never be used by applications.

pr29.h
The entry point to the PR29 functions. These functions are used to detect “problem sequences” (see PR29 Functions), mostly for use in security critical applications.

The name space of the PR29 part of Libidn is pr29_* for function names, Pr29_* for data types and PR29_* for other symbols. In addition, _pr29* is reserved for internal use and should never be used by applications.