123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- // © 2016 and later: Unicode, Inc. and others.
- // License & terms of use: http://www.unicode.org/copyright.html
- /*
- **********************************************************************
- * Copyright (c) 2002-2011, International Business Machines Corporation
- * and others. All Rights Reserved.
- **********************************************************************
- * Date Name Description
- * 02/04/2002 aliu Creation.
- **********************************************************************
- */
- #ifndef FUNCREPL_H
- #define FUNCREPL_H
- #include "unicode/utypes.h"
- #if !UCONFIG_NO_TRANSLITERATION
- #include "unicode/unifunct.h"
- #include "unicode/unirepl.h"
- U_NAMESPACE_BEGIN
- class Transliterator;
- /**
- * A replacer that calls a transliterator to generate its output text.
- * The input text to the transliterator is the output of another
- * UnicodeReplacer object. That is, this replacer wraps another
- * replacer with a transliterator.
- *
- * @author Alan Liu
- */
- class FunctionReplacer : public UnicodeFunctor, public UnicodeReplacer {
- private:
- /**
- * The transliterator. Must not be null. OWNED.
- */
- Transliterator* translit;
- /**
- * The replacer object. This generates text that is then
- * processed by 'translit'. Must not be null. OWNED.
- */
- UnicodeFunctor* replacer;
- public:
- /**
- * Construct a replacer that takes the output of the given
- * replacer, passes it through the given transliterator, and emits
- * the result as output.
- */
- FunctionReplacer(Transliterator* adoptedTranslit,
- UnicodeFunctor* adoptedReplacer);
- /**
- * Copy constructor.
- */
- FunctionReplacer(const FunctionReplacer& other);
- /**
- * Destructor
- */
- virtual ~FunctionReplacer();
- /**
- * Implement UnicodeFunctor
- */
- virtual FunctionReplacer* clone() const;
- /**
- * UnicodeFunctor API. Cast 'this' to a UnicodeReplacer* pointer
- * and return the pointer.
- */
- virtual UnicodeReplacer* toReplacer() const;
- /**
- * UnicodeReplacer API
- */
- virtual int32_t replace(Replaceable& text,
- int32_t start,
- int32_t limit,
- int32_t& cursor);
- /**
- * UnicodeReplacer API
- */
- virtual UnicodeString& toReplacerPattern(UnicodeString& rule,
- UBool escapeUnprintable) const;
- /**
- * Implement UnicodeReplacer
- */
- virtual void addReplacementSetTo(UnicodeSet& toUnionTo) const;
- /**
- * UnicodeFunctor API
- */
- virtual void setData(const TransliterationRuleData*);
- /**
- * ICU "poor man's RTTI", returns a UClassID for the actual class.
- */
- virtual UClassID getDynamicClassID() const;
- /**
- * ICU "poor man's RTTI", returns a UClassID for this class.
- */
- static UClassID U_EXPORT2 getStaticClassID();
- };
- U_NAMESPACE_END
- #endif /* #if !UCONFIG_NO_TRANSLITERATION */
- #endif
- //eof
|