2135ec
From 163116da07b5b277b9f0489e2542fac6eef43cc9 Mon Sep 17 00:00:00 2001
2135ec
From: Mark Wielaard <mark@klomp.org>
2135ec
Date: Fri, 31 May 2013 00:10:58 +0200
2135ec
Subject: [PATCH] Make charmap.cxx compile with icu >= 4.4.
2135ec
MIME-Version: 1.0
2135ec
Content-Type: text/plain; charset=UTF-8
2135ec
Content-Transfer-Encoding: 8bit
2135ec
2135ec
configure.ac claims ICU >= 4.2 is supported. Make it so.
2135ec
2135ec
Change-Id: Ia08bb492f41dcb88bc84550edb51ce5e89fe1103
2135ec
Reviewed-on: https://gerrit.libreoffice.org/4112
2135ec
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2135ec
Tested-by: Caolán McNamara <caolanm@redhat.com>
2135ec
(cherry picked from commit 30c3032920be91741ab089966f7e458ce08d09a4)
2135ec
---
2135ec
 i18npool/qa/cppunit/test_breakiterator.cxx | 4 +++-
2135ec
 i18nutil/source/utility/unicode.cxx        | 6 +++---
2135ec
 svx/source/dialog/charmap.cxx              | 5 +++++
2135ec
 sw/source/core/text/porlay.cxx             | 4 ++++
2135ec
 4 files changed, 15 insertions(+), 4 deletions(-)
2135ec
2135ec
diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx
2135ec
index 41e4077..b121f6d 100644
2135ec
--- a/i18npool/qa/cppunit/test_breakiterator.cxx
2135ec
+++ b/i18npool/qa/cppunit/test_breakiterator.cxx
2135ec
@@ -16,7 +16,7 @@
2135ec
 #include <com/sun/star/i18n/WordType.hpp>
2135ec
 #include <unotest/bootstrapfixturebase.hxx>
2135ec
 
2135ec
-#include <unicode/uvernum.h>
2135ec
+#include <unicode/uversion.h>
2135ec
 
2135ec
 #include <rtl/strbuf.hxx>
2135ec
 #include <rtl/ustrbuf.hxx>
2135ec
@@ -233,6 +233,8 @@ void TestBreakIterator::testWordBoundaries()
2135ec
     }
2135ec
 
2135ec
     //See https://bugs.freedesktop.org/show_bug.cgi?id=49629
2135ec
+    //Note that the breakiterator test will fail on older icu versions
2135ec
+    //(4.2.1) for the 200B (ZWSP) Zero Width Space testcase.
2135ec
     sal_Unicode aBreakTests[] = { ' ', 1, 2, 3, 4, 5, 6, 7, 0x91, 0x92, 0x200B, 0xE8FF, 0xF8FF };
2135ec
     for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode)
2135ec
     {
2135ec
diff --git a/i18nutil/source/utility/unicode.cxx b/i18nutil/source/utility/unicode.cxx
2135ec
index 2c2dd42..b46a7f6 100644
2135ec
--- a/i18nutil/source/utility/unicode.cxx
2135ec
+++ b/i18nutil/source/utility/unicode.cxx
2135ec
@@ -826,6 +826,9 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript)
2135ec
         case USCRIPT_TAI_VIET:
2135ec
             sRet = "blt";
2135ec
             break;
2135ec
+        case USCRIPT_MANDAEAN: /* Aliased to USCRIPT_MANDAIC in icu 4.6. */
2135ec
+            sRet = "mic";
2135ec
+            break;
2135ec
 #if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4)
2135ec
         case USCRIPT_NABATAEAN: //no language with an assigned code yet
2135ec
             sRet = "mis";
2135ec
@@ -833,9 +836,6 @@ OString SAL_CALL unicode::getExemplerLanguageForUScriptCode(UScriptCode eScript)
2135ec
         case USCRIPT_PALMYRENE: //no language with an assigned code yet
2135ec
             sRet = "mis";
2135ec
             break;
2135ec
-        case USCRIPT_MANDAIC:
2135ec
-            sRet = "mic";
2135ec
-            break;
2135ec
         case USCRIPT_BAMUM:
2135ec
             sRet = "bax";
2135ec
             break;
2135ec
diff --git a/svx/source/dialog/charmap.cxx b/svx/source/dialog/charmap.cxx
2135ec
index 82239d8..be165f8 100644
2135ec
--- a/svx/source/dialog/charmap.cxx
2135ec
+++ b/svx/source/dialog/charmap.cxx
2135ec
@@ -1302,6 +1302,7 @@ void SubsetMap::InitList()
2135ec
                 case UBLOCK_DOMINO_TILES:
2135ec
                     aAllSubsets.push_back( Subset( 0x1F030, 0x1F09F, RID_SUBSETSTR_DOMINO_TILES ) );
