Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals | Related Pages

cpdtrans.h

00001 /*
00002 **********************************************************************
00003 *   Copyright (C) 1999-2002, International Business Machines
00004 *   Corporation and others.  All Rights Reserved.
00005 **********************************************************************
00006 *   Date        Name        Description
00007 *   11/17/99    aliu        Creation.
00008 **********************************************************************
00009 */
00010 #ifndef CPDTRANS_H
00011 #define CPDTRANS_H
00012 
00013 #include "unicode/translit.h"
00014 
00015 U_NAMESPACE_BEGIN
00016 
00017 class U_I18N_API UVector;
00018 class TransliteratorRegistry;
00019 
00037 class U_I18N_API CompoundTransliterator : public Transliterator {
00038 
00039     Transliterator** trans;
00040 
00041     int32_t count;
00042 
00049     int32_t compoundRBTIndex;
00050 
00051 public:
00052 
00068     CompoundTransliterator(Transliterator* const transliterators[],
00069                            int32_t transliteratorCount,
00070                            UnicodeFilter* adoptedFilter = 0);
00071 
00080     CompoundTransliterator(const UnicodeString& id,
00081                            UTransDirection dir,
00082                            UnicodeFilter* adoptedFilter,
00083                            UParseError& parseError,
00084                            UErrorCode& status);
00085 
00091     CompoundTransliterator(const UnicodeString& id,
00092                            UParseError& parseError,
00093                            UErrorCode& status);
00098     virtual ~CompoundTransliterator();
00099 
00104     CompoundTransliterator(const CompoundTransliterator&);
00105 
00110     CompoundTransliterator& operator=(const CompoundTransliterator&);
00111 
00116     Transliterator* clone(void) const;
00117 
00123     virtual int32_t getCount(void) const;
00124 
00131     virtual const Transliterator& getTransliterator(int32_t index) const;
00132 
00137     void setTransliterators(Transliterator* const transliterators[],
00138                             int32_t count);
00139 
00144     void adoptTransliterators(Transliterator* adoptedTransliterators[],
00145                               int32_t count);
00146 
00159     virtual UnicodeString& toRules(UnicodeString& result,
00160                                    UBool escapeUnprintable) const;
00161 
00166     virtual void handleTransliterate(Replaceable& text, UTransPosition& index,
00167                                      UBool incremental) const;
00168 
00169 private:
00170 
00171     friend class Transliterator;
00172     friend class TransliteratorAlias; // to access private ct
00173 
00179     CompoundTransliterator(const UnicodeString& ID,
00180                            const UnicodeString& idBlock,
00181                            int32_t idSplitPoint,
00182                            Transliterator *adoptedTrans,
00183                            UErrorCode& status);
00184                            
00188     CompoundTransliterator(UVector& list,
00189                            UParseError& parseError,
00190                            UErrorCode& status);
00191 
00192     void init(const UnicodeString& id,
00193               UTransDirection direction,
00194               int32_t idSplitPoint,
00195               Transliterator *adoptedRbt,
00196               UBool fixReverseID,
00197               UErrorCode& status);
00198 
00199     void init(UVector& list,
00200               UTransDirection direction,
00201               UBool fixReverseID,
00202               UErrorCode& status);
00203 
00209     UnicodeString joinIDs(Transliterator* const transliterators[],
00210                           int32_t transCount);
00211 
00212     void freeTransliterators(void);
00213 
00214     void computeMaximumContextLength(void);
00215 
00216     
00217 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00218 
00219 public:
00220 
00231     CompoundTransliterator(const UnicodeString& id,
00232                            UTransDirection dir,
00233                            UnicodeFilter* adoptedFilter,
00234                            UErrorCode& status);
00235 
00243     CompoundTransliterator(const UnicodeString& id,
00244                            UErrorCode& status);
00245 
00246 #endif
00247 };
00248 
00254 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00255 
00256 inline CompoundTransliterator::CompoundTransliterator( const UnicodeString& id,
00257                                                        UTransDirection dir,
00258                                                        UnicodeFilter* adoptedFilter,
00259                                                        UErrorCode& status):
00260                                             Transliterator(id, adoptedFilter),
00261                                             trans(0), compoundRBTIndex(-1) {
00262     UParseError parseError;
00263     init(id, dir, -1, 0, TRUE,parseError,status);
00264 }
00265 
00266 inline CompoundTransliterator::CompoundTransliterator(const UnicodeString& id,
00267                                                       UErrorCode& status) :
00268                                             Transliterator(id, 0), // set filter to 0 here!
00269                                             trans(0), compoundRBTIndex(-1) {
00270     UParseError parseError;
00271     init(id, UTRANS_FORWARD, -1, 0, TRUE,parseError,status);       
00272 }
00273 
00274 #endif
00275 
00276 U_NAMESPACE_END
00277 
00278 #endif

Generated on Sun May 22 23:05:49 2005 for ICU 2.1 by  doxygen 1.4.2