/* ********************************************************************** * Copyright (C) 1999-2000 IBM Corp. All rights reserved. ********************************************************************** * Date Name Description * 12/1/99 rgillam Complete port from Java. * 01/13/2000 helena Added UErrorCode to ctors. ********************************************************************** */ #ifndef DBBI_H #define DBBI_H #include "unicode/rbbi.h" /* forward declaration */ class DictionaryBasedBreakIteratorTables; class U_I18N_API DictionaryBasedBreakIterator : public RuleBasedBreakIterator { private: int32_t dictionaryCharCount; int32_t* cachedBreakPositions; int32_t numCachedBreakPositions; int32_t positionInCache; static char fgClassID; public: private: DictionaryBasedBreakIterator(UDataMemory* tablesImage, char* dictionaryFilename, UErrorCode& status); public: //======================================================================= // boilerplate //======================================================================= virtual ~DictionaryBasedBreakIterator(); DictionaryBasedBreakIterator& operator=(const DictionaryBasedBreakIterator& that); virtual BreakIterator* clone(void) const; //======================================================================= // BreakIterator overrides //======================================================================= virtual int32_t previous(void); virtual int32_t following(int32_t offset); virtual int32_t preceding(int32_t offset); virtual UClassID getDynamicClassID(void) const; static UClassID getStaticClassID(void); protected: //======================================================================= // implementation //======================================================================= virtual int32_t handleNext(void); virtual void reset(void); private: void divideUpDictionaryRange(int32_t startPos, int32_t endPos); void bumpDictionaryCharCount(void); /* * HSYS : Please revisit with Rich, the ctors of the DBBI class is currently * marked as private. */ friend class DictionaryBasedBreakIteratorTables; friend class BreakIterator; }; inline UClassID DictionaryBasedBreakIterator::getDynamicClassID(void) const { return RuleBasedBreakIterator::getStaticClassID(); } inline UClassID DictionaryBasedBreakIterator::getStaticClassID(void) { return (UClassID)(&fgClassID); } inline void DictionaryBasedBreakIterator::bumpDictionaryCharCount(void) { ++dictionaryCharCount; } #endif