text: #include "unicode/utypes.h"
  #include "unicode/unorm.h"
  #include "unicode/localpointer.h"
  #include "unicode/parseerr.h"
  #include "unicode/uloc.h"
  #include "unicode/uset.h"
  #include "unicode/uscript22 of file ucol.h.
  Base letter represents a primary difference.
  Set comparison level to UCOL_PRIMARY to ignore secondary and tertiary differences. Use this to set the strength of a Collator object. Example of primary difference, "abc" < "abd"
  Diacritical differences on the same base letter represent a secondary difference. Set comparison level to UCOL_SECONDARY to ignore tertiary differences. Use this to set the strength of a Collator object. Example of secondary difference, "ä" >> "a".
  Uppercase and lowercase versions of the same character represents a tertiary difference. Set comparison level to UCOL_TERTIARY to include all comparison differences. Use this to set the strength of a Collator object. Example of tertiary difference, "abc" <<< "ABC".
  Two characters are considered "identical" when they have the same unicode spellings. UCOL_IDENTICAL. For example, "ä" == "ä".
  UCollationStrength is also used to determine the strength of sort keys generated from UCollator objects These values can be now found in the UColAttributeValue enum.
  Definition at line 228 of file ucol.h.
  Enum containing attribute values for controling collation behavior.
  Here are all the allowable values. Not every attribute can take every value. The only universal value is UCOL_DEFAULT, which resets the attribute value to the predefined value for that locale
  Definition at line 71 of file ucol.h.
  Enum containing the codes for reordering segments of the collation table that are not script codes.
  These reordering codes are to be used in conjunction with the script codes.
  Definition at line 139 of file ucol.h.
  Creates a binary image of a collator.
  This binary image can be stored and later used to instantiate a collator using ucol_openBinary. This API supports preflighting.
  Close a UCollator.
  Once closed, a UCollator should not be used. Every open collator should be closed. Otherwise, a memory leak will result.
  Determine how many locales have collation rules available.
  This function is most useful as determining the loop ending condition for calls to ucol_getAvailable.
  Compare two strings for equality.
  This function is equivalent to ucol_strcoll == UCOL_EQUAL
  Universal attribute getter.
  Get a locale for which collation rules are available.
  A UCollator in a locale returned by this function will perform the correct collation for the locale.
  Produce a bound for a given sortkey and a number of levels.
  Return value is always the number of bytes needed, regardless of whether the result buffer was big enough or even valid.
  Resulting bounds can be used to produce a range of strings that are between upper and lower bounds. For example, if bounds are produced for a sortkey of string "smith", strings between upper and lower bounds with one level would include "Smith", "SMITH", "sMiTh".
  There are two upper bounds that can be produced. If UCOL_BOUND_UPPER is produced, strings matched would be as above. However, if bound produced using UCOL_BOUND_UPPER_LONG is used, the above example will also match "Smithsonian" and similar.
  For more on usage, see example in cintltst/capitst.c in procedure TestBounds. Sort keys may be compared using
  strcmp.
  Get a set containing the contractions defined by the collator.
  The set includes both locales will behave equivalently. The converse is not always true; two collators may in fact be equivalent, but return different results, due to internal details. The return result has no other meaning than that stated above, and implies nothing as to the relationship between the two locales. This is intended for use by applications who wish to cache collators, or otherwise reuse collators when possible. The functional equivalent may change over time. For more information, please see the Locales and Services section of the ICU User Guide.
  Given a key and a locale, returns an array of string values in a preferred order that would make a difference.
  These are all and only those values where the open (creation) of the service with the locale formed from the input locale plus input keyword and that value has different behavior than creation with the input locale alone.
  gets the locale name of the collator.
  If the collator is instantiated from the rules, then this function returns NULL. a Unicode set that contains all the characters and sequences tailored in this collator.
  The result must be disposed of by using uset_close.
  Calculates the set of unsafe code points, given a collator.
  A character is unsafe if you could append any character and cause the ordering to alter significantly. Collation sorts in normalized order, so anything that rearranges in normalization can cause this. Thus if you have a character like a_umlaut, and you add a lower_dot to it, then it normalizes to a_lower_dot + umlaut, and sorts differently.
  Gets the variable top value of a Collator. result is of size zero.
  Gets the next count bytes of a sort key.
  Caller needs to preserve state array between calls and to provide the same type of UCharIterator set with the same string. The destination buffer provided must be big enough to store the number of requested bytes..
  The UCollator pointer is used in all the calls to the Collation service. After finished, collator must be disposed of by calling ucol_close.
  Opens a collator from a collator binary image created using ucol_cloneBinary.
  Binary image used in instantiation of the collator remains owned by the user and should stay around for the lifetime of the collator. The API also takes a base collator which must be the root collator.
  Open a collator defined by a short form string.
  The structure and the syntax of the string is defined in the "Naming collators" section of the users guide: Attributes are overriden by the subsequent attributes. So, for "S2_S3", final strength will be 3. 3066bis locale overrides individual locale parts. The call to this function is equivalent to a call to ucol_open, followed by a series of calls to ucol_setAttribute and ucol_setVariableTop.
  Produce a UCollator instance according to the rules supplied.
  The rules are used to change the default ordering, defined in the UCA in a process called tailoring. The resulting UCollator pointer can be used in the same way as the one obtained by ucol_strcoll.
  Touches all resources needed for instantiating a collator from a short string definition, thus filling up the cache.
  Sets the variable top to).