From 129fb5c9166d06ec585c4b3fbd4ecc247172e4ea Mon Sep 17 00:00:00 2001 From: Alan Liu Date: Thu, 29 Nov 2001 18:03:51 +0000 Subject: [PATCH] ICU-1514 map Remove' => Null X-SVN-Rev: 7169 --- icu4c/source/i18n/remtrans.cpp | 25 ++++++++++++++++++++++++- icu4c/source/i18n/remtrans.h | 21 ++++++++++++--------- icu4c/source/i18n/translit.cpp | 2 +- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/icu4c/source/i18n/remtrans.cpp b/icu4c/source/i18n/remtrans.cpp index d4fb0859f39..1dbd9c5b5bc 100644 --- a/icu4c/source/i18n/remtrans.cpp +++ b/icu4c/source/i18n/remtrans.cpp @@ -9,9 +9,32 @@ */ #include "remtrans.h" +static const UChar ID[] = {65, 110, 121, 45, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x00}; /* "Any-Remove" */ + U_NAMESPACE_BEGIN -const UChar RemoveTransliterator::ID[] = {65, 110, 121, 45, 0x52, 0x65, 0x6D, 0x6F, 0x76, 0x65, 0x00}; /* "Any-Remove" */ +/** + * System registration hook. + */ +void RemoveTransliterator::registerIDs() { + + Transliterator::_registerFactory(::ID, _create, integerToken(0)); + + Transliterator::_registerSpecialInverse(UnicodeString("Remove", ""), + UnicodeString("Null", ""), FALSE); +} + +/** + * Factory method + */ +Transliterator* RemoveTransliterator::_create(const UnicodeString& ID, + Token /*context*/) { + return new RemoveTransliterator(); +} + +RemoveTransliterator::RemoveTransliterator() : Transliterator(::ID, 0) {} + +RemoveTransliterator::~RemoveTransliterator() {} Transliterator* RemoveTransliterator::clone(void) const { return new RemoveTransliterator(); diff --git a/icu4c/source/i18n/remtrans.h b/icu4c/source/i18n/remtrans.h index b6c8265c493..7bf3e246177 100644 --- a/icu4c/source/i18n/remtrans.h +++ b/icu4c/source/i18n/remtrans.h @@ -22,11 +22,6 @@ class U_I18N_API RemoveTransliterator : public Transliterator { public: - /** - * ID for this transliterator. - */ - static const UChar ID[]; // public for Transliterator - /** * Constructs a transliterator. */ @@ -37,6 +32,11 @@ public: */ virtual ~RemoveTransliterator(); + /** + * System registration hook. + */ + static void registerIDs(); + /** * Transliterator API. */ @@ -47,12 +47,15 @@ public: */ virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, UBool isIncremental) const; + + private: + + /** + * Factory method + */ + static Transliterator* _create(const UnicodeString& ID, Token context); }; -inline RemoveTransliterator::RemoveTransliterator() : Transliterator(ID, 0) {} - -inline RemoveTransliterator::~RemoveTransliterator() {} - U_NAMESPACE_END #endif diff --git a/icu4c/source/i18n/translit.cpp b/icu4c/source/i18n/translit.cpp index 725088cba21..9f6feff8a58 100644 --- a/icu4c/source/i18n/translit.cpp +++ b/icu4c/source/i18n/translit.cpp @@ -1784,7 +1784,6 @@ void Transliterator::initializeRegistry(void) { // added to the system. registry->put(new NullTransliterator(), TRUE); - registry->put(new RemoveTransliterator(), TRUE); registry->put(new LowercaseTransliterator(), TRUE); registry->put(new UppercaseTransliterator(), TRUE); registry->put(new TitlecaseTransliterator(), TRUE); @@ -1792,6 +1791,7 @@ void Transliterator::initializeRegistry(void) { _registerSpecialInverse("Title", "Lower", FALSE); registry->put(new UnicodeNameTransliterator(), TRUE); registry->put(new NameUnicodeTransliterator(), TRUE); + RemoveTransliterator::registerIDs(); EscapeTransliterator::registerIDs(); UnescapeTransliterator::registerIDs(); NormalizationTransliterator::registerIDs();