Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

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 Fri Aug 13 09:53:50 2004 for ICU 2.1 by doxygen 1.3.7