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

brkiter.h

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 
00048 #if !UCONFIG_NO_SERVICE
00049 
00053 typedef const void* URegistryKey;
00054 #endif
00055 
00205 class U_COMMON_API BreakIterator : public UObject {
00206 public:
00211     virtual ~BreakIterator();
00212 
00226     virtual UBool operator==(const BreakIterator&) const = 0;
00227 
00234     UBool operator!=(const BreakIterator& rhs) const { return !operator==(rhs); }
00235 
00241     virtual BreakIterator* clone(void) const = 0;
00242 
00248     virtual UClassID getDynamicClassID(void) const = 0;
00249 
00256     virtual const CharacterIterator& getText(void) const = 0;
00257 
00264     virtual void  setText(const UnicodeString &text) = 0;
00265 
00272     virtual void  adoptText(CharacterIterator* it) = 0;
00273 
00279 #ifdef U_CYGWIN
00280     static U_COMMON_API const int32_t DONE;
00281 #else
00282     static const int32_t DONE;
00283 #endif
00284 
00289     virtual int32_t first(void) = 0;
00290 
00295     virtual int32_t last(void) = 0;
00296 
00303     virtual int32_t previous(void) = 0;
00304 
00311     virtual int32_t next(void) = 0;
00312 
00318     virtual int32_t current(void) const = 0;
00319 
00328     virtual int32_t following(int32_t offset) = 0;
00329 
00338     virtual int32_t preceding(int32_t offset) = 0;
00339 
00348     virtual UBool isBoundary(int32_t offset) = 0;
00349 
00359     virtual int32_t next(int32_t n) = 0;
00360 
00380     static BreakIterator* U_EXPORT2
00381     createWordInstance(const Locale& where, UErrorCode& status);
00382 
00404     static BreakIterator* U_EXPORT2
00405     createLineInstance(const Locale& where, UErrorCode& status);
00406 
00426     static BreakIterator* U_EXPORT2
00427     createCharacterInstance(const Locale& where, UErrorCode& status);
00428 
00447     static BreakIterator* U_EXPORT2
00448     createSentenceInstance(const Locale& where, UErrorCode& status);
00449 
00472     static BreakIterator* U_EXPORT2
00473     createTitleInstance(const Locale& where, UErrorCode& status);
00474 
00484     static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
00485 
00495     static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale,
00496                                          const Locale& displayLocale,
00497                                          UnicodeString& name);
00498 
00507     static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale,
00508                                          UnicodeString& name);
00509 
00527     virtual BreakIterator *  createBufferClone(void *stackBuffer,
00528                                                int32_t &BufferSize,
00529                                                UErrorCode &status) = 0;
00530 
00537     inline UBool isBufferClone(void);
00538 
00539 #if !UCONFIG_NO_SERVICE
00540 
00552     static URegistryKey U_EXPORT2 registerInstance(BreakIterator* toAdopt,
00553                                         const Locale& locale,
00554                                         UBreakIteratorType kind,
00555                                         UErrorCode& status);
00556 
00566     static UBool U_EXPORT2 unregister(URegistryKey key, UErrorCode& status);
00567 
00574     static StringEnumeration* U_EXPORT2 getAvailableLocales(void);
00575 #endif
00576 
00582     Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
00583 
00590     const char *getLocaleID(ULocDataLocaleType type, UErrorCode& status) const;
00591 
00592  private:
00593     static BreakIterator* buildInstance(const Locale& loc, const char *type, UBool dict, UErrorCode& status);
00594     static BreakIterator* createInstance(const Locale& loc, UBreakIteratorType kind, UErrorCode& status);
00595     static BreakIterator* makeInstance(const Locale& loc, int32_t kind, UErrorCode& status);
00596 
00597     friend class ICUBreakIteratorFactory;
00598     friend class ICUBreakIteratorService;
00599 
00600 protected:
00602     BreakIterator();
00604     UBool fBufferClone;
00606     BreakIterator (const BreakIterator &other) : UObject(other), fBufferClone(FALSE) {}
00607 
00608 private:
00609 
00611     char actualLocale[ULOC_FULLNAME_CAPACITY];
00612     char validLocale[ULOC_FULLNAME_CAPACITY];
00613 
00618     BreakIterator& operator=(const BreakIterator&) { return *this; }
00619 };
00620 
00621 inline UBool BreakIterator::isBufferClone()
00622 {
00623     return fBufferClone;
00624 }
00625 
00626 U_NAMESPACE_END
00627 
00628 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
00629 
00630 #endif // _BRKITER
00631 //eof
00632 

Generated on Tue Jul 26 00:39:55 2005 for ICU 3.2 by  doxygen 1.3.9.1