/* ********************************************************************** * Copyright (C) 1999, International Business Machines * Corporation and others. All Rights Reserved. ********************************************************************** * Date Name Description * 11/17/99 aliu Creation. ********************************************************************** */ #ifndef CPDTRANS_H #define CPDTRANS_H #include "unicode/translit.h" class U_I18N_API CompoundTransliterator : public Transliterator { Transliterator** trans; int32_t count; public: CompoundTransliterator(Transliterator* const transliterators[], int32_t count, UnicodeFilter* adoptedFilter = 0); CompoundTransliterator(const UnicodeString& ID, Direction dir = FORWARD, UnicodeFilter* adoptedFilter = 0); virtual ~CompoundTransliterator(); CompoundTransliterator(const CompoundTransliterator&); CompoundTransliterator& operator=(const CompoundTransliterator&); Transliterator* clone(void) const; virtual int32_t getCount(void) const; virtual const Transliterator& getTransliterator(int32_t index) const; void setTransliterators(Transliterator* const transliterators[], int32_t count); void adoptTransliterators(Transliterator* adoptedTransliterators[], int32_t count); virtual void handleTransliterate(Replaceable& text, Position& index, bool_t incremental) const; private: UnicodeString joinIDs(Transliterator* const transliterators[], int32_t count); UnicodeString* split(const UnicodeString& s, UChar divider, int32_t& count); void freeTransliterators(void); void computeMaximumContextLength(void); }; #endif