brkiter.h

Go to the documentation of this file.
00001 /* 00002 ******************************************************************************** 00003 * Copyright (C) 1997-2004, 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 #include "unicode/utypes.h" 00024 00025 #if UCONFIG_NO_BREAK_ITERATION 00026 00027 U_NAMESPACE_BEGIN 00028 00029 /* 00030 * Allow the declaration of APIs with pointers to BreakIterator 00031 * even when break iteration is removed from the build. 00032 */ 00033 class BreakIterator; 00034 00035 U_NAMESPACE_END 00036 00037 #else 00038 00039 #include "unicode/uobject.h" 00040 #include "unicode/unistr.h" 00041 #include "unicode/chariter.h" 00042 #include "unicode/locid.h" 00043 #include "unicode/ubrk.h" 00044 #include "unicode/strenum.h" 00045 00046 U_NAMESPACE_BEGIN 00047 00052 typedef const void* URegistryKey; 00053 00203 class U_COMMON_API BreakIterator : public UObject { 00204 public: 00209 virtual ~BreakIterator(); 00210 00224 virtual UBool operator==(const BreakIterator&) const = 0; 00225 00232 UBool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); } 00233 00239 virtual BreakIterator* clone(void) const = 0; 00240 00246 virtual UClassID getDynamicClassID(void) const = 0; 00247 00254 virtual const CharacterIterator& getText(void) const = 0; 00255 00262 virtual void setText(const UnicodeString &text) = 0; 00263 00270 virtual void adoptText(CharacterIterator* it) = 0; 00271 00277 #ifdef U_CYGWIN 00278 static U_COMMON_API const int32_t DONE; 00279 #else 00280 static const int32_t DONE; 00281 #endif 00282 00287 virtual int32_t first(void) = 0; 00288 00293 virtual int32_t last(void) = 0; 00294 00301 virtual int32_t previous(void) = 0; 00302 00309 virtual int32_t next(void) = 0; 00310 00316 virtual int32_t current(void) const = 0; 00317 00326 virtual int32_t following(int32_t offset) = 0; 00327 00336 virtual int32_t preceding(int32_t offset) = 0; 00337 00346 virtual UBool isBoundary(int32_t offset) = 0; 00347 00357 virtual int32_t next(int32_t n) = 0; 00358 00378 static BreakIterator* createWordInstance(const Locale& where, 00379 UErrorCode& status); 00380 00402 static BreakIterator* createLineInstance(const Locale& where, 00403 UErrorCode& status); 00404 00424 static BreakIterator* createCharacterInstance(const Locale& where, 00425 UErrorCode& status); 00426 00445 static BreakIterator* createSentenceInstance(const Locale& where, 00446 UErrorCode& status); 00447 00470 static BreakIterator* createTitleInstance(const Locale& where, 00471 UErrorCode& status); 00472 00481 static const Locale* getAvailableLocales(int32_t& count); 00482 00492 static UnicodeString& getDisplayName(const Locale& objectLocale, 00493 const Locale& displayLocale, 00494 UnicodeString& name); 00495 00504 static UnicodeString& getDisplayName(const Locale& objectLocale, 00505 UnicodeString& name); 00506 00524 virtual BreakIterator * createBufferClone(void *stackBuffer, 00525 int32_t &BufferSize, 00526 UErrorCode &status) = 0; 00527 00534 inline UBool isBufferClone(void); 00535 00548 static URegistryKey registerInstance(BreakIterator* toAdopt, const Locale& locale, UBreakIteratorType kind, UErrorCode& status); 00549 00559 static UBool unregister(URegistryKey key, UErrorCode& status); 00560 00567 static StringEnumeration* getAvailableLocales(void); 00568 00574 Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; 00575 00582 const char *getLocaleID(ULocDataLocaleType type, UErrorCode& status) const; 00583 00584 private: 00585 static BreakIterator* makeCharacterInstance(const Locale& loc, UErrorCode& status); 00586 static BreakIterator* makeWordInstance(const Locale& loc, UErrorCode& status); 00587 static BreakIterator* makeLineInstance(const Locale& loc, UErrorCode& status); 00588 static BreakIterator* makeSentenceInstance(const Locale& loc, UErrorCode& status); 00589 static BreakIterator* makeTitleInstance(const Locale& loc, UErrorCode& status); 00590 00591 static BreakIterator* createInstance(const Locale& loc, UBreakIteratorType kind, UErrorCode& status); 00592 static BreakIterator* makeInstance(const Locale& loc, int32_t kind, UErrorCode& status); 00593 00594 friend class ICUBreakIteratorFactory; 00595 friend class ICUBreakIteratorService; 00596 00597 protected: 00599 BreakIterator(); 00601 UBool fBufferClone; 00603 BreakIterator (const BreakIterator &other) : UObject(other), fBufferClone(FALSE) {} 00604 00605 private: 00606 00608 char actualLocale[ULOC_FULLNAME_CAPACITY]; 00609 char validLocale[ULOC_FULLNAME_CAPACITY]; 00610 00615 BreakIterator& operator=(const BreakIterator&) { return *this; } 00616 }; 00617 00618 inline UBool BreakIterator::isBufferClone() 00619 { 00620 return fBufferClone; 00621 } 00622 00623 U_NAMESPACE_END 00624 00625 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 00626 00627 #endif // _BRKITER 00628 //eof 00629

Generated on Fri Jun 18 12:35:56 2004 for ICU by doxygen 1.3.7