// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* * Copyright (C) {1999-2001}, International Business Machines Corporation and others. All Rights Reserved. ********************************************************************** * Date Name Description * 11/17/99 aliu Creation. ********************************************************************** */ #ifndef RBT_RULE_H #define RBT_RULE_H #include "unicode/utypes.h" #if !UCONFIG_NO_TRANSLITERATION #include "unicode/uobject.h" #include "unicode/unistr.h" #include "unicode/utrans.h" #include "unicode/unimatch.h" U_NAMESPACE_BEGIN class Replaceable; class TransliterationRuleData; class StringMatcher; class UnicodeFunctor; /** * A transliteration rule used by * <code>RuleBasedTransliterator</code>. * <code>TransliterationRule</code> is an immutable object. * * <p>A rule consists of an input pattern and an output string. When * the input pattern is matched, the output string is emitted. The * input pattern consists of zero or more characters which are matched * exactly (the key) and optional context. Context must match if it * is specified. Context may be specified before the key, after the * key, or both. The key, preceding context, and following context * may contain variables. Variables represent a set of Unicode * characters, such as the letters <i>a</i> through <i>z</i>. * Variables are detected by looking up each character in a supplied * variable list to see if it has been so defined. * * <p>A rule may contain segments in its input string and segment * references in its output string. A segment is a substring of the * input pattern, indicated by an offset and limit. The segment may * be in the preceding or following context. It may not span a * context boundary. A segment reference is a special character in * the output string that causes a segment of the input string (not * the input pattern) to be copied to the output string. The range of * special characters that represent segment references is defined by * RuleBasedTransliterator.Data. * * @author Alan Liu */ class TransliterationRule : public UMemory { … }; U_NAMESPACE_END #endif /* #if !UCONFIG_NO_TRANSLITERATION */ #endif