/* ********************************************************************** * 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_TBL_H #define DBBI_TBL_H #include "unicode/utypes.h" #include "unicode/uobject.h" #include "unicode/udata.h" #include "brkdict.h" U_NAMESPACE_BEGIN /* forward declaration */ class DictionaryBasedBreakIterator; // // DictionaryBasedBreakIteratorTables // // This class sits between instances of DictionaryBasedBreakIterator // and the dictionary data itself, which is of type BreakDictionary. // It provides reference counting, allowing multiple copies of a // DictionaryBasedBreakIterator to share a single instance of // BreakDictionary. // // TODO: it'd probably be cleaner to add the reference counting to // BreakDictionary and get rid of this class, but doing it this way // was a convenient transition from earlier code, and time is short... // class DictionaryBasedBreakIteratorTables : public UObject { private: int32_t fRefCount; public: //======================================================================= // constructor //======================================================================= /* @param dictionaryFilename The name of the dictionary file * @param status The error code * @return the newly created DictionaryBasedBreakIteratorTables **/ DictionaryBasedBreakIteratorTables(const char* dictionaryFilename, UErrorCode& status); BreakDictionary *fDictionary; void addReference(); void removeReference(); /** * Destructor. Should not be used directly. Use removeReference() istead. * (Not private to avoid compiler warnings.) */ virtual ~DictionaryBasedBreakIteratorTables(); /** * ICU "poor man's RTTI", returns a UClassID for the actual class. * * @draft ICU 2.2 */ virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); } /** * ICU "poor man's RTTI", returns a UClassID for this class. * * @draft ICU 2.2 */ static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; } private: /** * The copy constructor is declared private and not implemented. * THIS CLASS MAY NOT BE COPIED. * @param that The DictionaryBasedBreakIteratorTables to be copied. * @return the newly constructed DictionaryBasedBreakIteratorTables. */ DictionaryBasedBreakIteratorTables(const DictionaryBasedBreakIteratorTables& that); //======================================================================= // boilerplate //======================================================================= /** * The assignment operator is declared private and not implemented. * THIS CLASS MAY NOT BE COPIED. * Call addReference() and share an existing copy instead. * @that The object to be copied * @return the newly created DictionaryBasedBreakIteratorTables. */ DictionaryBasedBreakIteratorTables& operator=( const DictionaryBasedBreakIteratorTables& that); /** * The address of this static class variable serves as this class's ID * for ICU "poor man's RTTI". */ static const char fgClassID; }; U_NAMESPACE_END #endif