Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

cpdtrans.h

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                            UErrorCode& status);
00185                            
00189     CompoundTransliterator(UVector& list,
00190                            UParseError& parseError,
00191                            UErrorCode& status);
00192 
00193     void init(const UnicodeString& id,
00194               UTransDirection direction,
00195               int32_t idSplitPoint,
00196               Transliterator *adoptedRbt,
00197               UBool fixReverseID,
00198               UErrorCode& status);
00199 
00200     void init(UVector& list,
00201               UTransDirection direction,
00202               UBool fixReverseID,
00203               UErrorCode& status);
00204 
00210     UnicodeString joinIDs(Transliterator* const transliterators[],
00211                           int32_t transCount);
00212 
00213     void freeTransliterators(void);
00214 
00215     void computeMaximumContextLength(void);
00216 
00217     
00218 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00219 
00220 public:
00221 
00232     CompoundTransliterator(const UnicodeString& id,
00233                            UTransDirection dir,
00234                            UnicodeFilter* adoptedFilter,
00235                            UErrorCode& status);
00236 
00244     CompoundTransliterator(const UnicodeString& id,
00245                            UErrorCode& status);
00246 
00247 #endif
00248 };
00249 
00255 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00256 
00257 inline CompoundTransliterator::CompoundTransliterator( const UnicodeString& id,
00258                                                        UTransDirection dir,
00259                                                        UnicodeFilter* adoptedFilter,
00260                                                        UErrorCode& status):
00261                                             Transliterator(id, adoptedFilter),
00262                                             trans(0), compoundRBTIndex(-1) {
00263     UParseError parseError;
00264     init(id, dir, -1, 0, TRUE,parseError,status);
00265 }
00266 
00267 inline CompoundTransliterator::CompoundTransliterator(const UnicodeString& id,
00268                                                       UErrorCode& status) :
00269                                             Transliterator(id, 0), // set filter to 0 here!
00270                                             trans(0), compoundRBTIndex(-1) {
00271     UParseError parseError;
00272     init(id, UTRANS_FORWARD, -1, 0, TRUE,parseError,status);       
00273 }
00274 
00275 #endif
00276 
00277 U_NAMESPACE_END
00278 
00279 #endif

Generated on Tue Mar 5 06:24:37 2002 for ICU 2.0 by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002