Index: source/tools/genrb/prscmnts.cpp |
diff --git a/source/tools/genrb/prscmnts.cpp b/source/tools/genrb/prscmnts.cpp |
index 758cf831ceef2d41cba939383f89dfe20dbd82c6..fe91a05f7a2e22ce5c7de02ebb20b5a619309bb2 100644 |
--- a/source/tools/genrb/prscmnts.cpp |
+++ b/source/tools/genrb/prscmnts.cpp |
@@ -1,6 +1,6 @@ |
/* |
******************************************************************************* |
- * Copyright (C) 2003-2007, International Business Machines |
+ * Copyright (C) 2003-2014, International Business Machines |
* Corporation and others. All Rights Reserved. |
******************************************************************************* |
* |
@@ -13,6 +13,16 @@ |
******************************************************************************* |
*/ |
+// Safer use of UnicodeString. |
+#ifndef UNISTR_FROM_CHAR_EXPLICIT |
+# define UNISTR_FROM_CHAR_EXPLICIT explicit |
+#endif |
+ |
+// Less important, but still a good idea. |
+#ifndef UNISTR_FROM_STRING_EXPLICIT |
+# define UNISTR_FROM_STRING_EXPLICIT explicit |
+#endif |
+ |
#include "unicode/regex.h" |
#include "unicode/unistr.h" |
#include "unicode/parseerr.h" |
@@ -57,18 +67,18 @@ removeText(UChar *source, int32_t srcLen, |
} |
U_CFUNC int32_t |
trim(UChar *src, int32_t srcLen, UErrorCode *status){ |
- srcLen = removeText(src, srcLen, "^[ \\r\\n]+ ", 0, "", status); // remove leading new lines |
- srcLen = removeText(src, srcLen, "^\\s+", 0, "", status); // remove leading spaces |
- srcLen = removeText(src, srcLen, "\\s+$", 0, "", status); // remvoe trailing spcaes |
+ srcLen = removeText(src, srcLen, UnicodeString("^[ \\r\\n]+ "), 0, UnicodeString(), status); // remove leading new lines |
+ srcLen = removeText(src, srcLen, UnicodeString("^\\s+"), 0, UnicodeString(), status); // remove leading spaces |
+ srcLen = removeText(src, srcLen, UnicodeString("\\s+$"), 0, UnicodeString(), status); // remvoe trailing spcaes |
return srcLen; |
} |
U_CFUNC int32_t |
removeCmtText(UChar* source, int32_t srcLen, UErrorCode* status){ |
srcLen = trim(source, srcLen, status); |
- UnicodeString patString = "^\\s*?\\*\\s*?"; // remove pattern like " * " at the begining of the line |
- srcLen = removeText(source, srcLen, patString, UREGEX_MULTILINE, "", status); |
- return removeText(source, srcLen, "[ \\r\\n]+", 0, " ", status);// remove new lines; |
+ UnicodeString patString("^\\s*?\\*\\s*?"); // remove pattern like " * " at the begining of the line |
+ srcLen = removeText(source, srcLen, patString, UREGEX_MULTILINE, UnicodeString(), status); |
+ return removeText(source, srcLen, UnicodeString("[ \\r\\n]+"), 0, UnicodeString(" "), status);// remove new lines; |
} |
U_CFUNC int32_t |
@@ -82,7 +92,7 @@ getText(const UChar* source, int32_t srcLen, |
} |
UnicodeString stringArray[MAX_SPLIT_STRINGS]; |
- RegexPattern *pattern = RegexPattern::compile("@", 0, *status); |
+ RegexPattern *pattern = RegexPattern::compile(UnicodeString("@"), 0, *status); |
UnicodeString src (source,srcLen); |
if (U_FAILURE(*status)) { |
@@ -117,7 +127,7 @@ getDescription( const UChar* source, int32_t srcLen, |
} |
UnicodeString stringArray[MAX_SPLIT_STRINGS]; |
- RegexPattern *pattern = RegexPattern::compile("@", UREGEX_MULTILINE, *status); |
+ RegexPattern *pattern = RegexPattern::compile(UnicodeString("@"), UREGEX_MULTILINE, *status); |
UnicodeString src(source, srcLen); |
if (U_FAILURE(*status)) { |
@@ -141,7 +151,7 @@ getCount(const UChar* source, int32_t srcLen, |
} |
UnicodeString stringArray[MAX_SPLIT_STRINGS]; |
- RegexPattern *pattern = RegexPattern::compile("@", UREGEX_MULTILINE, *status); |
+ RegexPattern *pattern = RegexPattern::compile(UnicodeString("@"), UREGEX_MULTILINE, *status); |
UnicodeString src (source, srcLen); |
@@ -150,7 +160,8 @@ getCount(const UChar* source, int32_t srcLen, |
} |
int32_t retLen = pattern->split(src, stringArray, MAX_SPLIT_STRINGS, *status); |
- RegexMatcher matcher(patternStrings[option], UREGEX_DOTALL, *status); |
+ UnicodeString patternString(patternStrings[option]); |
+ RegexMatcher matcher(patternString, UREGEX_DOTALL, *status); |
if (U_FAILURE(*status)) { |
return 0; |
} |
@@ -180,7 +191,7 @@ getAt(const UChar* source, int32_t srcLen, |
} |
UnicodeString stringArray[MAX_SPLIT_STRINGS]; |
- RegexPattern *pattern = RegexPattern::compile("@", UREGEX_MULTILINE, *status); |
+ RegexPattern *pattern = RegexPattern::compile(UnicodeString("@"), UREGEX_MULTILINE, *status); |
UnicodeString src (source, srcLen); |
@@ -189,7 +200,8 @@ getAt(const UChar* source, int32_t srcLen, |
} |
int32_t retLen = pattern->split(src, stringArray, MAX_SPLIT_STRINGS, *status); |
- RegexMatcher matcher(patternStrings[option], UREGEX_DOTALL, *status); |
+ UnicodeString patternString(patternStrings[option]); |
+ RegexMatcher matcher(patternString, UREGEX_DOTALL, *status); |
if (U_FAILURE(*status)) { |
return 0; |
} |
@@ -213,7 +225,7 @@ U_CFUNC int32_t |
getTranslate( const UChar* source, int32_t srcLen, |
UChar** dest, int32_t destCapacity, |
UErrorCode* status){ |
- UnicodeString notePatternString = "^translate\\s*?(.*)"; |
+ UnicodeString notePatternString("^translate\\s*?(.*)"); |
int32_t destLen = getText(source, srcLen, dest, destCapacity, notePatternString, status); |
return trim(*dest, destLen, status); |
@@ -224,7 +236,7 @@ getNote(const UChar* source, int32_t srcLen, |
UChar** dest, int32_t destCapacity, |
UErrorCode* status){ |
- UnicodeString notePatternString = "^note\\s*?(.*)"; |
+ UnicodeString notePatternString("^note\\s*?(.*)"); |
int32_t destLen = getText(source, srcLen, dest, destCapacity, notePatternString, status); |
return trim(*dest, destLen, status); |