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

rbt.h

Go to the documentation of this file.
00001 /*
00002 **********************************************************************
00003 *   Copyright (C) 1999-2001, 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 
00280 class U_I18N_API RuleBasedTransliterator : public Transliterator {
00281 
00286     TransliterationRuleData* data;
00287 
00291     UBool isDataOwned;
00292 
00293 public:
00294 
00303     RuleBasedTransliterator(const UnicodeString& id,
00304                             const UnicodeString& rules,
00305                             UTransDirection direction,
00306                             UnicodeFilter* adoptedFilter,
00307                             UParseError& parseError,
00308                             UErrorCode& status);
00309 
00317     RuleBasedTransliterator(const UnicodeString& id,
00318                             const UnicodeString& rules,
00319                             UTransDirection direction,
00320                             UnicodeFilter* adoptedFilter,
00321                             UErrorCode& status);
00322 
00327     RuleBasedTransliterator(const UnicodeString& id,
00328                             const UnicodeString& rules,
00329                             UTransDirection direction,
00330                             UErrorCode& status);
00331 
00336     RuleBasedTransliterator(const UnicodeString& id,
00337                             const UnicodeString& rules,
00338                             UErrorCode& status);
00339 
00344     RuleBasedTransliterator(const UnicodeString& id,
00345                             const UnicodeString& rules,
00346                             UnicodeFilter* adoptedFilter,
00347                             UErrorCode& status);
00348 
00353     RuleBasedTransliterator(const UnicodeString& id,
00354                             const TransliterationRuleData* theData,
00355                             UnicodeFilter* adoptedFilter = 0);
00356 
00361     RuleBasedTransliterator(const RuleBasedTransliterator&);
00362 
00363     virtual ~RuleBasedTransliterator();
00364 
00369     Transliterator* clone(void) const;
00370 
00375     virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets,
00376                                      UBool isIncremental) const;
00377 
00382     enum {
00383         PARSE_ERROR_BASE = 0x10000,
00384         BAD_VARIABLE_DEFINITION,
00385         MALFORMED_RULE,
00386         MALFORMED_SET,
00387         MALFORMED_SYMBOL_REFERENCE,
00388         MALFORMED_UNICODE_ESCAPE,
00389         MALFORMED_VARIABLE_DEFINITION,
00390         MALFORMED_VARIABLE_REFERENCE,
00391         MISMATCHED_SEGMENT_DELIMITERS,
00392         MISPLACED_ANCHOR_START,
00393         MISPLACED_CURSOR_OFFSET,
00394         MISSING_OPERATOR,
00395         MISSING_SEGMENT_CLOSE,
00396         MULTIPLE_ANTE_CONTEXTS,
00397         MULTIPLE_CURSORS,
00398         MULTIPLE_POST_CONTEXTS,
00399         TRAILING_BACKSLASH,
00400         UNDEFINED_SEGMENT_REFERENCE,
00401         UNDEFINED_VARIABLE,
00402         UNQUOTED_SPECIAL,
00403         UNTERMINATED_QUOTE
00404     };
00405 
00406 private:
00407 
00408     void _construct(const UnicodeString& rules,
00409                     UTransDirection direction,
00410                     UErrorCode& status,
00411                     UParseError* parseError = 0);
00412 };
00413 
00421 inline RuleBasedTransliterator::RuleBasedTransliterator(
00422                             const UnicodeString& id,
00423                             const UnicodeString& rules,
00424                             UTransDirection direction,
00425                             UnicodeFilter* adoptedFilter,
00426                             UParseError& parseError,
00427                             UErrorCode& status) :
00428     Transliterator(id, adoptedFilter) {
00429     _construct(rules, direction, status, &parseError);
00430 }
00431 
00439 inline RuleBasedTransliterator::RuleBasedTransliterator(
00440                             const UnicodeString& id,
00441                             const UnicodeString& rules,
00442                             UTransDirection direction,
00443                             UnicodeFilter* adoptedFilter,
00444                             UErrorCode& status) :
00445     Transliterator(id, adoptedFilter) {
00446     _construct(rules, direction, status);
00447 }
00448 
00452 inline RuleBasedTransliterator::RuleBasedTransliterator(
00453                             const UnicodeString& id,
00454                             const UnicodeString& rules,
00455                             UTransDirection direction,
00456                             UErrorCode& status) :
00457     Transliterator(id, 0) {
00458     _construct(rules, direction, status);
00459 }
00460 
00464 inline RuleBasedTransliterator::RuleBasedTransliterator(
00465                             const UnicodeString& id,
00466                             const UnicodeString& rules,
00467                             UErrorCode& status) :
00468     Transliterator(id, 0) {
00469     _construct(rules, UTRANS_FORWARD, status);
00470 }
00471 
00475 inline RuleBasedTransliterator::RuleBasedTransliterator(
00476                             const UnicodeString& id,
00477                             const UnicodeString& rules,
00478                             UnicodeFilter* adoptedFilter,
00479                             UErrorCode& status) :
00480     Transliterator(id, adoptedFilter) {
00481     _construct(rules, UTRANS_FORWARD, status);
00482 }
00483 
00484 #endif

Generated at Thu Mar 22 16:12:37 2001 for ICU 1.8 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000