| /* |
| ********************************************************************** |
| * 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 UMemory { |
| |
| 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(); |
| |
| 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); |
| }; |
| |
| U_NAMESPACE_END |
| |
| #endif |