double-conversion.diff (5697B)
1 diff --git a/intl/icu/source/i18n/measunit_extra.cpp b/intl/icu/source/i18n/measunit_extra.cpp 2 --- a/intl/icu/source/i18n/measunit_extra.cpp 3 +++ b/intl/icu/source/i18n/measunit_extra.cpp 4 @@ -10,17 +10,21 @@ 5 6 // Allow implicit conversion from char16_t* to UnicodeString for this file: 7 // Helpful in toString methods and elsewhere. 8 #define UNISTR_FROM_STRING_EXPLICIT 9 10 #include "charstr.h" 11 #include "cmemory.h" 12 #include "cstring.h" 13 +#ifdef JS_HAS_INTL_API 14 +#include "double-conversion/string-to-double.h" 15 +#else 16 #include "double-conversion-string-to-double.h" 17 +#endif 18 #include "measunit_impl.h" 19 #include "resource.h" 20 #include "uarrsort.h" 21 #include "uassert.h" 22 #include "ucln_in.h" 23 #include "umutex.h" 24 #include "unicode/bytestrie.h" 25 #include "unicode/bytestriebuilder.h" 26 @@ -33,17 +37,21 @@ 27 #include "util.h" 28 #include <limits.h> 29 #include <cstdlib> 30 U_NAMESPACE_BEGIN 31 32 33 namespace { 34 35 +#ifdef JS_HAS_INTL_API 36 +using double_conversion::StringToDoubleConverter; 37 +#else 38 using icu::double_conversion::StringToDoubleConverter; 39 +#endif 40 41 // TODO: Propose a new error code for this? 42 constexpr UErrorCode kUnitIdentifierSyntaxError = U_ILLEGAL_ARGUMENT_ERROR; 43 44 // Trie value offset for SI or binary prefixes. This is big enough to ensure we only 45 // insert positive integers into the trie. 46 constexpr int32_t kPrefixOffset = 64; 47 static_assert(kPrefixOffset + UMEASURE_PREFIX_INTERNAL_MIN_BIN > 0, 48 diff --git a/intl/icu/source/i18n/number_decimalquantity.cpp b/intl/icu/source/i18n/number_decimalquantity.cpp 49 --- a/intl/icu/source/i18n/number_decimalquantity.cpp 50 +++ b/intl/icu/source/i18n/number_decimalquantity.cpp 51 @@ -11,28 +11,37 @@ 52 #include <stdlib.h> 53 54 #include "unicode/plurrule.h" 55 #include "cmemory.h" 56 #include "number_decnum.h" 57 #include "putilimp.h" 58 #include "number_decimalquantity.h" 59 #include "number_roundingutils.h" 60 +#ifdef JS_HAS_INTL_API 61 +#include "double-conversion/double-conversion.h" 62 +#else 63 #include "double-conversion.h" 64 +#endif 65 #include "charstr.h" 66 #include "number_utils.h" 67 #include "uassert.h" 68 #include "util.h" 69 70 using namespace icu; 71 using namespace icu::number; 72 using namespace icu::number::impl; 73 74 +#ifdef JS_HAS_INTL_API 75 +using double_conversion::DoubleToStringConverter; 76 +using double_conversion::StringToDoubleConverter; 77 +#else 78 using icu::double_conversion::DoubleToStringConverter; 79 using icu::double_conversion::StringToDoubleConverter; 80 +#endif 81 82 namespace { 83 84 int8_t NEGATIVE_FLAG = 1; 85 int8_t INFINITY_FLAG = 2; 86 int8_t NAN_FLAG = 4; 87 88 /** Helper function for safe subtraction (no overflow). */ 89 diff --git a/intl/icu/source/i18n/number_rounding.cpp b/intl/icu/source/i18n/number_rounding.cpp 90 --- a/intl/icu/source/i18n/number_rounding.cpp 91 +++ b/intl/icu/source/i18n/number_rounding.cpp 92 @@ -5,17 +5,21 @@ 93 94 #if !UCONFIG_NO_FORMATTING 95 96 #include "charstr.h" 97 #include "uassert.h" 98 #include "unicode/numberformatter.h" 99 #include "number_types.h" 100 #include "number_decimalquantity.h" 101 +#ifdef JS_HAS_INTL_API 102 +#include "double-conversion/double-conversion.h" 103 +#else 104 #include "double-conversion.h" 105 +#endif 106 #include "number_roundingutils.h" 107 #include "number_skeletons.h" 108 #include "number_decnum.h" 109 #include "putilimp.h" 110 #include "string_segment.h" 111 112 using namespace icu; 113 using namespace icu::number; 114 diff --git a/intl/icu/source/i18n/number_utils.cpp b/intl/icu/source/i18n/number_utils.cpp 115 --- a/intl/icu/source/i18n/number_utils.cpp 116 +++ b/intl/icu/source/i18n/number_utils.cpp 117 @@ -12,26 +12,34 @@ 118 #include <stdlib.h> 119 #include <cmath> 120 #include "number_decnum.h" 121 #include "number_types.h" 122 #include "number_utils.h" 123 #include "charstr.h" 124 #include "decContext.h" 125 #include "decNumber.h" 126 +#ifdef JS_HAS_INTL_API 127 +#include "double-conversion/double-conversion.h" 128 +#else 129 #include "double-conversion.h" 130 +#endif 131 #include "fphdlimp.h" 132 #include "uresimp.h" 133 #include "ureslocs.h" 134 135 using namespace icu; 136 using namespace icu::number; 137 using namespace icu::number::impl; 138 139 +#ifdef JS_HAS_INTL_API 140 +using double_conversion::DoubleToStringConverter; 141 +#else 142 using icu::double_conversion::DoubleToStringConverter; 143 +#endif 144 145 146 namespace { 147 148 const char16_t* 149 doGetPattern(UResourceBundle* res, const char* nsName, const char* patternKey, UErrorCode& publicStatus, 150 UErrorCode& localStatus) { 151 // Construct the path into the resource bundle 152 diff --git a/intl/icu/source/i18n/units_converter.cpp b/intl/icu/source/i18n/units_converter.cpp 153 --- a/intl/icu/source/i18n/units_converter.cpp 154 +++ b/intl/icu/source/i18n/units_converter.cpp 155 @@ -3,17 +3,21 @@ 156 157 #include "unicode/utypes.h" 158 159 #if !UCONFIG_NO_FORMATTING 160 161 #include "charstr.h" 162 #include "cmemory.h" 163 #include "cstring.h" 164 +#ifdef JS_HAS_INTL_API 165 +#include "double-conversion/string-to-double.h" 166 +#else 167 #include "double-conversion-string-to-double.h" 168 +#endif 169 #include "measunit_impl.h" 170 #include "putilimp.h" 171 #include "uassert.h" 172 #include "unicode/errorcode.h" 173 #include "unicode/localpointer.h" 174 #include "unicode/stringpiece.h" 175 #include "units_converter.h" 176 #include <algorithm> 177 @@ -105,17 +109,21 @@ void Factor::substituteConstants() { 178 this->constantExponents[i] = 0; 179 } 180 } 181 182 namespace { 183 184 /* Helpers */ 185 186 +#ifdef JS_HAS_INTL_API 187 +using double_conversion::StringToDoubleConverter; 188 +#else 189 using icu::double_conversion::StringToDoubleConverter; 190 +#endif 191 192 // TODO: Make this a shared-utility function. 193 // Returns `double` from a scientific number(i.e. "1", "2.01" or "3.09E+4") 194 double strToDouble(StringPiece strNum, UErrorCode &status) { 195 // We are processing well-formed input, so we don't need any special options to 196 // StringToDoubleConverter. 197 StringToDoubleConverter converter(0, 0, 0, "", ""); 198 int32_t count;