00001
00002
00003
00004
00005
00006
00007
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;
00355 RuleBasedTransliterator(
const UnicodeString&
id,
00356
const TransliterationRuleData* theData,
00357
UnicodeFilter* adoptedFilter = 0);
00358
00359
00360
friend class Transliterator;
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