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-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 
00162  protected:
00166     virtual void handleGetSourceSet(UnicodeSet& result) const;
00167 
00168  public:
00172     virtual UnicodeSet& getTargetSet(UnicodeSet& result) const;
00173 
00174 // handleTransliterate should be protected, but was declared public before ICU 2.2.
00175 // We do not have a separate deprecation date for this method since the entire class
00176 // will become internal after 2002-sep-30.
00177 #ifndef U_USE_DEPRECATED_TRANSLITERATOR_API
00178  protected:
00179 #endif
00184     virtual void handleTransliterate(Replaceable& text, UTransPosition& index,
00185                                      UBool incremental) const;
00186 
00192     virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
00193 
00199     static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
00200 
00201 private:
00202 
00203     friend class Transliterator;
00204     friend class TransliteratorAlias; // to access private ct
00205 
00211     CompoundTransliterator(const UnicodeString& ID,
00212                            const UnicodeString& idBlock,
00213                            int32_t idSplitPoint,
00214                            Transliterator *adoptedTrans,
00215                            UErrorCode& status);
00216                            
00220     CompoundTransliterator(UVector& list,
00221                            UParseError& parseError,
00222                            UErrorCode& status);
00223 
00224     void init(const UnicodeString& id,
00225               UTransDirection direction,
00226               int32_t idSplitPoint,
00227               Transliterator *adoptedRbt,
00228               UBool fixReverseID,
00229               UErrorCode& status);
00230 
00231     void init(UVector& list,
00232               UTransDirection direction,
00233               UBool fixReverseID,
00234               UErrorCode& status);
00235 
00241     UnicodeString joinIDs(Transliterator* const transliterators[],
00242                           int32_t transCount);
00243 
00244     void freeTransliterators(void);
00245 
00246     void computeMaximumContextLength(void);
00247 
00252     static const char fgClassID;
00253 
00254 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00255 
00256 public:
00257 
00268     CompoundTransliterator(const UnicodeString& id,
00269                            UTransDirection dir,
00270                            UnicodeFilter* adoptedFilter,
00271                            UErrorCode& status);
00272 
00280     CompoundTransliterator(const UnicodeString& id,
00281                            UErrorCode& status);
00282 
00283 #endif
00284 };
00285 
00291 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00292 
00293 inline CompoundTransliterator::CompoundTransliterator( const UnicodeString& id,
00294                                                        UTransDirection dir,
00295                                                        UnicodeFilter* adoptedFilter,
00296                                                        UErrorCode& status):
00297                                             Transliterator(id, adoptedFilter),
00298                                             trans(0), compoundRBTIndex(-1) {
00299     UParseError parseError;
00300     init(id, dir, -1, 0, TRUE,parseError,status);
00301 }
00302 
00303 inline CompoundTransliterator::CompoundTransliterator(const UnicodeString& id,
00304                                                       UErrorCode& status) :
00305                                             Transliterator(id, 0), // set filter to 0 here!
00306                                             trans(0), compoundRBTIndex(-1) {
00307     UParseError parseError;
00308     init(id, UTRANS_FORWARD, -1, 0, TRUE,parseError,status);       
00309 }
00310 
00311 #endif
00312 
00313 U_NAMESPACE_END
00314 
00315 #endif

Generated on Thu Aug 15 14:13:24 2002 for ICU 2.2 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001