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/utypes.h"
00014 
00015 #if !UCONFIG_NO_TRANSLITERATION
00016 
00017 #include "unicode/translit.h"
00018 
00019 #ifdef ICU_RULEBASEDTRANSLITERATOR_USE_DEPRECATES
00020 #include "unicode/utypes.h"
00021 #include "unicode/parseerr.h"
00022 
00023 U_NAMESPACE_BEGIN
00024 
00025 class TransliterationRuleData;
00026 
00288 class U_I18N_API RuleBasedTransliterator : public Transliterator {
00289 
00294     TransliterationRuleData* data;
00295 
00299     UBool isDataOwned;
00300 
00301 public:
00302 
00310     RuleBasedTransliterator(const UnicodeString& id,
00311                             const UnicodeString& rules,
00312                             UTransDirection direction,
00313                             UnicodeFilter* adoptedFilter,
00314                             UParseError& parseError,
00315                             UErrorCode& status);
00316 
00324     RuleBasedTransliterator(const UnicodeString& id,
00325                             const UnicodeString& rules,
00326                             UTransDirection direction,
00327                             UnicodeFilter* adoptedFilter,
00328                             UErrorCode& status);
00329 
00334     RuleBasedTransliterator(const UnicodeString& id,
00335                             const UnicodeString& rules,
00336                             UTransDirection direction,
00337                             UErrorCode& status);
00338 
00343     RuleBasedTransliterator(const UnicodeString& id,
00344                             const UnicodeString& rules,
00345                             UErrorCode& status);
00346 
00351     RuleBasedTransliterator(const UnicodeString& id,
00352                             const UnicodeString& rules,
00353                             UnicodeFilter* adoptedFilter,
00354                             UErrorCode& status);
00355  private:
00356 
00357      friend class TransliteratorRegistry; // to access TransliterationRuleData convenience ctor
00364     RuleBasedTransliterator(const UnicodeString& id,
00365                             const TransliterationRuleData* theData,
00366                             UnicodeFilter* adoptedFilter = 0);
00367 
00368 
00369     friend class Transliterator; // to access following ct
00370 
00377     RuleBasedTransliterator(const UnicodeString& id,
00378                             TransliterationRuleData* data,
00379                             UBool isDataAdopted);
00380 
00381  public:
00382 
00387     RuleBasedTransliterator(const RuleBasedTransliterator&);
00388 
00389     virtual ~RuleBasedTransliterator();
00390 
00395     Transliterator* clone(void) const;
00396 
00397  protected:
00402     virtual void handleTransliterate(Replaceable& text, UTransPosition& offsets,
00403                                      UBool isIncremental) const;
00404 
00405  public:
00418     virtual UnicodeString& toRules(UnicodeString& result,
00419                                    UBool escapeUnprintable) const;
00420 
00421  protected:
00425     virtual void handleGetSourceSet(UnicodeSet& result) const;
00426 
00427  public:
00431     virtual UnicodeSet& getTargetSet(UnicodeSet& result) const;
00432 
00444     static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }
00445 
00468     virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); };
00469 
00470 private:
00471 
00475     static const char fgClassID;
00476 
00477     void _construct(const UnicodeString& rules,
00478                     UTransDirection direction,
00479                     UParseError& parseError,
00480                     UErrorCode& status);
00481 };
00482 
00495 inline RuleBasedTransliterator::RuleBasedTransliterator(
00496                             const UnicodeString& id,
00497                             const UnicodeString& rules,
00498                             UTransDirection direction,
00499                             UnicodeFilter* adoptedFilter,
00500                             UParseError& parseError,
00501                             UErrorCode& status) :
00502     Transliterator(id, adoptedFilter) {
00503     _construct(rules, direction,parseError,status);
00504 }
00505 
00516 inline RuleBasedTransliterator::RuleBasedTransliterator(
00517                             const UnicodeString& id,
00518                             const UnicodeString& rules,
00519                             UTransDirection direction,
00520                             UnicodeFilter* adoptedFilter,
00521                             UErrorCode& status) :
00522     Transliterator(id, adoptedFilter) {
00523     UParseError parseError;
00524     _construct(rules, direction,parseError, status);
00525 }
00526 
00530 inline RuleBasedTransliterator::RuleBasedTransliterator(
00531                             const UnicodeString& id,
00532                             const UnicodeString& rules,
00533                             UTransDirection direction,
00534                             UErrorCode& status) :
00535     Transliterator(id, 0) {
00536     UParseError parseError;
00537     _construct(rules, direction,parseError, status);
00538 }
00539 
00543 inline RuleBasedTransliterator::RuleBasedTransliterator(
00544                             const UnicodeString& id,
00545                             const UnicodeString& rules,
00546                             UErrorCode& status) :
00547     Transliterator(id, 0) {
00548     UParseError parseError;
00549     _construct(rules, UTRANS_FORWARD, parseError, status);
00550 }
00551 
00555 inline RuleBasedTransliterator::RuleBasedTransliterator(
00556                             const UnicodeString& id,
00557                             const UnicodeString& rules,
00558                             UnicodeFilter* adoptedFilter,
00559                             UErrorCode& status) :
00560     Transliterator(id, adoptedFilter) {
00561     UParseError parseError;
00562     _construct(rules, UTRANS_FORWARD,parseError, status);
00563 }
00564 
00565 U_NAMESPACE_END
00566 #endif /* ICU_RULEBASEDTRANSLITERATOR_USE_DEPRECATES */
00567 
00568 #endif /* #if !UCONFIG_NO_TRANSLITERATION */
00569 
00570 #endif

Generated on Wed Dec 18 16:49:43 2002 for ICU 2.4 by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001