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
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
00622
00623
#endif // _BRKITER
00624
00625