2135ec
                     break;
2135ec
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4)
2135ec
                 case UBLOCK_SAMARITAN:
2135ec
                     aAllSubsets.push_back( Subset( 0x0800, 0x083F, RID_SUBSETSTR_SAMARITAN ) );
2135ec
                     break;
2135ec
@@ -1380,6 +1381,8 @@ void SubsetMap::InitList()
2135ec
                 case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C:
2135ec
                     aAllSubsets.push_back( Subset( 0x2A700, 0x2B73F, RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C ) );
2135ec
                     break;
2135ec
+#endif
2135ec
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 6)
2135ec
                 case UBLOCK_MANDAIC:
2135ec
                     aAllSubsets.push_back( Subset( 0x0840, 0x085F, RID_SUBSETSTR_MANDAIC ) );
2135ec
                     break;
2135ec
@@ -1416,6 +1419,8 @@ void SubsetMap::InitList()
2135ec
                 case UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D:
2135ec
                     aAllSubsets.push_back( Subset( 0x2B740, 0x2B81F, RID_SUBSETSTR_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D ) );
2135ec
                     break;
2135ec
+#endif
2135ec
+// Note ICU version 49 (NOT 4.9), so the MAJOR_NUM is two digits.
2135ec
 #if U_ICU_VERSION_MAJOR_NUM >= 49
2135ec
                 case UBLOCK_ARABIC_EXTENDED_A:
2135ec
                     aAllSubsets.push_back( Subset( 0x08A0, 0x08FF, RID_SUBSETSTR_ARABIC_EXTENDED_A ) );
2135ec
diff --git a/sw/source/core/text/porlay.cxx b/sw/source/core/text/porlay.cxx
2135ec
index b820b8b..edc8458 100644
2135ec
--- a/sw/source/core/text/porlay.cxx
2135ec
+++ b/sw/source/core/text/porlay.cxx
2135ec
@@ -72,7 +72,11 @@ using namespace i18n::ScriptType;
2135ec
 #define isRehChar(c)        IS_JOINING_GROUP((c), REH)
2135ec
 #define isTehMarbutaChar(c) IS_JOINING_GROUP((c), TEH_MARBUTA)
2135ec
 #define isWawChar(c)        IS_JOINING_GROUP((c), WAW)
2135ec
+#if (U_ICU_VERSION_MAJOR_NUM > 4) || (U_ICU_VERSION_MAJOR_NUM == 4 && U_ICU_VERSION_MINOR_NUM >= 4)
2135ec
 #define isYehChar(c)        (IS_JOINING_GROUP((c), YEH) || IS_JOINING_GROUP((c), FARSI_YEH))
2135ec
+#else
2135ec
+#define isYehChar(c)        IS_JOINING_GROUP((c), YEH)
2135ec
+#endif
2135ec
 #define isSeenOrSadChar(c)  (IS_JOINING_GROUP((c), SAD) || IS_JOINING_GROUP((c), SEEN))
2135ec
 
2135ec
 bool isTransparentChar ( sal_Unicode cCh )
2135ec
diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx
2135ec
--- a/i18npool/qa/cppunit/test_breakiterator.cxx
2135ec
+++ b/i18npool/qa/cppunit/test_breakiterator.cxx
2135ec
@@ -233,14 +233,18 @@
2135ec
     }
2135ec
 
2135ec
     //See https://bugs.freedesktop.org/show_bug.cgi?id=49629
2135ec
-    //Note that the breakiterator test will fail on older icu versions
2135ec
-    //(4.2.1) for the 200B (ZWSP) Zero Width Space testcase.
2135ec
     sal_Unicode aBreakTests[] = { ' ', 1, 2, 3, 4, 5, 6, 7, 0x91, 0x92, 0x200B, 0xE8FF, 0xF8FF };
2135ec
     for (int mode = i18n::WordType::ANY_WORD; mode <= i18n::WordType::WORD_COUNT; ++mode)
2135ec
     {
2135ec
         //make sure that in all cases isBeginWord and isEndWord matches getWordBoundary
2135ec
         for (size_t i = 0; i < SAL_N_ELEMENTS(aBreakTests); ++i)
2135ec
         {
2135ec
+#if (U_ICU_VERSION_MAJOR_NUM == 4) && (U_ICU_VERSION_MINOR_NUM <= 2)
2135ec
+	    //Note the breakiterator test is known to fail on older icu
2135ec
+	    //versions (4.2.1) for the 200B (ZWSP) Zero Width Space testcase.
2135ec
+	    if (aBreakTests[i] == 0x200B)
2135ec
+	        continue;
2135ec
+#endif
2135ec
             OUString aTest("Word");
2135ec
             aTest += OUString(aBreakTests[i]) + OUString("Word");
2135ec
             aBounds = m_xBreak->getWordBoundary(aTest, 0, aLocale, mode, true);