+// © 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
/*
**********************************************************************
-* Copyright (C) 1999-2003, International Business Machines
+* Copyright (C) 1999-2011, International Business Machines
* Corporation and others. All Rights Reserved.
**********************************************************************
* Date Name Description
U_NAMESPACE_BEGIN
-class U_I18N_API UVector;
+class U_COMMON_API UVector;
class TransliteratorRegistry;
/**
* Transliterator} for details.
*
* @author Alan Liu
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
class U_I18N_API CompoundTransliterator : public Transliterator {
int32_t count;
- /**
- * For compound RBTs (those with an ::id block before and/or after
- * the main rule block) we record the index of the RBT here.
- * Otherwise, this should have a value of -1. We need this
- * information to implement toRules().
- */
- int32_t compoundRBTIndex;
+ int32_t numAnonymousRBTs;
public:
* <tt>filter.contains()</tt> returns <tt>false</tt> will not be
* altered by this transliterator. If <tt>filter</tt> is
* <tt>null</tt> then no filtering is applied.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
CompoundTransliterator(Transliterator* const transliterators[],
int32_t transliteratorCount,
* @param dir either UTRANS_FORWARD or UTRANS_REVERSE
* @param adoptedFilter a global filter for this compound transliterator
* or NULL
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
CompoundTransliterator(const UnicodeString& id,
UTransDirection dir,
/**
* Constructs a new compound transliterator in the FORWARD
* direction with a NULL filter.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
CompoundTransliterator(const UnicodeString& id,
UParseError& parseError,
UErrorCode& status);
/**
* Destructor.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
virtual ~CompoundTransliterator();
/**
* Copy constructor.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
CompoundTransliterator(const CompoundTransliterator&);
- /**
- * Assignment operator.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
- */
- CompoundTransliterator& operator=(const CompoundTransliterator&);
-
/**
* Transliterator API.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
- Transliterator* clone(void) const;
+ virtual Transliterator* clone(void) const;
/**
* Returns the number of transliterators in this chain.
* @return number of transliterators in this chain.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
virtual int32_t getCount(void) const;
/**
* Returns the transliterator at the given index in this chain.
- * @param index index into chain, from 0 to <code>getCount() - 1</code>
+ * @param idx index into chain, from 0 to <code>getCount() - 1</code>
* @return transliterator at the given index
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
- virtual const Transliterator& getTransliterator(int32_t index) const;
+ virtual const Transliterator& getTransliterator(int32_t idx) const;
/**
* Sets the transliterators.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
void setTransliterators(Transliterator* const transliterators[],
int32_t count);
/**
* Adopts the transliterators.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
void adoptTransliterators(Transliterator* adoptedTransliterators[],
int32_t count);
* character to their hex escape representations, \uxxxx or
* \Uxxxxxxxx. Unprintable characters are those other than
* U+000A, U+0020..U+007E.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
virtual UnicodeString& toRules(UnicodeString& result,
UBool escapeUnprintable) const;
protected:
/**
* Implements {@link Transliterator#handleTransliterate}.
- * @internal Use transliterator factory methods instead since this class will be removed in that release.
*/
- virtual void handleTransliterate(Replaceable& text, UTransPosition& index,
+ virtual void handleTransliterate(Replaceable& text, UTransPosition& idx,
UBool incremental) const;
public:
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
- *
- * @draft ICU 2.2
*/
- virtual inline UClassID getDynamicClassID() const;
+ virtual UClassID getDynamicClassID() const;
/**
* ICU "poor man's RTTI", returns a UClassID for this class.
- *
- * @draft ICU 2.2
*/
- static inline UClassID getStaticClassID();
+ static UClassID U_EXPORT2 getStaticClassID();
+
+ /* @internal */
+ static const UChar PASS_STRING[];
private:
friend class TransliteratorAlias; // to access private ct
/**
- * Private constructor for compound RBTs. Construct a compound
- * transliterator using the given idBlock, with the adoptedTrans
- * inserted at the idSplitPoint.
+ * Assignment operator.
*/
- CompoundTransliterator(const UnicodeString& ID,
- const UnicodeString& idBlock,
- int32_t idSplitPoint,
- Transliterator *adoptedTrans,
- UErrorCode& status);
-
+ CompoundTransliterator& operator=(const CompoundTransliterator&);
+
/**
* Private constructor for Transliterator.
*/
+ CompoundTransliterator(const UnicodeString& ID,
+ UVector& list,
+ UnicodeFilter* adoptedFilter,
+ int32_t numAnonymousRBTs,
+ UParseError& parseError,
+ UErrorCode& status);
+
CompoundTransliterator(UVector& list,
UParseError& parseError,
UErrorCode& status);
+ CompoundTransliterator(UVector& list,
+ int32_t anonymousRBTs,
+ UParseError& parseError,
+ UErrorCode& status);
+
void init(const UnicodeString& id,
UTransDirection direction,
- int32_t idSplitPoint,
- Transliterator *adoptedRbt,
UBool fixReverseID,
UErrorCode& status);
void freeTransliterators(void);
void computeMaximumContextLength(void);
-
- /**
- * The address of this static class variable serves as this class's ID
- * for ICU "poor man's RTTI".
- */
- static const char fgClassID;
};
-inline UClassID
-CompoundTransliterator::getStaticClassID()
-{ return (UClassID)&fgClassID; }
-
-inline UClassID
-CompoundTransliterator::getDynamicClassID() const
-{ return CompoundTransliterator::getStaticClassID(); }
-
U_NAMESPACE_END
#endif /* #if !UCONFIG_NO_TRANSLITERATION */