!hR V1Ru5 ```php hjkhghoppoopppooppoppoppoopoirh bnmbertsurheoppopopooooooooooooooopoopopdf'tdfg !hR V1Ru5 ```php hjkhghoppoopppooppoppoppoopoirh bnmbertsurheoppopopooooooooooooooopoopopdf'tdfg // © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ******************************************************************************* * * Copyright (C) 2003-2014, International Business Machines * Corporation and others. All Rights Reserved. * ******************************************************************************* * file name: usprep.h * encoding: UTF-8 * tab size: 8 (not used) * indentation:4 * * created on: 2003jul2 * created by: Ram Viswanadha */ #ifndef __USPREP_H__ #define __USPREP_H__ /** * \file * \brief C API: Implements the StringPrep algorithm. */ #include "unicode/utypes.h" #if U_SHOW_CPLUSPLUS_API #include "unicode/localpointer.h" #endif // U_SHOW_CPLUSPLUS_API /** * * StringPrep API implements the StingPrep framework as described by RFC 3454. * StringPrep prepares Unicode strings for use in network protocols. * Profiles of StingPrep are set of rules and data according to with the * Unicode Strings are prepared. Each profiles contains tables which describe * how a code point should be treated. The tables are broadly classified into * * * The procedure for preparing Unicode strings: *
    *
  1. Map: For each character in the input, check if it has a mapping * and, if so, replace it with its mapping.
  2. *
  3. Normalize: Possibly normalize the result of step 1 using Unicode * normalization.
  4. *
  5. Prohibit: Check for any characters that are not allowed in the * output. If any are found, return an error.
  6. *
  7. Check bidi: Possibly check for right-to-left characters, and if * any are found, make sure that the whole string satisfies the * requirements for bidirectional strings. If the string does not * satisfy the requirements for bidirectional strings, return an * error.
  8. *
* @author Ram Viswanadha */ #if !UCONFIG_NO_IDNA #include "unicode/parseerr.h" /** * The StringPrep profile * @stable ICU 2.8 */ typedef struct UStringPrepProfile UStringPrepProfile; /** * Option to prohibit processing of unassigned code points in the input * * @see usprep_prepare * @stable ICU 2.8 */ #define USPREP_DEFAULT 0x0000 /** * Option to allow processing of unassigned code points in the input * * @see usprep_prepare * @stable ICU 2.8 */ #define USPREP_ALLOW_UNASSIGNED 0x0001 /** * enums for the standard stringprep profile types * supported by usprep_openByType. * @see usprep_openByType * @stable ICU 4.2 */ typedef enum UStringPrepProfileType { /** * RFC3491 Nameprep * @stable ICU 4.2 */ USPREP_RFC3491_NAMEPREP, /** * RFC3530 nfs4_cs_prep * @stable ICU 4.2 */ USPREP_RFC3530_NFS4_CS_PREP, /** * RFC3530 nfs4_cs_prep with case insensitive option * @stable ICU 4.2 */ USPREP_RFC3530_NFS4_CS_PREP_CI, /** * RFC3530 nfs4_cis_prep * @stable ICU 4.2 */ USPREP_RFC3530_NFS4_CIS_PREP, /** * RFC3530 nfs4_mixed_prep for prefix * @stable ICU 4.2 */ USPREP_RFC3530_NFS4_MIXED_PREP_PREFIX, /** * RFC3530 nfs4_mixed_prep for suffix * @stable ICU 4.2 */ USPREP_RFC3530_NFS4_MIXED_PREP_SUFFIX, /** * RFC3722 iSCSI * @stable ICU 4.2 */ USPREP_RFC3722_ISCSI, /** * RFC3920 XMPP Nodeprep * @stable ICU 4.2 */ USPREP_RFC3920_NODEPREP, /** * RFC3920 XMPP Resourceprep * @stable ICU 4.2 */ USPREP_RFC3920_RESOURCEPREP, /** * RFC4011 Policy MIB Stringprep * @stable ICU 4.2 */ USPREP_RFC4011_MIB, /** * RFC4013 SASLprep * @stable ICU 4.2 */ USPREP_RFC4013_SASLPREP, /** * RFC4505 trace * @stable ICU 4.2 */ USPREP_RFC4505_TRACE, /** * RFC4518 LDAP * @stable ICU 4.2 */ USPREP_RFC4518_LDAP, /** * RFC4518 LDAP for case ignore, numeric and stored prefix * matching rules * @stable ICU 4.2 */ USPREP_RFC4518_LDAP_CI } UStringPrepProfileType; /** * Creates a StringPrep profile from the data file. * * @param pat