16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************** 36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Copyright (C) 1997-2013, International Business Machines 46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Corporation and others. All Rights Reserved. 56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************** 66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* File brkiter.h 86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Modification History: 106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* Date Name Description 126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 02/18/97 aliu Added typedef for TextCount. Made DONE const. 136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 05/07/97 aliu Fixed DLL declaration. 146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 07/09/97 jfitz Renamed BreakIterator and interface synced with JDK 156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 08/11/98 helena Sync-up JDK1.2. 166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org* 01/13/2000 helena Added UErrorCode parameter to createXXXInstance methods. 176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org******************************************************************************** 186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/ 196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef BRKITER_H 216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define BRKITER_H 226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utypes.h" 246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \file 276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * \brief C++ API: Break Iterator. 286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if UCONFIG_NO_BREAK_ITERATION 316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/* 356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Allow the declaration of APIs with pointers to BreakIterator 366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * even when break iteration is removed from the build. 376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass BreakIterator; 396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#else 436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/uobject.h" 456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/unistr.h" 466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/chariter.h" 476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/locid.h" 486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/ubrk.h" 496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/strenum.h" 506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/utext.h" 516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/umisc.h" 526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_BEGIN 546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/** 566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The BreakIterator class implements methods for finding the location 576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * of boundaries in text. BreakIterator is an abstract base class. 586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Instances of BreakIterator maintain a current position and scan over 596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * text returning the index of characters where boundaries occur. 606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Line boundary analysis determines where a text string can be broken 626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * when line-wrapping. The mechanism correctly handles punctuation and 636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * hyphenated words. 646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Sentence boundary analysis allows selection with correct 666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * interpretation of periods within numbers and abbreviations, and 676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * trailing punctuation marks such as quotation marks and parentheses. 686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Word boundary analysis is used by search and replace functions, as 706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * well as within text editing applications that allow the user to 716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * select words with a double click. Word selection provides correct 726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * interpretation of punctuation marks within and following 736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * words. Characters that are not part of a word, such as symbols or 746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * punctuation marks, have word-breaks on both sides. 756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Character boundary analysis allows users to interact with 776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * characters as they expect to, for example, when moving the cursor 786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * through a text string. Character boundary analysis provides correct 796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * navigation of through character strings, regardless of how the 806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * character is stored. For example, an accented character might be 816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * stored as a base character and a diacritical mark. What users 826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * consider to be a character can differ between languages. 836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The text boundary positions are found according to the rules 856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * described in Unicode Standard Annex #29, Text Boundaries, and 866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Unicode Standard Annex #14, Line Breaking Properties. These 876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * are available at http://www.unicode.org/reports/tr14/ and 886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * http://www.unicode.org/reports/tr29/. 896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * In addition to the C++ API defined in this header file, a 916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * plain C API with equivalent functionality is defined in the 926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * file ubrk.h 936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Code snippets illustrating the use of the Break Iterator APIs 956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * are available in the ICU User Guide, 966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * http://icu-project.org/userguide/boundaryAnalysis.html 976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and in the sample program icu/source/samples/break/break.cpp 986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass U_COMMON_API BreakIterator : public UObject { 1016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgpublic: 1026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * destructor 1046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual ~BreakIterator(); 1076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return true if another object is semantically equal to this 1106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * one. The other object should be an instance of the same subclass of 1116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * BreakIterator. Objects of different subclasses are considered 1126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * unequal. 1136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <P> 1146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return true if this BreakIterator is at the same position in the 1156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * same text, and is the same class and type (word, line, etc.) of 1166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * BreakIterator, as the argument. Text is considered the same if 1176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * it contains the same characters, it need not be the same 1186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * object, and styles are not considered. 1196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UBool operator==(const BreakIterator&) const = 0; 1226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the complement of the result of operator== 1256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param rhs The BreakIterator to be compared for inequality 1266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the complement of the result of operator== 1276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); } 1306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return a polymorphic copy of this object. This is an abstract 1336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * method which subclasses implement. 1346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual BreakIterator* clone(void) const = 0; 1376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return a polymorphic class ID for this object. Different subclasses 1406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * will return distinct unequal values. 1416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UClassID getDynamicClassID(void) const = 0; 1446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return a CharacterIterator over the text being analyzed. 1476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual CharacterIterator& getText(void) const = 0; 1506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Get a UText for the text being analyzed. 1546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The returned UText is a shallow clone of the UText used internally 1556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * by the break iterator implementation. It can safely be used to 1566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * access the text without impacting any break iterator operations, 1576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * but the underlying text itself must not be altered. 1586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 1596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fillIn A UText to be filled in. If NULL, a new UText will be 1606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * allocated to hold the result. 1616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status receives any error codes. 1626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The current UText for this break iterator. If an input 1636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * UText was provided, it will always be returned. 1646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.4 1656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UText *getUText(UText *fillIn, UErrorCode &status) const = 0; 1676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Change the text over which this operates. The text boundary is 1706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * reset to the start. 1716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param text The UnicodeString used to change the text. 1726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 1736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void setText(const UnicodeString &text) = 0; 1756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Reset the break iterator to operate over the text represented by 1786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the UText. The iterator position is reset to the start. 1796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 1806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function makes a shallow clone of the supplied UText. This means 1816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * that the caller is free to immediately close or otherwise reuse the 1826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Utext that was passed as a parameter, but that the underlying text itself 1836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * must not be altered while being referenced by the break iterator. 1846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 1856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * All index positions returned by break iterator functions are 1866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * native indices from the UText. For example, when breaking UTF-8 1876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * encoded text, the break positions returned by next(), previous(), etc. 1886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * will be UTF-8 string indices, not UTF-16 positions. 1896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 1906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param text The UText used to change the text. 1916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status receives any error codes. 1926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 3.4 1936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 1946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void setText(UText *text, UErrorCode &status) = 0; 1956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 1966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 1976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Change the text over which this operates. The text boundary is 1986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * reset to the start. 1996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Note that setText(UText *) provides similar functionality to this function, 2006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and is more efficient. 2016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param it The CharacterIterator used to change the text. 2026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual void adoptText(CharacterIterator* it) = 0; 2056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org enum { 2076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * DONE is returned by previous() and next() after all valid 2096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * boundaries have been returned. 2106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org DONE = (int32_t)-1 2136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org }; 2146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Set the iterator position to the index of the first character in the text being scanned. 2176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The index of the first character in the text being scanned. 2186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t first(void) = 0; 2216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Set the iterator position to the index immediately BEYOND the last character in the text being scanned. 2246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The index immediately BEYOND the last character in the text being scanned. 2256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t last(void) = 0; 2286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Set the iterator position to the boundary preceding the current boundary. 2316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The character index of the previous text boundary or DONE if all 2326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * boundaries have been returned. 2336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t previous(void) = 0; 2366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Advance the iterator to the boundary following the current boundary. 2396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The character index of the next text boundary or DONE if all 2406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * boundaries have been returned. 2416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t next(void) = 0; 2446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return character index of the current interator position within the text. 2476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The boundary most recently returned. 2486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t current(void) const = 0; 2516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Advance the iterator to the first boundary following the specified offset. 2546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The value returned is always greater than the offset or 2556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the value BreakIterator.DONE 2566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param offset the offset to begin scanning. 2576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The first boundary after the specified offset. 2586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t following(int32_t offset) = 0; 2616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Set the iterator position to the first boundary preceding the specified offset. 2646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The value returned is always smaller than the offset or 2656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the value BreakIterator.DONE 2666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param offset the offset to begin scanning. 2676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The first boundary before the specified offset. 2686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t preceding(int32_t offset) = 0; 2716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return true if the specfied position is a boundary position. 2746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * As a side effect, the current position of the iterator is set 2756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * to the first boundary position at or following the specified offset. 2766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param offset the offset to check. 2776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return True if "offset" is a boundary position. 2786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual UBool isBoundary(int32_t offset) = 0; 2816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Set the iterator position to the nth boundary from the current boundary 2846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param n the number of boundaries to move by. A value of 0 2856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * does nothing. Negative values move to previous boundaries 2866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and positive values move to later boundaries. 2876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The new iterator position, or 2886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * DONE if there are fewer than |n| boundaries in the specfied direction. 2896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 2906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 2916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t next(int32_t n) = 0; 2926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 2936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 2946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For RuleBasedBreakIterators, return the status tag from the 2956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * break rule that determined the most recently 2966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * returned break position. 2976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 2986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For break iterator types that do not support a rule status, 2996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * a default value of 0 is returned. 3006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 3016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the status from the break rule that determined the most recently 3026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * returned break position. 3036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see RuleBaseBreakIterator::getRuleStatus() 3046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see UWordBreak 3056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @draft ICU 52 3066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t getRuleStatus() const; 3086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For RuleBasedBreakIterators, get the status (tag) values from the break rule(s) 3116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * that determined the most recently returned break position. 3126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 3136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * For break iterator types that do not support rule status, 3146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * no values are returned. 3156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 3166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The returned status value(s) are stored into an array provided by the caller. 3176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The values are stored in sorted (ascending) order. 3186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If the capacity of the output array is insufficient to hold the data, 3196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the output will be truncated to the available length, and a 3206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_BUFFER_OVERFLOW_ERROR will be signaled. 3216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p> 3226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see RuleBaseBreakIterator::getRuleStatusVec 3236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 3246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param fillInVec an array to be filled in with the status values. 3256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param capacity the length of the supplied vector. A length of zero causes 3266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the function to return the number of status values, in the 3276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * normal way, without attemtping to store any values. 3286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status receives error codes. 3296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return The number of rule status values from rules that determined 3306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the most recent boundary returned by the break iterator. 3316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * In the event of a U_BUFFER_OVERFLOW_ERROR, the return value 3326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * is the total number of status values that were available, 3336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * not the reduced number that were actually returned. 3346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @see getRuleStatus 3356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @draft ICU 52 3366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual int32_t getRuleStatusVec(int32_t *fillInVec, int32_t capacity, UErrorCode &status); 3386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Create BreakIterator for word-breaks using the given locale. 3416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns an instance of a BreakIterator implementing word breaks. 3426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * WordBreak is useful for word selection (ex. double click) 3436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param where the locale. 3446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status the error code 3456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A BreakIterator for word-breaks. The UErrorCode& status 3466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parameter is used to return status information to the user. 3476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * To check whether the construction succeeded or not, you should check 3486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the value of U_SUCCESS(err). If you wish more detailed information, you 3496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * can check for informational error results which still indicate success. 3506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For 3516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * example, 'de_CH' was requested, but nothing was found there, so 'de' was 3526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used. U_USING_DEFAULT_WARNING indicates that the default locale data was 3536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used; neither the requested locale nor any of its fall back locales 3546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * could be found. 3556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The caller owns the returned object and is responsible for deleting it. 3566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static BreakIterator* U_EXPORT2 3596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org createWordInstance(const Locale& where, UErrorCode& status); 3606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Create BreakIterator for line-breaks using specified locale. 3636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns an instance of a BreakIterator implementing line breaks. Line 3646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * breaks are logically possible line breaks, actual line breaks are 3656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * usually determined based on display width. 3666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * LineBreak is useful for word wrapping text. 3676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param where the locale. 3686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status The error code. 3696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A BreakIterator for line-breaks. The UErrorCode& status 3706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parameter is used to return status information to the user. 3716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * To check whether the construction succeeded or not, you should check 3726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the value of U_SUCCESS(err). If you wish more detailed information, you 3736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * can check for informational error results which still indicate success. 3746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For 3756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * example, 'de_CH' was requested, but nothing was found there, so 'de' was 3766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used. U_USING_DEFAULT_WARNING indicates that the default locale data was 3776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used; neither the requested locale nor any of its fall back locales 3786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * could be found. 3796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The caller owns the returned object and is responsible for deleting it. 3806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 3816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 3826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static BreakIterator* U_EXPORT2 3836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org createLineInstance(const Locale& where, UErrorCode& status); 3846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 3856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 3866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Create BreakIterator for character-breaks using specified locale 3876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns an instance of a BreakIterator implementing character breaks. 3886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Character breaks are boundaries of combining character sequences. 3896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param where the locale. 3906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status The error code. 3916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A BreakIterator for character-breaks. The UErrorCode& status 3926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parameter is used to return status information to the user. 3936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * To check whether the construction succeeded or not, you should check 3946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the value of U_SUCCESS(err). If you wish more detailed information, you 3956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * can check for informational error results which still indicate success. 3966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For 3976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * example, 'de_CH' was requested, but nothing was found there, so 'de' was 3986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used. U_USING_DEFAULT_WARNING indicates that the default locale data was 3996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used; neither the requested locale nor any of its fall back locales 4006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * could be found. 4016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The caller owns the returned object and is responsible for deleting it. 4026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static BreakIterator* U_EXPORT2 4056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org createCharacterInstance(const Locale& where, UErrorCode& status); 4066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Create BreakIterator for sentence-breaks using specified locale 4096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns an instance of a BreakIterator implementing sentence breaks. 4106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param where the locale. 4116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status The error code. 4126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A BreakIterator for sentence-breaks. The UErrorCode& status 4136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parameter is used to return status information to the user. 4146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * To check whether the construction succeeded or not, you should check 4156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the value of U_SUCCESS(err). If you wish more detailed information, you 4166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * can check for informational error results which still indicate success. 4176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For 4186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * example, 'de_CH' was requested, but nothing was found there, so 'de' was 4196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used. U_USING_DEFAULT_WARNING indicates that the default locale data was 4206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used; neither the requested locale nor any of its fall back locales 4216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * could be found. 4226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The caller owns the returned object and is responsible for deleting it. 4236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static BreakIterator* U_EXPORT2 4266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org createSentenceInstance(const Locale& where, UErrorCode& status); 4276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Create BreakIterator for title-casing breaks using the specified locale 4306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns an instance of a BreakIterator implementing title breaks. 4316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The iterator returned locates title boundaries as described for 4326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration, 4336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * please use Word Boundary iterator.{@link #createWordInstance } 4346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 4356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param where the locale. 4366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status The error code. 4376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return A BreakIterator for title-breaks. The UErrorCode& status 4386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * parameter is used to return status information to the user. 4396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * To check whether the construction succeeded or not, you should check 4406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the value of U_SUCCESS(err). If you wish more detailed information, you 4416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * can check for informational error results which still indicate success. 4426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For 4436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * example, 'de_CH' was requested, but nothing was found there, so 'de' was 4446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used. U_USING_DEFAULT_WARNING indicates that the default locale data was 4456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * used; neither the requested locale nor any of its fall back locales 4466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * could be found. 4476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The caller owns the returned object and is responsible for deleting it. 4486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.1 4496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static BreakIterator* U_EXPORT2 4516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org createTitleInstance(const Locale& where, UErrorCode& status); 4526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Get the set of Locales for which TextBoundaries are installed. 4556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * <p><b>Note:</b> this will not return locales added through the register 4566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * call. To see the registered locales too, use the getAvailableLocales 4576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * function that returns a StringEnumeration object </p> 4586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param count the output parameter of number of elements in the locale list 4596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return available locales 4606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count); 4636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Get name of the object for the desired Locale, in the desired langauge. 4666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param objectLocale must be from getAvailableLocales. 4676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param displayLocale specifies the desired locale for output. 4686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param name the fill-in parameter of the return value 4696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Uses best match. 4706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return user-displayable name 4716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale, 4746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const Locale& displayLocale, 4756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString& name); 4766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Get name of the object for the desired Locale, in the langauge of the 4796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * default locale. 4806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param objectLocale must be from getMatchingLocales 4816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param name the fill-in parameter of the return value 4826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return user-displayable name 4836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.0 4846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 4856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale, 4866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UnicodeString& name); 4876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 4886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 4896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Deprecated functionality. Use clone() instead. 4906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 4916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Thread safe client-buffer-based cloning operation 4926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Do NOT call delete on a safeclone, since 'new' is not used to create it. 4936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param stackBuffer user allocated space for the new clone. If NULL new memory will be allocated. 4946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If buffer is not large enough, new memory will be allocated. 4956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param BufferSize reference to size of allocated space. 4966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If BufferSize == 0, a sufficient size for use in cloning will 4976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * be returned ('pre-flighting') 4986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * If BufferSize is not enough for a stack-based safe clone, 4996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * new memory will be allocated. 5006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status to indicate whether the operation went on smoothly or there were errors 5016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * An informational status value, U_SAFECLONE_ALLOCATED_ERROR, is used if any allocations were 5026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * necessary. 5036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return pointer to the new clone 5046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 5056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @deprecated ICU 52. Use clone() instead. 5066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual BreakIterator * createBufferClone(void *stackBuffer, 5086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org int32_t &BufferSize, 5096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode &status) = 0; 5106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DEPRECATED_API 5126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 5146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Determine whether the BreakIterator was created in user memory by 5156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * createBufferClone(), and thus should not be deleted. Such objects 5166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * must be closed by an explicit call to the destructor (not delete). 5176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @deprecated ICU 52. Always delete the BreakIterator. 5186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org inline UBool isBufferClone(void); 5206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_DEPRECATED_API */ 5226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#if !UCONFIG_NO_SERVICE 5246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 5256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Register a new break iterator of the indicated kind, to use in the given locale. 5266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The break iterator will be adopted. Clones of the iterator will be returned 5276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * if a request for a break iterator of the given kind matches or falls back to 5286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * this locale. 5296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param toAdopt the BreakIterator instance to be adopted 5306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param locale the Locale for which this instance is to be registered 5316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param kind the type of iterator for which this instance is to be registered 5326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status the in/out status code, no special meanings are assigned 5336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return a registry key that can be used to unregister this instance 5346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.4 5356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static URegistryKey U_EXPORT2 registerInstance(BreakIterator* toAdopt, 5376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const Locale& locale, 5386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UBreakIteratorType kind, 5396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org UErrorCode& status); 5406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 5426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Unregister a previously-registered BreakIterator using the key returned from the 5436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * register call. Key becomes invalid after a successful call and should not be used again. 5446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The BreakIterator corresponding to the key will be deleted. 5456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param key the registry key returned by a previous call to registerInstance 5466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status the in/out status code, no special meanings are assigned 5476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return TRUE if the iterator for the key was successfully unregistered 5486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.4 5496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status); 5516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 5536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Return a StringEnumeration over the locales available at the time of the call, 5546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * including registered locales. 5556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return a StringEnumeration over the locales available at the time of the call 5566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.4 5576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static StringEnumeration* U_EXPORT2 getAvailableLocales(void); 5596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif 5606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 5626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Returns the locale for this break iterator. Two flavors are available: valid and 5636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * actual locale. 5646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 2.8 5656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; 5676f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5686f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_INTERNAL_API 5696f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** Get the locale for this break iterator object. You can choose between valid and actual locale. 5706f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param type type of the locale we're looking for (valid or actual) 5716f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status error code for the operation 5726f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return the locale 5736f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @internal 5746f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 5756f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org const char *getLocaleID(ULocDataLocaleType type, UErrorCode& status) const; 5766f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_INTERNAL_API */ 5776f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 5786f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 5796f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Set the subject text string upon which the break iterator is operating 5806f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * without changing any other aspect of the matching state. 5816f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The new and previous text strings must have the same content. 5826f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 5836f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * This function is intended for use in environments where ICU is operating on 5846f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * strings that may move around in memory. It provides a mechanism for notifying 5856f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * ICU that the string has been relocated, and providing a new UText to access the 5866f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * string in its new position. 5876f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 5886f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Note that the break iterator implementation never copies the underlying text 5896f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * of a string being processed, but always operates directly on the original text 5906f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * provided by the user. Refreshing simply drops the references to the old text 5916f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * and replaces them with references to the new. 5926f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 5936f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * Caution: this function is normally used only by very specialized, 5946f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * system-level code. One example use case is with garbage collection that moves 5956f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * the text in memory. 5966f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 5976f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param input The new (moved) text string. 5986f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @param status Receives errors detected by this function. 5996f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @return *this 6006f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * 6016f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * @stable ICU 49 6026f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 6036f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org virtual BreakIterator &refreshInputText(UText *input, UErrorCode &status) = 0; 6046f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6056f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org private: 6066f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static BreakIterator* buildInstance(const Locale& loc, const char *type, int32_t kind, UErrorCode& status); 6076f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static BreakIterator* createInstance(const Locale& loc, int32_t kind, UErrorCode& status); 6086f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org static BreakIterator* makeInstance(const Locale& loc, int32_t kind, UErrorCode& status); 6096f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org friend class ICUBreakIteratorFactory; 6116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org friend class ICUBreakIteratorService; 6126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprotected: 6146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // Do not enclose protected default/copy constructors with #ifndef U_HIDE_INTERNAL_API 6156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org // or else the compiler will create a public ones. 6166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @internal */ 6176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BreakIterator(); 6186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @internal */ 6196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BreakIterator (const BreakIterator &other) : UObject(other) {} 6206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgprivate: 6226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** @internal */ 6246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char actualLocale[ULOC_FULLNAME_CAPACITY]; 6256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org char validLocale[ULOC_FULLNAME_CAPACITY]; 6266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org /** 6286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * The assignment operator has no real implementation. 6296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org * It's provided to make the compiler happy. Do not call. 6306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org */ 6316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org BreakIterator& operator=(const BreakIterator&); 6326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org}; 6336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef U_HIDE_DEPRECATED_API 6356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orginline UBool BreakIterator::isBufferClone() 6376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org{ 6386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org return FALSE; 6396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org} 6406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* U_HIDE_DEPRECATED_API */ 6426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgU_NAMESPACE_END 6446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 6466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org 6476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif // _BRKITER 6486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org//eof 649