00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef BRKITER_H
00023 #define BRKITER_H
00024
00025 #include "unicode/utypes.h"
00026
00032 #include "unicode/utypes.h"
00033
00034 #if U_SHOW_CPLUSPLUS_API
00035
00036 #if UCONFIG_NO_BREAK_ITERATION
00037
00038 U_NAMESPACE_BEGIN
00039
00040
00041
00042
00043
00044 class BreakIterator;
00045
00046 U_NAMESPACE_END
00047
00048 #else
00049
00050 #include "unicode/uobject.h"
00051 #include "unicode/unistr.h"
00052 #include "unicode/chariter.h"
00053 #include "unicode/locid.h"
00054 #include "unicode/ubrk.h"
00055 #include "unicode/strenum.h"
00056 #include "unicode/utext.h"
00057 #include "unicode/umisc.h"
00058
00059 U_NAMESPACE_BEGIN
00060
00106 class U_COMMON_API BreakIterator : public UObject {
00107 public:
00112 virtual ~BreakIterator();
00113
00127 virtual UBool operator==(const BreakIterator&) const = 0;
00128
00135 UBool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); }
00136
00142 virtual BreakIterator* clone() const = 0;
00143
00149 virtual UClassID getDynamicClassID(void) const = 0;
00150
00155 virtual CharacterIterator& getText(void) const = 0;
00156
00157
00172 virtual UText *getUText(UText *fillIn, UErrorCode &status) const = 0;
00173
00185 virtual void setText(const UnicodeString &text) = 0;
00186
00205 virtual void setText(UText *text, UErrorCode &status) = 0;
00206
00215 virtual void adoptText(CharacterIterator* it) = 0;
00216
00217 enum {
00223 DONE = (int32_t)-1
00224 };
00225
00231 virtual int32_t first(void) = 0;
00232
00238 virtual int32_t last(void) = 0;
00239
00246 virtual int32_t previous(void) = 0;
00247
00254 virtual int32_t next(void) = 0;
00255
00261 virtual int32_t current(void) const = 0;
00262
00271 virtual int32_t following(int32_t offset) = 0;
00272
00281 virtual int32_t preceding(int32_t offset) = 0;
00282
00291 virtual UBool isBoundary(int32_t offset) = 0;
00292
00302 virtual int32_t next(int32_t n) = 0;
00303
00317 virtual int32_t getRuleStatus() const;
00318
00347 virtual int32_t getRuleStatusVec(int32_t *fillInVec, int32_t capacity, UErrorCode &status);
00348
00368 static BreakIterator* U_EXPORT2
00369 createWordInstance(const Locale& where, UErrorCode& status);
00370
00392 static BreakIterator* U_EXPORT2
00393 createLineInstance(const Locale& where, UErrorCode& status);
00394
00414 static BreakIterator* U_EXPORT2
00415 createCharacterInstance(const Locale& where, UErrorCode& status);
00416
00435 static BreakIterator* U_EXPORT2
00436 createSentenceInstance(const Locale& where, UErrorCode& status);
00437
00438 #ifndef U_HIDE_DEPRECATED_API
00439
00461 static BreakIterator* U_EXPORT2
00462 createTitleInstance(const Locale& where, UErrorCode& status);
00463 #endif
00464
00474 static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
00475
00485 static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale,
00486 const Locale& displayLocale,
00487 UnicodeString& name);
00488
00497 static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale,
00498 UnicodeString& name);
00499
00500 #ifndef U_FORCE_HIDE_DEPRECATED_API
00501
00520 virtual BreakIterator * createBufferClone(void *stackBuffer,
00521 int32_t &BufferSize,
00522 UErrorCode &status) = 0;
00523 #endif // U_FORCE_HIDE_DEPRECATED_API
00524
00525 #ifndef U_HIDE_DEPRECATED_API
00526
00533 inline UBool isBufferClone(void);
00534
00535 #endif
00536
00537 #if !UCONFIG_NO_SERVICE
00538
00553 static URegistryKey U_EXPORT2 registerInstance(BreakIterator* toAdopt,
00554 const Locale& locale,
00555 UBreakIteratorType kind,
00556 UErrorCode& status);
00557
00570 static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
00571
00578 static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
00579 #endif
00580
00586 Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
00587
00588 #ifndef U_HIDE_INTERNAL_API
00589
00595 const char *getLocaleID(ULocDataLocaleType type, UErrorCode& status) const;
00596 #endif
00597
00623 virtual BreakIterator &refreshInputText(UText *input, UErrorCode &status) = 0;
00624
00625 private:
00626 static BreakIterator* buildInstance(const Locale& loc, const char *type, UErrorCode& status);
00627 static BreakIterator* createInstance(const Locale& loc, int32_t kind, UErrorCode& status);
00628 static BreakIterator* makeInstance(const Locale& loc, int32_t kind, UErrorCode& status);
00629
00630 friend class ICUBreakIteratorFactory;
00631 friend class ICUBreakIteratorService;
00632
00633 protected:
00634
00635
00637 BreakIterator();
00639 BreakIterator (const BreakIterator &other);
00640 #ifndef U_HIDE_INTERNAL_API
00641
00642 BreakIterator (const Locale& valid, const Locale &actual);
00644 BreakIterator &operator = (const BreakIterator &other);
00645 #endif
00646
00647 private:
00648
00650 char actualLocale[ULOC_FULLNAME_CAPACITY];
00651 char validLocale[ULOC_FULLNAME_CAPACITY];
00652 };
00653
00654 #ifndef U_HIDE_DEPRECATED_API
00655
00656 inline UBool BreakIterator::isBufferClone()
00657 {
00658 return FALSE;
00659 }
00660
00661 #endif
00662
00663 U_NAMESPACE_END
00664
00665 #endif
00666
00667 #endif
00668
00669 #endif // BRKITER_H
00670