Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

cpdtrans.h

Go to the documentation of this file.
00001 /*
00002 **********************************************************************
00003 *   Copyright (C) 1999, 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 
00038 class U_I18N_API CompoundTransliterator : public Transliterator {
00039 
00040     Transliterator** trans;
00041 
00042     int32_t count;
00043 
00050     int32_t compoundRBTIndex;
00051 
00052 public:
00053 
00069     CompoundTransliterator(Transliterator* const transliterators[],
00070                            int32_t transliteratorCount,
00071                            UnicodeFilter* adoptedFilter = 0);
00072 
00081     CompoundTransliterator(const UnicodeString& id,
00082                            UTransDirection dir,
00083                            UnicodeFilter* adoptedFilter,
00084                            UParseError& parseError,
00085                            UErrorCode& status);
00086 
00092     CompoundTransliterator(const UnicodeString& id,
00093                            UParseError& parseError,
00094                            UErrorCode& status);
00099     virtual ~CompoundTransliterator();
00100 
00105     CompoundTransliterator(const CompoundTransliterator&);
00106 
00111     CompoundTransliterator& operator=(const CompoundTransliterator&);
00112 
00117     Transliterator* clone(void) const;
00118 
00124     virtual int32_t getCount(void) const;
00125 
00132     virtual const Transliterator& getTransliterator(int32_t index) const;
00133 
00138     void setTransliterators(Transliterator* const transliterators[],
00139                             int32_t count);
00140 
00145     void adoptTransliterators(Transliterator* adoptedTransliterators[],
00146                               int32_t count);
00147 
00160     virtual UnicodeString& toRules(UnicodeString& result,
00161                                    UBool escapeUnprintable) const;
00162 
00167     virtual void handleTransliterate(Replaceable& text, UTransPosition& index,
00168                                      UBool incremental) const;
00169 
00170 private:
00171 
00172     friend class Transliterator;
00173     friend class TransliteratorAlias; // to access private ct
00174 
00180     CompoundTransliterator(const UnicodeString& ID,
00181                            const UnicodeString& idBlock,
00182                            int32_t idSplitPoint,
00183                            Transliterator *adoptedTrans,
00184                            UParseError& parseError,
00185                            UErrorCode& status);
00186                            
00190     CompoundTransliterator(UTransDirection dir,
00191                            UVector& list,
00192                            UErrorCode& status);
00193 
00194     void init(const UnicodeString& id,
00195               UTransDirection direction,
00196               int32_t idSplitPoint,
00197               Transliterator *adoptedRbt,
00198               UBool fixReverseID,
00199               UParseError& parseError,
00200               UErrorCode& status);
00201 
00202     void init(UVector& list,
00203               UTransDirection direction,
00204               UBool fixReverseID,
00205               UErrorCode& status);
00206 
00212     UnicodeString joinIDs(Transliterator* const transliterators[],
00213                           int32_t transCount);
00214 
00215     void freeTransliterators(void);
00216 
00217     void computeMaximumContextLength(void);
00218 
00219     
00220 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00221 
00222 public:
00223 
00234     CompoundTransliterator(const UnicodeString& id,
00235                            UTransDirection dir,
00236                            UnicodeFilter* adoptedFilter,
00237                            UErrorCode& status);
00238 
00246     CompoundTransliterator(const UnicodeString& id,
00247                            UErrorCode& status);
00248 
00249 #endif
00250 };
00251 
00257 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00258 
00259 inline CompoundTransliterator::CompoundTransliterator( const UnicodeString& id,
00260                                                        UTransDirection dir,
00261                                                        UnicodeFilter* adoptedFilter,
00262                                                        UErrorCode& status):
00263                                             Transliterator(id, adoptedFilter),
00264                                             trans(0), compoundRBTIndex(-1) {
00265     UParseError parseError;
00266     init(id, dir, -1, 0, TRUE,parseError,status);
00267 }
00268 
00269 inline CompoundTransliterator::CompoundTransliterator(const UnicodeString& id,
00270                                                       UErrorCode& status) :
00271                                             Transliterator(id, 0), // set filter to 0 here!
00272                                             trans(0), compoundRBTIndex(-1) {
00273     UParseError parseError;
00274     init(id, UTRANS_FORWARD, -1, 0, TRUE,parseError,status);       
00275 }
00276 
00277 #endif
00278 
00279 U_NAMESPACE_END
00280 
00281 #endif

Generated on Mon Dec 3 19:00:20 2001 for ICU 2.0 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001