| /* |
| ******************************************************************************* |
| * |
| * Copyright (C) 2002, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| ******************************************************************************* |
| * file name: uset.h |
| * encoding: US-ASCII |
| * tab size: 8 (not used) |
| * indentation:4 |
| * |
| * created on: 2002mar07 |
| * created by: Markus W. Scherer |
| * |
| * Poor man's C version of UnicodeSet, with only basic functions. |
| * See uset.c for more details. |
| */ |
| |
| #ifndef __USET_H__ |
| #define __USET_H__ |
| |
| #include "unicode/utypes.h" |
| |
| struct USet; |
| typedef struct USet USet; |
| |
| enum { |
| USET_SERIALIZED_STATIC_ARRAY_CAPACITY=8 /**< enough for any single-code point set */ |
| }; |
| |
| struct USerializedSet { |
| const uint16_t *array; |
| int32_t bmpLength, length; |
| uint16_t staticArray[USET_SERIALIZED_STATIC_ARRAY_CAPACITY]; |
| }; |
| typedef struct USerializedSet USerializedSet; |
| |
| U_CAPI USet * U_EXPORT2 |
| uset_open(UChar32 start, UChar32 limit); |
| |
| U_CAPI void U_EXPORT2 |
| uset_close(USet *set); |
| |
| U_CAPI UBool U_EXPORT2 |
| uset_add(USet *set, UChar32 c); |
| |
| U_CAPI void U_EXPORT2 |
| uset_remove(USet *set, UChar32 c); |
| |
| U_CAPI UBool U_EXPORT2 |
| uset_isEmpty(const USet *set); |
| |
| U_CAPI UBool U_EXPORT2 |
| uset_contains(const USet *set, UChar32 c); |
| |
| /** |
| * Check if the set contains exactly one code point. |
| * |
| * @return The code point if the set contains exactly one, otherwise -1. |
| */ |
| U_CAPI int32_t U_EXPORT2 |
| uset_containsOne(const USet *set); |
| |
| U_CAPI int32_t U_EXPORT2 |
| uset_countRanges(const USet *set); |
| |
| U_CAPI UBool U_EXPORT2 |
| uset_getRange(const USet *set, int32_t rangeIndex, |
| UChar32 *pStart, UChar32 *pLimit); |
| |
| U_CAPI int32_t U_EXPORT2 |
| uset_serialize(const USet *set, uint16_t *dest, int32_t destCapacity, UErrorCode *pErrorCode); |
| |
| U_CAPI UBool U_EXPORT2 |
| uset_getSerializedSet(USerializedSet *fillSet, const uint16_t *src, int32_t srcCapacity); |
| |
| /** |
| * Set the USerializedSet to contain exactly c. |
| */ |
| U_CAPI void U_EXPORT2 |
| uset_setSerializedToOne(USerializedSet *fillSet, UChar32 c); |
| |
| U_CAPI UBool U_EXPORT2 |
| uset_serializedContains(const USerializedSet *set, UChar32 c); |
| |
| U_CAPI int32_t U_EXPORT2 |
| uset_countSerializedRanges(const USerializedSet *set); |
| |
| U_CAPI UBool U_EXPORT2 |
| uset_getSerializedRange(const USerializedSet *set, int32_t rangeIndex, |
| UChar32 *pStart, UChar32 *pLimit); |
| |
| #endif |