00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
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
00031
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
00626
00627
#endif // _BRKITER
00628
00629