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/utypes.h"
00014 
00015 #if !UCONFIG_NO_TRANSLITERATION
00016 
00017 #include "unicode/translit.h"
00018 
00019 #ifdef ICU_COMPOUNDTRANSLITERATOR_USE_DEPRECATES
00020 
00021 U_NAMESPACE_BEGIN
00022 
00023 class U_I18N_API UVector;
00024 class TransliteratorRegistry;
00025 
00041 class U_I18N_API CompoundTransliterator : public Transliterator {
00042 
00043     Transliterator** trans;
00044 
00045     int32_t count;
00046 
00053     int32_t compoundRBTIndex;
00054 
00055 public:
00056 
00072     CompoundTransliterator(Transliterator* const transliterators[],
00073                            int32_t transliteratorCount,
00074                            UnicodeFilter* adoptedFilter = 0);
00075 
00084     CompoundTransliterator(const UnicodeString& id,
00085                            UTransDirection dir,
00086                            UnicodeFilter* adoptedFilter,
00087                            UParseError& parseError,
00088                            UErrorCode& status);
00089 
00095     CompoundTransliterator(const UnicodeString& id,
00096                            UParseError& parseError,
00097                            UErrorCode& status);
00102     virtual ~CompoundTransliterator();
00103 
00108     CompoundTransliterator(const CompoundTransliterator&);
00109 
00114     CompoundTransliterator& operator=(const CompoundTransliterator&);
00115 
00120     Transliterator* clone(void) const;
00121 
00127     virtual int32_t getCount(void) const;
00128 
00135     virtual const Transliterator& getTransliterator(int32_t index) const;
00136 
00141     void setTransliterators(Transliterator* const transliterators[],
00142                             int32_t count);
00143 
00148     void adoptTransliterators(Transliterator* adoptedTransliterators[],
00149                               int32_t count);
00150 
00163     virtual UnicodeString& toRules(UnicodeString& result,
00164                                    UBool escapeUnprintable) const;
00165 
00166  protected:
00170     virtual void handleGetSourceSet(UnicodeSet& result) const;
00171 
00172  public:
00176     virtual UnicodeSet& getTargetSet(UnicodeSet& result) const;
00177 
00178 // handleTransliterate should be protected, but was declared public before ICU 2.2.
00179 // We do not have a separate deprecation date for this method since the entire class
00180 // will become internal after 2002-sep-30.
00181 #ifndef U_USE_DEPRECATED_TRANSLITERATOR_API
00182  protected:
00183 #endif
00188     virtual void handleTransliterate(Replaceable& text, UTransPosition& index,
00189                                      UBool incremental) const;
00190 
00191 #ifndef U_USE_DEPRECATED_TRANSLITERATOR_API
00192  public:
00193 #endif
00194 
00200     virtual inline UClassID getDynamicClassID() const { return getStaticClassID(); }
00201 
00207     static inline UClassID getStaticClassID() { return (UClassID)&fgClassID; }
00208 
00209 private:
00210 
00211     friend class Transliterator;
00212     friend class TransliteratorAlias; // to access private ct
00213 
00219     CompoundTransliterator(const UnicodeString& ID,
00220                            const UnicodeString& idBlock,
00221                            int32_t idSplitPoint,
00222                            Transliterator *adoptedTrans,
00223                            UErrorCode& status);
00224                            
00228     CompoundTransliterator(UVector& list,
00229                            UParseError& parseError,
00230                            UErrorCode& status);
00231 
00232     void init(const UnicodeString& id,
00233               UTransDirection direction,
00234               int32_t idSplitPoint,
00235               Transliterator *adoptedRbt,
00236               UBool fixReverseID,
00237               UErrorCode& status);
00238 
00239     void init(UVector& list,
00240               UTransDirection direction,
00241               UBool fixReverseID,
00242               UErrorCode& status);
00243 
00249     UnicodeString joinIDs(Transliterator* const transliterators[],
00250                           int32_t transCount);
00251 
00252     void freeTransliterators(void);
00253 
00254     void computeMaximumContextLength(void);
00255 
00260     static const char fgClassID;
00261 
00262 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00263 
00264 public:
00265 
00275     CompoundTransliterator(const UnicodeString& id,
00276                            UTransDirection dir,
00277                            UnicodeFilter* adoptedFilter,
00278                            UErrorCode& status);
00279 
00286     CompoundTransliterator(const UnicodeString& id,
00287                            UErrorCode& status);
00288 
00289 #endif
00290 };
00291 
00297 #ifdef U_USE_DEPRECATED_TRANSLITERATOR_API
00298 
00299 inline CompoundTransliterator::CompoundTransliterator( const UnicodeString& id,
00300                                                        UTransDirection dir,
00301                                                        UnicodeFilter* adoptedFilter,
00302                                                        UErrorCode& status):
00303                                             Transliterator(id, adoptedFilter),
00304                                             trans(0), compoundRBTIndex(-1) {
00305     UParseError parseError;
00306     init(id, dir, -1, 0, TRUE,parseError,status);
00307 }
00308 
00309 inline CompoundTransliterator::CompoundTransliterator(const UnicodeString& id,
00310                                                       UErrorCode& status) :
00311                                             Transliterator(id, 0), // set filter to 0 here!
00312                                             trans(0), compoundRBTIndex(-1) {
00313     UParseError parseError;
00314     init(id, UTRANS_FORWARD, -1, 0, TRUE,parseError,status);       
00315 }
00316 
00317 #endif
00318 
00319 U_NAMESPACE_END
00320 #endif /* ICU_COMPOUNDTRANSLITERATOR_USE_DEPRECATES */
00321 
00322 #endif /* #if !UCONFIG_NO_TRANSLITERATION */
00323 
00324 #endif

Generated on Wed Dec 18 16:49:31 2002 for ICU 2.4 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001