icu: enable namespace renaming except for x86_gcc2.

* also split patchset in two files, with one for gcc2 related changes.
This commit is contained in:
Jerome Duval
2015-05-10 20:26:31 +00:00
parent 1f1070edc2
commit 9ec74c65ae
3 changed files with 898 additions and 889 deletions

View File

@@ -8,7 +8,7 @@ SRC_URI_3="http://download.icu-project.org/files/icu4c/$portVersion/icu4c-55_1-d
CHECKSUM_SHA256="e16b22cbefdd354bec114541f7849a12f8fc2015320ca5282ee4fd787571457b"
CHECKSUM_SHA256_2="8b9f5008277f09e251e97dba7813f56168d691115bda90ade4638d72f296d531"
CHECKSUM_SHA256_3="84ae6a6512b6f38b417497d05e4ed90d8fa7447b46db9905032354c8574b8f59"
REVISION="2"
REVISION="3"
ARCHITECTURES="x86_gcc2 x86 x86_64 arm"
SECONDARY_ARCHITECTURES="x86_gcc2 x86"
@@ -47,6 +47,11 @@ BUILD_PREREQUIRES="
SOURCE_DIR="icu"
PATCHES="icu-55.1.patchset"
if [ $effectiveTargetArchitecture = x86_gcc2 ]; then
PATCHES+="
"icu-55.1.gcc2.patchset"
"
fi
BUILD()
{
@@ -55,8 +60,12 @@ BUILD()
unzip -oq ../../../sources-3/icu4c-*-data.zip
rm -f data/in/icudt??l.dat
autoconf
configureOption=
if [ $effectiveTargetArchitecture = x86_gcc2 ]; then
configureOption="--disable-renaming"
fi
runConfigure ./configure \
--disable-renaming --disable-samples --disable-extras
--disable-samples --disable-extras $configureOption
make $jobArgs
}

View File

