| /* |
| ******************************************************************************* |
| * |
| * Copyright (C) 1999-2008, International Business Machines |
| * Corporation and others. All Rights Reserved. |
| * |
| ******************************************************************************* |
| * file name: ucol_wgt.h |
| * encoding: US-ASCII |
| * tab size: 8 (not used) |
| * indentation:4 |
| * |
| * created on: 2001mar08 |
| * created by: Markus W. Scherer |
| */ |
| |
| #ifndef UCOL_WGT_H |
| #define UCOL_WGT_H |
| |
| #include "unicode/utypes.h" |
| |
| #if !UCONFIG_NO_COLLATION |
| |
| /* definitions for CE weights */ |
| |
| typedef struct WeightRange { |
| uint32_t start, end; |
| int32_t length, count; |
| int32_t length2; |
| uint32_t count2; |
| } WeightRange; |
| |
| /** |
| * Determine heuristically |
| * what ranges to use for a given number of weights between (excluding) |
| * two limits. |
| * |
| * @param lowerLimit A collation element weight; the ranges will be filled to cover |
| * weights greater than this one. |
| * @param upperLimit A collation element weight; the ranges will be filled to cover |
| * weights less than this one. |
| * @param n The number of collation element weights w necessary such that |
| * lowerLimit<w<upperLimit in lexical order. |
| * @param maxByte The highest valid byte value. |
| * @param ranges An array that is filled in with one or more ranges to cover |
| * n weights between the limits. |
| * @return number of ranges, 0 if it is not possible to fit n elements between the limits |
| */ |
| U_CFUNC int32_t |
| ucol_allocWeights(uint32_t lowerLimit, uint32_t upperLimit, |
| uint32_t n, |
| uint32_t maxByte, |
| WeightRange ranges[7]); |
| |
| /** |
| * Given a set of ranges calculated by ucol_allocWeights(), |
| * iterate through the weights. |
| * The ranges are modified to keep the current iteration state. |
| * |
| * @param ranges The array of ranges that ucol_allocWeights() filled in. |
| * The ranges are modified. |
| * @param pRangeCount The number of ranges. It will be decremented when necessary. |
| * @return The next weight in the ranges, or 0xffffffff if there is none left. |
| */ |
| U_CFUNC uint32_t |
| ucol_nextWeight(WeightRange ranges[], int32_t *pRangeCount); |
| |
| #endif /* #if !UCONFIG_NO_COLLATION */ |
| |
| #endif |