1b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/* 2b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho******************************************************************************* 3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Copyright (C) 2010, International Business Machines 4b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Corporation and others. All Rights Reserved. 5b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho******************************************************************************* 6b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* file name: denseranges.h 7b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* encoding: US-ASCII 8b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* tab size: 8 (not used) 9b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* indentation:4 10b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* 11b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* created on: 2010sep25 12b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* created by: Markus W. Scherer 13b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* 14b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Helper code for finding a small number of dense ranges. 15b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho*/ 16b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 17b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#ifndef __DENSERANGES_H__ 18b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#define __DENSERANGES_H__ 19b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 20b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#include "unicode/utypes.h" 21b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 22b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/** 23b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Does it make sense to write 1..capacity ranges? 24b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Returns 0 if not, otherwise the number of ranges. 25b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param values Sorted array of signed-integer values. 26b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param length Number of values. 27b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param density Minimum average range density, in 256th. (0x100=100%=perfectly dense.) 28b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Should be 0x80..0x100, must be 1..0x100. 29b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param ranges Output ranges array. 30b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param capacity Maximum number of ranges. 31b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @return Minimum number of ranges (at most capacity) that have the desired density, 32b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * or 0 if that density cannot be achieved. 33b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 34b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoU_CAPI int32_t U_EXPORT2 35b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehouprv_makeDenseRanges(const int32_t values[], int32_t length, 36b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho int32_t density, 37b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho int32_t ranges[][2], int32_t capacity); 38b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 39b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#endif // __DENSERANGES_H__ 40