@@ -0,0 +1,887 @@
From b545663a3d91c16233ce34181475d8fd84e47034 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sun, 19 Apr 2015 13:35:11 +0200
Subject: gcc2 fixes for tools, tests, layout.
diff --git a/source/layout/LETableReference.h b/source/layout/LETableReference.h
index de51228..f55b762 100644
--- a/source/layout/LETableReference.h
+++ b/source/layout/LETableReference.h
@@ -304,7 +304,11 @@ LE_TRACE_TR("INFO: new RTAO")
le_uint32 getCount() const { return fCount; }
+#if __GNUC__ == 2
+ const T *getAlias() const { return LETableReference::getAlias(); }
+#else
using LETableReference::getAlias;
+#endif
const T *getAlias(le_uint32 i, LEErrorCode &success) const {
return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success)));
diff --git a/source/test/intltest/apicoll.cpp b/source/test/intltest/apicoll.cpp
index 31b16dd..3e2e4a8 100644
--- a/source/test/intltest/apicoll.cpp
+++ b/source/test/intltest/apicoll.cpp
@@ -1971,7 +1971,22 @@ class TestCollator : public Collator
public:
virtual Collator* clone(void) const;
+#if __GNUC__ == 2
+ EComparisonResult compare (const UnicodeString& s1, const UnicodeString& s2)
+ const {
+ return Collator::compare(s1, s2);
+ }
+ EComparisonResult compare (const UnicodeString& s1, const UnicodeString& s2,
+ int32_t i) const {
+ return Collator::compare(s1, s2, i);
+ }
+ EComparisonResult compare (const UChar* s1, int32_t l1, const UChar* s2,
+ int32_t l2) const {
+ return Collator::compare(s1, l1, s2, l2);
+ }
+#else
using Collator::compare;
+#endif
virtual UCollationResult compare(const UnicodeString& source,
const UnicodeString& target,
diff --git a/source/test/iotest/stream.cpp b/source/test/iotest/stream.cpp
index a821636..083b4ab 100644
--- a/source/test/iotest/stream.cpp
+++ b/source/test/iotest/stream.cpp
@@ -131,7 +131,7 @@ static void U_CALLCONV TestStream(void)
#endif
UnicodeString ustr("string");
- outFormatStream << "1234567890" << setw(10) << left << ustr << " " << "0123456789";
+ outFormatStream << "1234567890" << setw(10) << ios::left << ustr << " " << "0123456789";
#ifdef USE_SSTREAM
tempStr = outFormatStream.str();
diff --git a/source/tools/toolutil/udbgutil.cpp b/source/tools/toolutil/udbgutil.cpp
index 911425c..cdd6683 100644
--- a/source/tools/toolutil/udbgutil.cpp
+++ b/source/tools/toolutil/udbgutil.cpp
@@ -639,7 +639,9 @@ U_CAPI void udbg_knownIssue_close(void *ptr) {
#include <set>
#include <map>
#include <string>
+#if __GNUC__ > 2
#include <ostream>
+#endif
#include <iostream>
class KnownIssues {
--
2.2.2
From 6cafed065f5d91859be09b8a219c1eaf5785d96d Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sun, 19 Apr 2015 13:35:47 +0200
Subject: gcc2 fixes for sources/i18n
diff --git a/source/i18n/alphaindex.cpp b/source/i18n/alphaindex.cpp
index 9fa98b8..5535be2 100644
--- a/source/i18n/alphaindex.cpp
+++ b/source/i18n/alphaindex.cpp
@@ -952,8 +952,8 @@ static int32_t U_CALLCONV
collatorComparator(const void *context, const void *left, const void *right) {
const UElement *leftElement = static_cast<const UElement *>(left);
const UElement *rightElement = static_cast<const UElement *>(right);
- const UnicodeString *leftString = static_cast<const UnicodeString *>(leftElement->pointer);
- const UnicodeString *rightString = static_cast<const UnicodeString *>(rightElement->pointer);
+ const UnicodeString *leftString = (const UnicodeString *)(leftElement->pointer);
+ const UnicodeString *rightString = (const UnicodeString *)(rightElement->pointer);
if (leftString == rightString) {
// Catches case where both are NULL
@@ -977,8 +977,8 @@ static int32_t U_CALLCONV
recordCompareFn(const void *context, const void *left, const void *right) {
const UElement *leftElement = static_cast<const UElement *>(left);
const UElement *rightElement = static_cast<const UElement *>(right);
- const AlphabeticIndex::Record *leftRec = static_cast<const AlphabeticIndex::Record *>(leftElement->pointer);
- const AlphabeticIndex::Record *rightRec = static_cast<const AlphabeticIndex::Record *>(rightElement->pointer);
+ const AlphabeticIndex::Record *leftRec = (const AlphabeticIndex::Record *)(leftElement->pointer);
+ const AlphabeticIndex::Record *rightRec = (const AlphabeticIndex::Record *)(rightElement->pointer);
const Collator *col = static_cast<const Collator *>(context);
UErrorCode errorCode = U_ZERO_ERROR;
return col->compare(leftRec->name_, rightRec->name_, errorCode);
diff --git a/source/i18n/currfmt.h b/source/i18n/currfmt.h
index b3f23e5..1495316 100644
--- a/source/i18n/currfmt.h
+++ b/source/i18n/currfmt.h
@@ -58,7 +58,9 @@ class CurrencyFormat : public MeasureFormat {
virtual Format* clone() const;
+#if __GNUC__ > 2
using MeasureFormat::format;
+#endif
/**
* Override Format API.
diff --git a/source/i18n/digitlst.cpp b/source/i18n/digitlst.cpp
index 51738be..c003c4b 100644
--- a/source/i18n/digitlst.cpp
+++ b/source/i18n/digitlst.cpp
@@ -38,7 +38,9 @@
#include <limits.h>
#include <string.h>
#include <stdio.h>
+#if __GNUC__ > 2
#include <limits>
+#endif
// ***************************************************************************
// class DigitList
@@ -437,11 +439,15 @@ DigitList::getDouble() const
tDouble /= -1;
}
} else if (isInfinite()) {
+#if __GNUC__ <= 2
+ tDouble = DBL_MAX;
+#else
if (std::numeric_limits<double>::has_infinity) {
tDouble = std::numeric_limits<double>::infinity();
} else {
tDouble = std::numeric_limits<double>::max();
}
+#endif
if (!isPositive()) {
tDouble = -tDouble; //this was incorrectly "-fDouble" originally.
}
diff --git a/source/i18n/digitlst.h b/source/i18n/digitlst.h
index 7e98d2b..4a95d71 100644
--- a/source/i18n/digitlst.h
+++ b/source/i18n/digitlst.h
@@ -413,7 +413,7 @@ private:
public:
-#if U_OVERRIDE_CXX_ALLOCATION
+#if U_OVERRIDE_CXX_ALLOCATION && __GNUC__ > 2
using UMemory::operator new;
using UMemory::operator delete;
#else
diff --git a/source/i18n/msgfmt.cpp b/source/i18n/msgfmt.cpp
index 32d9bc7..e6ca5c1 100644
--- a/source/i18n/msgfmt.cpp
+++ b/source/i18n/msgfmt.cpp
@@ -1484,6 +1484,7 @@ MessageFormat::parse(int32_t msgStart,
prevIndex=msgPattern.getPart(argLimit).getLimit();
i=argLimit;
}
+ return NULL;
}
// -------------------------------------
// Parses the source pattern and returns the Formattable objects array,
diff --git a/source/i18n/reldtfmt.h b/source/i18n/reldtfmt.h
index 67539e0..09f31e7 100644
--- a/source/i18n/reldtfmt.h
+++ b/source/i18n/reldtfmt.h
@@ -81,7 +81,9 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ > 2
using DateFormat::format;
+#endif
/**
* Format a date or time, which is the standard millis since 24:00 GMT, Jan
diff --git a/source/i18n/sortkey.cpp b/source/i18n/sortkey.cpp
index baf3254..838ea82 100644
--- a/source/i18n/sortkey.cpp
+++ b/source/i18n/sortkey.cpp
@@ -172,7 +172,7 @@ Collator::EComparisonResult
CollationKey::compareTo(const CollationKey& target) const
{
UErrorCode errorCode = U_ZERO_ERROR;
- return static_cast<Collator::EComparisonResult>(compareTo(target, errorCode));
+ return (Collator::EComparisonResult)(compareTo(target, errorCode));
}
// Bitwise comparison for the collation keys.
diff --git a/source/i18n/unicode/choicfmt.h b/source/i18n/unicode/choicfmt.h
index cfd5206..d2b7f66 100644
--- a/source/i18n/unicode/choicfmt.h
+++ b/source/i18n/unicode/choicfmt.h
@@ -355,7 +355,22 @@ public:
virtual const UnicodeString* getFormats(int32_t& count) const;
+#if __GNUC__ == 2
+ virtual UnicodeString& format (double number,
+ icu::UnicodeString& appendTo) const {
+ return NumberFormat::format(number, appendTo);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPosition& p, UErrorCode& e) const {
+ return NumberFormat::format(f, s, p, e);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ UErrorCode& e) const {
+ return NumberFormat::format(f, s, e);
+ }
+#else
using NumberFormat::format;
+#endif
/**
* Formats a double number using this object's choices.
@@ -421,7 +436,13 @@ public:
FieldPosition& pos,
UErrorCode& success) const;
+#if __GNUC__ == 2
+ void parse(UnicodeString& s, Formattable& f, UErrorCode& e) const {
+ NumberFormat::parse(s, f, e);
+ }
+#else
using NumberFormat::parse;
+#endif
/**
* Looks for the longest match of any message string on the input text and,
diff --git a/source/i18n/unicode/compactdecimalformat.h b/source/i18n/unicode/compactdecimalformat.h
index bd8fdba..be2e580 100644
--- a/source/i18n/unicode/compactdecimalformat.h
+++ b/source/i18n/unicode/compactdecimalformat.h
@@ -104,7 +104,13 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ == 2
+ UnicodeString& format(double n, UnicodeString& s) const {
+ return DecimalFormat::format(n, s);
+ }
+#else
using DecimalFormat::format;
+#endif
/**
* Format a double or long number using base-10 representation.
diff --git a/source/i18n/unicode/datefmt.h b/source/i18n/unicode/datefmt.h
index 983f136..4531dc5 100644
--- a/source/i18n/unicode/datefmt.h
+++ b/source/i18n/unicode/datefmt.h
@@ -221,7 +221,13 @@ public:
virtual UBool operator==(const Format&) const;
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) const {
+ return Format::format(f, s, e);
+ }
+#else
using Format::format;
+#endif
/**
* Format an object to produce a string. This method handles Formattable
diff --git a/source/i18n/unicode/decimfmt.h b/source/i18n/unicode/decimfmt.h
index 138855b..4ed2995 100644
--- a/source/i18n/unicode/decimfmt.h
+++ b/source/i18n/unicode/decimfmt.h
@@ -918,7 +918,35 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ == 2
+ virtual UnicodeString& format (double number,
+ icu::UnicodeString& appendTo) const {
+ return NumberFormat::format(number, appendTo);
+ }
+
+ virtual UnicodeString& format (double number,
+ icu::UnicodeString& appendTo,
+ UErrorCode& status) const {
+ return NumberFormat::format(number, appendTo, status);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return NumberFormat::format(f, s, i, e);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPosition& p, UErrorCode& e) const {
+ return NumberFormat::format(f, s, p, e);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e)
+ const {
+ return NumberFormat::format(f, s, e);
+ }
+#else
using NumberFormat::format;
+#endif
/**
* Format a double or long number using base-10 representation.
@@ -1131,7 +1159,15 @@ public:
FieldPosition& pos,
UErrorCode& status) const;
+#if __GNUC__ == 2
+ void parse(const UnicodeString& text,
+ Formattable& result,
+ UErrorCode& status) const {
+ NumberFormat::parse(text, result, status);
+ }
+#else
using NumberFormat::parse;
+#endif
/**
* Parse the given string using this object's choices. The method
diff --git a/source/i18n/unicode/dtitvfmt.h b/source/i18n/unicode/dtitvfmt.h
index fb27eec..8fefb9e 100644
--- a/source/i18n/unicode/dtitvfmt.h
+++ b/source/i18n/unicode/dtitvfmt.h
@@ -373,7 +373,9 @@ public:
UBool operator!=(const Format& other) const;
+#if __GNUC__ > 2
using Format::format;
+#endif
/**
* Format an object to produce a string. This method handles Formattable
diff --git a/source/i18n/unicode/measfmt.h b/source/i18n/unicode/measfmt.h
index 61a1e86..0a272a8 100644
--- a/source/i18n/unicode/measfmt.h
+++ b/source/i18n/unicode/measfmt.h
@@ -92,8 +92,25 @@ class DateFormat;
*/
class U_I18N_API MeasureFormat : public Format {
public:
+#if __GNUC__ == 2
+ void parseObject (const UnicodeString& s, Formattable& f, UErrorCode& e)
+ const {
+ Format::parseObject(s, f, e);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return Format::format(f, s, i, e);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ UErrorCode& e) const {
+ return Format::format(f, s, e);
+ }
+#else
using Format::parseObject;
using Format::format;
+#endif
/**
* Constructor.
diff --git a/source/i18n/unicode/msgfmt.h b/source/i18n/unicode/msgfmt.h
index 5de91e4..8f9f995 100644
--- a/source/i18n/unicode/msgfmt.h
+++ b/source/i18n/unicode/msgfmt.h
@@ -622,7 +622,17 @@ public:
virtual const Format** getFormats(int32_t& count) const;
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return Format::format(f, s, i, e);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) {
+ return Format::format(f, s, e);
+ }
+#else
using Format::format;
+#endif
/**
* Formats the given array of arguments into a user-readable string.
@@ -884,6 +894,9 @@ private:
PluralRules* rules;
UPluralType type;
};
+#if __GNUC__ == 2
+ friend class PluralSelectorProvider;
+#endif
/**
* A MessageFormat formats an array of arguments. Each argument
diff --git a/source/i18n/unicode/numfmt.h b/source/i18n/unicode/numfmt.h
index 164c657..4b03222 100644
--- a/source/i18n/unicode/numfmt.h
+++ b/source/i18n/unicode/numfmt.h
@@ -235,7 +235,15 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ == 2
+ virtual UnicodeString& format (const Formattable& obj,
+ UnicodeString& appendTo,
+ UErrorCode & status) const {
+ return Format::format(obj, appendTo, status);
+ }
+#else
using Format::format;
+#endif
/**
* Format an object to produce a string. This method handles
diff --git a/source/i18n/unicode/plurfmt.h b/source/i18n/unicode/plurfmt.h
index f7099d8..bedaf01 100644
--- a/source/i18n/unicode/plurfmt.h
+++ b/source/i18n/unicode/plurfmt.h
@@ -313,7 +313,14 @@ public:
void applyPattern(const UnicodeString& pattern, UErrorCode& status);
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return Format::format(f, s, i, e);
+ }
+#else
using Format::format;
+#endif
/**
* Formats a plural message for a given number.
diff --git a/source/i18n/unicode/rbnf.h b/source/i18n/unicode/rbnf.h
index 7058c96..d0ad947 100644
--- a/source/i18n/unicode/rbnf.h
+++ b/source/i18n/unicode/rbnf.h
@@ -741,7 +741,23 @@ public:
const Locale& locale = Locale::getDefault());
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e)
+ const {
+ return NumberFormat::format(f, s, e);
+ }
+
+ UnicodeString& format(double n, UnicodeString& s) const {
+ return NumberFormat::format(n, s);
+ }
+
+ UnicodeString& format(int64_t n, UnicodeString& s, FieldPosition& p,
+ UErrorCode& e) const {
+ return NumberFormat::format(n, s, p, e);
+ }
+#else
using NumberFormat::format;
+#endif
/**
* Formats the specified 32-bit number using the default ruleset.
@@ -827,7 +843,13 @@ public:
FieldPosition& pos,
UErrorCode& status) const;
+#if __GNUC__ == 2
+ void parse(const UnicodeString& s, Formattable& f, UErrorCode& e) const {
+ return NumberFormat::parse(s, f, e);
+ }
+#else
using NumberFormat::parse;
+#endif
/**
* Parses the specfied string, beginning at the specified position, according
diff --git a/source/i18n/unicode/selfmt.h b/source/i18n/unicode/selfmt.h
index 635144b..7247839 100644
--- a/source/i18n/unicode/selfmt.h
+++ b/source/i18n/unicode/selfmt.h
@@ -219,7 +219,9 @@ public:
void applyPattern(const UnicodeString& pattern, UErrorCode& status);
+#if __GNUC__ > 2
using Format::format;
+#endif
/**
* Selects the phrase for the given keyword
@@ -340,9 +342,9 @@ public:
*/
virtual UClassID getDynamicClassID() const;
-private:
friend class MessageFormat;
+private:
SelectFormat(); // default constructor not implemented.
/**
diff --git a/source/i18n/unicode/smpdtfmt.h b/source/i18n/unicode/smpdtfmt.h
index ccdaff4..69f70ec 100644
--- a/source/i18n/unicode/smpdtfmt.h
+++ b/source/i18n/unicode/smpdtfmt.h
@@ -870,7 +870,27 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return DateFormat::format(f, s, i, e);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s, FieldPosition& p,
+ UErrorCode& e) const {
+ return DateFormat::format(f, s, p, e);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) const {
+ return Format::format(f, s, e);
+ }
+ UnicodeString& format(const UDate& d, UnicodeString& s, FieldPosition& f) const {
+ return DateFormat::format(d, s, f);
+ }
+ UnicodeString& format(const UDate& d, UnicodeString& s) const {
+ return DateFormat::format(d, s);
+ }
+#else
using DateFormat::format;
+#endif
/**
* Format a date or time, which is the standard millis since 24:00 GMT, Jan
@@ -915,7 +935,16 @@ public:
FieldPositionIterator* posIter,
UErrorCode& status) const;
+#if __GNUC__ == 2
+ UDate parse(const UnicodeString& s, UErrorCode& e) const {
+ return DateFormat::parse(s, e);
+ }
+ UDate parse (const UnicodeString& s, ParsePosition& p) const {
+ return DateFormat::parse(s, p);
+ }
+#else
using DateFormat::parse;
+#endif
/**
* Parse a date/time string beginning at the given parse position. For
diff --git a/source/i18n/unicode/tblcoll.h b/source/i18n/unicode/tblcoll.h
index e56f189..2108699 100644
--- a/source/i18n/unicode/tblcoll.h
+++ b/source/i18n/unicode/tblcoll.h
@@ -254,7 +254,22 @@ public:
const CharacterIterator& source) const;
// Make deprecated versions of Collator::compare() visible.
+#if __GNUC__ == 2
+ EComparisonResult compare(const UChar* source, int sourceLength,
+ const UChar* target, int targetLength) const {
+ return Collator::compare(source, sourceLength, target, targetLength);
+ }
+ EComparisonResult compare(const UnicodeString& s1, const UnicodeString& s2,
+ int i) const {
+ return Collator::compare(s1, s2, i);
+ }
+ EComparisonResult compare(const UnicodeString& s1, const UnicodeString& s2)
+ const {
+ return Collator::compare(s1, s2);
+ }
+#else
using Collator::compare;
+#endif
/**
* The comparison function compares the character data stored in two
diff --git a/source/i18n/unicode/tzfmt.h b/source/i18n/unicode/tzfmt.h
index 24f0e49..969e08a 100644
--- a/source/i18n/unicode/tzfmt.h
+++ b/source/i18n/unicode/tzfmt.h
@@ -520,7 +520,14 @@ public:
*/
UnicodeString& formatOffsetShortLocalizedGMT(int32_t offset, UnicodeString& result, UErrorCode& status) const;
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& data, UnicodeString& string,
+ FieldPositionIterator* iterator, UErrorCode& error) const {
+ return Format::format(data, string, iterator, error);
+ }
+#else
using Format::format;
+#endif
/**
* Returns the display name of the time zone at the given date for the style.
--
2.2.2
From 6fe3c3f205284dfb0a2c4d06717bb84cb61f0f66 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sun, 19 Apr 2015 13:36:37 +0200
Subject: gcc2 fixes in source/common
diff --git a/source/common/unicode/bytestrie.h b/source/common/unicode/bytestrie.h
index 9c77827..367a0ae 100644
--- a/source/common/unicode/bytestrie.h
+++ b/source/common/unicode/bytestrie.h
@@ -338,6 +338,9 @@ public:
// but the code looks more confusing that way.)
UVector32 *stack_;
};
+#if __GNUC__ == 2
+ friend class Iterator;
+#endif
private:
friend class BytesTrieBuilder;
diff --git a/source/common/unicode/bytestriebuilder.h b/source/common/unicode/bytestriebuilder.h
index d00ab9b..afbf59b 100644
--- a/source/common/unicode/bytestriebuilder.h
+++ b/source/common/unicode/bytestriebuilder.h
@@ -152,6 +152,9 @@ private:
private:
const char *s;
};
+#if __GNUC__ == 2
+ friend class BTLinearMatchNode;
+#endif
virtual Node *createLinearMatchNode(int32_t i, int32_t byteIndex, int32_t length,
Node *nextNode) const;
diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h
index 4829000..2411dd0 100644
--- a/source/common/unicode/platform.h
+++ b/source/common/unicode/platform.h
@@ -708,7 +708,7 @@
/* Use the predefined value. */
#elif defined(U_STATIC_IMPLEMENTATION)
# define U_EXPORT
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && __GNUC__ > 2
# define U_EXPORT __attribute__((visibility("default")))
#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \
|| (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550)
diff --git a/source/common/unicode/stringtriebuilder.h b/source/common/unicode/stringtriebuilder.h
index 04447e5..21bab82 100644
--- a/source/common/unicode/stringtriebuilder.h
+++ b/source/common/unicode/stringtriebuilder.h
@@ -379,6 +379,15 @@ protected:
int32_t length;
Node *next; // A branch sub-node.
};
+#if __GNUC__ >= 2
+ friend class FinalValueNode;
+ friend class ValueNode;
+ friend class IntermediateValueNode;
+ friend class BranchNode;
+ friend class ListBranchNode;
+ friend class SplitBranchNode;
+ friend class BranchHeadNode;
+#endif
#endif /* U_HIDE_INTERNAL_API */
/** @internal */
diff --git a/source/common/unicode/ucharstrie.h b/source/common/unicode/ucharstrie.h
index 0575a97..9fe81c1 100644
--- a/source/common/unicode/ucharstrie.h
+++ b/source/common/unicode/ucharstrie.h
@@ -356,6 +356,9 @@ public:
// but the code looks more confusing that way.)
UVector32 *stack_;
};
+#if __GNUC__ == 2
+ friend class Iterator;
+#endif
private:
friend class UCharsTrieBuilder;
diff --git a/source/common/unicode/ucharstriebuilder.h b/source/common/unicode/ucharstriebuilder.h
index 35e353d..30f40d9 100644
--- a/source/common/unicode/ucharstriebuilder.h
+++ b/source/common/unicode/ucharstriebuilder.h
@@ -156,6 +156,9 @@ private:
private:
const UChar *s;
};
+#if __GNUC__ == 2
+ friend class UCTLinearMatchNode;
+#endif
virtual Node *createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t length,
Node *nextNode) const;
--
2.2.2
From 1e79fa03b6cd114d4c7fb7c03251bc10a48897c2 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Thu, 2 Oct 2014 14:54:39 +0200
Subject: Force definition of U_DISABLE_RENAMING
We build ICU with this flag disabled, but somehow this isn't added tothe
header, and later on trying to build haiku without the flag would fail.
So we just change the default value to keep things simpler.
diff --git a/source/common/unicode/uconfig.h b/source/common/unicode/uconfig.h
index f6223bb..7c67263 100644
--- a/source/common/unicode/uconfig.h
+++ b/source/common/unicode/uconfig.h
@@ -87,7 +87,7 @@
* @internal
*/
#ifndef U_DISABLE_RENAMING
-#define U_DISABLE_RENAMING 0
+#define U_DISABLE_RENAMING 1
#endif
/**
--
2.2.2
From efa9ee8612ac7482e56fa2190ce1b1afd188e268 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Mon, 6 Oct 2014 13:28:09 +0200
Subject: more gcc2 fixes for ICU 54.
diff --git a/source/common/norm2allmodes.h b/source/common/norm2allmodes.h
index 64c84a2..aca1e08 100644
--- a/source/common/norm2allmodes.h
+++ b/source/common/norm2allmodes.h
@@ -193,7 +193,9 @@ private:
ReorderingBuffer &buffer, UErrorCode &errorCode) const {
impl.decompose(src, limit, &buffer, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
+#endif
virtual void
normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
UnicodeString &safeMiddle,
@@ -204,7 +206,9 @@ private:
spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const {
return impl.decompose(src, limit, NULL, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
+#endif
virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const {
return impl.isDecompYes(impl.getNorm16(c)) ? UNORM_YES : UNORM_NO;
}
@@ -225,7 +229,9 @@ private:
ReorderingBuffer &buffer, UErrorCode &errorCode) const {
impl.compose(src, limit, onlyContiguous, TRUE, buffer, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
+#endif
virtual void
normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
UnicodeString &safeMiddle,
@@ -268,7 +274,9 @@ private:
spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &) const {
return impl.composeQuickCheck(src, limit, onlyContiguous, NULL);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
+#endif
virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const {
return impl.getCompQuickCheck(impl.getNorm16(c));
}
@@ -296,7 +304,9 @@ private:
ReorderingBuffer &buffer, UErrorCode &errorCode) const {
impl.makeFCD(src, limit, &buffer, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
+#endif
virtual void
normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
UnicodeString &safeMiddle,
@@ -307,7 +317,9 @@ private:
spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const {
return impl.makeFCD(src, limit, NULL, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
+#endif
virtual UBool hasBoundaryBefore(UChar32 c) const { return impl.hasFCDBoundaryBefore(c); }
virtual UBool hasBoundaryAfter(UChar32 c) const { return impl.hasFCDBoundaryAfter(c); }
virtual UBool isInert(UChar32 c) const { return impl.isFCDInert(c); }
diff --git a/source/common/putilimp.h b/source/common/putilimp.h
index a3e361f..affb1a8 100644
--- a/source/common/putilimp.h
+++ b/source/common/putilimp.h
@@ -113,7 +113,7 @@ typedef size_t uintptr_t;
#if defined(U_TIMEZONE) || defined(U_HAVE_TIMEZONE)
/* Use the predefined value. */
-#elif U_PLATFORM == U_PF_ANDROID
+#elif U_PLATFORM == U_PF_ANDROID || defined(__HAIKU__)
# define U_TIMEZONE timezone
#elif U_PLATFORM_IS_LINUX_BASED
# if defined(__UCLIBC__)
diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h
index 2411dd0..61fdfe1 100644
--- a/source/common/unicode/platform.h
+++ b/source/common/unicode/platform.h
@@ -159,7 +159,7 @@
# else
# define U_PLATFORM U_PF_DARWIN
# endif
-#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__)
+#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__) || defined(__HAIKU__)
# define U_PLATFORM U_PF_BSD
#elif defined(sun) || defined(__sun)
/* Check defined(__SVR4) || defined(__svr4__) to distinguish Solaris from SunOS? */
diff --git a/source/i18n/filteredbrk.cpp b/source/i18n/filteredbrk.cpp
index 7ecb004..e3b3802 100644
--- a/source/i18n/filteredbrk.cpp
+++ b/source/i18n/filteredbrk.cpp
@@ -65,7 +65,13 @@ class U_I18N_API UStringSet : public UVector {
inline UBool contains(const UnicodeString& s) {
return contains((void*) &s);
}
+#if __GNUC__ == 2
+ UBool contains(void* s) {
+ return UVector::contains(s);
+ }
+#else
using UVector::contains;
+#endif
/**
* Return the ith UnicodeString alias
*/
--
2.2.2
From d1ec5200e5938bab93750e171a58182ea76eebc1 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Thu, 26 Mar 2015 18:39:42 +0000
Subject: gcc2 fixes for tztools.
diff --git a/source/tools/tzcode/private.h b/source/tools/tzcode/private.h
index 1a85c88..0ee3329 100644
--- a/source/tools/tzcode/private.h
+++ b/source/tools/tzcode/private.h
@@ -120,7 +120,7 @@
*/
#ifndef HAVE_STDINT_H
#define HAVE_STDINT_H \
- (199901 <= __STDC_VERSION__ || \
+ (defined(__HAIKU__) || 199901 <= __STDC_VERSION__ || \
2 < (__GLIBC__ + (0 < __GLIBC_MINOR__)))
#endif /* !defined HAVE_STDINT_H */
--
2.2.2

View File

@@ -1,724 +1,3 @@
From b545663a3d91c16233ce34181475d8fd84e47034 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sun, 19 Apr 2015 13:35:11 +0200
Subject: gcc2 fixes for tools, tests, layout.
diff --git a/source/layout/LETableReference.h b/source/layout/LETableReference.h
index de51228..f55b762 100644
--- a/source/layout/LETableReference.h
+++ b/source/layout/LETableReference.h
@@ -304,7 +304,11 @@ LE_TRACE_TR("INFO: new RTAO")
le_uint32 getCount() const { return fCount; }
+#if __GNUC__ == 2
+ const T *getAlias() const { return LETableReference::getAlias(); }
+#else
using LETableReference::getAlias;
+#endif
const T *getAlias(le_uint32 i, LEErrorCode &success) const {
return ((const T*)(((const char*)getAlias())+getOffsetFor(i, success)));
diff --git a/source/test/intltest/apicoll.cpp b/source/test/intltest/apicoll.cpp
index 31b16dd..3e2e4a8 100644
--- a/source/test/intltest/apicoll.cpp
+++ b/source/test/intltest/apicoll.cpp
@@ -1971,7 +1971,22 @@ class TestCollator : public Collator
public:
virtual Collator* clone(void) const;
+#if __GNUC__ == 2
+ EComparisonResult compare (const UnicodeString& s1, const UnicodeString& s2)
+ const {
+ return Collator::compare(s1, s2);
+ }
+ EComparisonResult compare (const UnicodeString& s1, const UnicodeString& s2,
+ int32_t i) const {
+ return Collator::compare(s1, s2, i);
+ }
+ EComparisonResult compare (const UChar* s1, int32_t l1, const UChar* s2,
+ int32_t l2) const {
+ return Collator::compare(s1, l1, s2, l2);
+ }
+#else
using Collator::compare;
+#endif
virtual UCollationResult compare(const UnicodeString& source,
const UnicodeString& target,
diff --git a/source/test/iotest/stream.cpp b/source/test/iotest/stream.cpp
index a821636..083b4ab 100644
--- a/source/test/iotest/stream.cpp
+++ b/source/test/iotest/stream.cpp
@@ -131,7 +131,7 @@ static void U_CALLCONV TestStream(void)
#endif
UnicodeString ustr("string");
- outFormatStream << "1234567890" << setw(10) << left << ustr << " " << "0123456789";
+ outFormatStream << "1234567890" << setw(10) << ios::left << ustr << " " << "0123456789";
#ifdef USE_SSTREAM
tempStr = outFormatStream.str();
diff --git a/source/tools/toolutil/udbgutil.cpp b/source/tools/toolutil/udbgutil.cpp
index 911425c..cdd6683 100644
--- a/source/tools/toolutil/udbgutil.cpp
+++ b/source/tools/toolutil/udbgutil.cpp
@@ -639,7 +639,9 @@ U_CAPI void udbg_knownIssue_close(void *ptr) {
#include <set>
#include <map>
#include <string>
+#if __GNUC__ > 2
#include <ostream>
+#endif
#include <iostream>
class KnownIssues {
--
2.2.2
From 6cafed065f5d91859be09b8a219c1eaf5785d96d Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sun, 19 Apr 2015 13:35:47 +0200
Subject: gcc2 fixes for sources/i18n
diff --git a/source/i18n/alphaindex.cpp b/source/i18n/alphaindex.cpp
index 9fa98b8..5535be2 100644
--- a/source/i18n/alphaindex.cpp
+++ b/source/i18n/alphaindex.cpp
@@ -952,8 +952,8 @@ static int32_t U_CALLCONV
collatorComparator(const void *context, const void *left, const void *right) {
const UElement *leftElement = static_cast<const UElement *>(left);
const UElement *rightElement = static_cast<const UElement *>(right);
- const UnicodeString *leftString = static_cast<const UnicodeString *>(leftElement->pointer);
- const UnicodeString *rightString = static_cast<const UnicodeString *>(rightElement->pointer);
+ const UnicodeString *leftString = (const UnicodeString *)(leftElement->pointer);
+ const UnicodeString *rightString = (const UnicodeString *)(rightElement->pointer);
if (leftString == rightString) {
// Catches case where both are NULL
@@ -977,8 +977,8 @@ static int32_t U_CALLCONV
recordCompareFn(const void *context, const void *left, const void *right) {
const UElement *leftElement = static_cast<const UElement *>(left);
const UElement *rightElement = static_cast<const UElement *>(right);
- const AlphabeticIndex::Record *leftRec = static_cast<const AlphabeticIndex::Record *>(leftElement->pointer);
- const AlphabeticIndex::Record *rightRec = static_cast<const AlphabeticIndex::Record *>(rightElement->pointer);
+ const AlphabeticIndex::Record *leftRec = (const AlphabeticIndex::Record *)(leftElement->pointer);
+ const AlphabeticIndex::Record *rightRec = (const AlphabeticIndex::Record *)(rightElement->pointer);
const Collator *col = static_cast<const Collator *>(context);
UErrorCode errorCode = U_ZERO_ERROR;
return col->compare(leftRec->name_, rightRec->name_, errorCode);
diff --git a/source/i18n/currfmt.h b/source/i18n/currfmt.h
index b3f23e5..1495316 100644
--- a/source/i18n/currfmt.h
+++ b/source/i18n/currfmt.h
@@ -58,7 +58,9 @@ class CurrencyFormat : public MeasureFormat {
virtual Format* clone() const;
+#if __GNUC__ > 2
using MeasureFormat::format;
+#endif
/**
* Override Format API.
diff --git a/source/i18n/digitlst.cpp b/source/i18n/digitlst.cpp
index 51738be..c003c4b 100644
--- a/source/i18n/digitlst.cpp
+++ b/source/i18n/digitlst.cpp
@@ -38,7 +38,9 @@
#include <limits.h>
#include <string.h>
#include <stdio.h>
+#if __GNUC__ > 2
#include <limits>
+#endif
// ***************************************************************************
// class DigitList
@@ -437,11 +439,15 @@ DigitList::getDouble() const
tDouble /= -1;
}
} else if (isInfinite()) {
+#if __GNUC__ <= 2
+ tDouble = DBL_MAX;
+#else
if (std::numeric_limits<double>::has_infinity) {
tDouble = std::numeric_limits<double>::infinity();
} else {
tDouble = std::numeric_limits<double>::max();
}
+#endif
if (!isPositive()) {
tDouble = -tDouble; //this was incorrectly "-fDouble" originally.
}
diff --git a/source/i18n/digitlst.h b/source/i18n/digitlst.h
index 7e98d2b..4a95d71 100644
--- a/source/i18n/digitlst.h
+++ b/source/i18n/digitlst.h
@@ -413,7 +413,7 @@ private:
public:
-#if U_OVERRIDE_CXX_ALLOCATION
+#if U_OVERRIDE_CXX_ALLOCATION && __GNUC__ > 2
using UMemory::operator new;
using UMemory::operator delete;
#else
diff --git a/source/i18n/msgfmt.cpp b/source/i18n/msgfmt.cpp
index 32d9bc7..e6ca5c1 100644
--- a/source/i18n/msgfmt.cpp
+++ b/source/i18n/msgfmt.cpp
@@ -1484,6 +1484,7 @@ MessageFormat::parse(int32_t msgStart,
prevIndex=msgPattern.getPart(argLimit).getLimit();
i=argLimit;
}
+ return NULL;
}
// -------------------------------------
// Parses the source pattern and returns the Formattable objects array,
diff --git a/source/i18n/reldtfmt.h b/source/i18n/reldtfmt.h
index 67539e0..09f31e7 100644
--- a/source/i18n/reldtfmt.h
+++ b/source/i18n/reldtfmt.h
@@ -81,7 +81,9 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ > 2
using DateFormat::format;
+#endif
/**
* Format a date or time, which is the standard millis since 24:00 GMT, Jan
diff --git a/source/i18n/sortkey.cpp b/source/i18n/sortkey.cpp
index baf3254..838ea82 100644
--- a/source/i18n/sortkey.cpp
+++ b/source/i18n/sortkey.cpp
@@ -172,7 +172,7 @@ Collator::EComparisonResult
CollationKey::compareTo(const CollationKey& target) const
{
UErrorCode errorCode = U_ZERO_ERROR;
- return static_cast<Collator::EComparisonResult>(compareTo(target, errorCode));
+ return (Collator::EComparisonResult)(compareTo(target, errorCode));
}
// Bitwise comparison for the collation keys.
diff --git a/source/i18n/unicode/choicfmt.h b/source/i18n/unicode/choicfmt.h
index cfd5206..d2b7f66 100644
--- a/source/i18n/unicode/choicfmt.h
+++ b/source/i18n/unicode/choicfmt.h
@@ -355,7 +355,22 @@ public:
virtual const UnicodeString* getFormats(int32_t& count) const;
+#if __GNUC__ == 2
+ virtual UnicodeString& format (double number,
+ icu::UnicodeString& appendTo) const {
+ return NumberFormat::format(number, appendTo);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPosition& p, UErrorCode& e) const {
+ return NumberFormat::format(f, s, p, e);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ UErrorCode& e) const {
+ return NumberFormat::format(f, s, e);
+ }
+#else
using NumberFormat::format;
+#endif
/**
* Formats a double number using this object's choices.
@@ -421,7 +436,13 @@ public:
FieldPosition& pos,
UErrorCode& success) const;
+#if __GNUC__ == 2
+ void parse(UnicodeString& s, Formattable& f, UErrorCode& e) const {
+ NumberFormat::parse(s, f, e);
+ }
+#else
using NumberFormat::parse;
+#endif
/**
* Looks for the longest match of any message string on the input text and,
diff --git a/source/i18n/unicode/compactdecimalformat.h b/source/i18n/unicode/compactdecimalformat.h
index bd8fdba..be2e580 100644
--- a/source/i18n/unicode/compactdecimalformat.h
+++ b/source/i18n/unicode/compactdecimalformat.h
@@ -104,7 +104,13 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ == 2
+ UnicodeString& format(double n, UnicodeString& s) const {
+ return DecimalFormat::format(n, s);
+ }
+#else
using DecimalFormat::format;
+#endif
/**
* Format a double or long number using base-10 representation.
diff --git a/source/i18n/unicode/datefmt.h b/source/i18n/unicode/datefmt.h
index 983f136..4531dc5 100644
--- a/source/i18n/unicode/datefmt.h
+++ b/source/i18n/unicode/datefmt.h
@@ -221,7 +221,13 @@ public:
virtual UBool operator==(const Format&) const;
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) const {
+ return Format::format(f, s, e);
+ }
+#else
using Format::format;
+#endif
/**
* Format an object to produce a string. This method handles Formattable
diff --git a/source/i18n/unicode/decimfmt.h b/source/i18n/unicode/decimfmt.h
index 138855b..4ed2995 100644
--- a/source/i18n/unicode/decimfmt.h
+++ b/source/i18n/unicode/decimfmt.h
@@ -918,7 +918,35 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ == 2
+ virtual UnicodeString& format (double number,
+ icu::UnicodeString& appendTo) const {
+ return NumberFormat::format(number, appendTo);
+ }
+
+ virtual UnicodeString& format (double number,
+ icu::UnicodeString& appendTo,
+ UErrorCode& status) const {
+ return NumberFormat::format(number, appendTo, status);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return NumberFormat::format(f, s, i, e);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPosition& p, UErrorCode& e) const {
+ return NumberFormat::format(f, s, p, e);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e)
+ const {
+ return NumberFormat::format(f, s, e);
+ }
+#else
using NumberFormat::format;
+#endif
/**
* Format a double or long number using base-10 representation.
@@ -1131,7 +1159,15 @@ public:
FieldPosition& pos,
UErrorCode& status) const;
+#if __GNUC__ == 2
+ void parse(const UnicodeString& text,
+ Formattable& result,
+ UErrorCode& status) const {
+ NumberFormat::parse(text, result, status);
+ }
+#else
using NumberFormat::parse;
+#endif
/**
* Parse the given string using this object's choices. The method
diff --git a/source/i18n/unicode/dtitvfmt.h b/source/i18n/unicode/dtitvfmt.h
index fb27eec..8fefb9e 100644
--- a/source/i18n/unicode/dtitvfmt.h
+++ b/source/i18n/unicode/dtitvfmt.h
@@ -373,7 +373,9 @@ public:
UBool operator!=(const Format& other) const;
+#if __GNUC__ > 2
using Format::format;
+#endif
/**
* Format an object to produce a string. This method handles Formattable
diff --git a/source/i18n/unicode/measfmt.h b/source/i18n/unicode/measfmt.h
index 61a1e86..0a272a8 100644
--- a/source/i18n/unicode/measfmt.h
+++ b/source/i18n/unicode/measfmt.h
@@ -92,8 +92,25 @@ class DateFormat;
*/
class U_I18N_API MeasureFormat : public Format {
public:
+#if __GNUC__ == 2
+ void parseObject (const UnicodeString& s, Formattable& f, UErrorCode& e)
+ const {
+ Format::parseObject(s, f, e);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return Format::format(f, s, i, e);
+ }
+
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ UErrorCode& e) const {
+ return Format::format(f, s, e);
+ }
+#else
using Format::parseObject;
using Format::format;
+#endif
/**
* Constructor.
diff --git a/source/i18n/unicode/msgfmt.h b/source/i18n/unicode/msgfmt.h
index 5de91e4..8f9f995 100644
--- a/source/i18n/unicode/msgfmt.h
+++ b/source/i18n/unicode/msgfmt.h
@@ -622,7 +622,17 @@ public:
virtual const Format** getFormats(int32_t& count) const;
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return Format::format(f, s, i, e);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) {
+ return Format::format(f, s, e);
+ }
+#else
using Format::format;
+#endif
/**
* Formats the given array of arguments into a user-readable string.
@@ -884,6 +894,9 @@ private:
PluralRules* rules;
UPluralType type;
};
+#if __GNUC__ == 2
+ friend class PluralSelectorProvider;
+#endif
/**
* A MessageFormat formats an array of arguments. Each argument
diff --git a/source/i18n/unicode/numfmt.h b/source/i18n/unicode/numfmt.h
index 164c657..4b03222 100644
--- a/source/i18n/unicode/numfmt.h
+++ b/source/i18n/unicode/numfmt.h
@@ -235,7 +235,15 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ == 2
+ virtual UnicodeString& format (const Formattable& obj,
+ UnicodeString& appendTo,
+ UErrorCode & status) const {
+ return Format::format(obj, appendTo, status);
+ }
+#else
using Format::format;
+#endif
/**
* Format an object to produce a string. This method handles
diff --git a/source/i18n/unicode/plurfmt.h b/source/i18n/unicode/plurfmt.h
index f7099d8..bedaf01 100644
--- a/source/i18n/unicode/plurfmt.h
+++ b/source/i18n/unicode/plurfmt.h
@@ -313,7 +313,14 @@ public:
void applyPattern(const UnicodeString& pattern, UErrorCode& status);
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return Format::format(f, s, i, e);
+ }
+#else
using Format::format;
+#endif
/**
* Formats a plural message for a given number.
diff --git a/source/i18n/unicode/rbnf.h b/source/i18n/unicode/rbnf.h
index 7058c96..d0ad947 100644
--- a/source/i18n/unicode/rbnf.h
+++ b/source/i18n/unicode/rbnf.h
@@ -741,7 +741,23 @@ public:
const Locale& locale = Locale::getDefault());
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e)
+ const {
+ return NumberFormat::format(f, s, e);
+ }
+
+ UnicodeString& format(double n, UnicodeString& s) const {
+ return NumberFormat::format(n, s);
+ }
+
+ UnicodeString& format(int64_t n, UnicodeString& s, FieldPosition& p,
+ UErrorCode& e) const {
+ return NumberFormat::format(n, s, p, e);
+ }
+#else
using NumberFormat::format;
+#endif
/**
* Formats the specified 32-bit number using the default ruleset.
@@ -827,7 +843,13 @@ public:
FieldPosition& pos,
UErrorCode& status) const;
+#if __GNUC__ == 2
+ void parse(const UnicodeString& s, Formattable& f, UErrorCode& e) const {
+ return NumberFormat::parse(s, f, e);
+ }
+#else
using NumberFormat::parse;
+#endif
/**
* Parses the specfied string, beginning at the specified position, according
diff --git a/source/i18n/unicode/selfmt.h b/source/i18n/unicode/selfmt.h
index 635144b..7247839 100644
--- a/source/i18n/unicode/selfmt.h
+++ b/source/i18n/unicode/selfmt.h
@@ -219,7 +219,9 @@ public:
void applyPattern(const UnicodeString& pattern, UErrorCode& status);
+#if __GNUC__ > 2
using Format::format;
+#endif
/**
* Selects the phrase for the given keyword
@@ -340,9 +342,9 @@ public:
*/
virtual UClassID getDynamicClassID() const;
-private:
friend class MessageFormat;
+private:
SelectFormat(); // default constructor not implemented.
/**
diff --git a/source/i18n/unicode/smpdtfmt.h b/source/i18n/unicode/smpdtfmt.h
index ccdaff4..69f70ec 100644
--- a/source/i18n/unicode/smpdtfmt.h
+++ b/source/i18n/unicode/smpdtfmt.h
@@ -870,7 +870,27 @@ public:
virtual UBool operator==(const Format& other) const;
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& f, UnicodeString& s,
+ FieldPositionIterator* i, UErrorCode& e) const {
+ return DateFormat::format(f, s, i, e);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s, FieldPosition& p,
+ UErrorCode& e) const {
+ return DateFormat::format(f, s, p, e);
+ }
+ UnicodeString& format(const Formattable& f, UnicodeString& s, UErrorCode& e) const {
+ return Format::format(f, s, e);
+ }
+ UnicodeString& format(const UDate& d, UnicodeString& s, FieldPosition& f) const {
+ return DateFormat::format(d, s, f);
+ }
+ UnicodeString& format(const UDate& d, UnicodeString& s) const {
+ return DateFormat::format(d, s);
+ }
+#else
using DateFormat::format;
+#endif
/**
* Format a date or time, which is the standard millis since 24:00 GMT, Jan
@@ -915,7 +935,16 @@ public:
FieldPositionIterator* posIter,
UErrorCode& status) const;
+#if __GNUC__ == 2
+ UDate parse(const UnicodeString& s, UErrorCode& e) const {
+ return DateFormat::parse(s, e);
+ }
+ UDate parse (const UnicodeString& s, ParsePosition& p) const {
+ return DateFormat::parse(s, p);
+ }
+#else
using DateFormat::parse;
+#endif
/**
* Parse a date/time string beginning at the given parse position. For
diff --git a/source/i18n/unicode/tblcoll.h b/source/i18n/unicode/tblcoll.h
index e56f189..2108699 100644
--- a/source/i18n/unicode/tblcoll.h
+++ b/source/i18n/unicode/tblcoll.h
@@ -254,7 +254,22 @@ public:
const CharacterIterator& source) const;
// Make deprecated versions of Collator::compare() visible.
+#if __GNUC__ == 2
+ EComparisonResult compare(const UChar* source, int sourceLength,
+ const UChar* target, int targetLength) const {
+ return Collator::compare(source, sourceLength, target, targetLength);
+ }
+ EComparisonResult compare(const UnicodeString& s1, const UnicodeString& s2,
+ int i) const {
+ return Collator::compare(s1, s2, i);
+ }
+ EComparisonResult compare(const UnicodeString& s1, const UnicodeString& s2)
+ const {
+ return Collator::compare(s1, s2);
+ }
+#else
using Collator::compare;
+#endif
/**
* The comparison function compares the character data stored in two
diff --git a/source/i18n/unicode/tzfmt.h b/source/i18n/unicode/tzfmt.h
index 24f0e49..969e08a 100644
--- a/source/i18n/unicode/tzfmt.h
+++ b/source/i18n/unicode/tzfmt.h
@@ -520,7 +520,14 @@ public:
*/
UnicodeString& formatOffsetShortLocalizedGMT(int32_t offset, UnicodeString& result, UErrorCode& status) const;
+#if __GNUC__ == 2
+ UnicodeString& format(const Formattable& data, UnicodeString& string,
+ FieldPositionIterator* iterator, UErrorCode& error) const {
+ return Format::format(data, string, iterator, error);
+ }
+#else
using Format::format;
+#endif
/**
* Returns the display name of the time zone at the given date for the style.
--
2.2.2
From 6fe3c3f205284dfb0a2c4d06717bb84cb61f0f66 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sun, 19 Apr 2015 13:36:37 +0200
Subject: gcc2 fixes in source/common
diff --git a/source/common/unicode/bytestrie.h b/source/common/unicode/bytestrie.h
index 9c77827..367a0ae 100644
--- a/source/common/unicode/bytestrie.h
+++ b/source/common/unicode/bytestrie.h
@@ -338,6 +338,9 @@ public:
// but the code looks more confusing that way.)
UVector32 *stack_;
};
+#if __GNUC__ == 2
+ friend class Iterator;
+#endif
private:
friend class BytesTrieBuilder;
diff --git a/source/common/unicode/bytestriebuilder.h b/source/common/unicode/bytestriebuilder.h
index d00ab9b..afbf59b 100644
--- a/source/common/unicode/bytestriebuilder.h
+++ b/source/common/unicode/bytestriebuilder.h
@@ -152,6 +152,9 @@ private:
private:
const char *s;
};
+#if __GNUC__ == 2
+ friend class BTLinearMatchNode;
+#endif
virtual Node *createLinearMatchNode(int32_t i, int32_t byteIndex, int32_t length,
Node *nextNode) const;
diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h
index 4829000..2411dd0 100644
--- a/source/common/unicode/platform.h
+++ b/source/common/unicode/platform.h
@@ -708,7 +708,7 @@
/* Use the predefined value. */
#elif defined(U_STATIC_IMPLEMENTATION)
# define U_EXPORT
-#elif defined(__GNUC__)
+#elif defined(__GNUC__) && __GNUC__ > 2
# define U_EXPORT __attribute__((visibility("default")))
#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \
|| (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550)
diff --git a/source/common/unicode/stringtriebuilder.h b/source/common/unicode/stringtriebuilder.h
index 04447e5..21bab82 100644
--- a/source/common/unicode/stringtriebuilder.h
+++ b/source/common/unicode/stringtriebuilder.h
@@ -379,6 +379,15 @@ protected:
int32_t length;
Node *next; // A branch sub-node.
};
+#if __GNUC__ >= 2
+ friend class FinalValueNode;
+ friend class ValueNode;
+ friend class IntermediateValueNode;
+ friend class BranchNode;
+ friend class ListBranchNode;
+ friend class SplitBranchNode;
+ friend class BranchHeadNode;
+#endif
#endif /* U_HIDE_INTERNAL_API */
/** @internal */
diff --git a/source/common/unicode/ucharstrie.h b/source/common/unicode/ucharstrie.h
index 0575a97..9fe81c1 100644
--- a/source/common/unicode/ucharstrie.h
+++ b/source/common/unicode/ucharstrie.h
@@ -356,6 +356,9 @@ public:
// but the code looks more confusing that way.)
UVector32 *stack_;
};
+#if __GNUC__ == 2
+ friend class Iterator;
+#endif
private:
friend class UCharsTrieBuilder;
diff --git a/source/common/unicode/ucharstriebuilder.h b/source/common/unicode/ucharstriebuilder.h
index 35e353d..30f40d9 100644
--- a/source/common/unicode/ucharstriebuilder.h
+++ b/source/common/unicode/ucharstriebuilder.h
@@ -156,6 +156,9 @@ private:
private:
const UChar *s;
};
+#if __GNUC__ == 2
+ friend class UCTLinearMatchNode;
+#endif
virtual Node *createLinearMatchNode(int32_t i, int32_t unitIndex, int32_t length,
Node *nextNode) const;
--
2.2.2
From 3c6dff2a3728889f67afcc5e2e5a667d59aa2b84 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Sun, 19 Apr 2015 13:38:07 +0200
@@ -756,32 +35,6 @@ index ccf956e..55a3ed2 100644
2.2.2
From 1e79fa03b6cd114d4c7fb7c03251bc10a48897c2 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Thu, 2 Oct 2014 14:54:39 +0200
Subject: Force definition of U_DISABLE_RENAMING
We build ICU with this flag disabled, but somehow this isn't added tothe
header, and later on trying to build haiku without the flag would fail.
So we just change the default value to keep things simpler.
diff --git a/source/common/unicode/uconfig.h b/source/common/unicode/uconfig.h
index f6223bb..7c67263 100644
--- a/source/common/unicode/uconfig.h
+++ b/source/common/unicode/uconfig.h
@@ -87,7 +87,7 @@
* @internal
*/
#ifndef U_DISABLE_RENAMING
-#define U_DISABLE_RENAMING 0
+#define U_DISABLE_RENAMING 1
#endif
/**
--
2.2.2
From 12c3d34d0c531dcd3af7ae9c0119001bcdf8261a Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Fri, 3 Oct 2014 11:07:01 +0200
@@ -886,124 +139,6 @@ index b30c8d0..89902b4 100644
2.2.2
From efa9ee8612ac7482e56fa2190ce1b1afd188e268 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@gmail.com>
Date: Mon, 6 Oct 2014 13:28:09 +0200
Subject: more gcc2 fixes for ICU 54.
diff --git a/source/common/norm2allmodes.h b/source/common/norm2allmodes.h
index 64c84a2..aca1e08 100644
--- a/source/common/norm2allmodes.h
+++ b/source/common/norm2allmodes.h
@@ -193,7 +193,9 @@ private:
ReorderingBuffer &buffer, UErrorCode &errorCode) const {
impl.decompose(src, limit, &buffer, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
+#endif
virtual void
normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
UnicodeString &safeMiddle,
@@ -204,7 +206,9 @@ private:
spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const {
return impl.decompose(src, limit, NULL, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
+#endif
virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const {
return impl.isDecompYes(impl.getNorm16(c)) ? UNORM_YES : UNORM_NO;
}
@@ -225,7 +229,9 @@ private:
ReorderingBuffer &buffer, UErrorCode &errorCode) const {
impl.compose(src, limit, onlyContiguous, TRUE, buffer, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
+#endif
virtual void
normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
UnicodeString &safeMiddle,
@@ -268,7 +274,9 @@ private:
spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &) const {
return impl.composeQuickCheck(src, limit, onlyContiguous, NULL);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
+#endif
virtual UNormalizationCheckResult getQuickCheck(UChar32 c) const {
return impl.getCompQuickCheck(impl.getNorm16(c));
}
@@ -296,7 +304,9 @@ private:
ReorderingBuffer &buffer, UErrorCode &errorCode) const {
impl.makeFCD(src, limit, &buffer, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::normalize; // Avoid warning about hiding base class function.
+#endif
virtual void
normalizeAndAppend(const UChar *src, const UChar *limit, UBool doNormalize,
UnicodeString &safeMiddle,
@@ -307,7 +317,9 @@ private:
spanQuickCheckYes(const UChar *src, const UChar *limit, UErrorCode &errorCode) const {
return impl.makeFCD(src, limit, NULL, errorCode);
}
+#if __GNUC__ != 2
using Normalizer2WithImpl::spanQuickCheckYes; // Avoid warning about hiding base class function.
+#endif
virtual UBool hasBoundaryBefore(UChar32 c) const { return impl.hasFCDBoundaryBefore(c); }
virtual UBool hasBoundaryAfter(UChar32 c) const { return impl.hasFCDBoundaryAfter(c); }
virtual UBool isInert(UChar32 c) const { return impl.isFCDInert(c); }
diff --git a/source/common/putilimp.h b/source/common/putilimp.h
index a3e361f..affb1a8 100644
--- a/source/common/putilimp.h
+++ b/source/common/putilimp.h
@@ -113,7 +113,7 @@ typedef size_t uintptr_t;
#if defined(U_TIMEZONE) || defined(U_HAVE_TIMEZONE)
/* Use the predefined value. */
-#elif U_PLATFORM == U_PF_ANDROID
+#elif U_PLATFORM == U_PF_ANDROID || defined(__HAIKU__)
# define U_TIMEZONE timezone
#elif U_PLATFORM_IS_LINUX_BASED
# if defined(__UCLIBC__)
diff --git a/source/common/unicode/platform.h b/source/common/unicode/platform.h
index 2411dd0..61fdfe1 100644
--- a/source/common/unicode/platform.h
+++ b/source/common/unicode/platform.h
@@ -159,7 +159,7 @@
# else
# define U_PLATFORM U_PF_DARWIN
# endif
-#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__)
+#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__) || defined(__HAIKU__)
# define U_PLATFORM U_PF_BSD
#elif defined(sun) || defined(__sun)
/* Check defined(__SVR4) || defined(__svr4__) to distinguish Solaris from SunOS? */
diff --git a/source/i18n/filteredbrk.cpp b/source/i18n/filteredbrk.cpp
index 7ecb004..e3b3802 100644
--- a/source/i18n/filteredbrk.cpp
+++ b/source/i18n/filteredbrk.cpp
@@ -65,7 +65,13 @@ class U_I18N_API UStringSet : public UVector {
inline UBool contains(const UnicodeString& s) {
return contains((void*) &s);
}
+#if __GNUC__ == 2
+ UBool contains(void* s) {
+ return UVector::contains(s);
+ }
+#else
using UVector::contains;
+#endif
/**
* Return the ith UnicodeString alias
*/
--
2.2.2
From 85cb05132c7caf7c17c786a816efb31a08a40319 Mon Sep 17 00:00:00 2001
From: Oliver Tappe <zooey@hirschkaefer.de>
Date: Fri, 14 Nov 2014 23:56:19 +0100
@@ -1037,25 +172,3 @@ index 89902b4..9f3b893 100644
2.2.2
From d1ec5200e5938bab93750e171a58182ea76eebc1 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Thu, 26 Mar 2015 18:39:42 +0000
Subject: gcc2 fixes for tztools.
diff --git a/source/tools/tzcode/private.h b/source/tools/tzcode/private.h
index 1a85c88..0ee3329 100644
--- a/source/tools/tzcode/private.h
+++ b/source/tools/tzcode/private.h
@@ -120,7 +120,7 @@
*/
#ifndef HAVE_STDINT_H
#define HAVE_STDINT_H \
- (199901 <= __STDC_VERSION__ || \
+ (defined(__HAIKU__) || 199901 <= __STDC_VERSION__ || \
2 < (__GLIBC__ + (0 < __GLIBC_MINOR__)))
#endif /* !defined HAVE_STDINT_H */
--
2.2.2