1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru****************************************************************************** 3f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* Copyright (C) 1996-2014, 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 24659d709d503bab6e2b61931737e662dd293b40578ccornelius * @param stackBuffer <em>Deprecated functionality as of ICU 52, use NULL.</em><br> 24759d709d503bab6e2b61931737e662dd293b40578ccornelius * user allocated space for the new clone. If NULL new memory will be allocated. 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If buffer is not large enough, new memory will be allocated. 24959d709d503bab6e2b61931737e662dd293b40578ccornelius * Clients can use the U_BRK_SAFECLONE_BUFFERSIZE. 25059d709d503bab6e2b61931737e662dd293b40578ccornelius * @param pBufferSize <em>Deprecated functionality as of ICU 52, use NULL or 1.</em><br> 25159d709d503bab6e2b61931737e662dd293b40578ccornelius * pointer to size of allocated space. 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If *pBufferSize == 0, a sufficient size for use in cloning will 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be returned ('pre-flighting') 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If *pBufferSize is not enough for a stack-based safe clone, 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * new memory will be allocated. 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status to indicate whether the operation went on smoothly or there were errors 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * An informational status value, U_SAFECLONE_ALLOCATED_ERROR, is used if any allocations were necessary. 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return pointer to the new clone 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE UBreakIterator * U_EXPORT2 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_safeClone( 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UBreakIterator *bi, 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void *stackBuffer, 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t *pBufferSize, 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode *status); 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 26859d709d503bab6e2b61931737e662dd293b40578ccornelius#ifndef U_HIDE_DEPRECATED_API 26959d709d503bab6e2b61931737e662dd293b40578ccornelius 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A recommended size (in bytes) for the memory buffer to be passed to ubrk_saveClone(). 27259d709d503bab6e2b61931737e662dd293b40578ccornelius * @deprecated ICU 52. Do not rely on ubrk_safeClone() cloning into any provided buffer. 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 27459d709d503bab6e2b61931737e662dd293b40578ccornelius#define U_BRK_SAFECLONE_BUFFERSIZE 1 27559d709d503bab6e2b61931737e662dd293b40578ccornelius 27659d709d503bab6e2b61931737e662dd293b40578ccornelius#endif /* U_HIDE_DEPRECATED_API */ 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Close a UBreakIterator. 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Once closed, a UBreakIterator may no longer be used. 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param bi The break iterator to close. 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_close(UBreakIterator *bi); 286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 28750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if U_SHOW_CPLUSPLUS_API 28850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 28950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_BEGIN 29050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 29150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/** 29250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \class LocalUBreakIteratorPointer 29350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * "Smart pointer" class, closes a UBreakIterator via ubrk_close(). 29450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * For most methods see the LocalPointerBase base class. 29550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 29650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointerBase 29750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointer 29827f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 29950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 30050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_DEFINE_LOCAL_OPEN_POINTER(LocalUBreakIteratorPointer, UBreakIterator, ubrk_close); 30150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 30250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_END 30350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 30450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif 30550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets an existing iterator to point to a new piece of text 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The iterator to use 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The text to be set 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param textLength The length of the text 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status The error code 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_setText(UBreakIterator* bi, 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UChar* text, 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t textLength, 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 3228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Sets an existing iterator to point to a new piece of text. 3238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * 3248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * All index positions returned by break iterator functions are 3258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * native indices from the UText. For example, when breaking UTF-8 3268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * encoded text, the break positions returned by \ref ubrk_next, \ref ubrk_previous, etc. 3278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * will be UTF-8 string indices, not UTF-16 positions. 3288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The iterator to use 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The text to be set. 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This function makes a shallow clone of the supplied UText. This means 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that the caller is free to immediately close or otherwise reuse the 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UText that was passed as a parameter, but that the underlying text itself 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * must not be altered while being referenced by the break iterator. 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status The error code 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.4 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE void U_EXPORT2 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_setUText(UBreakIterator* bi, 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UText* text, 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode* status); 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Determine the most recently-returned text boundary. 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character index most recently returned by \ref ubrk_next, \ref ubrk_previous, 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \ref ubrk_first, or \ref ubrk_last. 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_current(const UBreakIterator *bi); 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 35754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Advance the iterator to the boundary following the current boundary. 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character index of the next text boundary, or UBRK_DONE 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if all text boundaries have been returned. 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_previous 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_next(UBreakIterator *bi); 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 36954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Set the iterator position to the boundary preceding the current boundary. 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character index of the preceding text boundary, or UBRK_DONE 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if all text boundaries have been returned. 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_next 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_previous(UBreakIterator *bi); 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 381f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * Set the iterator position to zero, the start of the text being scanned. 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 383f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius * @return The new iterator position (zero). 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_last 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_first(UBreakIterator *bi); 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 39154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Set the iterator position to the index immediately <EM>beyond</EM> the last character in the text being scanned. 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is not the same as the last character. 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The character offset immediately <EM>beyond</EM> the last character in the 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * text being scanned. 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_first 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_last(UBreakIterator *bi); 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 40354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Set the iterator position to the first boundary preceding the specified offset. 40454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * The new position is always smaller than offset, or UBRK_DONE. 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param offset The offset to begin scanning. 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The text boundary preceding offset, or UBRK_DONE. 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_following 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_preceding(UBreakIterator *bi, 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t offset); 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 41654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Advance the iterator to the first boundary following the specified offset. 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The value returned is always greater than offset, or UBRK_DONE. 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use. 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param offset The offset to begin scanning. 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The text boundary following offset, or UBRK_DONE. 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see ubrk_preceding 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_following(UBreakIterator *bi, 426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t offset); 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get a locale for which text breaking information is available. 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UBreakIterator in a locale returned by this function will perform the correct 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* text breaking for the locale. 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param index The index of the desired locale. 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return A locale for which number text breaking information is available, or 0 if none. 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see ubrk_countAvailable 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE const char* U_EXPORT2 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_getAvailable(int32_t index); 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Determine how many locales have text breaking information available. 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* This function is most useful as determining the loop ending condition for 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* calls to \ref ubrk_getAvailable. 444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The number of locales for which text breaking information is available. 445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see ubrk_getAvailable 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_countAvailable(void); 450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Returns true if the specfied position is a boundary position. As a side 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* effect, leaves the iterator pointing to the first boundary position at 455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* or after "offset". 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param bi The break iterator to use. 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param offset the offset to check. 458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return True if "offset" is a boundary position. 459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0 460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE UBool U_EXPORT2 462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_isBoundary(UBreakIterator *bi, int32_t offset); 463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return the status from the break rule that determined the most recently 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned break position. The values appear in the rule source 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * within brackets, {123}, for example. For rules that do not specify a 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * status, a default value of 0 is returned. 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For word break iterators, the possible values are defined in enum UWordBreak. 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.2 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_getRuleStatus(UBreakIterator *bi); 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the statuses from the break rules that determined the most recently 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returned break position. The values appear in the rule source 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * within brackets, {123}, for example. The default status value for rules 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that do not explicitly provide one is zero. 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For word break iterators, the possible values are defined in enum UWordBreak. 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi The break iterator to use 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fillInVec an array to be filled in with the status values. 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param capacity the length of the supplied vector. A length of zero causes 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the function to return the number of status values, in the 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * normal way, without attemtping to store any values. 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status receives error codes. 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The number of rule status values from rules that determined 490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the most recent boundary returned by the break iterator. 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE int32_t U_EXPORT2 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_getRuleStatusVec(UBreakIterator *bi, int32_t *fillInVec, int32_t capacity, UErrorCode *status); 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return the locale of the break iterator. You can choose between the valid and 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the actual locale. 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param bi break iterator 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param type locale type (valid or actual) 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status error code 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return locale string 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE const char* U_EXPORT2 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruubrk_getLocaleByType(const UBreakIterator *bi, ULocDataLocaleType type, UErrorCode* status); 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 508103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/** 509103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Set the subject text string upon which the break iterator is operating 510103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * without changing any other aspect of the state. 511103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * The new and previous text strings must have the same content. 512103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * 513103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * This function is intended for use in environments where ICU is operating on 514103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * strings that may move around in memory. It provides a mechanism for notifying 515103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * ICU that the string has been relocated, and providing a new UText to access the 516103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * string in its new position. 517103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * 518103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Note that the break iterator never copies the underlying text 519103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * of a string being processed, but always operates directly on the original text 520103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * provided by the user. Refreshing simply drops the references to the old text 521103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * and replaces them with references to the new. 522103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * 523103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Caution: this function is normally used only by very specialized 524103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * system-level code. One example use case is with garbage collection 525103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * that moves the text in memory. 526103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * 527103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param bi The break iterator. 528103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param text The new (moved) text string. 529103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status Receives errors detected by this function. 530103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * 5318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * @stable ICU 49 532103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */ 5338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusU_STABLE void U_EXPORT2 534103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusubrk_refreshUText(UBreakIterator *bi, 535103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UText *text, 536103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UErrorCode *status); 537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 541