1ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/* 2ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Copyright (C) 1999-2011, International Business Machines 4ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 5ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 6ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* Date Name Description 7ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru* 11/17/99 aliu Creation. 8ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru********************************************************************** 9ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru*/ 10ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#ifndef CPDTRANS_H 11ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#define CPDTRANS_H 12ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 13ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/utypes.h" 14ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 15ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#if !UCONFIG_NO_TRANSLITERATION 16ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 17ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#include "unicode/translit.h" 18ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 19ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_BEGIN 20ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 21ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass U_COMMON_API UVector; 22ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass TransliteratorRegistry; 23ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 24ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru/** 25ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * A transliterator that is composed of two or more other 26ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * transliterator objects linked together. For example, if one 27ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * transliterator transliterates from script A to script B, and 28ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * another transliterates from script B to script C, the two may be 29ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * combined to form a new transliterator from A to C. 30ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 31ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <p>Composed transliterators may not behave as expected. For 32ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * example, inverses may not combine to form the identity 33ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * transliterator. See the class documentation for {@link 34ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Transliterator} for details. 35ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * 36ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @author Alan Liu 37ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 38ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruclass U_I18N_API CompoundTransliterator : public Transliterator { 39ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 40ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru Transliterator** trans; 41ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 42ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t count; 43ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 44ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t numAnonymousRBTs; 45ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 46ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querupublic: 47ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 48ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 49ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Constructs a new compound transliterator given an array of 50ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * transliterators. The array of transliterators may be of any 51ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * length, including zero or one, however, useful compound 52ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * transliterators have at least two components. 53ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param transliterators array of <code>Transliterator</code> 54ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * objects 55ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param transliteratorCount The number of 56ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <code>Transliterator</code> objects in transliterators. 57ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param adoptedFilter the filter. Any character for which 58ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tt>filter.contains()</tt> returns <tt>false</tt> will not be 59ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * altered by this transliterator. If <tt>filter</tt> is 60ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * <tt>null</tt> then no filtering is applied. 61ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 62ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CompoundTransliterator(Transliterator* const transliterators[], 63ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t transliteratorCount, 64ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeFilter* adoptedFilter = 0); 65ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 66ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 67ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Constructs a new compound transliterator. 68ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param id compound ID 69ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param dir either UTRANS_FORWARD or UTRANS_REVERSE 70ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param adoptedFilter a global filter for this compound transliterator 71ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * or NULL 72ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 73ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CompoundTransliterator(const UnicodeString& id, 74ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTransDirection dir, 75ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeFilter* adoptedFilter, 76ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UParseError& parseError, 77ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode& status); 78ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 79ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 80ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Constructs a new compound transliterator in the FORWARD 81ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * direction with a NULL filter. 82ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 83ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CompoundTransliterator(const UnicodeString& id, 84ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UParseError& parseError, 85ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode& status); 86ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 87ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Destructor. 88ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 89ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru virtual ~CompoundTransliterator(); 90ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 91ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 92ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Copy constructor. 93ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 94ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CompoundTransliterator(const CompoundTransliterator&); 95ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 96ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 97ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Transliterator API. 98ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 99ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru virtual Transliterator* clone(void) const; 100ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 101ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 102ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Returns the number of transliterators in this chain. 103ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return number of transliterators in this chain. 104ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 105ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru virtual int32_t getCount(void) const; 106ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 107ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 108ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Returns the transliterator at the given index in this chain. 10985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * @param idx index into chain, from 0 to <code>getCount() - 1</code> 110ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @return transliterator at the given index 111ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 11285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual const Transliterator& getTransliterator(int32_t idx) const; 113ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 114ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 115ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Sets the transliterators. 116ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 117ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void setTransliterators(Transliterator* const transliterators[], 118ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t count); 119ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 120ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 121ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Adopts the transliterators. 122ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 123ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void adoptTransliterators(Transliterator* adoptedTransliterators[], 124ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t count); 125ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 126ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 127ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Override Transliterator: 128ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Create a rule string that can be passed to createFromRules() 129ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * to recreate this transliterator. 130ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param result the string to receive the rules. Previous 131ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * contents will be deleted. 132ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * @param escapeUnprintable if TRUE then convert unprintable 133ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * character to their hex escape representations, \uxxxx or 134ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * \Uxxxxxxxx. Unprintable characters are those other than 135ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * U+000A, U+0020..U+007E. 136ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 137ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru virtual UnicodeString& toRules(UnicodeString& result, 138ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UBool escapeUnprintable) const; 139ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 140ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru protected: 141ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 142ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Implement Transliterator framework 143ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 144ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru virtual void handleGetSourceSet(UnicodeSet& result) const; 145ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 146ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru public: 147ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 148ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Override Transliterator framework 149ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 150ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru virtual UnicodeSet& getTargetSet(UnicodeSet& result) const; 151ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 152ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprotected: 153ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 154ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Implements {@link Transliterator#handleTransliterate}. 155ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 15685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho virtual void handleTransliterate(Replaceable& text, UTransPosition& idx, 157ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UBool incremental) const; 158ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 159ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Querupublic: 160ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 161ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 162ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * ICU "poor man's RTTI", returns a UClassID for the actual class. 163ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 164ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru virtual UClassID getDynamicClassID() const; 165ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 166ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 167ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * ICU "poor man's RTTI", returns a UClassID for this class. 168ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 169ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static UClassID U_EXPORT2 getStaticClassID(); 170ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 171ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /* @internal */ 172ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru static const UChar PASS_STRING[]; 173ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 174ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queruprivate: 175ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 176ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru friend class Transliterator; 177ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru friend class TransliteratorAlias; // to access private ct 178ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 179ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 180ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Assignment operator. 181ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 182ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CompoundTransliterator& operator=(const CompoundTransliterator&); 183ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 184ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 185ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Private constructor for Transliterator. 186ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 187ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CompoundTransliterator(const UnicodeString& ID, 188ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UVector& list, 189ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeFilter* adoptedFilter, 190ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t numAnonymousRBTs, 191ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UParseError& parseError, 192ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode& status); 193ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 194ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CompoundTransliterator(UVector& list, 195ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UParseError& parseError, 196ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode& status); 197ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 198ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru CompoundTransliterator(UVector& list, 199ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t anonymousRBTs, 200ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UParseError& parseError, 201ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode& status); 202ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 203ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void init(const UnicodeString& id, 204ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTransDirection direction, 205ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UBool fixReverseID, 206ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode& status); 207ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 208ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void init(UVector& list, 209ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UTransDirection direction, 210ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UBool fixReverseID, 211ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UErrorCode& status); 212ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 213ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru /** 214ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * Return the IDs of the given list of transliterators, concatenated 215ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * with ';' delimiting them. Equivalent to the perlish expression 216ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru * join(';', map($_.getID(), transliterators). 217ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru */ 218ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru UnicodeString joinIDs(Transliterator* const transliterators[], 219ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru int32_t transCount); 220ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 221ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void freeTransliterators(void); 222ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 223ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru void computeMaximumContextLength(void); 224ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru}; 225ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 226ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste QueruU_NAMESPACE_END 227ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 228ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_TRANSLITERATION */ 229ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru 230ac04d0bbe12b3ef54518635711412f178cb4d16Jean-Baptiste Queru#endif 231