00001
00002
00003
00004
00005
00006
00007
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;
00364 RuleBasedTransliterator(const UnicodeString& id,
00365 const TransliterationRuleData* theData,
00366 UnicodeFilter* adoptedFilter = 0);
00367
00368
00369 friend class Transliterator;
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
00567
00568 #endif
00569
00570 #endif