00001 /* 00002 ***************************************************************************************** 00003 * Copyright (C) 1997-2001, International Business Machines 00004 * Corporation and others. All Rights Reserved. 00005 ***************************************************************************************** 00006 * 00007 * File BRKITER.H 00008 * 00009 * Modification History: 00010 * 00011 * Date Name Description 00012 * 02/18/97 aliu Added typedef for TextCount. Made DONE const. 00013 * 05/07/97 aliu Fixed DLL declaration. 00014 * 07/09/97 jfitz Renamed BreakIterator and interface synced with JDK 00015 * 08/11/98 helena Sync-up JDK1.2. 00016 * 01/13/2000 helena Added UErrorCode parameter to createXXXInstance methods. 00017 ***************************************************************************************** 00018 */ 00019 00020 #ifndef BRKITER_H 00021 #define BRKITER_H 00022 00023 00024 #include "unicode/unistr.h" 00025 #include "unicode/chariter.h" 00026 #include "unicode/locid.h" 00027 00028 00029 U_NAMESPACE_BEGIN 00030 00180 class U_I18N_API BreakIterator { 00181 public: 00182 virtual ~BreakIterator(); 00183 00197 virtual UBool operator==(const BreakIterator&) const = 0; 00198 00203 UBool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); } 00204 00210 virtual BreakIterator* clone(void) const = 0; 00211 00217 virtual UClassID getDynamicClassID(void) const = 0; 00218 00223 virtual const CharacterIterator& getText(void) const = 0; 00224 00225 #ifdef ICU_ENABLE_DEPRECATED_BREAKITERATOR 00230 virtual CharacterIterator* createText(void) const = 0; 00231 00237 virtual void setText(const UnicodeString* it) = 0; 00238 #endif 00239 00245 virtual void setText(const UnicodeString &text) = 0; 00246 00252 virtual void adoptText(CharacterIterator* it) = 0; 00253 00259 static const UTextOffset DONE; 00260 00265 virtual UTextOffset first(void) = 0; 00266 00271 virtual UTextOffset last(void) = 0; 00272 00279 virtual UTextOffset previous(void) = 0; 00280 00287 virtual UTextOffset next(void) = 0; 00288 00295 virtual UTextOffset current(void) const = 0; 00296 00305 virtual UTextOffset following(UTextOffset offset) = 0; 00306 00315 virtual UTextOffset preceding(UTextOffset offset) = 0; 00316 00323 virtual UBool isBoundary(UTextOffset offset) = 0; 00324 00334 virtual UTextOffset next(int32_t n) = 0; 00335 00355 static BreakIterator* createWordInstance(const Locale& where, 00356 UErrorCode& status); 00357 00378 static BreakIterator* createLineInstance(const Locale& where, 00379 UErrorCode& status); 00380 00399 static BreakIterator* createCharacterInstance(const Locale& where, 00400 UErrorCode& status); 00401 00419 static BreakIterator* createSentenceInstance(const Locale& where, 00420 UErrorCode& status); 00421 00428 static const Locale* getAvailableLocales(int32_t& count); 00429 00439 static UnicodeString& getDisplayName(const Locale& objectLocale, 00440 const Locale& displayLocale, 00441 UnicodeString& name); 00442 00451 static UnicodeString& getDisplayName(const Locale& objectLocale, 00452 UnicodeString& name); 00453 00472 virtual BreakIterator * createBufferClone(void *stackBuffer, 00473 int32_t &BufferSize, 00474 UErrorCode &status) = 0; 00475 inline UBool isBufferClone(void); 00476 00477 00478 protected: 00479 BreakIterator(); 00480 UBool fBufferClone; 00481 private: 00486 BreakIterator& operator=(const BreakIterator&) { return *this; } 00487 BreakIterator (const BreakIterator&) {} 00488 }; 00489 00490 inline UBool BreakIterator::isBufferClone() 00491 { 00492 return fBufferClone; 00493 } 00494 00495 U_NAMESPACE_END 00496 00497 #endif // _BRKITER 00498 //eof 00499