Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

brkiter.h

00001 /* 00002 ******************************************************************************** 00003 * Copyright (C) 1997-2003, 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 00048 typedef const void* URegistryKey; 00049 00199 class U_COMMON_API BreakIterator : public UObject { 00200 public: 00205 virtual ~BreakIterator(); 00206 00220 virtual UBool operator==(const BreakIterator&) const = 0; 00221 00228 UBool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); } 00229 00235 virtual BreakIterator* clone(void) const = 0; 00236 00242 virtual UClassID getDynamicClassID(void) const = 0; 00243 00250 virtual const CharacterIterator& getText(void) const = 0; 00251 00258 virtual void setText(const UnicodeString &text) = 0; 00259 00266 virtual void adoptText(CharacterIterator* it) = 0; 00267 00273 #ifdef U_CYGWIN 00274 static U_COMMON_API const int32_t DONE; 00275 #else 00276 static const int32_t DONE; 00277 #endif 00278 00283 virtual int32_t first(void) = 0; 00284 00289 virtual int32_t last(void) = 0; 00290 00297 virtual int32_t previous(void) = 0; 00298 00305 virtual int32_t next(void) = 0; 00306 00312 virtual int32_t current(void) const = 0; 00313 00322 virtual int32_t following(int32_t offset) = 0; 00323 00332 virtual int32_t preceding(int32_t offset) = 0; 00333 00342 virtual UBool isBoundary(int32_t offset) = 0; 00343 00353 virtual int32_t next(int32_t n) = 0; 00354 00374 static BreakIterator* createWordInstance(const Locale& where, 00375 UErrorCode& status); 00376 00398 static BreakIterator* createLineInstance(const Locale& where, 00399 UErrorCode& status); 00400 00420 static BreakIterator* createCharacterInstance(const Locale& where, 00421 UErrorCode& status); 00422 00441 static BreakIterator* createSentenceInstance(const Locale& where, 00442 UErrorCode& status); 00443 00466 static BreakIterator* createTitleInstance(const Locale& where, 00467 UErrorCode& status); 00468 00477 static const Locale* getAvailableLocales(int32_t& count); 00478 00488 static UnicodeString& getDisplayName(const Locale& objectLocale, 00489 const Locale& displayLocale, 00490 UnicodeString& name); 00491 00500 static UnicodeString& getDisplayName(const Locale& objectLocale, 00501 UnicodeString& name); 00502 00520 virtual BreakIterator * createBufferClone(void *stackBuffer, 00521 int32_t &BufferSize, 00522 UErrorCode &status) = 0; 00523 00530 inline UBool isBufferClone(void); 00531 00544 static URegistryKey registerInstance(BreakIterator* toAdopt, const Locale& locale, UBreakIteratorType kind, UErrorCode& status); 00545 00555 static UBool unregister(URegistryKey key, UErrorCode& status); 00556 00563 static StringEnumeration* getAvailableLocales(void); 00564 00570 Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const; 00571 00578 const char *getLocaleID(ULocDataLocaleType type, UErrorCode& status) const; 00579 00580 private: 00581 static BreakIterator* makeCharacterInstance(const Locale& loc, UErrorCode& status); 00582 static BreakIterator* makeWordInstance(const Locale& loc, UErrorCode& status); 00583 static BreakIterator* makeLineInstance(const Locale& loc, UErrorCode& status); 00584 static BreakIterator* makeSentenceInstance(const Locale& loc, UErrorCode& status); 00585 static BreakIterator* makeTitleInstance(const Locale& loc, UErrorCode& status); 00586 00587 static BreakIterator* createInstance(const Locale& loc, UBreakIteratorType kind, UErrorCode& status); 00588 static BreakIterator* makeInstance(const Locale& loc, int32_t kind, UErrorCode& status); 00589 00590 friend class ICUBreakIteratorFactory; 00591 friend class ICUBreakIteratorService; 00592 00593 protected: 00595 BreakIterator(); 00597 UBool fBufferClone; 00599 BreakIterator (const BreakIterator &other) : UObject(other), fBufferClone(FALSE) {} 00600 00601 private: 00602 00604 char actualLocale[ULOC_FULLNAME_CAPACITY]; 00605 char validLocale[ULOC_FULLNAME_CAPACITY]; 00606 00611 BreakIterator& operator=(const BreakIterator&) { return *this; } 00612 }; 00613 00614 inline UBool BreakIterator::isBufferClone() 00615 { 00616 return fBufferClone; 00617 } 00618 00619 U_NAMESPACE_END 00620 00621 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */ 00622 00623 #endif // _BRKITER 00624 //eof 00625

Generated on Wed Jul 28 09:15:54 2004 for ICU 2.8 by doxygen 1.3.7