00001 /* 00002 * Copyright © {1999}, International Business Machines Corporation and others. All Rights Reserved. 00003 ********************************************************************** 00004 * Date Name Description 00005 * 11/17/99 aliu Creation. 00006 ********************************************************************** 00007 */ 00008 #ifndef RBT_SET_H 00009 #define RBT_SET_H 00010 00011 #include "uvector.h" 00012 #include "unicode/utrans.h" 00013 00014 class Replaceable; 00015 class TransliterationRule; 00016 class TransliterationRuleData; 00017 class UnicodeFilter; 00018 class UnicodeString; 00019 00032 class TransliterationRuleSet { 00038 UVector* ruleVector; 00039 00043 int32_t maxContextLength; 00044 00049 TransliterationRule** rules; 00050 00056 int32_t index[257]; 00057 00058 public: 00059 00063 TransliterationRuleSet(); 00064 00068 TransliterationRuleSet(const TransliterationRuleSet&); 00069 00073 virtual ~TransliterationRuleSet(); 00074 00079 virtual int32_t getMaximumContextLength(void) const; 00080 00088 virtual void addRule(TransliterationRule* adoptedRule, 00089 UErrorCode& status); 00090 00101 virtual void freeze(const TransliterationRuleData& data, 00102 UErrorCode& status); 00103 00122 virtual TransliterationRule* findMatch(const Replaceable& text, 00123 const UTransPosition& pos, 00124 const TransliterationRuleData& data, 00125 const UnicodeFilter* filter) const; 00126 00154 virtual TransliterationRule* findIncrementalMatch(const Replaceable& text, 00155 const UTransPosition& pos, 00156 const TransliterationRuleData& data, 00157 UBool& isPartial, 00158 const UnicodeFilter* filter) const; 00159 }; 00160 #endif