]> git.saurik.com Git - apple/icu.git/blob - icuSources/common/unicode/brkiter.h
ICU-59173.0.1.tar.gz
[apple/icu.git] / icuSources / common / unicode / brkiter.h
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 ********************************************************************************
5 * Copyright (C) 1997-2016, International Business Machines
6 * Corporation and others. All Rights Reserved.
7 ********************************************************************************
8 *
9 * File brkiter.h
10 *
11 * Modification History:
12 *
13 * Date Name Description
14 * 02/18/97 aliu Added typedef for TextCount. Made DONE const.
15 * 05/07/97 aliu Fixed DLL declaration.
16 * 07/09/97 jfitz Renamed BreakIterator and interface synced with JDK
17 * 08/11/98 helena Sync-up JDK1.2.
18 * 01/13/2000 helena Added UErrorCode parameter to createXXXInstance methods.
19 ********************************************************************************
20 */
21
22 #ifndef BRKITER_H
23 #define BRKITER_H
24
25 #include "unicode/utypes.h"
26
27 /**
28 * \file
29 * \brief C++ API: Break Iterator.
30 */
31
32 #if UCONFIG_NO_BREAK_ITERATION
33
34 #if U_SHOW_CPLUSPLUS_API
35 U_NAMESPACE_BEGIN
36
37 /*
38 * Allow the declaration of APIs with pointers to BreakIterator
39 * even when break iteration is removed from the build.
40 */
41 class BreakIterator;
42
43 U_NAMESPACE_END
44 #endif // U_SHOW_CPLUSPLUS_API
45
46 #else
47
48 #include "unicode/uobject.h"
49 #include "unicode/unistr.h"
50 #include "unicode/chariter.h"
51 #include "unicode/locid.h"
52 #include "unicode/ubrk.h"
53 #include "unicode/strenum.h"
54 #include "unicode/utext.h"
55 #include "unicode/umisc.h"
56
57 #if U_SHOW_CPLUSPLUS_API
58 U_NAMESPACE_BEGIN
59
60 /**
61 * The BreakIterator class implements methods for finding the location
62 * of boundaries in text. BreakIterator is an abstract base class.
63 * Instances of BreakIterator maintain a current position and scan over
64 * text returning the index of characters where boundaries occur.
65 * <p>
66 * Line boundary analysis determines where a text string can be broken
67 * when line-wrapping. The mechanism correctly handles punctuation and
68 * hyphenated words.
69 * <p>
70 * Sentence boundary analysis allows selection with correct
71 * interpretation of periods within numbers and abbreviations, and
72 * trailing punctuation marks such as quotation marks and parentheses.
73 * <p>
74 * Word boundary analysis is used by search and replace functions, as
75 * well as within text editing applications that allow the user to
76 * select words with a double click. Word selection provides correct
77 * interpretation of punctuation marks within and following
78 * words. Characters that are not part of a word, such as symbols or
79 * punctuation marks, have word-breaks on both sides.
80 * <p>
81 * Character boundary analysis allows users to interact with
82 * characters as they expect to, for example, when moving the cursor
83 * through a text string. Character boundary analysis provides correct
84 * navigation of through character strings, regardless of how the
85 * character is stored. For example, an accented character might be
86 * stored as a base character and a diacritical mark. What users
87 * consider to be a character can differ between languages.
88 * <p>
89 * The text boundary positions are found according to the rules
90 * described in Unicode Standard Annex #29, Text Boundaries, and
91 * Unicode Standard Annex #14, Line Breaking Properties. These
92 * are available at http://www.unicode.org/reports/tr14/ and
93 * http://www.unicode.org/reports/tr29/.
94 * <p>
95 * In addition to the C++ API defined in this header file, a
96 * plain C API with equivalent functionality is defined in the
97 * file ubrk.h
98 * <p>
99 * Code snippets illustrating the use of the Break Iterator APIs
100 * are available in the ICU User Guide,
101 * http://icu-project.org/userguide/boundaryAnalysis.html
102 * and in the sample program icu/source/samples/break/break.cpp
103 *
104 */
105 class U_COMMON_API BreakIterator : public UObject {
106 public:
107 /**
108 * destructor
109 * @stable ICU 2.0
110 */
111 virtual ~BreakIterator();
112
113 /**
114 * Return true if another object is semantically equal to this
115 * one. The other object should be an instance of the same subclass of
116 * BreakIterator. Objects of different subclasses are considered
117 * unequal.
118 * <P>
119 * Return true if this BreakIterator is at the same position in the
120 * same text, and is the same class and type (word, line, etc.) of
121 * BreakIterator, as the argument. Text is considered the same if
122 * it contains the same characters, it need not be the same
123 * object, and styles are not considered.
124 * @stable ICU 2.0
125 */
126 virtual UBool operator==(const BreakIterator&) const = 0;
127
128 /**
129 * Returns the complement of the result of operator==
130 * @param rhs The BreakIterator to be compared for inequality
131 * @return the complement of the result of operator==
132 * @stable ICU 2.0
133 */
134 UBool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); }
135
136 /**
137 * Return a polymorphic copy of this object. This is an abstract
138 * method which subclasses implement.
139 * @stable ICU 2.0
140 */
141 virtual BreakIterator* clone(void) const = 0;
142
143 /**
144 * Return a polymorphic class ID for this object. Different subclasses
145 * will return distinct unequal values.
146 * @stable ICU 2.0
147 */
148 virtual UClassID getDynamicClassID(void) const = 0;
149
150 /**
151 * Return a CharacterIterator over the text being analyzed.
152 * @stable ICU 2.0
153 */
154 virtual CharacterIterator& getText(void) const = 0;
155
156
157 /**
158 * Get a UText for the text being analyzed.
159 * The returned UText is a shallow clone of the UText used internally
160 * by the break iterator implementation. It can safely be used to
161 * access the text without impacting any break iterator operations,
162 * but the underlying text itself must not be altered.
163 *
164 * @param fillIn A UText to be filled in. If NULL, a new UText will be
165 * allocated to hold the result.
166 * @param status receives any error codes.
167 * @return The current UText for this break iterator. If an input
168 * UText was provided, it will always be returned.
169 * @stable ICU 3.4
170 */
171 virtual UText *getUText(UText *fillIn, UErrorCode &status) const = 0;
172
173 /**
174 * Change the text over which this operates. The text boundary is
175 * reset to the start.
176 *
177 * The BreakIterator will retain a reference to the supplied string.
178 * The caller must not modify or delete the text while the BreakIterator
179 * retains the reference.
180 *
181 * @param text The UnicodeString used to change the text.
182 * @stable ICU 2.0
183 */
184 virtual void setText(const UnicodeString &text) = 0;
185
186 /**
187 * Reset the break iterator to operate over the text represented by
188 * the UText. The iterator position is reset to the start.
189 *
190 * This function makes a shallow clone of the supplied UText. This means
191 * that the caller is free to immediately close or otherwise reuse the
192 * Utext that was passed as a parameter, but that the underlying text itself
193 * must not be altered while being referenced by the break iterator.
194 *
195 * All index positions returned by break iterator functions are
196 * native indices from the UText. For example, when breaking UTF-8
197 * encoded text, the break positions returned by next(), previous(), etc.
198 * will be UTF-8 string indices, not UTF-16 positions.
199 *
200 * @param text The UText used to change the text.
201 * @param status receives any error codes.
202 * @stable ICU 3.4
203 */
204 virtual void setText(UText *text, UErrorCode &status) = 0;
205
206 /**
207 * Change the text over which this operates. The text boundary is
208 * reset to the start.
209 * Note that setText(UText *) provides similar functionality to this function,
210 * and is more efficient.
211 * @param it The CharacterIterator used to change the text.
212 * @stable ICU 2.0
213 */
214 virtual void adoptText(CharacterIterator* it) = 0;
215
216 enum {
217 /**
218 * DONE is returned by previous() and next() after all valid
219 * boundaries have been returned.
220 * @stable ICU 2.0
221 */
222 DONE = (int32_t)-1
223 };
224
225 /**
226 * Sets the current iteration position to the beginning of the text, position zero.
227 * @return The offset of the beginning of the text, zero.
228 * @stable ICU 2.0
229 */
230 virtual int32_t first(void) = 0;
231
232 /**
233 * Set the iterator position to the index immediately BEYOND the last character in the text being scanned.
234 * @return The index immediately BEYOND the last character in the text being scanned.
235 * @stable ICU 2.0
236 */
237 virtual int32_t last(void) = 0;
238
239 /**
240 * Set the iterator position to the boundary preceding the current boundary.
241 * @return The character index of the previous text boundary or DONE if all
242 * boundaries have been returned.
243 * @stable ICU 2.0
244 */
245 virtual int32_t previous(void) = 0;
246
247 /**
248 * Advance the iterator to the boundary following the current boundary.
249 * @return The character index of the next text boundary or DONE if all
250 * boundaries have been returned.
251 * @stable ICU 2.0
252 */
253 virtual int32_t next(void) = 0;
254
255 /**
256 * Return character index of the current interator position within the text.
257 * @return The boundary most recently returned.
258 * @stable ICU 2.0
259 */
260 virtual int32_t current(void) const = 0;
261
262 /**
263 * Advance the iterator to the first boundary following the specified offset.
264 * The value returned is always greater than the offset or
265 * the value BreakIterator.DONE
266 * @param offset the offset to begin scanning.
267 * @return The first boundary after the specified offset.
268 * @stable ICU 2.0
269 */
270 virtual int32_t following(int32_t offset) = 0;
271
272 /**
273 * Set the iterator position to the first boundary preceding the specified offset.
274 * The value returned is always smaller than the offset or
275 * the value BreakIterator.DONE
276 * @param offset the offset to begin scanning.
277 * @return The first boundary before the specified offset.
278 * @stable ICU 2.0
279 */
280 virtual int32_t preceding(int32_t offset) = 0;
281
282 /**
283 * Return true if the specfied position is a boundary position.
284 * As a side effect, the current position of the iterator is set
285 * to the first boundary position at or following the specified offset.
286 * @param offset the offset to check.
287 * @return True if "offset" is a boundary position.
288 * @stable ICU 2.0
289 */
290 virtual UBool isBoundary(int32_t offset) = 0;
291
292 /**
293 * Set the iterator position to the nth boundary from the current boundary
294 * @param n the number of boundaries to move by. A value of 0
295 * does nothing. Negative values move to previous boundaries
296 * and positive values move to later boundaries.
297 * @return The new iterator position, or
298 * DONE if there are fewer than |n| boundaries in the specfied direction.
299 * @stable ICU 2.0
300 */
301 virtual int32_t next(int32_t n) = 0;
302
303 /**
304 * For RuleBasedBreakIterators, return the status tag from the
305 * break rule that determined the most recently
306 * returned break position.
307 * <p>
308 * For break iterator types that do not support a rule status,
309 * a default value of 0 is returned.
310 * <p>
311 * @return the status from the break rule that determined the most recently
312 * returned break position.
313 * @see RuleBaseBreakIterator::getRuleStatus()
314 * @see UWordBreak
315 * @stable ICU 52
316 */
317 virtual int32_t getRuleStatus() const;
318
319 /**
320 * For RuleBasedBreakIterators, get the status (tag) values from the break rule(s)
321 * that determined the most recently returned break position.
322 * <p>
323 * For break iterator types that do not support rule status,
324 * no values are returned.
325 * <p>
326 * The returned status value(s) are stored into an array provided by the caller.
327 * The values are stored in sorted (ascending) order.
328 * If the capacity of the output array is insufficient to hold the data,
329 * the output will be truncated to the available length, and a
330 * U_BUFFER_OVERFLOW_ERROR will be signaled.
331 * <p>
332 * @see RuleBaseBreakIterator::getRuleStatusVec
333 *
334 * @param fillInVec an array to be filled in with the status values.
335 * @param capacity the length of the supplied vector. A length of zero causes
336 * the function to return the number of status values, in the
337 * normal way, without attemtping to store any values.
338 * @param status receives error codes.
339 * @return The number of rule status values from rules that determined
340 * the most recent boundary returned by the break iterator.
341 * In the event of a U_BUFFER_OVERFLOW_ERROR, the return value
342 * is the total number of status values that were available,
343 * not the reduced number that were actually returned.
344 * @see getRuleStatus
345 * @stable ICU 52
346 */
347 virtual int32_t getRuleStatusVec(int32_t *fillInVec, int32_t capacity, UErrorCode &status);
348
349 /**
350 * Create BreakIterator for word-breaks using the given locale.
351 * Returns an instance of a BreakIterator implementing word breaks.
352 * WordBreak is useful for word selection (ex. double click)
353 * @param where the locale.
354 * @param status the error code
355 * @return A BreakIterator for word-breaks. The UErrorCode& status
356 * parameter is used to return status information to the user.
357 * To check whether the construction succeeded or not, you should check
358 * the value of U_SUCCESS(err). If you wish more detailed information, you
359 * can check for informational error results which still indicate success.
360 * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For
361 * example, 'de_CH' was requested, but nothing was found there, so 'de' was
362 * used. U_USING_DEFAULT_WARNING indicates that the default locale data was
363 * used; neither the requested locale nor any of its fall back locales
364 * could be found.
365 * The caller owns the returned object and is responsible for deleting it.
366 * @stable ICU 2.0
367 */
368 static BreakIterator* U_EXPORT2
369 createWordInstance(const Locale& where, UErrorCode& status);
370
371 /**
372 * Create BreakIterator for line-breaks using specified locale.
373 * Returns an instance of a BreakIterator implementing line breaks. Line
374 * breaks are logically possible line breaks, actual line breaks are
375 * usually determined based on display width.
376 * LineBreak is useful for word wrapping text.
377 * @param where the locale.
378 * @param status The error code.
379 * @return A BreakIterator for line-breaks. The UErrorCode& status
380 * parameter is used to return status information to the user.
381 * To check whether the construction succeeded or not, you should check
382 * the value of U_SUCCESS(err). If you wish more detailed information, you
383 * can check for informational error results which still indicate success.
384 * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For
385 * example, 'de_CH' was requested, but nothing was found there, so 'de' was
386 * used. U_USING_DEFAULT_WARNING indicates that the default locale data was
387 * used; neither the requested locale nor any of its fall back locales
388 * could be found.
389 * The caller owns the returned object and is responsible for deleting it.
390 * @stable ICU 2.0
391 */
392 static BreakIterator* U_EXPORT2
393 createLineInstance(const Locale& where, UErrorCode& status);
394
395 /**
396 * Create BreakIterator for character-breaks using specified locale
397 * Returns an instance of a BreakIterator implementing character breaks.
398 * Character breaks are boundaries of combining character sequences.
399 * @param where the locale.
400 * @param status The error code.
401 * @return A BreakIterator for character-breaks. The UErrorCode& status
402 * parameter is used to return status information to the user.
403 * To check whether the construction succeeded or not, you should check
404 * the value of U_SUCCESS(err). If you wish more detailed information, you
405 * can check for informational error results which still indicate success.
406 * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For
407 * example, 'de_CH' was requested, but nothing was found there, so 'de' was
408 * used. U_USING_DEFAULT_WARNING indicates that the default locale data was
409 * used; neither the requested locale nor any of its fall back locales
410 * could be found.
411 * The caller owns the returned object and is responsible for deleting it.
412 * @stable ICU 2.0
413 */
414 static BreakIterator* U_EXPORT2
415 createCharacterInstance(const Locale& where, UErrorCode& status);
416
417 /**
418 * Create BreakIterator for sentence-breaks using specified locale
419 * Returns an instance of a BreakIterator implementing sentence breaks.
420 * @param where the locale.
421 * @param status The error code.
422 * @return A BreakIterator for sentence-breaks. The UErrorCode& status
423 * parameter is used to return status information to the user.
424 * To check whether the construction succeeded or not, you should check
425 * the value of U_SUCCESS(err). If you wish more detailed information, you
426 * can check for informational error results which still indicate success.
427 * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For
428 * example, 'de_CH' was requested, but nothing was found there, so 'de' was
429 * used. U_USING_DEFAULT_WARNING indicates that the default locale data was
430 * used; neither the requested locale nor any of its fall back locales
431 * could be found.
432 * The caller owns the returned object and is responsible for deleting it.
433 * @stable ICU 2.0
434 */
435 static BreakIterator* U_EXPORT2
436 createSentenceInstance(const Locale& where, UErrorCode& status);
437
438 /**
439 * Create BreakIterator for title-casing breaks using the specified locale
440 * Returns an instance of a BreakIterator implementing title breaks.
441 * The iterator returned locates title boundaries as described for
442 * Unicode 3.2 only. For Unicode 4.0 and above title boundary iteration,
443 * please use Word Boundary iterator.{@link #createWordInstance }
444 *
445 * @param where the locale.
446 * @param status The error code.
447 * @return A BreakIterator for title-breaks. The UErrorCode& status
448 * parameter is used to return status information to the user.
449 * To check whether the construction succeeded or not, you should check
450 * the value of U_SUCCESS(err). If you wish more detailed information, you
451 * can check for informational error results which still indicate success.
452 * U_USING_FALLBACK_WARNING indicates that a fall back locale was used. For
453 * example, 'de_CH' was requested, but nothing was found there, so 'de' was
454 * used. U_USING_DEFAULT_WARNING indicates that the default locale data was
455 * used; neither the requested locale nor any of its fall back locales
456 * could be found.
457 * The caller owns the returned object and is responsible for deleting it.
458 * @stable ICU 2.1
459 */
460 static BreakIterator* U_EXPORT2
461 createTitleInstance(const Locale& where, UErrorCode& status);
462
463 /**
464 * Get the set of Locales for which TextBoundaries are installed.
465 * <p><b>Note:</b> this will not return locales added through the register
466 * call. To see the registered locales too, use the getAvailableLocales
467 * function that returns a StringEnumeration object </p>
468 * @param count the output parameter of number of elements in the locale list
469 * @return available locales
470 * @stable ICU 2.0
471 */
472 static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
473
474 /**
475 * Get name of the object for the desired Locale, in the desired langauge.
476 * @param objectLocale must be from getAvailableLocales.
477 * @param displayLocale specifies the desired locale for output.
478 * @param name the fill-in parameter of the return value
479 * Uses best match.
480 * @return user-displayable name
481 * @stable ICU 2.0
482 */
483 static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale,
484 const Locale& displayLocale,
485 UnicodeString& name);
486
487 /**
488 * Get name of the object for the desired Locale, in the langauge of the
489 * default locale.
490 * @param objectLocale must be from getMatchingLocales
491 * @param name the fill-in parameter of the return value
492 * @return user-displayable name
493 * @stable ICU 2.0
494 */
495 static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale,
496 UnicodeString& name);
497
498 /**
499 * Deprecated functionality. Use clone() instead.
500 *
501 * Thread safe client-buffer-based cloning operation
502 * Do NOT call delete on a safeclone, since 'new' is not used to create it.
503 * @param stackBuffer user allocated space for the new clone. If NULL new memory will be allocated.
504 * If buffer is not large enough, new memory will be allocated.
505 * @param BufferSize reference to size of allocated space.
506 * If BufferSize == 0, a sufficient size for use in cloning will
507 * be returned ('pre-flighting')
508 * If BufferSize is not enough for a stack-based safe clone,
509 * new memory will be allocated.
510 * @param status to indicate whether the operation went on smoothly or there were errors
511 * An informational status value, U_SAFECLONE_ALLOCATED_ERROR, is used if any allocations were
512 * necessary.
513 * @return pointer to the new clone
514 *
515 * @deprecated ICU 52. Use clone() instead.
516 */
517 virtual BreakIterator * createBufferClone(void *stackBuffer,
518 int32_t &BufferSize,
519 UErrorCode &status) = 0;
520
521 #ifndef U_HIDE_DEPRECATED_API
522
523 /**
524 * Determine whether the BreakIterator was created in user memory by
525 * createBufferClone(), and thus should not be deleted. Such objects
526 * must be closed by an explicit call to the destructor (not delete).
527 * @deprecated ICU 52. Always delete the BreakIterator.
528 */
529 inline UBool isBufferClone(void);
530
531 #endif /* U_HIDE_DEPRECATED_API */
532
533 #if !UCONFIG_NO_SERVICE
534 /**
535 * Register a new break iterator of the indicated kind, to use in the given locale.
536 * The break iterator will be adopted. Clones of the iterator will be returned
537 * if a request for a break iterator of the given kind matches or falls back to
538 * this locale.
539 * Because ICU may choose to cache BreakIterators internally, this must
540 * be called at application startup, prior to any calls to
541 * BreakIterator::createXXXInstance to avoid undefined behavior.
542 * @param toAdopt the BreakIterator instance to be adopted
543 * @param locale the Locale for which this instance is to be registered
544 * @param kind the type of iterator for which this instance is to be registered
545 * @param status the in/out status code, no special meanings are assigned
546 * @return a registry key that can be used to unregister this instance
547 * @stable ICU 2.4
548 */
549 static URegistryKey U_EXPORT2 registerInstance(BreakIterator* toAdopt,
550 const Locale& locale,
551 UBreakIteratorType kind,
552 UErrorCode& status);
553
554 /**
555 * Unregister a previously-registered BreakIterator using the key returned from the
556 * register call. Key becomes invalid after a successful call and should not be used again.
557 * The BreakIterator corresponding to the key will be deleted.
558 * Because ICU may choose to cache BreakIterators internally, this should
559 * be called during application shutdown, after all calls to
560 * BreakIterator::createXXXInstance to avoid undefined behavior.
561 * @param key the registry key returned by a previous call to registerInstance
562 * @param status the in/out status code, no special meanings are assigned
563 * @return TRUE if the iterator for the key was successfully unregistered
564 * @stable ICU 2.4
565 */
566 static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
567
568 /**
569 * Return a StringEnumeration over the locales available at the time of the call,
570 * including registered locales.
571 * @return a StringEnumeration over the locales available at the time of the call
572 * @stable ICU 2.4
573 */
574 static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
575 #endif
576
577 /**
578 * Returns the locale for this break iterator. Two flavors are available: valid and
579 * actual locale.
580 * @stable ICU 2.8
581 */
582 Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
583
584 #ifndef U_HIDE_INTERNAL_API
585 /** Get the locale for this break iterator object. You can choose between valid and actual locale.
586 * @param type type of the locale we're looking for (valid or actual)
587 * @param status error code for the operation
588 * @return the locale
589 * @internal
590 */
591 const char *getLocaleID(ULocDataLocaleType type, UErrorCode& status) const;
592 #endif /* U_HIDE_INTERNAL_API */
593
594 /**
595 * Set the subject text string upon which the break iterator is operating
596 * without changing any other aspect of the matching state.
597 * The new and previous text strings must have the same content.
598 *
599 * This function is intended for use in environments where ICU is operating on
600 * strings that may move around in memory. It provides a mechanism for notifying
601 * ICU that the string has been relocated, and providing a new UText to access the
602 * string in its new position.
603 *
604 * Note that the break iterator implementation never copies the underlying text
605 * of a string being processed, but always operates directly on the original text
606 * provided by the user. Refreshing simply drops the references to the old text
607 * and replaces them with references to the new.
608 *
609 * Caution: this function is normally used only by very specialized,
610 * system-level code. One example use case is with garbage collection that moves
611 * the text in memory.
612 *
613 * @param input The new (moved) text string.
614 * @param status Receives errors detected by this function.
615 * @return *this
616 *
617 * @stable ICU 49
618 */
619 virtual BreakIterator &refreshInputText(UText *input, UErrorCode &status) = 0;
620
621 private:
622 static BreakIterator* buildInstance(const Locale& loc, const char *type, int32_t kind, UErrorCode& status);
623 static BreakIterator* createInstance(const Locale& loc, int32_t kind, UErrorCode& status);
624 static BreakIterator* makeInstance(const Locale& loc, int32_t kind, UErrorCode& status);
625
626 friend class ICUBreakIteratorFactory;
627 friend class ICUBreakIteratorService;
628
629 protected:
630 // Do not enclose protected default/copy constructors with #ifndef U_HIDE_INTERNAL_API
631 // or else the compiler will create a public ones.
632 /** @internal */
633 BreakIterator();
634 /** @internal */
635 BreakIterator (const BreakIterator &other) : UObject(other) {}
636 #ifndef U_HIDE_INTERNAL_API
637 /** @internal */
638 BreakIterator (const Locale& valid, const Locale& actual);
639 #endif /* U_HIDE_INTERNAL_API */
640 UBool fKeepAll;
641
642 private:
643
644 /** @internal */
645 char actualLocale[ULOC_FULLNAME_CAPACITY];
646 char validLocale[ULOC_FULLNAME_CAPACITY];
647
648 /**
649 * The assignment operator has no real implementation.
650 * It's provided to make the compiler happy. Do not call.
651 */
652 BreakIterator& operator=(const BreakIterator&);
653 void setKeepAll(UBool keepAll);
654 };
655
656 inline void BreakIterator::setKeepAll(UBool keepAll)
657 {
658 fKeepAll = keepAll;
659 }
660
661 #ifndef U_HIDE_DEPRECATED_API
662
663 inline UBool BreakIterator::isBufferClone()
664 {
665 return FALSE;
666 }
667
668 #endif /* U_HIDE_DEPRECATED_API */
669
670 U_NAMESPACE_END
671 #endif // U_SHOW_CPLUSPLUS_API
672
673 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
674
675 #endif // _BRKITER
676 //eof