Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

brkiter.h

Go to the documentation of this file.
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     U_COMMON_API static 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     virtual Locale getLocale(ULocDataLocaleType type, UErrorCode& status) const;
00571 
00578     virtual const char *getLocaleInternal(ULocDataLocaleType type, UErrorCode& status) const;
00579  private:
00580     static BreakIterator* makeCharacterInstance(const Locale& loc, UErrorCode& status);
00581     static BreakIterator* makeWordInstance(const Locale& loc, UErrorCode& status);
00582     static BreakIterator* makeLineInstance(const Locale& loc, UErrorCode& status);
00583     static BreakIterator* makeSentenceInstance(const Locale& loc, UErrorCode& status);
00584     static BreakIterator* makeTitleInstance(const Locale& loc, UErrorCode& status);
00585 
00586     static BreakIterator* createInstance(const Locale& loc, UBreakIteratorType kind, UErrorCode& status);
00587     static BreakIterator* makeInstance(const Locale& loc, int32_t kind, UErrorCode& status);
00588 
00589     friend class ICUBreakIteratorFactory;
00590     friend class ICUBreakIteratorService;
00591 
00592 protected:
00594     BreakIterator();
00596     UBool fBufferClone;
00598     BreakIterator (const BreakIterator &other) : UObject(other), fBufferClone(FALSE) {}
00599 
00601     char actualLocale[50];
00602     char validLocale[50];
00603 private:
00608     BreakIterator& operator=(const BreakIterator&) { return *this; }
00609 };
00610 
00611 inline UBool BreakIterator::isBufferClone()
00612 {
00613     return fBufferClone;
00614 }
00615 
00616 U_NAMESPACE_END
00617 
00618 #endif /* #if !UCONFIG_NO_BREAK_ITERATION */
00619 
00620 #endif // _BRKITER
00621 //eof
00622 

Generated on Mon Nov 24 14:35:28 2003 for ICU 2.8 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001