Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

rbt.h

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 U_NAMESPACE_BEGIN
00018 
00019 class TransliterationRuleData;
00020 
00282 class U_I18N_API RuleBasedTransliterator : public Transliterator {
00283 
00288     TransliterationRuleData* data;
00289 
00293     UBool isDataOwned;
00294 
00295 public:
00296 
00304     RuleBasedTransliterator(const UnicodeString& id,
00305                             const UnicodeString& rules,
00306                             UTransDirection direction,
00307                             UnicodeFilter* adoptedFilter,
00308                             UParseError& parseError,
00309                             UErrorCode& status);
00310 
00318     RuleBasedTransliterator(const UnicodeString& id,
00319                             const UnicodeString& rules,
00320                             UTransDirection direction,
00321                             UnicodeFilter* adoptedFilter,
00322                             UErrorCode& status);
00323 
00328     RuleBasedTransliterator(const UnicodeString& id,
00329                             const UnicodeString& rules,
00330                             UTransDirection direction,
00331                             UErrorCode& status);
00332 
00337     RuleBasedTransliterator(const UnicodeString& id,
00338                             const UnicodeString& rules,
00339                             UErrorCode& status);
00340 
00345     RuleBasedTransliterator(const UnicodeString& id,
00346                             const UnicodeString& rules,
00347                             UnicodeFilter* adoptedFilter,
00348                             UErrorCode& status);
00349  private:
00350 
00351      friend class TransliteratorRegistry; // to access TransliterationRuleData convenience ctor
00355     RuleBasedTransliterator(const UnicodeString& id,
00356                             const TransliterationRuleData* theData,
00357                             UnicodeFilter* adoptedFilter = 0);
00358 
00359 
00360     friend class Transliterator; // to access following ct
00361 
00365     RuleBasedTransliterator(const UnicodeString& id,
00366                             TransliterationRuleData* data,
00367                             UBool isDataAdopted);
00368 
00369  public:
00370 
00375     RuleBasedTransliterator(const RuleBasedTransliterator&);
00376 
00377     virtual ~RuleBasedTransliterator();
00378 
00383     Transliterator* clone(void) const;
00384 
00389     virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets,
00390                                      UBool isIncremental) const;
00391 
00404     virtual UnicodeString& toRules(UnicodeString& result,
00405                                    UBool escapeUnprintable) const;
00406 
00418     static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }
00419 
00442     virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); };
00443 
00444 private:
00445 
00449     static const char fgClassID;
00450 
00451     void _construct(const UnicodeString& rules,
00452                     UTransDirection direction,
00453                     UParseError& parseError,
00454                     UErrorCode& status);
00455 };
00456 
00464 inline RuleBasedTransliterator::RuleBasedTransliterator(
00465                             const UnicodeString& id,
00466                             const UnicodeString& rules,
00467                             UTransDirection direction,
00468                             UnicodeFilter* adoptedFilter,
00469                             UParseError& parseError,
00470                             UErrorCode& status) :
00471     Transliterator(id, adoptedFilter) {
00472     _construct(rules, direction,parseError,status);
00473 }
00474 
00482 inline RuleBasedTransliterator::RuleBasedTransliterator(
00483                             const UnicodeString& id,
00484                             const UnicodeString& rules,
00485                             UTransDirection direction,
00486                             UnicodeFilter* adoptedFilter,
00487                             UErrorCode& status) :
00488     Transliterator(id, adoptedFilter) {
00489     UParseError parseError;
00490     _construct(rules, direction,parseError, status);
00491 }
00492 
00496 inline RuleBasedTransliterator::RuleBasedTransliterator(
00497                             const UnicodeString& id,
00498                             const UnicodeString& rules,
00499                             UTransDirection direction,
00500                             UErrorCode& status) :
00501     Transliterator(id, 0) {
00502     UParseError parseError;
00503     _construct(rules, direction,parseError, status);
00504 }
00505 
00509 inline RuleBasedTransliterator::RuleBasedTransliterator(
00510                             const UnicodeString& id,
00511                             const UnicodeString& rules,
00512                             UErrorCode& status) :
00513     Transliterator(id, 0) {
00514     UParseError parseError;
00515     _construct(rules, UTRANS_FORWARD, parseError, status);
00516 }
00517 
00521 inline RuleBasedTransliterator::RuleBasedTransliterator(
00522                             const UnicodeString& id,
00523                             const UnicodeString& rules,
00524                             UnicodeFilter* adoptedFilter,
00525                             UErrorCode& status) :
00526     Transliterator(id, adoptedFilter) {
00527     UParseError parseError;
00528     _construct(rules, UTRANS_FORWARD,parseError, status);
00529 }
00530 
00531 U_NAMESPACE_END
00532 
00533 #endif

Generated on Sun Mar 10 02:54:02 2002 for ICU 2.0 by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002