Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

rbt_rule.h

Go to the documentation of this file.
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_RULE_H
00009 #define RBT_RULE_H
00010 
00011 #include "unicode/unistr.h"
00012 #include "unicode/utrans.h"
00013 
00014 class Replaceable;
00015 class TransliterationRuleData;
00016 class UnicodeFilter;
00017 
00036 class TransliterationRule {
00037 
00038 public:
00039 
00045     enum {
00052         MISMATCH,
00053 
00063         PARTIAL_MATCH,
00064         
00070         FULL_MATCH
00071     };
00072 
00079     static const UChar ETHER;
00080 
00081 private:
00082 
00090     UnicodeString pattern;
00091 
00096     UnicodeString output;
00097 
00111     int32_t* segments;
00112 
00118     int32_t anteContextLength;
00119 
00125     int32_t keyLength;
00126 
00132     int32_t cursorPos;
00133 
00134 public:
00135 
00167     TransliterationRule(const UnicodeString& input,
00168                         int32_t anteContextPos, int32_t postContextPos,
00169                         const UnicodeString& output,
00170                         int32_t cursorPos, int32_t cursorOffset,
00171                         int32_t* adoptedSegs,
00172                         UBool anchorStart, UBool anchorEnd,
00173                         UErrorCode& status);
00174 
00192     TransliterationRule(const UnicodeString& input,
00193                         int32_t anteContextPos, int32_t postContextPos,
00194                         const UnicodeString& output,
00195                         int32_t cursorPos,
00196                         UErrorCode& status);
00197 
00201     TransliterationRule(TransliterationRule& other);
00202 
00206     virtual ~TransliterationRule();
00207 
00212     virtual int32_t getCursorPos(void) const;
00213 
00219     virtual int32_t getAnteContextLength(void) const;
00220 
00227     int16_t getIndexValue(const TransliterationRuleData& data) const;
00228 
00243     int32_t replace(Replaceable& text, int32_t offset,
00244                     const TransliterationRuleData& data) const;
00245 
00256     UBool matchesIndexValue(uint8_t v,
00257                              const TransliterationRuleData& data) const;
00258 
00265     virtual UBool masks(const TransliterationRule& r2) const;
00266 
00282     virtual UBool matches(const Replaceable& text,
00283                           const UTransPosition& pos,
00284                           const TransliterationRuleData& data,
00285                           const UnicodeFilter* filter) const;
00286 
00312     virtual int32_t getMatchDegree(const Replaceable& text,
00313                                    const UTransPosition& pos,
00314                                    const TransliterationRuleData& data,
00315                                    const UnicodeFilter* filter) const;
00316 
00339     virtual int32_t getRegionMatchLength(const Replaceable& text,
00340                                          const UTransPosition& pos,
00341                                          const TransliterationRuleData& data,
00342                                          const UnicodeFilter* filter) const;
00343     
00358     virtual UBool charMatches(UChar keyChar, const Replaceable& textChar,
00359                               int32_t index,
00360                               const UTransPosition& pos,
00361                               const TransliterationRuleData& data,
00362                               const UnicodeFilter* filter) const;
00363 
00378 //[ANCHOR]    virtual UBool charMatches(UChar keyChar, UChar textChar,
00379 //[ANCHOR]                               const TransliterationRuleData& data,
00380 //[ANCHOR]                               const UnicodeFilter* filter) const;
00381 
00382 private:
00383 
00384     void init(const UnicodeString& input,
00385               int32_t anteContextPos, int32_t postContextPos,
00386               const UnicodeString& output,
00387               int32_t cursorPos, int32_t cursorOffset,
00388               int32_t* adoptedSegs,
00389               UBool anchorStart, UBool anchorEnd,
00390               UErrorCode& status);
00391 
00392 };
00393 
00394 #endif

Generated at Tue Dec 5 17:55:30 2000 for ICU by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000