Main Page   Class Hierarchy   Compound List   File List   Header Files   Sources   Compound Members   File Members  

rbt.h

00001 /*
00002 **********************************************************************
00003 *   Copyright (C) 1999, International Business Machines
00004 *   Corporation and others.  All Rights Reserved.
00005 **********************************************************************
00006 *   Date        Name        Description
00007 *   11/17/99    aliu        Creation.
00008 **********************************************************************
00009 */
00010 #ifndef RBT_H
00011 #define RBT_H
00012 
00013 #include "unicode/translit.h"
00014 #include "unicode/utypes.h"
00015 #include "unicode/parseerr.h"
00016 
00017 class TransliterationRuleData;
00018 
00254 class U_I18N_API RuleBasedTransliterator : public Transliterator {
00255 
00260     TransliterationRuleData* data;
00261 
00265     UBool isDataOwned;
00266 
00267 public:
00268 
00277     RuleBasedTransliterator(const UnicodeString& ID,
00278                             const UnicodeString& rules,
00279                             UTransDirection direction,
00280                             UnicodeFilter* adoptedFilter,
00281                             UParseError& parseError,
00282                             UErrorCode& status);
00283 
00291     RuleBasedTransliterator(const UnicodeString& ID,
00292                             const UnicodeString& rules,
00293                             UTransDirection direction,
00294                             UnicodeFilter* adoptedFilter,
00295                             UErrorCode& status);
00296 
00301     RuleBasedTransliterator(const UnicodeString& ID,
00302                             const UnicodeString& rules,
00303                             UTransDirection direction,
00304                             UErrorCode& status);
00305 
00310     RuleBasedTransliterator(const UnicodeString& ID,
00311                             const UnicodeString& rules,
00312                             UErrorCode& status);
00313 
00318     RuleBasedTransliterator(const UnicodeString& ID,
00319                             const UnicodeString& rules,
00320                             UnicodeFilter* adoptedFilter,
00321                             UErrorCode& status);
00322 
00327     RuleBasedTransliterator(const UnicodeString& ID,
00328                             const TransliterationRuleData* theData,
00329                             UnicodeFilter* adoptedFilter = 0);
00330 
00335     RuleBasedTransliterator(const RuleBasedTransliterator&);
00336 
00337     virtual ~RuleBasedTransliterator();
00338 
00343     Transliterator* clone(void) const;
00344 
00349     virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets,
00350                                      UBool isIncremental) const;
00351 
00356     enum {
00357         PARSE_ERROR_BASE = 0x10000,
00358         BAD_VARIABLE_DEFINITION,
00359         MALFORMED_RULE,
00360         MALFORMED_SET,
00361         MALFORMED_SYMBOL_REFERENCE,
00362         MALFORMED_UNICODE_ESCAPE,
00363         MALFORMED_VARIABLE_DEFINITION,
00364         MALFORMED_VARIABLE_REFERENCE,
00365         MISMATCHED_SEGMENT_DELIMITERS,
00366         MISPLACED_CURSOR_OFFSET,
00367         MISSING_OPERATOR,
00368         MISSING_SEGMENT_CLOSE,
00369         MULTIPLE_ANTE_CONTEXTS,
00370         MULTIPLE_CURSORS,
00371         MULTIPLE_POST_CONTEXTS,
00372         TRAILING_BACKSLASH,
00373         UNDEFINED_SEGMENT_REFERENCE,
00374         UNDEFINED_VARIABLE,
00375         UNQUOTED_SPECIAL,
00376         UNTERMINATED_QUOTE
00377     };
00378 
00379 private:
00380 
00381     void _construct(const UnicodeString& rules,
00382                     UTransDirection direction,
00383                     UErrorCode& status,
00384                     UParseError* parseError = 0);
00385 };
00386 
00394 inline RuleBasedTransliterator::RuleBasedTransliterator(
00395                             const UnicodeString& ID,
00396                             const UnicodeString& rules,
00397                             UTransDirection direction,
00398                             UnicodeFilter* adoptedFilter,
00399                             UParseError& parseError,
00400                             UErrorCode& status) :
00401     Transliterator(ID, adoptedFilter) {
00402     _construct(rules, direction, status, &parseError);
00403 }
00404 
00412 inline RuleBasedTransliterator::RuleBasedTransliterator(
00413                             const UnicodeString& ID,
00414                             const UnicodeString& rules,
00415                             UTransDirection direction,
00416                             UnicodeFilter* adoptedFilter,
00417                             UErrorCode& status) :
00418     Transliterator(ID, adoptedFilter) {
00419     _construct(rules, direction, status);
00420 }
00421 
00425 inline RuleBasedTransliterator::RuleBasedTransliterator(
00426                             const UnicodeString& ID,
00427                             const UnicodeString& rules,
00428                             UTransDirection direction,
00429                             UErrorCode& status) :
00430     Transliterator(ID, 0) {
00431     _construct(rules, direction, status);
00432 }
00433 
00437 inline RuleBasedTransliterator::RuleBasedTransliterator(
00438                             const UnicodeString& ID,
00439                             const UnicodeString& rules,
00440                             UErrorCode& status) :
00441     Transliterator(ID, 0) {
00442     _construct(rules, UTRANS_FORWARD, status);
00443 }
00444 
00448 inline RuleBasedTransliterator::RuleBasedTransliterator(
00449                             const UnicodeString& ID,
00450                             const UnicodeString& rules,
00451                             UnicodeFilter* adoptedFilter,
00452                             UErrorCode& status) :
00453     Transliterator(ID, adoptedFilter) {
00454     _construct(rules, UTRANS_FORWARD, status);
00455 }
00456 
00457 #endif

Generated at Wed Aug 16 16:05:35 2000 for ICU1.6 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999