18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*******************************************************************************
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   Copyright (C) 2002-2004, International Business Machines
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   Corporation and others.  All Rights Reserved.
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*******************************************************************************
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   file name:  uset.h
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   encoding:   US-ASCII
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   tab size:   8 (not used)
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   indentation:4
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   created on: 2002mar07
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   created by: Markus W. Scherer
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*   C version of UnicodeSet.
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \file
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \brief C API: Unicode Set
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <p>This is a C wrapper around the C++ UnicodeSet class.</p>
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef __USET_H__
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#define __USET_H__
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "unicode/utypes.h"
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "unicode/uchar.h"
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef UCNV_H
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstruct USet;
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * A UnicodeSet.  Use the uset_* API to manipulate.  Create with
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_open*, and destroy with uset_close.
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct USet USet;
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Bitmask values to be passed to uset_openPatternOptions() or
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_applyPattern() taking an option parameter.
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectenum {
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * Ignore white space within patterns unless quoted or escaped.
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @stable ICU 2.4
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    USET_IGNORE_SPACE = 1,
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * Enable case insensitive matching.  E.g., "[ab]" with this flag
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * will match 'a', 'A', 'b', and 'B'.  "[^ab]" with this flag will
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * match all except 'a', 'A', 'b', and 'B'. This performs a full
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * closure over case mappings, e.g. U+017F for s.
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @stable ICU 2.4
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    USET_CASE_INSENSITIVE = 2,
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * Bitmask for UnicodeSet::closeOver() indicating letter case.
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * This may be ORed together with other selectors.
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @internal
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    USET_CASE = 2,
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * Enable case insensitive matching.  E.g., "[ab]" with this flag
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * will match 'a', 'A', 'b', and 'B'.  "[^ab]" with this flag will
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * match all except 'a', 'A', 'b', and 'B'. This adds the lower-,
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * title-, and uppercase mappings as well as the case folding
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * of each existing element in the set.
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @draft ICU 3.2
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    USET_ADD_CASE_MAPPINGS = 4,
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * Enough for any single-code point set
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @internal
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    USET_SERIALIZED_STATIC_ARRAY_CAPACITY=8
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project};
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * A serialized form of a Unicode set.  Limited manipulations are
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * possible directly on a serialized set.  See below.
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projecttypedef struct USerializedSet {
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * The serialized Unicode Set.
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @stable ICU 2.4
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    const uint16_t *array;
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * The length of the array that contains BMP characters.
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @stable ICU 2.4
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    int32_t bmpLength;
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * The total length of the array.
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @stable ICU 2.4
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    int32_t length;
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /**
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * A small buffer for the array to reduce memory allocations.
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     * @stable ICU 2.4
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project     */
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    uint16_t staticArray[USET_SERIALIZED_STATIC_ARRAY_CAPACITY];
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} USerializedSet;
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*********************************************************************
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * USet API
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *********************************************************************/
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Creates a USet object that contains the range of characters
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * start..end, inclusive.
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param start first character of the range, inclusive
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param end last character of the range, inclusive
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return a newly created USet.  The caller must call uset_close() on
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * it when done.
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE USet* U_EXPORT2
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_open(UChar32 start, UChar32 end);
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Creates a set from the given pattern.  See the UnicodeSet class
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * description for the syntax of the pattern language.
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param pattern a string specifying what characters are in the set
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param patternLength the length of the pattern, or -1 if null
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * terminated
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param ec the error code
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE USet* U_EXPORT2
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_openPattern(const UChar* pattern, int32_t patternLength,
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 UErrorCode* ec);
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Creates a set from the given pattern.  See the UnicodeSet class
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * description for the syntax of the pattern language.
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param pattern a string specifying what characters are in the set
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param patternLength the length of the pattern, or -1 if null
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * terminated
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param options bitmask for options to apply to the pattern.
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param ec the error code
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE USet* U_EXPORT2
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_openPatternOptions(const UChar* pattern, int32_t patternLength,
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 uint32_t options,
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                 UErrorCode* ec);
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Disposes of the storage used by a USet object.  This function should
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * be called exactly once for objects returned by uset_open().
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to dispose of
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_close(USet* set);
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Causes the USet object to represent the range <code>start - end</code>.
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If <code>start > end</code> then this USet is set to an empty range.
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to set to the given range
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param start first character in the set, inclusive
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param end last character in the set, inclusive
1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT void U_EXPORT2
1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_set(USet* set,
1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project         UChar32 start, UChar32 end);
1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Modifies the set to represent the set specified by the given
1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * pattern. See the UnicodeSet class description for the syntax of
1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the pattern language. See also the User Guide chapter about UnicodeSet.
1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <em>Empties the set passed before applying the pattern.</em>
1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set               The set to which the pattern is to be applied.
1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param pattern           A pointer to UChar string specifying what characters are in the set.
1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *                          The character at pattern[0] must be a '['.
1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param patternLength     The length of the UChar string. -1 if NUL terminated.
1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param options           A bitmask for options to apply to the pattern.
1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *                          Valid options are USET_IGNORE_SPACE and USET_CASE_INSENSITIVE.
1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param status            Returns an error if the pattern cannot be parsed.
1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return                  Upon successful parse, the value is either
1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *                          the index of the character after the closing ']'
1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *                          of the parsed pattern.
1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *                          If the status code indicates failure, then the return value
1988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *                          is the index of the error in the source.
1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 2.8
2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT int32_t U_EXPORT2
2038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_applyPattern(USet *set,
2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                  const UChar *pattern, int32_t patternLength,
2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                  uint32_t options,
2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                  UErrorCode *status);
2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
2098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Modifies the set to contain those code points which have the given value
2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * for the given binary or enumerated property, as returned by
2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * u_getIntPropertyValue.  Prior contents of this set are lost.
2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to contain the code points defined by the property
2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param prop a property in the range UCHAR_BIN_START..UCHAR_BIN_LIMIT-1
2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * or UCHAR_INT_START..UCHAR_INT_LIMIT-1
2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * or UCHAR_MASK_START..UCHAR_MASK_LIMIT-1.
2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param value a value in the range u_getIntPropertyMinValue(prop)..
2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * u_getIntPropertyMaxValue(prop), with one exception.  If prop is
2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * UCHAR_GENERAL_CATEGORY_MASK, then value should not be a UCharCategory, but
2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * rather a mask value produced by U_GET_GC_MASK().  This allows grouped
2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * categories such as [:L:] to be represented.
2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param ec error code input/output parameter
2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT void U_EXPORT2
2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_applyIntPropertyValue(USet* set,
2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                           UProperty prop, int32_t value, UErrorCode* ec);
2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Modifies the set to contain those code points which have the
2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * given value for the given property.  Prior contents of this
2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * set are lost.
2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to contain the code points defined by the given
2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * property and value alias
2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param prop a string specifying a property alias, either short or long.
2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The name is matched loosely.  See PropertyAliases.txt for names and a
2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * description of loose matching.  If the value string is empty, then this
2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * string is interpreted as either a General_Category value alias, a Script
2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * value alias, a binary property alias, or a special ID.  Special IDs are
2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * matched loosely and correspond to the following sets:
2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * "ANY" = [\\u0000-\\U0010FFFF],
2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * "ASCII" = [\\u0000-\\u007F].
2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param propLength the length of the prop, or -1 if NULL
2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param value a string specifying a value alias, either short or long.
2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The name is matched loosely.  See PropertyValueAliases.txt for names
2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * and a description of loose matching.  In addition to aliases listed,
2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numeric values and canonical combining classes may be expressed
2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * numerically, e.g., ("nv", "0.5") or ("ccc", "220").  The value string
2588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * may also be empty.
2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param valueLength the length of the value, or -1 if NULL
2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param ec error code input/output parameter
2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT void U_EXPORT2
2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_applyPropertyAlias(USet* set,
2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                        const UChar *prop, int32_t propLength,
2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                        const UChar *value, int32_t valueLength,
2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                        UErrorCode* ec);
2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Return true if the given position, in the given pattern, appears
2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * to be the start of a UnicodeSet pattern.
2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param pattern a string specifying the pattern
2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param patternLength the length of the pattern, or -1 if NULL
2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param pos the given position
2798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT UBool U_EXPORT2
2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_resemblesPattern(const UChar *pattern, int32_t patternLength,
2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                      int32_t pos);
2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
2858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns a string representation of this set.  If the result of
2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * calling this function is passed to a uset_openPattern(), it
2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * will produce another set that is equal to this one.
2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param result the string to receive the rules, may be NULL
2918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param resultCapacity the capacity of result, may be 0 if result is NULL
2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param escapeUnprintable if TRUE then convert unprintable
2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * character to their hex escape representations, \\uxxxx or
2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * \\Uxxxxxxxx.  Unprintable characters are those other than
2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * U+000A, U+0020..U+007E.
2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param ec error code.
2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return length of string, possibly larger than resultCapacity
2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE int32_t U_EXPORT2
3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_toPattern(const USet* set,
3028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project               UChar* result, int32_t resultCapacity,
3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project               UBool escapeUnprintable,
3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project               UErrorCode* ec);
3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Adds the given character to the given USet.  After this call,
3088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_contains(set, c) will return TRUE.
3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to which to add the character
3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param c the character to add
3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
3148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_add(USet* set, UChar32 c);
3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Adds all of the elements in the specified set to this set if
3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * they're not already present.  This operation effectively
3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modifies this set so that its value is the <i>union</i> of the two
3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * sets.  The behavior of this operation is unspecified if the specified
3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * collection is modified while the operation is in progress.
3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to which to add the set
3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param additionalSet the source set whose elements are to be added to this set.
3258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.6
3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_addAll(USet* set, const USet *additionalSet);
3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Adds the given range of characters to the given USet.  After this call,
3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_contains(set, start, end) will return TRUE.
3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to which to add the character
3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param start the first character of the range to add, inclusive
3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param end the last character of the range to add, inclusive
3368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.2
3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_addRange(USet* set, UChar32 start, UChar32 end);
3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Adds the given string to the given USet.  After this call,
3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_containsString(set, str, strLen) will return TRUE.
3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to which to add the character
3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param str the string to add
3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param strLen the length of the string or -1 if null terminated.
3478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_addString(USet* set, const UChar* str, int32_t strLen);
3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Removes the given character from the given USet.  After this call,
3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_contains(set, c) will return FALSE.
3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object from which to remove the character
3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param c the character to remove
3578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_remove(USet* set, UChar32 c);
3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Removes the given range of characters from the given USet.  After this call,
3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_contains(set, start, end) will return FALSE.
3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to which to add the character
3668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param start the first character of the range to remove, inclusive
3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param end the last character of the range to remove, inclusive
3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.2
3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_removeRange(USet* set, UChar32 start, UChar32 end);
3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Removes the given string to the given USet.  After this call,
3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_containsString(set, str, strLen) will return FALSE.
3768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object to which to add the character
3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param str the string to remove
3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param strLen the length of the string or -1 if null terminated.
3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_removeString(USet* set, const UChar* str, int32_t strLen);
3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Removes from this set all of its elements that are contained in the
3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * specified set.  This operation effectively modifies this
3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * set so that its value is the <i>asymmetric set difference</i> of
3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the two sets.
3898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object from which the elements are to be removed
3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param removeSet the object that defines which elements will be
3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * removed from this set
3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT void U_EXPORT2
3958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_removeAll(USet* set, const USet* removeSet);
3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Retain only the elements in this set that are contained in the
3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * specified range.  If <code>start > end</code> then an empty range is
4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * retained, leaving the set empty.  This is equivalent to
4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * a boolean logic AND, or a set INTERSECTION.
4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object for which to retain only the specified range
4048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param start first character, inclusive, of range to be retained
4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * to this set.
4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param end last character, inclusive, of range to be retained
4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * to this set.
4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT void U_EXPORT2
4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_retain(USet* set, UChar32 start, UChar32 end);
4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Retains only the elements in this set that are contained in the
4158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * specified set.  In other words, removes from this set all of
4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its elements that are not contained in the specified set.  This
4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * operation effectively modifies this set so that its value is
4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the <i>intersection</i> of the two sets.
4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
4208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object on which to perform the retain
4218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param retain set that defines which elements this set will retain
4228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
4238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT void U_EXPORT2
4258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_retainAll(USet* set, const USet* retain);
4268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
4288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Reallocate this objects internal structures to take up the least
4298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * possible space, without changing this object's value.
4308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
4318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the object on which to perfrom the compact
4328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
4338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT void U_EXPORT2
4358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_compact(USet* set);
4368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
4388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Inverts this set.  This operation modifies this set so that
4398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * its value is its complement.  This operation does not affect
4408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the multicharacter strings, if any.
4418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
4428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
4438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
4458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_complement(USet* set);
4468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
4488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Complements in this set all elements contained in the specified
4498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * set.  Any character in the other set will be removed if it is
4508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * in this set, or will be added if it is not in this set.
4518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
4528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set with which to complement
4538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param complement set that defines which elements will be xor'ed
4548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * from this set.
4558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
4568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT void U_EXPORT2
4588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_complementAll(USet* set, const USet* complement);
4598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
4618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Removes all of the elements from this set.  This set will be
4628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * empty after this call returns.
4638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
4648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
4658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
4678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_clear(USet* set);
4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns TRUE if the given USet contains no characters and no
4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * strings.
4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
4738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if set is empty
4748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
4758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE UBool U_EXPORT2
4778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_isEmpty(const USet* set);
4788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
4808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns TRUE if the given USet contains the given character.
4818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
4828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param c The codepoint to check for within the set
4838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if set contains c
4848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
4858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE UBool U_EXPORT2
4878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_contains(const USet* set, UChar32 c);
4888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
4898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
4908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns TRUE if the given USet contains all characters c
4918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * where start <= c && c <= end.
4928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
4938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param start the first character of the range to test, inclusive
4948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param end the last character of the range to test, inclusive
4958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return TRUE if set contains the range
4968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.2
4978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
4988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE UBool U_EXPORT2
4998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_containsRange(const USet* set, UChar32 start, UChar32 end);
5008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
5028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns TRUE if the given USet contains the given string.
5038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
5048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param str the string
5058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param strLen the length of the string or -1 if null terminated.
5068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if set contains str
5078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
5088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE UBool U_EXPORT2
5108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_containsString(const USet* set, const UChar* str, int32_t strLen);
5118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
5138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the index of the given character within this set, where
5148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the set is ordered by ascending code point.  If the character
5158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * is not in this set, return -1.  The inverse of this method is
5168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <code>charAt()</code>.
5178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
5188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param c the character to obtain the index for
5198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return an index from 0..size()-1, or -1
5208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
5218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT int32_t U_EXPORT2
5238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_indexOf(const USet* set, UChar32 c);
5248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
5268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the character at the given index within this set, where
5278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the set is ordered by ascending code point.  If the index is
5288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * out of range, return (UChar32)-1.  The inverse of this method is
5298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * <code>indexOf()</code>.
5308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
5318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param index an index from 0..size()-1 to obtain the char for
5328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return the character at the given index, or (UChar32)-1.
5338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
5348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT UChar32 U_EXPORT2
5368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_charAt(const USet* set, int32_t index);
5378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
5398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the number of characters and strings contained in the given
5408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * USet.
5418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
5428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return a non-negative integer counting the characters and strings
5438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * contained in set
5448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
5458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE int32_t U_EXPORT2
5478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_size(const USet* set);
5488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
5508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the number of items in this set.  An item is either a range
5518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of characters or a single multicharacter string.
5528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
5538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return a non-negative integer counting the character ranges
5548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * and/or strings contained in set
5558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
5568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE int32_t U_EXPORT2
5588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_getItemCount(const USet* set);
5598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
5618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns an item of this set.  An item is either a range of
5628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * characters or a single multicharacter string.
5638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
5648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param itemIndex a non-negative integer in the range 0..
5658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_getItemCount(set)-1
5668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param start pointer to variable to receive first character
5678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * in range, inclusive
5688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param end pointer to variable to receive last character in range,
5698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * inclusive
5708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param str buffer to receive the string, may be NULL
5718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param strCapacity capacity of str, or 0 if str is NULL
5728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param ec error code
5738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return the length of the string (>= 2), or 0 if the item is a
5748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * range, in which case it is the range *start..*end, or -1 if
5758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * itemIndex is out of range
5768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
5778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE int32_t U_EXPORT2
5798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_getItem(const USet* set, int32_t itemIndex,
5808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project             UChar32* start, UChar32* end,
5818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project             UChar* str, int32_t strCapacity,
5828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project             UErrorCode* ec);
5838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
5858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns true if set1 contains all the characters and strings
5868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of set2. It answers the question, 'Is set1 a subset of set2?'
5878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set1 set to be checked for containment
5888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set2 set to be checked for containment
5898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if the test condition is met
5908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
5918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
5928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT UBool U_EXPORT2
5938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_containsAll(const USet* set1, const USet* set2);
5948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
5958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
5968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns true if set1 contains none of the characters and strings
5978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of set2. It answers the question, 'Is set1 a disjoint set of set2?'
5988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set1 set to be checked for containment
5998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set2 set to be checked for containment
6008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if the test condition is met
6018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
6028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
6038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT UBool U_EXPORT2
6048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_containsNone(const USet* set1, const USet* set2);
6058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
6078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns true if set1 contains some of the characters and strings
6088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of set2. It answers the question, 'Does set1 and set2 have an intersection?'
6098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set1 set to be checked for containment
6108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set2 set to be checked for containment
6118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if the test condition is met
6128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
6138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
6148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT UBool U_EXPORT2
6158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_containsSome(const USet* set1, const USet* set2);
6168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
6188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns true if set1 contains all of the characters and strings
6198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * of set2, and vis versa. It answers the question, 'Is set1 equal to set2?'
6208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set1 set to be checked for containment
6218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set2 set to be checked for containment
6228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if the test condition is met
6238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @draft ICU 3.2
6248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
6258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_DRAFT UBool U_EXPORT2
6268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_equals(const USet* set1, const USet* set2);
6278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*********************************************************************
6298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Serialized set API
6308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *********************************************************************/
6318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
6338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Serializes this set into an array of 16-bit integers.  Serialization
6348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (currently) only records the characters in the set; multicharacter
6358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * strings are ignored.
6368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
6378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The array
6388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * has following format (each line is one 16-bit integer):
6398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
6408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  length     = (n+2*m) | (m!=0?0x8000:0)
6418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  bmpLength  = n; present if m!=0
6428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  bmp[0]
6438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  bmp[1]
6448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  ...
6458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  bmp[n-1]
6468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  supp-high[0]
6478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  supp-low[0]
6488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  supp-high[1]
6498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  supp-low[1]
6508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  ...
6518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  supp-high[m-1]
6528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *  supp-low[m-1]
6538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
6548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The array starts with a header.  After the header are n bmp
6558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * code points, then m supplementary code points.  Either n or m
6568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * or both may be zero.  n+2*m is always <= 0x7FFF.
6578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
6588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If there are no supplementary characters (if m==0) then the
6598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * header is one 16-bit integer, 'length', with value n.
6608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
6618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * If there are supplementary characters (if m!=0) then the header
6628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * is two 16-bit integers.  The first, 'length', has value
6638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (n+2*m)|0x8000.  The second, 'bmpLength', has value n.
6648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
6658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * After the header the code points are stored in ascending order.
6668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Supplementary code points are stored as most significant 16
6678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * bits followed by least significant 16 bits.
6688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
6698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the set
6708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param dest pointer to buffer of destCapacity 16-bit integers.
6718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * May be NULL only if destCapacity is zero.
6728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param destCapacity size of dest, or zero.  Must not be negative.
6738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param pErrorCode pointer to the error code.  Will be set to
6748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * U_INDEX_OUTOFBOUNDS_ERROR if n+2*m > 0x7FFF.  Will be set to
6758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * U_BUFFER_OVERFLOW_ERROR if n+2*m+(m!=0?2:1) > destCapacity.
6768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return the total length of the serialized format, including
6778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the header, that is, n+2*m+(m!=0?2:1), or 0 on error other
6788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * than U_BUFFER_OVERFLOW_ERROR.
6798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
6808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
6818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE int32_t U_EXPORT2
6828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_serialize(const USet* set, uint16_t* dest, int32_t destCapacity, UErrorCode* pErrorCode);
6838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
6858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Given a serialized array, fill in the given serialized set object.
6868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param fillSet pointer to result
6878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param src pointer to start of array
6888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param srcLength length of array
6898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if the given array is valid, otherwise false
6908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
6918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
6928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE UBool U_EXPORT2
6938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_getSerializedSet(USerializedSet* fillSet, const uint16_t* src, int32_t srcLength);
6948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
6958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
6968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Set the USerializedSet to contain the given character (and nothing
6978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * else).
6988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param fillSet pointer to result
6998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param c The codepoint to set
7008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
7018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
7028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE void U_EXPORT2
7038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_setSerializedToOne(USerializedSet* fillSet, UChar32 c);
7048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
7068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns TRUE if the given USerializedSet contains the given
7078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * character.
7088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the serialized set
7098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param c The codepoint to check for within the set
7108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if set contains c
7118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
7128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
7138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE UBool U_EXPORT2
7148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_serializedContains(const USerializedSet* set, UChar32 c);
7158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
7178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the number of disjoint ranges of characters contained in
7188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the given serialized set.  Ignores any strings contained in the
7198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * set.
7208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the serialized set
7218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return a non-negative integer counting the character ranges
7228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * contained in set
7238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
7248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
7258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE int32_t U_EXPORT2
7268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_getSerializedRangeCount(const USerializedSet* set);
7278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/**
7298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns a range of characters contained in the given serialized
7308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * set.
7318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param set the serialized set
7328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param rangeIndex a non-negative integer in the range 0..
7338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * uset_getSerializedRangeCount(set)-1
7348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param pStart pointer to variable to receive first character
7358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * in range, inclusive
7368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @param pEnd pointer to variable to receive last character in range,
7378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * inclusive
7388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @return true if rangeIndex is valid, otherwise false
7398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @stable ICU 2.4
7408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
7418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectU_STABLE UBool U_EXPORT2
7428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectuset_getSerializedRange(const USerializedSet* set, int32_t rangeIndex,
7438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project                        UChar32* pStart, UChar32* pEnd);
7448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
7458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
746