| Index: icu46/source/i18n/strrepl.h
|
| ===================================================================
|
| --- icu46/source/i18n/strrepl.h (revision 0)
|
| +++ icu46/source/i18n/strrepl.h (revision 0)
|
| @@ -0,0 +1,165 @@
|
| +/*
|
| +**********************************************************************
|
| +* Copyright (c) 2002-2004, International Business Machines Corporation
|
| +* and others. All Rights Reserved.
|
| +**********************************************************************
|
| +* Date Name Description
|
| +* 01/21/2002 aliu Creation.
|
| +**********************************************************************
|
| +*/
|
| +
|
| +#ifndef STRREPL_H
|
| +#define STRREPL_H
|
| +
|
| +#include "unicode/utypes.h"
|
| +
|
| +#if !UCONFIG_NO_TRANSLITERATION
|
| +
|
| +#include "unicode/unifunct.h"
|
| +#include "unicode/unirepl.h"
|
| +#include "unicode/unistr.h"
|
| +
|
| +U_NAMESPACE_BEGIN
|
| +
|
| +class TransliterationRuleData;
|
| +
|
| +/**
|
| + * A replacer that produces static text as its output. The text may
|
| + * contain transliterator stand-in characters that represent nested
|
| + * UnicodeReplacer objects, making it possible to encode a tree of
|
| + * replacers in a StringReplacer. A StringReplacer that contains such
|
| + * stand-ins is called a <em>complex</em> StringReplacer. A complex
|
| + * StringReplacer has a slower processing loop than a non-complex one.
|
| + * @author Alan Liu
|
| + */
|
| +class StringReplacer : public UnicodeFunctor, public UnicodeReplacer {
|
| +
|
| + private:
|
| +
|
| + /**
|
| + * Output text, possibly containing stand-in characters that
|
| + * represent nested UnicodeReplacers.
|
| + */
|
| + UnicodeString output;
|
| +
|
| + /**
|
| + * Cursor position. Value is ignored if hasCursor is false.
|
| + */
|
| + int32_t cursorPos;
|
| +
|
| + /**
|
| + * True if this object outputs a cursor position.
|
| + */
|
| + UBool hasCursor;
|
| +
|
| + /**
|
| + * A complex object contains nested replacers and requires more
|
| + * complex processing. StringReplacers are initially assumed to
|
| + * be complex. If no nested replacers are seen during processing,
|
| + * then isComplex is set to false, and future replacements are
|
| + * short circuited for better performance.
|
| + */
|
| + UBool isComplex;
|
| +
|
| + /**
|
| + * Object that translates stand-in characters in 'output' to
|
| + * UnicodeReplacer objects.
|
| + */
|
| + const TransliterationRuleData* data;
|
| +
|
| + public:
|
| +
|
| + /**
|
| + * Construct a StringReplacer that sets the emits the given output
|
| + * text and sets the cursor to the given position.
|
| + * @param theOutput text that will replace input text when the
|
| + * replace() method is called. May contain stand-in characters
|
| + * that represent nested replacers.
|
| + * @param theCursorPos cursor position that will be returned by
|
| + * the replace() method
|
| + * @param theData transliterator context object that translates
|
| + * stand-in characters to UnicodeReplacer objects
|
| + */
|
| + StringReplacer(const UnicodeString& theOutput,
|
| + int32_t theCursorPos,
|
| + const TransliterationRuleData* theData);
|
| +
|
| + /**
|
| + * Construct a StringReplacer that sets the emits the given output
|
| + * text and does not modify the cursor.
|
| + * @param theOutput text that will replace input text when the
|
| + * replace() method is called. May contain stand-in characters
|
| + * that represent nested replacers.
|
| + * @param theData transliterator context object that translates
|
| + * stand-in characters to UnicodeReplacer objects
|
| + */
|
| + StringReplacer(const UnicodeString& theOutput,
|
| + const TransliterationRuleData* theData);
|
| +
|
| + /**
|
| + * Copy constructor.
|
| + */
|
| + StringReplacer(const StringReplacer& other);
|
| +
|
| + /**
|
| + * Destructor
|
| + */
|
| + virtual ~StringReplacer();
|
| +
|
| + /**
|
| + * Implement UnicodeFunctor
|
| + */
|
| + virtual UnicodeFunctor* 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& result,
|
| + 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 this class.
|
| + *
|
| + * @draft ICU 2.2
|
| + */
|
| + static UClassID U_EXPORT2 getStaticClassID();
|
| +
|
| + /**
|
| + * ICU "poor man's RTTI", returns a UClassID for the actual class.
|
| + *
|
| + * @draft ICU 2.2
|
| + */
|
| + virtual UClassID getDynamicClassID() const;
|
| +};
|
| +
|
| +U_NAMESPACE_END
|
| +
|
| +#endif /* #if !UCONFIG_NO_TRANSLITERATION */
|
| +
|
| +#endif
|
| +
|
| +//eof
|
|
|
| Property changes on: icu46/source/i18n/strrepl.h
|
| ___________________________________________________________________
|
| Added: svn:eol-style
|
| + LF
|
|
|
|
|