00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef RBBI_H
00011 #define RBBI_H
00012
00013 #include "unicode/utypes.h"
00014 #include "unicode/brkiter.h"
00015 #include "unicode/udata.h"
00016
00017 U_NAMESPACE_BEGIN
00018
00019 class RuleBasedBreakIteratorTables;
00020 class BreakIterator;
00021
00186 class U_COMMON_API RuleBasedBreakIterator : public BreakIterator {
00187
00188 protected:
00192 static const int8_t UBRK_IGNORE;
00193 friend class DictionaryBasedBreakIteratorTables;
00194
00195 private:
00199 static const int16_t START_STATE;
00200
00204 static const int16_t STOP_STATE;
00205
00206 protected:
00210 CharacterIterator* text;
00211
00215 RuleBasedBreakIteratorTables* tables;
00216
00217 private:
00221 static const char fgClassID;
00222
00223
00224
00225 protected:
00226
00227
00228
00229
00230
00231
00232
00233 RuleBasedBreakIterator(UDataMemory* image);
00234
00235 public:
00240 RuleBasedBreakIterator(const RuleBasedBreakIterator& that);
00241
00242
00243
00244
00245
00249 virtual ~RuleBasedBreakIterator();
00250
00255 RuleBasedBreakIterator& operator=(const RuleBasedBreakIterator& that);
00256
00261 virtual UBool operator==(const BreakIterator& that) const;
00262
00267 UBool operator!=(const BreakIterator& that) const;
00268
00273 virtual BreakIterator* clone(void) const;
00274
00279 virtual int32_t hashCode(void) const;
00280
00284 virtual const UnicodeString& getRules(void) const;
00285
00286
00287
00288
00289
00297 virtual const CharacterIterator& getText(void) const;
00298
00299 #ifdef ICU_ENABLE_DEPRECATED_BREAKITERATOR
00300
00308 virtual CharacterIterator* createText(void) const;
00309
00319 virtual void setText(const UnicodeString* newText);
00320 #endif
00321
00328 virtual void adoptText(CharacterIterator* newText);
00329
00335 virtual void setText(const UnicodeString& newText);
00336
00342 virtual int32_t first(void);
00343
00349 virtual int32_t last(void);
00350
00360 virtual int32_t next(int32_t n);
00361
00366 virtual int32_t next(void);
00367
00372 virtual int32_t previous(void);
00373
00380 virtual int32_t following(int32_t offset);
00381
00388 virtual int32_t preceding(int32_t offset);
00389
00397 virtual UBool isBoundary(int32_t offset);
00398
00403 virtual int32_t current(void) const;
00404
00415 inline virtual UClassID getDynamicClassID(void) const;
00416
00427 inline static UClassID getStaticClassID(void);
00428
00429 virtual BreakIterator * createBufferClone(void *stackBuffer,
00430 int32_t &BufferSize,
00431 UErrorCode &status);
00432 #ifdef RBBI_DEBUG
00433 void debugDumpTables() const;
00434 #endif
00435
00436
00437 protected:
00438
00439
00440
00448 virtual int32_t handleNext(void);
00449
00457 virtual int32_t handlePrevious(void);
00458
00464 virtual void reset(void);
00465
00466 private:
00467
00472 RuleBasedBreakIterator(RuleBasedBreakIteratorTables* adoptTables);
00473
00474 friend class BreakIterator;
00475
00476 };
00477
00478 inline UBool RuleBasedBreakIterator::operator!=(const BreakIterator& that) const {
00479 return !operator==(that);
00480 }
00481
00482 inline UClassID RuleBasedBreakIterator::getDynamicClassID(void) const {
00483 return RuleBasedBreakIterator::getStaticClassID();
00484 }
00485
00486 inline UClassID RuleBasedBreakIterator::getStaticClassID(void) {
00487 return (UClassID)(&fgClassID);
00488 }
00489
00490 U_NAMESPACE_END
00491
00492 #endif