/* * Copyright © {1999}, International Business Machines Corporation and others. All Rights Reserved. ********************************************************************** * Date Name Description * 10/22/99 alan Creation. * 11/11/99 rgillam Complete port from Java. ********************************************************************** */ #ifndef RBBI_H #define RBBI_H #include "unicode/utypes.h" #include "unicode/brkiter.h" class RuleBasedBreakIteratorTables; class BreakIterator; class U_I18N_API RuleBasedBreakIterator : public BreakIterator { public: static int8_t IGNORE; private: static int16_t START_STATE; static int16_t STOP_STATE; protected: CharacterIterator* text; RuleBasedBreakIteratorTables* tables; private: static char fgClassID; /* * HSYS: To be revisited, once the ctor are made public. */ protected: //======================================================================= // constructors //======================================================================= // This constructor uses the udata interface to create a BreakIterator whose // internal tables live in a memory-mapped file. "image" is a pointer to the // beginning of that file. RuleBasedBreakIterator(const void* image); public: RuleBasedBreakIterator(const RuleBasedBreakIterator& that); //======================================================================= // boilerplate //======================================================================= virtual ~RuleBasedBreakIterator(); RuleBasedBreakIterator& operator=(const RuleBasedBreakIterator& that); virtual bool_t operator==(const BreakIterator& that) const; bool_t operator!=(const BreakIterator& that) const; virtual BreakIterator* clone(void) const; virtual int32_t hashCode(void) const; virtual const UnicodeString& getRules(void) const; //======================================================================= // BreakIterator overrides //======================================================================= virtual const CharacterIterator& getText(void) const; virtual CharacterIterator* createText(void) const; virtual void adoptText(CharacterIterator* newText); virtual void setText(const UnicodeString& newText); virtual void setText(const UnicodeString* newText); virtual int32_t first(void); virtual int32_t last(void); virtual int32_t next(int32_t n); virtual int32_t next(void); virtual int32_t previous(void); virtual int32_t following(int32_t offset); virtual int32_t preceding(int32_t offset); virtual bool_t isBoundary(int32_t offset); virtual int32_t current(void) const; inline virtual UClassID getDynamicClassID(void) const; inline static UClassID getStaticClassID(void); protected: //======================================================================= // implementation //======================================================================= virtual int32_t handleNext(void); virtual int32_t handlePrevious(void); virtual void reset(void); private: RuleBasedBreakIterator(RuleBasedBreakIteratorTables* tables); friend class BreakIterator; }; inline bool_t RuleBasedBreakIterator::operator!=(const BreakIterator& that) const { return !operator==(that); } inline UClassID RuleBasedBreakIterator::getDynamicClassID(void) const { return RuleBasedBreakIterator::getStaticClassID(); } inline UClassID RuleBasedBreakIterator::getStaticClassID(void) { return (UClassID)(&fgClassID); } #endif