ubrk.h revision b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2
1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Copyright (C) 1996-2011, International Business Machines Corporation and others. 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* All Rights Reserved. 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef UBRK_H 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define UBRK_H 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/uloc.h" 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utext.h" 1450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/localpointer.h" 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A text-break iterator. 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For usage in C programs. 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef UBRK_TYPEDEF_UBREAK_ITERATOR 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru# define UBRK_TYPEDEF_UBREAK_ITERATOR 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Opaque type representing an ICU Break iterator object. 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho typedef struct UBreakIterator UBreakIterator; 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_BREAK_ITERATION 30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/parseerr.h" 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \file 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \brief C API: BreakIterator 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <h2> BreakIterator C API </h2> 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The BreakIterator C API defines methods for finding the location 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * of boundaries in text. Pointer to a UBreakIterator maintain a 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * current position and scan over text returning the index of characters 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * where boundaries occur. 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Line boundary analysis determines where a text string can be broken 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * when line-wrapping. The mechanism correctly handles punctuation and 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * hyphenated words. 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sentence boundary analysis allows selection with correct 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpretation of periods within numbers and abbreviations, and 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * trailing punctuation marks such as quotation marks and parentheses. 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Word boundary analysis is used by search and replace functions, as 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * well as within text editing applications that allow the user to 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * select words with a double click. Word selection provides correct 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpretation of punctuation marks within and following 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * words. Characters that are not part of a word, such as symbols or 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * punctuation marks, have word-breaks on both sides. 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 59b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Character boundary analysis identifies the boundaries of 60b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * "Extended Grapheme Clusters", which are groupings of codepoints 61b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * that should be treated as character-like units for many text operations. 62b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Please see Unicode Standard Annex #29, Unicode Text Segmentation, 63b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * http://www.unicode.org/reports/tr29/ for additional information 64b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * on grapheme clusters and guidelines on their use. 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Title boundary analysis locates all positions, 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * typically starts of words, that should be set to Title Case 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * when title casing the text. 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The text boundary positions are found according to the rules 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * described in Unicode Standard Annex #29, Text Boundaries, and 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Unicode Standard Annex #14, Line Breaking Properties. These 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * are available at http://www.unicode.org/reports/tr14/ and 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * http://www.unicode.org/reports/tr29/. 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * In addition to the plain C API defined in this header file, an 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * object oriented C++ API with equivalent functionality is defined in the 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * file brkiter.h. 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 8050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Code snippets illustrating the use of the Break Iterator APIs 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * are available in the ICU User Guide, 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * http://icu-project.org/userguide/boundaryAnalysis.html 8350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * and in the sample program icu/source/samples/break/break.cpp 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** The possible types of text boundaries. @stable ICU 2.0 */ 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UBreakIteratorType { 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Character breaks @stable ICU 2.0 */ 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_CHARACTER = 0, 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Word breaks @stable ICU 2.0 */ 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD = 1, 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Line breaks @stable ICU 2.0 */ 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_LINE = 2, 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Sentence breaks @stable ICU 2.0 */ 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_SENTENCE = 3, 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef U_HIDE_DEPRECATED_API 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Title Case breaks 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The iterator created using this type locates title boundaries as described for 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration, 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * please use Word Boundary iterator. 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @deprecated ICU 2.8 Use the word break iterator for titlecasing for Unicode 4 and later. 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_TITLE = 4, 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* U_HIDE_DEPRECATED_API */ 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_COUNT = 5 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UBreakIteratorType; 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** Value indicating all text boundaries have been returned. 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define UBRK_DONE ((int32_t) -1) 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Enum constants for the word break tags returned by 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * getRuleStatus(). A range of values is defined for each category of 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * word, to allow for further subdivisions of a category in future releases. 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Applications should check for tag values falling within the range, rather 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * than for single individual values. 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.2 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UWordBreak { 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for "words" that do not fit into any of other categories. 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Includes spaces and most punctuation. */ 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_NONE = 0, 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Upper bound for tags for uncategorized words. */ 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_NONE_LIMIT = 100, 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for words that appear to be numbers, lower limit. */ 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_NUMBER = 100, 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for words that appear to be numbers, upper limit. */ 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_NUMBER_LIMIT = 200, 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for words that contain letters, excluding 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * hiragana, katakana or ideographic characters, lower limit. */ 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_LETTER = 200, 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for words containing letters, upper limit */ 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_LETTER_LIMIT = 300, 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for words containing kana characters, lower limit */ 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_KANA = 300, 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for words containing kana characters, upper limit */ 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_KANA_LIMIT = 400, 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for words containing ideographic characters, lower limit */ 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_IDEO = 400, 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for words containing ideographic characters, upper limit */ 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_WORD_IDEO_LIMIT = 500 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UWordBreak; 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Enum constants for the line break tags returned by getRuleStatus(). 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A range of values is defined for each category of 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * word, to allow for further subdivisions of a category in future releases. 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Applications should check for tag values falling within the range, rather 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * than for single individual values. 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum ULineBreakTag { 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for soft line breaks, positions at which a line break 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is acceptable but not required */ 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_LINE_SOFT = 0, 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Upper bound for soft line breaks. */ 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_LINE_SOFT_LIMIT = 100, 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for a hard, or mandatory line break */ 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_LINE_HARD = 100, 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Upper bound for hard line breaks. */ 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_LINE_HARD_LIMIT = 200 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} ULineBreakTag; 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Enum constants for the sentence break tags returned by getRuleStatus(). 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A range of values is defined for each category of 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * sentence, to allow for further subdivisions of a category in future releases. 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Applications should check for tag values falling within the range, rather 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * than for single individual values. 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum USentenceBreakTag { 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for for sentences ending with a sentence terminator 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ('.', '?', '!', etc.) character, possibly followed by a 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * hard separator (CR, LF, PS, etc.) 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_SENTENCE_TERM = 0, 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Upper bound for tags for sentences ended by sentence terminators. */ 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_SENTENCE_TERM_LIMIT = 100, 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for for sentences that do not contain an ending 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * sentence terminator ('.', '?', '!', etc.) character, but 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * are ended only by a hard separator (CR, LF, PS, etc.) or end of input. 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_SENTENCE_SEP = 100, 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Upper bound for tags for sentences ended by a separator. */ 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBRK_SENTENCE_SEP_LIMIT = 200 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** Tag value for a hard, or mandatory line break */ 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} USentenceBreakTag; 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Open a new UBreakIterator for locating text boundaries for a specified locale. 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A UBreakIterator may be used for detecting character, line, word, 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and sentence breaks in text. 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param type The type of UBreakIterator to open: one of UBRK_CHARACTER, UBRK_WORD, 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UBRK_LINE, UBRK_SENTENCE 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale The locale specifying the text-breaking conventions. 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The text to be iterated over. 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param textLength The number of characters in text, or -1 if null-terminated. 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status A UErrorCode to receive any errors. 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A UBreakIterator for the specified locale. 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_openRules 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE UBreakIterator* U_EXPORT2 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_open(UBreakIteratorType type, 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *locale, 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *text, 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t textLength, 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Open a new UBreakIterator for locating text boundaries using specified breaking rules. 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The rule syntax is ... (TBD) 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param rules A set of rules specifying the text breaking conventions. 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param rulesLength The number of characters in rules, or -1 if null-terminated. 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The text to be iterated over. May be null, in which case ubrk_setText() is 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * used to specify the text to be iterated. 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param textLength The number of characters in text, or -1 if null-terminated. 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param parseErr Receives position and context information for any syntax errors 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * detected while parsing the rules. 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status A UErrorCode to receive any errors. 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A UBreakIterator for the specified rules. 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_open 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.2 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE UBreakIterator* U_EXPORT2 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_openRules(const UChar *rules, 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t rulesLength, 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar *text, 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t textLength, 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UParseError *parseErr, 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Thread safe cloning operation 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi iterator to be cloned 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param stackBuffer user allocated space for the new clone. If NULL new memory will be allocated. 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If buffer is not large enough, new memory will be allocated. 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Clients can use the U_BRK_SAFECLONE_BUFFERSIZE. This will probably be enough to avoid memory allocations. 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pBufferSize pointer to size of allocated space. 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If *pBufferSize == 0, a sufficient size for use in cloning will 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be returned ('pre-flighting') 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If *pBufferSize is not enough for a stack-based safe clone, 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * new memory will be allocated. 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status to indicate whether the operation went on smoothly or there were errors 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * An informational status value, U_SAFECLONE_ALLOCATED_ERROR, is used if any allocations were necessary. 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return pointer to the new clone 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE UBreakIterator * U_EXPORT2 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_safeClone( 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UBreakIterator *bi, 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void *stackBuffer, 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *pBufferSize, 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A recommended size (in bytes) for the memory buffer to be passed to ubrk_saveClone(). 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 270b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#define U_BRK_SAFECLONE_BUFFERSIZE 528 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Close a UBreakIterator. 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Once closed, a UBreakIterator may no longer be used. 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param bi The break iterator to close. 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_close(UBreakIterator *bi); 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 28150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if U_SHOW_CPLUSPLUS_API 28250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_BEGIN 28450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 28650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \class LocalUBreakIteratorPointer 28750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * "Smart pointer" class, closes a UBreakIterator via ubrk_close(). 28850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * For most methods see the LocalPointerBase base class. 28950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 29050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointerBase 29150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointer 29227f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 29350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 29450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_DEFINE_LOCAL_OPEN_POINTER(LocalUBreakIteratorPointer, UBreakIterator, ubrk_close); 29550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 29650294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_END 29750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 29850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 29950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets an existing iterator to point to a new piece of text 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The iterator to use 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The text to be set 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param textLength The length of the text 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status The error code 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_setText(UBreakIterator* bi, 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* text, 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t textLength, 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets an existing iterator to point to a new piece of text 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The iterator to use 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The text to be set. 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This function makes a shallow clone of the supplied UText. This means 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that the caller is free to immediately close or otherwise reuse the 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UText that was passed as a parameter, but that the underlying text itself 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * must not be altered while being referenced by the break iterator. 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status The error code 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.4 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_setUText(UBreakIterator* bi, 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UText* text, 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Determine the most recently-returned text boundary. 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character index most recently returned by \ref ubrk_next, \ref ubrk_previous, 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \ref ubrk_first, or \ref ubrk_last. 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_current(const UBreakIterator *bi); 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Determine the text boundary following the current text boundary. 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character index of the next text boundary, or UBRK_DONE 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if all text boundaries have been returned. 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_previous 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_next(UBreakIterator *bi); 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Determine the text boundary preceding the current text boundary. 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character index of the preceding text boundary, or UBRK_DONE 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if all text boundaries have been returned. 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_next 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_previous(UBreakIterator *bi); 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Determine the index of the first character in the text being scanned. 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is not always the same as index 0 of the text. 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character index of the first character in the text being scanned. 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_last 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_first(UBreakIterator *bi); 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Determine the index immediately <EM>beyond</EM> the last character in the text being 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * scanned. 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is not the same as the last character. 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character offset immediately <EM>beyond</EM> the last character in the 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * text being scanned. 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_first 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_last(UBreakIterator *bi); 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Determine the text boundary preceding the specified offset. 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The value returned is always smaller than offset, or UBRK_DONE. 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param offset The offset to begin scanning. 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The text boundary preceding offset, or UBRK_DONE. 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_following 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_preceding(UBreakIterator *bi, 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t offset); 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Determine the text boundary following the specified offset. 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The value returned is always greater than offset, or UBRK_DONE. 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param offset The offset to begin scanning. 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The text boundary following offset, or UBRK_DONE. 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_preceding 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_following(UBreakIterator *bi, 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t offset); 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get a locale for which text breaking information is available. 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UBreakIterator in a locale returned by this function will perform the correct 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* text breaking for the locale. 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param index The index of the desired locale. 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return A locale for which number text breaking information is available, or 0 if none. 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see ubrk_countAvailable 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE const char* U_EXPORT2 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_getAvailable(int32_t index); 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Determine how many locales have text breaking information available. 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* This function is most useful as determining the loop ending condition for 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* calls to \ref ubrk_getAvailable. 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The number of locales for which text breaking information is available. 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see ubrk_getAvailable 436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_countAvailable(void); 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Returns true if the specfied position is a boundary position. As a side 444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* effect, leaves the iterator pointing to the first boundary position at 445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* or after "offset". 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param bi The break iterator to use. 447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param offset the offset to check. 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return True if "offset" is a boundary position. 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE UBool U_EXPORT2 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_isBoundary(UBreakIterator *bi, int32_t offset); 453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return the status from the break rule that determined the most recently 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned break position. The values appear in the rule source 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * within brackets, {123}, for example. For rules that do not specify a 458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * status, a default value of 0 is returned. 459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For word break iterators, the possible values are defined in enum UWordBreak. 461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.2 462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_getRuleStatus(UBreakIterator *bi); 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the statuses from the break rules that determined the most recently 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned break position. The values appear in the rule source 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * within brackets, {123}, for example. The default status value for rules 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that do not explicitly provide one is zero. 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For word break iterators, the possible values are defined in enum UWordBreak. 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fillInVec an array to be filled in with the status values. 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param capacity the length of the supplied vector. A length of zero causes 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the function to return the number of status values, in the 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * normal way, without attemtping to store any values. 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status receives error codes. 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of rule status values from rules that determined 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the most recent boundary returned by the break iterator. 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status); 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return the locale of the break iterator. You can choose between the valid and 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the actual locale. 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi break iterator 490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param type locale type (valid or actual) 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status error code 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return locale string 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE const char* U_EXPORT2 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status); 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 502