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

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 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
00358     RuleBasedTransliterator(const UnicodeString& id,
00359                             const TransliterationRuleData* theData,
00360                             UnicodeFilter* adoptedFilter = 0);
00361 
00362 
00363     friend class Transliterator; // to access following ct
00364 
00371     RuleBasedTransliterator(const UnicodeString& id,
00372                             TransliterationRuleData* data,
00373                             UBool isDataAdopted);
00374 
00375  public:
00376 
00381     RuleBasedTransliterator(const RuleBasedTransliterator&);
00382 
00383     virtual ~RuleBasedTransliterator();
00384 
00389     Transliterator* clone(void) const;
00390 
00391  protected:
00396     virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets,
00397                                      UBool isIncremental) const;
00398 
00399  public:
00412     virtual UnicodeString& toRules(UnicodeString& result,
00413                                    UBool escapeUnprintable) const;
00414 
00415  protected:
00419     virtual void handleGetSourceSet(UnicodeSet& result) const;
00420 
00421  public:
00425     virtual UnicodeSet& getTargetSet(UnicodeSet& result) const;
00426 
00438     static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }
00439 
00462     virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); };
00463 
00464 private:
00465 
00469     static const char fgClassID;
00470 
00471     void _construct(const UnicodeString& rules,
00472                     UTransDirection direction,
00473                     UParseError& parseError,
00474                     UErrorCode& status);
00475 };
00476 
00489 inline RuleBasedTransliterator::RuleBasedTransliterator(
00490                             const UnicodeString& id,
00491                             const UnicodeString& rules,
00492                             UTransDirection direction,
00493                             UnicodeFilter* adoptedFilter,
00494                             UParseError& parseError,
00495                             UErrorCode& status) :
00496     Transliterator(id, adoptedFilter) {
00497     _construct(rules, direction,parseError,status);
00498 }
00499 
00510 inline RuleBasedTransliterator::RuleBasedTransliterator(
00511                             const UnicodeString& id,
00512                             const UnicodeString& rules,
00513                             UTransDirection direction,
00514                             UnicodeFilter* adoptedFilter,
00515                             UErrorCode& status) :
00516     Transliterator(id, adoptedFilter) {
00517     UParseError parseError;
00518     _construct(rules, direction,parseError, status);
00519 }
00520 
00524 inline RuleBasedTransliterator::RuleBasedTransliterator(
00525                             const UnicodeString& id,
00526                             const UnicodeString& rules,
00527                             UTransDirection direction,
00528                             UErrorCode& status) :
00529     Transliterator(id, 0) {
00530     UParseError parseError;
00531     _construct(rules, direction,parseError, status);
00532 }
00533 
00537 inline RuleBasedTransliterator::RuleBasedTransliterator(
00538                             const UnicodeString& id,
00539                             const UnicodeString& rules,
00540                             UErrorCode& status) :
00541     Transliterator(id, 0) {
00542     UParseError parseError;
00543     _construct(rules, UTRANS_FORWARD, parseError, status);
00544 }
00545 
00549 inline RuleBasedTransliterator::RuleBasedTransliterator(
00550                             const UnicodeString& id,
00551                             const UnicodeString& rules,
00552                             UnicodeFilter* adoptedFilter,
00553                             UErrorCode& status) :
00554     Transliterator(id, adoptedFilter) {
00555     UParseError parseError;
00556     _construct(rules, UTRANS_FORWARD,parseError, status);
00557 }
00558 
00559 U_NAMESPACE_END
00560 
00561 #endif

Generated on Thu Aug 15 14:13:28 2002 for ICU 2.2 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001