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