os/textandloc/fontservices/textshaperplugin/IcuSource/common/dbbi_tbl.h
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 /*
     2 **********************************************************************
     3 *   Copyright (C) 1999-2000 IBM Corp. All rights reserved.
     4 **********************************************************************
     5 *   Date        Name        Description
     6 *   12/1/99    rgillam     Complete port from Java.
     7 *   01/13/2000 helena      Added UErrorCode to ctors.
     8 **********************************************************************
     9 */
    10 
    11 #ifndef DBBI_TBL_H
    12 #define DBBI_TBL_H
    13 
    14 #include "unicode/utypes.h"
    15 #include "unicode/uobject.h"
    16 #include "unicode/udata.h"
    17 #include "brkdict.h"
    18 
    19 U_NAMESPACE_BEGIN
    20 
    21 /* forward declaration */
    22 class DictionaryBasedBreakIterator;
    23 
    24 //
    25 //   DictionaryBasedBreakIteratorTables
    26 //
    27 //        This class sits between instances of DictionaryBasedBreakIterator
    28 //        and the dictionary data itself,  which is of type BreakDictionary.
    29 //        It provides reference counting, allowing multiple copies of a
    30 //        DictionaryBasedBreakIterator to share a single instance of
    31 //        BreakDictionary.
    32 //
    33 //        TODO:  it'd probably be cleaner to add the reference counting to
    34 //        BreakDictionary and get rid of this class, but doing it this way
    35 //        was a convenient transition from earlier code, and time is short...
    36 //
    37 class DictionaryBasedBreakIteratorTables : public UMemory {
    38 
    39 private:
    40     int32_t      fRefCount;
    41 
    42 
    43 public:
    44     //=======================================================================
    45     // constructor
    46     //=======================================================================
    47     /* @param dictionaryFilename The name of the dictionary file
    48      * @param status The error code
    49      * @return the newly created DictionaryBasedBreakIteratorTables
    50      **/
    51     DictionaryBasedBreakIteratorTables(const char*       dictionaryFilename,
    52                                              UErrorCode& status);
    53 
    54     BreakDictionary    *fDictionary;
    55     void addReference();
    56     void removeReference();
    57     /**
    58      * Destructor.  Should not be used directly.  Use removeReference() istead.
    59      *              (Not private to avoid compiler warnings.)
    60      */
    61     virtual ~DictionaryBasedBreakIteratorTables();
    62 
    63 private:
    64     /**
    65      * The copy constructor is declared private and not implemented.
    66      * THIS CLASS MAY NOT BE COPIED.
    67      * @param that The DictionaryBasedBreakIteratorTables to be copied.
    68      * @return the newly constructed DictionaryBasedBreakIteratorTables.
    69      */
    70     DictionaryBasedBreakIteratorTables(const DictionaryBasedBreakIteratorTables& that);
    71 
    72     //=======================================================================
    73     // boilerplate
    74     //=======================================================================
    75 
    76 
    77     /**
    78      * The assignment operator is declared private and not implemented.
    79      * THIS CLASS MAY NOT BE COPIED.
    80      * Call addReference() and share an existing copy instead.
    81      * @that The object to be copied
    82      * @return the newly created  DictionaryBasedBreakIteratorTables.
    83      */
    84     DictionaryBasedBreakIteratorTables& operator=(
    85             const DictionaryBasedBreakIteratorTables& that);
    86 };
    87 
    88 U_NAMESPACE_END
    89 
    90 #endif