Main Page | Class Hierarchy | Alphabetical List | Data Structures | 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 Wed Aug 18 05:18:14 2004 for ICU 2.1 by doxygen 1.3.7