]> git.saurik.com Git - apple/icu.git/blobdiff - icuSources/tools/genrb/prscmnts.cpp
ICU-551.24.tar.gz
[apple/icu.git] / icuSources / tools / genrb / prscmnts.cpp
index 75a8b0ee078f541643cefc7a30641956399d403a..fe91a05f7a2e22ce5c7de02ebb20b5a619309bb2 100644 (file)
@@ -1,19 +1,28 @@
 /*
-*******************************************************************************
-*
-*   Copyright (C) 2003, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*
-* File prscmnts.cpp
-*
-* Modification History:
-*
-*   Date          Name        Description
-*   08/22/2003    ram         Creation.
-*******************************************************************************
-*/
+ *******************************************************************************
+ *   Copyright (C) 2003-2014, International Business Machines
+ *   Corporation and others.  All Rights Reserved.
+ *******************************************************************************
+ *
+ * File prscmnts.cpp
+ *
+ * Modification History:
+ *
+ *   Date          Name        Description
+ *   08/22/2003    ram         Creation.
+ *******************************************************************************
+ */
+
+// 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"
 #include <stdio.h>
 #include <stdlib.h>
 
+U_NAMESPACE_USE
+
 #if UCONFIG_NO_REGULAR_EXPRESSIONS==0 /* donot compile when RegularExpressions not available */
 
 #define MAX_SPLIT_STRINGS 20
 
 const char *patternStrings[UPC_LIMIT]={
-    "^translate\\s*?(.*)",
-    "^note\\s*?(.*)"
+    "^translate\\s*(.*)",
+    "^note\\s*(.*)"
 };
 
 U_CFUNC int32_t 
@@ -56,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 
@@ -81,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)) {
@@ -116,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)) {
@@ -140,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);
 
 
@@ -149,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;
     } 
@@ -179,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);
 
 
@@ -188,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;
     } 
@@ -212,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);
@@ -223,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);