]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/i18n/strmatch.cpp
ICU-511.25.tar.gz
[apple/icu.git] / icuSources / i18n / strmatch.cpp
index 8286c7eaa0757494d4298c4ad98eb721e76a75f8..7a455759b9dbc98c0c6cb36d7ad5fc628bdf034b 100644 (file)
@@ -1,6 +1,6 @@
 /*
 **********************************************************************
-*   Copyright (c) 2001-2004, International Business Machines Corporation
+*   Copyright (c) 2001-2012, International Business Machines Corporation
 *   and others.  All Rights Reserved.
 **********************************************************************
 *   Date        Name        Description
 #include "rbt_data.h"
 #include "util.h"
 #include "unicode/uniset.h"
+#include "unicode/utf16.h"
 
 U_NAMESPACE_BEGIN
 
-static const UChar EMPTY[] = { 0 }; // empty string: ""
-
 UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringMatcher)
 
 StringMatcher::StringMatcher(const UnicodeString& theString,
@@ -66,7 +65,10 @@ UnicodeFunctor* StringMatcher::clone() const {
  * and return the pointer.
  */
 UnicodeMatcher* StringMatcher::toMatcher() const {
-    return (UnicodeMatcher*) this;
+  StringMatcher  *nonconst_this = const_cast<StringMatcher *>(this);
+  UnicodeMatcher *nonconst_base = static_cast<UnicodeMatcher *>(nonconst_this);
+  
+  return nonconst_base;
 }
 
 /**
@@ -74,7 +76,10 @@ UnicodeMatcher* StringMatcher::toMatcher() const {
  * and return the pointer.
  */
 UnicodeReplacer* StringMatcher::toReplacer() const {
-    return (UnicodeReplacer*) this;
+  StringMatcher  *nonconst_this = const_cast<StringMatcher *>(this);
+  UnicodeReplacer *nonconst_base = static_cast<UnicodeReplacer *>(nonconst_this);
+  
+  return nonconst_base;
 }
 
 /**
@@ -196,7 +201,7 @@ UBool StringMatcher::matchesIndexValue(uint8_t v) const {
  */
 void StringMatcher::addMatchSetTo(UnicodeSet& toUnionTo) const {
     UChar32 ch;
-    for (int32_t i=0; i<pattern.length(); i+=UTF_CHAR_LENGTH(ch)) {
+    for (int32_t i=0; i<pattern.length(); i+=U16_LENGTH(ch)) {
         ch = pattern.char32At(i);
         const UnicodeMatcher* matcher = data->lookupMatcher(ch);
         if (matcher == NULL) {
@@ -228,7 +233,7 @@ int32_t StringMatcher::replace(Replaceable& text,
         }
     }
     
-    text.handleReplaceBetween(start, limit, EMPTY); // delete original text
+    text.handleReplaceBetween(start, limit, UnicodeString()); // delete original text
     
     return outLen;
 }
@@ -278,8 +283,8 @@ void StringMatcher::setData(const TransliterationRuleData* d) {
         if (f != NULL) {
             f->setData(data);
         }
-        i += UTF_CHAR_LENGTH(c);
-    }    
+        i += U16_LENGTH(c);
+    }
 }
 
 U_NAMESPACE_END