Compare commits
17
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
89bae57bd0 | ||
|
|
132e98ae52 | ||
|
|
5b4d513f19 | ||
|
|
6f179fa5cf | ||
|
|
6fdef53820 | ||
|
|
2cbcd3d940 | ||
|
|
1623af4b25 | ||
|
|
741f37529e | ||
|
|
678b6ed5f7 | ||
|
|
f3ead29e7f | ||
|
|
88e15c44b3 | ||
|
|
bfd9f23af1 | ||
|
|
670aa3081f | ||
|
|
c4551d7a4a | ||
|
|
87ac62044f | ||
|
|
37814ec330 | ||
|
|
c8d19ff590 |
+4
-4
@@ -23,7 +23,7 @@
|
||||
milestone - if the release note is a milestone release
|
||||
-->
|
||||
|
||||
<body class="rc">
|
||||
<body>
|
||||
<!-- <body> -->
|
||||
<p class="only-draft"><b>Note:</b> This is a draft readme.</p>
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
International Components for Unicode<br/>
|
||||
<span class="only-rc">Release Candidate</span>
|
||||
<span class="only-milestone">(Milestone Release)</span>
|
||||
<abbr title="International Components for Unicode">ICU</abbr> 60rc ReadMe
|
||||
<abbr title="International Components for Unicode">ICU</abbr> 60.1 ReadMe
|
||||
</h1>
|
||||
|
||||
<!-- Shouldn't need to comment/uncomment this paragraph, just change the body class -->
|
||||
@@ -44,7 +44,7 @@
|
||||
<p class="note only-rc">This is a release candidate version of ICU4C.
|
||||
It is not recommended for production use.</p>
|
||||
|
||||
<p>Last updated: 2017-Oct-05<br/>
|
||||
<p>Last updated: 2017-Oct-29<br/>
|
||||
Copyright © 2016 and later: Unicode, Inc. and others. License & terms of use:
|
||||
<a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a><br/>
|
||||
Copyright © 1997-2016 International Business Machines Corporation and others.
|
||||
@@ -234,7 +234,7 @@
|
||||
<h2><a name="News" href="#News" id="News">What Is New In This Release?</a></h2>
|
||||
|
||||
<p>See the <a href="http://site.icu-project.org/download/60">ICU 60 download page</a>
|
||||
(in progress) for an overview of this release, important changes, new features, bug fixes, known issues,
|
||||
for an overview of this release, important changes, new features, bug fixes, known issues,
|
||||
changes to supported platforms and build environments,
|
||||
and migration issues for existing applications migrating from previous ICU releases.</p>
|
||||
|
||||
|
||||
@@ -1383,6 +1383,7 @@ CjkBreakEngine::divideUpDictionaryRange( UText *inText,
|
||||
prevCPPos = cpPos;
|
||||
prevUTextPos = utextPos;
|
||||
}
|
||||
(void)prevCPPos; // suppress compiler warnings about unused variable
|
||||
|
||||
// inString goes out of scope
|
||||
// inputMap goes out of scope
|
||||
|
||||
@@ -821,6 +821,8 @@ uloc_getDisplayKeywordValue( const char* locale,
|
||||
/* get the keyword value */
|
||||
keywordValue[0]=0;
|
||||
keywordValueLen = uloc_getKeywordValue(locale, keyword, keywordValue, capacity, status);
|
||||
if (*status == U_STRING_NOT_TERMINATED_WARNING)
|
||||
*status = U_BUFFER_OVERFLOW_ERROR;
|
||||
|
||||
/*
|
||||
* if the keyword is equal to currency .. then to get the display name
|
||||
|
||||
@@ -636,8 +636,9 @@ LocaleDisplayNamesImpl::localeDisplayName(const Locale& locale,
|
||||
char value[ULOC_KEYWORD_AND_VALUES_CAPACITY]; // sigh, no ULOC_VALUE_CAPACITY
|
||||
const char* key;
|
||||
while ((key = e->next((int32_t *)0, status)) != NULL) {
|
||||
value[0] = 0;
|
||||
locale.getKeywordValue(key, value, ULOC_KEYWORD_AND_VALUES_CAPACITY, status);
|
||||
if (U_FAILURE(status)) {
|
||||
if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) {
|
||||
return result;
|
||||
}
|
||||
keyDisplayName(key, temp, TRUE);
|
||||
|
||||
@@ -676,8 +676,8 @@ extern U_IMPORT char *U_TZNAME[];
|
||||
#if !UCONFIG_NO_FILE_IO && ((U_PLATFORM_IS_DARWIN_BASED && (U_PLATFORM != U_PF_IPHONE || defined(U_TIMEZONE))) || U_PLATFORM_IS_LINUX_BASED || U_PLATFORM == U_PF_BSD || U_PLATFORM == U_PF_SOLARIS)
|
||||
/* These platforms are likely to use Olson timezone IDs. */
|
||||
/* common targets of the symbolic link at TZDEFAULT are:
|
||||
* "/usr/share/zoneinfo/<olsonID>" default, older Linus distros, macOS to 10.12
|
||||
* "../usr/share/zoneinfo/<olsonID>" newer Linux distros: Red Hat Enterprise Linux 7, Ubuntu, SuSe Linux
|
||||
* "/usr/share/zoneinfo/<olsonID>" default, older Linux distros, macOS to 10.12
|
||||
* "../usr/share/zoneinfo/<olsonID>" newer Linux distros: Red Hat Enterprise Linux 7, Ubuntu 16, SuSe Linux 12
|
||||
* "/usr/share/lib/zoneinfo/<olsonID>" Solaris
|
||||
* "../usr/share/lib/zoneinfo/<olsonID>" Solaris
|
||||
* "/var/db/timezone/zoneinfo/<olsonID>" macOS 10.13
|
||||
@@ -1235,7 +1235,7 @@ UInitOnce gTimeZoneFilesInitOnce = U_INITONCE_INITIALIZER;
|
||||
static CharString *gTimeZoneFilesDirectory = NULL;
|
||||
|
||||
#if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
|
||||
static char *gCorrectedPOSIXLocale = NULL; /* Sometimes heap allocated */
|
||||
static const char *gCorrectedPOSIXLocale = NULL; /* Sometimes heap allocated */
|
||||
static bool gCorrectedPOSIXLocaleHeapAllocated = false;
|
||||
#endif
|
||||
|
||||
@@ -1258,7 +1258,7 @@ static UBool U_CALLCONV putil_cleanup(void)
|
||||
|
||||
#if U_POSIX_LOCALE || U_PLATFORM_USES_ONLY_WIN32_API
|
||||
if (gCorrectedPOSIXLocale && gCorrectedPOSIXLocaleHeapAllocated) {
|
||||
uprv_free(gCorrectedPOSIXLocale);
|
||||
uprv_free(const_cast<char *>(gCorrectedPOSIXLocale));
|
||||
gCorrectedPOSIXLocale = NULL;
|
||||
gCorrectedPOSIXLocaleHeapAllocated = false;
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "brkeng.h"
|
||||
#include "cmemory.h"
|
||||
#include "rbbidata.h"
|
||||
#include "rbbirb.h"
|
||||
#include "uassert.h"
|
||||
#include "uvectr32.h"
|
||||
|
||||
|
||||
@@ -315,6 +315,7 @@ _CompoundTextClose(UConverter *converter) {
|
||||
}
|
||||
|
||||
uprv_free(converter->extraInfo);
|
||||
converter->extraInfo = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2230,6 +2230,7 @@ ucurr_countCurrencies(const char* locale,
|
||||
UErrorCode localStatus = U_ZERO_ERROR;
|
||||
char id[ULOC_FULLNAME_CAPACITY];
|
||||
uloc_getKeywordValue(locale, "currency", id, ULOC_FULLNAME_CAPACITY, &localStatus);
|
||||
|
||||
// get country or country_variant in `id'
|
||||
/*uint32_t variantType =*/ idForLocale(locale, id, sizeof(id), ec);
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
* @internal
|
||||
*/
|
||||
#ifndef UPRV_INCOMPLETE_CPP11_SUPPORT
|
||||
# define UPRV_INCOMPLETE_CPP11_SUPPORT (U_PLATFORM == U_PF_AIX || U_PLATFORM == U_PF_OS390)
|
||||
# define UPRV_INCOMPLETE_CPP11_SUPPORT (U_PLATFORM == U_PF_AIX || U_PLATFORM == U_PF_OS390 || U_PLATFORM == U_PF_SOLARIS )
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
||||
@@ -2504,5 +2504,5 @@ fi{
|
||||
one{"{0} {1}"}
|
||||
other{"{0} {1}"}
|
||||
}
|
||||
Version{"2.1.37.1"}
|
||||
Version{"2.1.37.67"}
|
||||
}
|
||||
|
||||
@@ -1117,7 +1117,7 @@ fi{
|
||||
Variants%secondary{
|
||||
FONUPA{"suomalais-ugrilainen tarkekirjoitus"}
|
||||
}
|
||||
Version{"2.1.37.1"}
|
||||
Version{"2.1.37.67"}
|
||||
characterLabelPattern{
|
||||
all{"{0} – kaikki"}
|
||||
category-list{"{0}: {1}"}
|
||||
|
||||
@@ -190,7 +190,7 @@ fi{
|
||||
symbols{
|
||||
decimal{","}
|
||||
exponential{"E"}
|
||||
group{" "}
|
||||
group{" "}
|
||||
infinity{"∞"}
|
||||
list{";"}
|
||||
minusSign{"−"}
|
||||
@@ -214,7 +214,7 @@ fi{
|
||||
minimumGroupingDigits{"1"}
|
||||
native{"latn"}
|
||||
}
|
||||
Version{"2.1.37.1"}
|
||||
Version{"2.1.37.67"}
|
||||
calendar{
|
||||
buddhist{
|
||||
DateTimePatterns{
|
||||
@@ -675,9 +675,9 @@ fi{
|
||||
Ehm{"E h.mm a"}
|
||||
Ehms{"E h.mm.ss a"}
|
||||
Gy{"y G"}
|
||||
GyMMM{"LLLL y G"}
|
||||
GyMMMEd{"E d.M.y G"}
|
||||
GyMMMd{"d.M.y G"}
|
||||
GyMMM{"LLL y G"}
|
||||
GyMMMEd{"E d. MMM y G"}
|
||||
GyMMMd{"d. MMM y G"}
|
||||
H{"H"}
|
||||
Hm{"H.mm"}
|
||||
Hms{"H.mm.ss"}
|
||||
@@ -685,14 +685,14 @@ fi{
|
||||
Hmv{"H.mm v"}
|
||||
M{"L"}
|
||||
MEd{"E d.M."}
|
||||
MMM{"LLLL"}
|
||||
MMMEd{"ccc d.M."}
|
||||
MMM{"LLL"}
|
||||
MMMEd{"ccc d. MMM"}
|
||||
MMMMW{
|
||||
one{"LLLL'n' W. 'viikko'"}
|
||||
other{"LLLL'n' W. 'viikko'"}
|
||||
}
|
||||
MMMMd{"d. MMMM"}
|
||||
MMMd{"d.M."}
|
||||
MMMd{"d. MMM"}
|
||||
Md{"d.M."}
|
||||
d{"d"}
|
||||
h{"h a"}
|
||||
@@ -705,11 +705,11 @@ fi{
|
||||
yM{"L.y"}
|
||||
yMEd{"E d.M.y"}
|
||||
yMM{"M.y"}
|
||||
yMMM{"M.y"}
|
||||
yMMMEd{"E d.M.y"}
|
||||
yMMM{"LLL y"}
|
||||
yMMMEd{"E d. MMM y"}
|
||||
yMMMM{"LLLL y"}
|
||||
yMMMMccccd{"cccc d. MMMM y"}
|
||||
yMMMd{"d.M.y"}
|
||||
yMMMd{"d. MMM y"}
|
||||
yMd{"d.M.y"}
|
||||
yQQQ{"QQQ y"}
|
||||
yQQQQ{"QQQQ y"}
|
||||
|
||||
@@ -912,6 +912,11 @@ metaZones:table(nofallback){
|
||||
{
|
||||
"Africa_Eastern",
|
||||
"2000-01-15 10:00",
|
||||
"2017-10-31 21:00",
|
||||
}
|
||||
{
|
||||
"Africa_Central",
|
||||
"2017-10-31 21:00",
|
||||
"9999-12-31 23:59",
|
||||
}
|
||||
}
|
||||
@@ -1078,11 +1083,16 @@ metaZones:table(nofallback){
|
||||
{
|
||||
"Africa_Central",
|
||||
"1990-03-20 22:00",
|
||||
"1994-04-02 22:00",
|
||||
"1994-03-20 22:00",
|
||||
}
|
||||
{
|
||||
"Africa_Western",
|
||||
"1994-04-02 22:00",
|
||||
"1994-03-20 22:00",
|
||||
"2017-09-03 01:00",
|
||||
}
|
||||
{
|
||||
"Africa_Central",
|
||||
"2017-09-03 01:00",
|
||||
"9999-12-31 23:59",
|
||||
}
|
||||
}
|
||||
@@ -1637,6 +1647,11 @@ metaZones:table(nofallback){
|
||||
{
|
||||
"Atlantic",
|
||||
"2015-11-01 06:00",
|
||||
"2018-03-11 07:00",
|
||||
}
|
||||
{
|
||||
"America_Eastern",
|
||||
"2018-03-11 07:00",
|
||||
"9999-12-31 23:59",
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
// License & terms of use: http://www.unicode.org/copyright.html#License
|
||||
//---------------------------------------------------------
|
||||
// Build tool: tz2icu
|
||||
// Build date: Mon Mar 20 17:49:58 2017
|
||||
// Build date: Tue Oct 24 17:35:27 2017
|
||||
// tz database: ftp://ftp.iana.org/tz/
|
||||
// tz version: 2017b
|
||||
// ICU version: 59.1
|
||||
// tz version: 2017c
|
||||
// ICU version: 60.1
|
||||
//---------------------------------------------------------
|
||||
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
|
||||
// >> !!! >>> DO NOT EDIT <<< !!! <<
|
||||
//---------------------------------------------------------
|
||||
|
||||
zoneinfo64:table(nofallback) {
|
||||
TZVersion { "2017b" }
|
||||
TZVersion { "2017c" }
|
||||
Zones:array {
|
||||
/* ACT */ :int { 354 } //Z#0
|
||||
/* AET */ :int { 366 } //Z#1
|
||||
@@ -100,13 +100,16 @@ zoneinfo64:table(nofallback) {
|
||||
typeMap:bin { "010203020302" }
|
||||
links:intvector { 30, 44, 45 }
|
||||
} //Z#30
|
||||
/* Africa/Juba */ :int { 33 } //Z#31
|
||||
/* Africa/Juba */ :table {
|
||||
trans:intvector { -1230775588, 10360800, 24786000, 41810400, 56322000, 73432800, 87944400, 104882400, 119480400, 136332000, 151016400, 167781600, 182552400, 199231200, 214174800, 230680800, 245710800, 262735200, 277246800, 294184800, 308782800, 325634400, 340405200, 357084000, 371941200, 388533600, 403477200, 419983200, 435013200, 452037600, 466635600, 483487200, 498171600, 947930400 }
|
||||
typeOffsets:intvector { 7588, 0, 7200, 0, 7200, 3600, 10800, 0 }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020103" }
|
||||
} //Z#31
|
||||
/* Africa/Kampala */ :int { 48 } //Z#32
|
||||
/* Africa/Khartoum */ :table {
|
||||
trans:intvector { -1230775808, 10360800, 24786000, 41810400, 56322000, 73432800, 87944400, 104882400, 119480400, 136332000, 151016400, 167781600, 182552400, 199231200, 214174800, 230680800, 245710800, 262735200, 277246800, 294184800, 308782800, 325634400, 340405200, 357084000, 371941200, 388533600, 403477200, 419983200, 435013200, 452037600, 466635600, 483487200, 498171600, 947930400 }
|
||||
trans:intvector { -1230775808, 10360800, 24786000, 41810400, 56322000, 73432800, 87944400, 104882400, 119480400, 136332000, 151016400, 167781600, 182552400, 199231200, 214174800, 230680800, 245710800, 262735200, 277246800, 294184800, 308782800, 325634400, 340405200, 357084000, 371941200, 388533600, 403477200, 419983200, 435013200, 452037600, 466635600, 483487200, 498171600, 947930400, 1509483600 }
|
||||
typeOffsets:intvector { 7808, 0, 7200, 0, 7200, 3600, 10800, 0 }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020103" }
|
||||
links:intvector { 31, 33 }
|
||||
typeMap:bin { "0102010201020102010201020102010201020102010201020102010201020102010301" }
|
||||
} //Z#33
|
||||
/* Africa/Kigali */ :int { 43 } //Z#34
|
||||
/* Africa/Kinshasa */ :int { 36 } //Z#35
|
||||
@@ -167,17 +170,14 @@ zoneinfo64:table(nofallback) {
|
||||
} //Z#57
|
||||
/* Africa/Windhoek */ :table {
|
||||
transPre32:intvector { -1, 1836796792 }
|
||||
trans:intvector { -2109288600, -860976000, -845254800, 765324000, 778640400, 796780800, 810090000 }
|
||||
trans:intvector { -2109288600, -860976000, -845254800, 764200800, 778640400, 796780800, 810090000, 828835200, 841539600, 860284800, 873594000, 891734400, 905043600, 923184000, 936493200, 954633600, 967942800, 986083200, 999392400, 1018137600, 1030842000, 1049587200, 1062896400, 1081036800, 1094346000, 1112486400, 1125795600, 1143936000, 1157245200, 1175385600, 1188694800, 1207440000, 1220749200, 1238889600, 1252198800, 1270339200, 1283648400, 1301788800, 1315098000, 1333238400, 1346547600, 1365292800, 1377997200, 1396742400, 1410051600, 1428192000, 1441501200, 1459641600, 1472950800, 1491091200, 1504400400 }
|
||||
typeOffsets:intvector { 4104, 0, 3600, 0, 3600, 3600, 5400, 0, 7200, 0, 7200, 3600 }
|
||||
typeMap:bin { "0304050401020102" }
|
||||
finalRule { "Namibia" }
|
||||
finalRaw:int { 3600 }
|
||||
finalYear:int { 1996 }
|
||||
typeMap:bin { "03040504010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020104" }
|
||||
} //Z#58
|
||||
/* America/Adak */ :table {
|
||||
transPre32:intvector { -1, 1069611295, -1, 2106022494 }
|
||||
transPre32:intvector { -1, 1069743569, -1, 2106022494 }
|
||||
trans:intvector { -880196400, -765374400, -21466800, -5745600, 9982800, 25704000, 41432400, 57758400, 73486800, 89208000, 104936400, 120657600, 126709200, 152107200, 162392400, 183556800, 199285200, 215611200, 230734800, 247060800, 262789200, 278510400, 294238800, 309960000, 325688400, 341409600, 357138000, 372859200, 388587600, 404913600, 420037200, 436363200, 452088000, 467809200, 483537600, 499258800, 514987200, 530708400, 544622400, 562158000, 576072000, 594212400, 607521600, 625662000, 638971200, 657111600, 671025600, 688561200, 702475200, 720010800, 733924800, 752065200, 765374400, 783514800, 796824000, 814964400, 828878400, 846414000, 860328000, 877863600, 891777600, 909313200, 923227200, 941367600, 954676800, 972817200, 986126400, 1004266800, 1018180800, 1035716400, 1049630400, 1067166000, 1081080000, 1099220400, 1112529600, 1130670000, 1143979200, 1162119600, 1173614400, 1194174000 }
|
||||
typeOffsets:intvector { 44001, 0, -42398, 0, -39600, 0, -39600, 3600, -36000, 0, -36000, 3600 }
|
||||
typeOffsets:intvector { 44002, 0, -42398, 0, -39600, 0, -39600, 3600, -36000, 0, -36000, 3600 }
|
||||
typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020304050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }
|
||||
finalRule { "US" }
|
||||
finalRaw:int { -36000 }
|
||||
@@ -185,7 +185,7 @@ zoneinfo64:table(nofallback) {
|
||||
links:intvector { 59, 80, 615 }
|
||||
} //Z#59
|
||||
/* America/Anchorage */ :table {
|
||||
transPre32:intvector { -1, 1069604872, -1, 2106016072 }
|
||||
transPre32:intvector { -1, 1069743569, -1, 2106016072 }
|
||||
trans:intvector { -880200000, -765378000, -21470400, -5749200, 9979200, 25700400, 41428800, 57754800, 73483200, 89204400, 104932800, 120654000, 126705600, 152103600, 162388800, 183553200, 199281600, 215607600, 230731200, 247057200, 262785600, 278506800, 294235200, 309956400, 325684800, 341406000, 357134400, 372855600, 388584000, 404910000, 420033600, 436359600, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }
|
||||
typeOffsets:intvector { 50424, 0, -36000, 0, -36000, 3600, -35976, 0, -32400, 0, -32400, 3600 }
|
||||
typeMap:bin { "03010201020102010201020102010201020102010201020102010201020102010204050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }
|
||||
@@ -461,9 +461,9 @@ zoneinfo64:table(nofallback) {
|
||||
links:intvector { 109, 204, 543, 623 }
|
||||
} //Z#109
|
||||
/* America/Detroit */ :table {
|
||||
trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, -80499600, -68666400, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
|
||||
trans:intvector { -2051202469, -1724083200, -880218000, -765396000, -684349200, -671047200, 104914800, 120636000, 126687600, 152085600, 167814000, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
|
||||
typeOffsets:intvector { -19931, 0, -21600, 0, -18000, 0, -18000, 3600 }
|
||||
typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
|
||||
typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
|
||||
finalRule { "US" }
|
||||
finalRaw:int { -18000 }
|
||||
finalYear:int { 2008 }
|
||||
@@ -529,9 +529,12 @@ zoneinfo64:table(nofallback) {
|
||||
} //Z#121
|
||||
/* America/Grand_Turk */ :table {
|
||||
transPre32:intvector { -1, 1770462768 }
|
||||
trans:intvector { -1827687169, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000, 1205046000, 1225605600, 1236495600, 1257055200, 1268550000, 1289109600, 1299999600, 1320559200, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600 }
|
||||
trans:intvector { -1827687169, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600, 452070000, 467791200, 483519600, 499240800, 514969200, 530690400, 544604400, 562140000, 576054000, 594194400, 607503600, 625644000, 638953200, 657093600, 671007600, 688543200, 702457200, 719992800, 733906800, 752047200, 765356400, 783496800, 796806000, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954658800, 972799200, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000, 1205046000, 1225605600, 1236495600, 1257055200, 1268550000, 1289109600, 1299999600, 1320559200, 1331449200, 1352008800, 1362898800, 1383458400, 1394348400, 1414908000, 1425798000, 1446357600, 1520751600, 1541311200 }
|
||||
typeOffsets:intvector { -17072, 0, -18431, 0, -18000, 0, -18000, 3600, -14400, 0 }
|
||||
typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020304" }
|
||||
typeMap:bin { "010203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203040302" }
|
||||
finalRule { "US" }
|
||||
finalRaw:int { -18000 }
|
||||
finalYear:int { 2019 }
|
||||
} //Z#122
|
||||
/* America/Grenada */ :int { 186 } //Z#123
|
||||
/* America/Guadeloupe */ :int { 186 } //Z#124
|
||||
@@ -674,7 +677,7 @@ zoneinfo64:table(nofallback) {
|
||||
} //Z#142
|
||||
/* America/Jujuy */ :int { 68 } //Z#143
|
||||
/* America/Juneau */ :table {
|
||||
transPre32:intvector { -1, 1069601157, -1, 2106012357 }
|
||||
transPre32:intvector { -1, 1069743569, -1, 2106012357 }
|
||||
trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341402400, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }
|
||||
typeOffsets:intvector { 54139, 0, -32400, 0, -32400, 3600, -32261, 0, -28800, 0, -28800, 3600 }
|
||||
typeMap:bin { "03040504050405040504050405040504050405040504050405040204050405040501020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
|
||||
@@ -785,7 +788,7 @@ zoneinfo64:table(nofallback) {
|
||||
finalYear:int { 2003 }
|
||||
} //Z#163
|
||||
/* America/Metlakatla */ :table {
|
||||
transPre32:intvector { -1, 1069600474, -1, 2106011674 }
|
||||
transPre32:intvector { -1, 1069743569, -1, 2106011674 }
|
||||
trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 1446372000, 1457866800, 1478426400 }
|
||||
typeOffsets:intvector { 54822, 0, -32400, 0, -32400, 3600, -31578, 0, -28800, 0, -28800, 3600 }
|
||||
typeMap:bin { "03040504050405040504050405040504050405040504050405040504050405040504010201" }
|
||||
@@ -862,9 +865,9 @@ zoneinfo64:table(nofallback) {
|
||||
finalYear:int { 2008 }
|
||||
} //Z#174
|
||||
/* America/Nome */ :table {
|
||||
transPre32:intvector { -1, 1069608595, -1, 2106019794 }
|
||||
transPre32:intvector { -1, 1069743569, -1, 2106019794 }
|
||||
trans:intvector { -880196400, -765374400, -21466800, -5745600, 9982800, 25704000, 41432400, 57758400, 73486800, 89208000, 104936400, 120657600, 126709200, 152107200, 162392400, 183556800, 199285200, 215611200, 230734800, 247060800, 262789200, 278510400, 294238800, 309960000, 325688400, 341409600, 357138000, 372859200, 388587600, 404913600, 420037200, 436363200, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }
|
||||
typeOffsets:intvector { 46701, 0, -39698, 0, -39600, 0, -39600, 3600, -32400, 0, -32400, 3600 }
|
||||
typeOffsets:intvector { 46702, 0, -39698, 0, -39600, 0, -39600, 3600, -32400, 0, -32400, 3600 }
|
||||
typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020304050405040504050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }
|
||||
finalRule { "US" }
|
||||
finalRaw:int { -32400 }
|
||||
@@ -1056,7 +1059,7 @@ zoneinfo64:table(nofallback) {
|
||||
} //Z#203
|
||||
/* America/Shiprock */ :int { 109 } //Z#204
|
||||
/* America/Sitka */ :table {
|
||||
transPre32:intvector { -1, 1069601369, -1, 2106012569 }
|
||||
transPre32:intvector { -1, 1069743569, -1, 2106012569 }
|
||||
trans:intvector { -880207200, -765385200, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 126698400, 152096400, 162381600, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }
|
||||
typeOffsets:intvector { 53927, 0, -32473, 0, -32400, 0, -32400, 3600, -28800, 0, -28800, 3600 }
|
||||
typeMap:bin { "01040504050405040504050405040504050405040504050405040504050405040502030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
|
||||
@@ -1157,7 +1160,7 @@ zoneinfo64:table(nofallback) {
|
||||
links:intvector { 222, 384 }
|
||||
} //Z#222
|
||||
/* America/Yakutat */ :table {
|
||||
transPre32:intvector { -1, 1069602431, -1, 2106013631 }
|
||||
transPre32:intvector { -1, 1069743569, -1, 2106013631 }
|
||||
trans:intvector { -880203600, -765381600, -21474000, -5752800, 9975600, 25696800, 41425200, 57751200, 73479600, 89200800, 104929200, 120650400, 126702000, 152100000, 162385200, 183549600, 199278000, 215604000, 230727600, 247053600, 262782000, 278503200, 294231600, 309952800, 325681200, 341402400, 357130800, 372852000, 388580400, 404906400, 420030000, 436356000, 452084400, 467805600, 483534000, 499255200, 514983600, 530704800, 544618800, 562154400, 576068400, 594208800, 607518000, 625658400, 638967600, 657108000, 671022000, 688557600, 702471600, 720007200, 733921200, 752061600, 765370800, 783511200, 796820400, 814960800, 828874800, 846410400, 860324400, 877860000, 891774000, 909309600, 923223600, 941364000, 954673200, 972813600, 986122800, 1004263200, 1018177200, 1035712800, 1049626800, 1067162400, 1081076400, 1099216800, 1112526000, 1130666400, 1143975600, 1162116000, 1173610800, 1194170400 }
|
||||
typeOffsets:intvector { 52865, 0, -33535, 0, -32400, 0, -32400, 3600 }
|
||||
typeMap:bin { "01020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
|
||||
@@ -1365,9 +1368,12 @@ zoneinfo64:table(nofallback) {
|
||||
typeMap:bin { "010304030403040304030403040304030403040304030201" }
|
||||
} //Z#266
|
||||
/* Asia/Famagusta */ :table {
|
||||
trans:intvector { -1518920148, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1473282000 }
|
||||
trans:intvector { -1518920148, 166572000, 182293200, 200959200, 213829200, 228866400, 243982800, 260316000, 276123600, 291765600, 307486800, 323820000, 338936400, 354664800, 370386000, 386114400, 401835600, 417564000, 433285200, 449013600, 465339600, 481068000, 496789200, 512517600, 528238800, 543967200, 559688400, 575416800, 591138000, 606866400, 622587600, 638316000, 654642000, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 909277200, 922582800, 941331600, 954032400, 972781200, 985482000, 1004230800, 1017536400, 1035680400, 1048986000, 1067130000, 1080435600, 1099184400, 1111885200, 1130634000, 1143334800, 1162083600, 1174784400, 1193533200, 1206838800, 1224982800, 1238288400, 1256432400, 1269738000, 1288486800, 1301187600, 1319936400, 1332637200, 1351386000, 1364691600, 1382835600, 1396141200, 1414285200, 1427590800, 1445734800, 1459040400, 1473282000, 1509238800, 1521939600, 1540688400 }
|
||||
typeOffsets:intvector { 8148, 0, 7200, 0, 7200, 3600, 10800, 0 }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203" }
|
||||
typeMap:bin { "01020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203010201" }
|
||||
finalRule { "EUAsia" }
|
||||
finalRaw:int { 7200 }
|
||||
finalYear:int { 2019 }
|
||||
} //Z#267
|
||||
/* Asia/Gaza */ :table {
|
||||
transPre32:intvector { -1, 2109557424 }
|
||||
@@ -1462,10 +1468,10 @@ zoneinfo64:table(nofallback) {
|
||||
typeMap:bin { "01030403040304030403040304030403040304030403020103040304030403040304030403040304030403040304030403050605060506050605060506050605070503" }
|
||||
} //Z#285
|
||||
/* Asia/Kolkata */ :table {
|
||||
transPre32:intvector { -1, 1454805288 }
|
||||
trans:intvector { -891582800, -872058600, -862637400, -764145000 }
|
||||
typeOffsets:intvector { 21208, 0, 19800, 0, 19800, 3600, 21200, 0, 23400, 0 }
|
||||
typeMap:bin { "0304010201" }
|
||||
transPre32:intvector { -1, 649730088, -1, 1139272496 }
|
||||
trans:intvector { -2019705670, -891581400, -872058600, -862637400, -764145000 }
|
||||
typeOffsets:intvector { 21208, 0, 19270, 0, 19800, 0, 19800, 3600, 21200, 0 }
|
||||
typeMap:bin { "04010203020302" }
|
||||
links:intvector { 255, 286, 512 }
|
||||
} //Z#286
|
||||
/* Asia/Krasnoyarsk */ :table {
|
||||
@@ -1680,8 +1686,8 @@ zoneinfo64:table(nofallback) {
|
||||
typeMap:bin { "0103040304030403040304030403040304030403040302010304030403040304030403040304030403040304030403040304030403040304030403040304030503" }
|
||||
} //Z#332
|
||||
/* Asia/Yangon */ :table {
|
||||
trans:intvector { -1577946280, -873268200, -778410000 }
|
||||
typeOffsets:intvector { 23080, 0, 23400, 0, 32400, 0 }
|
||||
trans:intvector { -1577946287, -873268200, -778410000 }
|
||||
typeOffsets:intvector { 23087, 0, 23400, 0, 32400, 0 }
|
||||
typeMap:bin { "010201" }
|
||||
links:intvector { 307, 333 }
|
||||
} //Z#333
|
||||
@@ -2134,7 +2140,7 @@ zoneinfo64:table(nofallback) {
|
||||
} //Z#451
|
||||
/* Europe/Dublin */ :table {
|
||||
transPre32:intvector { -1, 1473317596 }
|
||||
trans:intvector { -1691962479, -1680471279, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -733359600, -719445600, -699490800, -684972000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600, 828234000, 846378000 }
|
||||
trans:intvector { -1691962479, -1680471279, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1507500000, -1490565600, -1473631200, -1460930400, -1442786400, -1428876000, -1410732000, -1396216800, -1379282400, -1364767200, -1348437600, -1333317600, -1315778400, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1189980000, -1175464800, -1159135200, -1143410400, -1126476000, -1111960800, -1095631200, -1080511200, -1063576800, -1049061600, -1032127200, -1017612000, -1001282400, -986162400, -969228000, -950479200, -942012000, -733356000, -719445600, -699487200, -684972000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, -386200800, -369266400, -354751200, -337816800, -323301600, -306972000, -291852000, -276732000, -257983200, -245282400, -226533600, -213228000, -195084000, -182383200, -163634400, -150933600, -132184800, -119484000, -100735200, -88034400, -68680800, -59004000, -37242000, 57722400, 69818400, 89172000, 101268000, 120621600, 132717600, 152071200, 164167200, 183520800, 196221600, 214970400, 227671200, 246420000, 259120800, 278474400, 290570400, 309924000, 322020000, 341373600, 354675600, 372819600, 386125200, 404269200, 417574800, 435718800, 449024400, 467773200, 481078800, 499222800, 512528400, 530672400, 543978000, 562122000, 575427600, 593571600, 606877200, 625626000, 638326800, 657075600, 670381200, 688525200, 701830800, 719974800, 733280400, 751424400, 764730000, 782874000, 796179600, 814323600, 828234000, 846378000 }
|
||||
typeOffsets:intvector { -1500, 0, -1521, 0, -1521, 3600, 0, 0, 0, 3600, 3600, 0 }
|
||||
typeMap:bin { "0102030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030405030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
|
||||
finalRule { "EU" }
|
||||
@@ -2537,7 +2543,7 @@ zoneinfo64:table(nofallback) {
|
||||
finalYear:int { 2008 }
|
||||
} //Z#549
|
||||
/* Pacific/Apia */ :table {
|
||||
transPre32:intvector { -1, 1439229312 }
|
||||
transPre32:intvector { -1, 1849542912 }
|
||||
trans:intvector { -1861878784, -631110600, 1285498800, 1301752800, 1316872800, 1325239200, 1333202400, 1348927200 }
|
||||
typeOffsets:intvector { 45184, 0, -41400, 0, -41216, 0, -39600, 0, -39600, 3600, 46800, 0, 46800, 3600 }
|
||||
typeMap:bin { "020103040304060506" }
|
||||
@@ -2701,7 +2707,7 @@ zoneinfo64:table(nofallback) {
|
||||
typeMap:bin { "01020102010201" }
|
||||
} //Z#576
|
||||
/* Pacific/Pago_Pago */ :table {
|
||||
transPre32:intvector { -1, 1439229064 }
|
||||
transPre32:intvector { -1, 1849542664 }
|
||||
trans:intvector { -1861879032 }
|
||||
typeOffsets:intvector { 45432, 0, -40968, 0, -39600, 0 }
|
||||
typeMap:bin { "0102" }
|
||||
@@ -2750,12 +2756,9 @@ zoneinfo64:table(nofallback) {
|
||||
} //Z#587
|
||||
/* Pacific/Tongatapu */ :table {
|
||||
transPre32:intvector { -1, 2117470136 }
|
||||
trans:intvector { -915193200, 939214800, 953384400, 973342800, 980596800, 1004792400, 1012046400, 1478350800, 1484398800, 1509800400 }
|
||||
trans:intvector { -915193200, 939214800, 953384400, 973342800, 980596800, 1004792400, 1012046400, 1478350800, 1484398800 }
|
||||
typeOffsets:intvector { 44360, 0, 44400, 0, 46800, 0, 46800, 3600 }
|
||||
typeMap:bin { "0102030203020302030203" }
|
||||
finalRule { "Tonga" }
|
||||
finalRaw:int { 46800 }
|
||||
finalYear:int { 2018 }
|
||||
typeMap:bin { "01020302030203020302" }
|
||||
} //Z#588
|
||||
/* Pacific/Truk */ :int { 554 } //Z#589
|
||||
/* Pacific/Wake */ :table {
|
||||
@@ -3104,7 +3107,7 @@ zoneinfo64:table(nofallback) {
|
||||
2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 3600
|
||||
} //_#11
|
||||
Fiji:intvector {
|
||||
10, 1, -1, 7200, 0, 0, 15, -1, 10800, 0, 3600
|
||||
10, 1, -1, 7200, 0, 0, 14, -1, 10800, 0, 3600
|
||||
} //_#12
|
||||
Haiti:intvector {
|
||||
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
|
||||
@@ -3133,39 +3136,33 @@ zoneinfo64:table(nofallback) {
|
||||
NZ:intvector {
|
||||
8, -30, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600
|
||||
} //_#21
|
||||
Namibia:intvector {
|
||||
8, 1, -1, 7200, 0, 3, 1, -1, 7200, 0, 3600
|
||||
} //_#22
|
||||
Palestine:intvector {
|
||||
2, -31, -7, 3600, 0, 9, -31, -7, 3600, 0, 3600
|
||||
} //_#23
|
||||
} //_#22
|
||||
Para:intvector {
|
||||
9, 1, -1, 0, 0, 2, 22, -1, 0, 0, 3600
|
||||
} //_#24
|
||||
} //_#23
|
||||
Syria:intvector {
|
||||
2, -31, -6, 0, 0, 9, -31, -6, 0, 0, 3600
|
||||
} //_#25
|
||||
} //_#24
|
||||
SystemV:intvector {
|
||||
3, -30, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600
|
||||
} //_#26
|
||||
} //_#25
|
||||
Thule:intvector {
|
||||
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
|
||||
} //_#27
|
||||
Tonga:intvector {
|
||||
10, 1, -1, 7200, 0, 0, 15, -1, 10800, 0, 3600
|
||||
} //_#28
|
||||
} //_#26
|
||||
Troll:intvector {
|
||||
2, -31, -1, 3600, 2, 9, -31, -1, 3600, 2, 7200
|
||||
} //_#29
|
||||
} //_#27
|
||||
US:intvector {
|
||||
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
|
||||
} //_#30
|
||||
} //_#28
|
||||
WS:intvector {
|
||||
8, -30, -1, 10800, 0, 3, 1, -1, 14400, 0, 3600
|
||||
} //_#31
|
||||
} //_#29
|
||||
Zion:intvector {
|
||||
2, 23, -6, 7200, 0, 9, -31, -1, 7200, 0, 3600
|
||||
} //_#32
|
||||
} //_#30
|
||||
}
|
||||
Regions:array {
|
||||
"AU", //Z#0 ACT
|
||||
|
||||
@@ -311,5 +311,5 @@ fi{
|
||||
MK{"EJT Makedonia"}
|
||||
TL{"Timor-Leste"}
|
||||
}
|
||||
Version{"2.1.37.1"}
|
||||
Version{"2.1.37.67"}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html#License
|
||||
fi{
|
||||
Version{"2.1.37.1"}
|
||||
Version{"2.1.37.67"}
|
||||
durationUnits{
|
||||
hm{"h.mm"}
|
||||
hms{"h.mm.ss"}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// © 2016 and later: Unicode, Inc. and others.
|
||||
// License & terms of use: http://www.unicode.org/copyright.html#License
|
||||
fi{
|
||||
Version{"2.1.37.1"}
|
||||
Version{"2.1.37.67"}
|
||||
zoneStrings{
|
||||
"Africa:Abidjan"{
|
||||
ec{"Abidjan"}
|
||||
|
||||
@@ -27,6 +27,11 @@ int32_t ClockMath::floorDivide(int32_t numerator, int32_t denominator) {
|
||||
numerator / denominator : ((numerator + 1) / denominator) - 1;
|
||||
}
|
||||
|
||||
int64_t ClockMath::floorDivide(int64_t numerator, int64_t denominator) {
|
||||
return (numerator >= 0) ?
|
||||
numerator / denominator : ((numerator + 1) / denominator) - 1;
|
||||
}
|
||||
|
||||
int32_t ClockMath::floorDivide(double numerator, int32_t denominator,
|
||||
int32_t& remainder) {
|
||||
double quotient;
|
||||
|
||||
@@ -40,6 +40,17 @@ class ClockMath {
|
||||
*/
|
||||
static int32_t floorDivide(int32_t numerator, int32_t denominator);
|
||||
|
||||
/**
|
||||
* Divide two integers, returning the floor of the quotient.
|
||||
* Unlike the built-in division, this is mathematically
|
||||
* well-behaved. E.g., <code>-1/4</code> => 0 but
|
||||
* <code>floorDivide(-1,4)</code> => -1.
|
||||
* @param numerator the numerator
|
||||
* @param denominator a divisor which must be != 0
|
||||
* @return the floor of the quotient
|
||||
*/
|
||||
static int64_t floorDivide(int64_t numerator, int64_t denominator);
|
||||
|
||||
/**
|
||||
* Divide two numbers, returning the floor of the quotient.
|
||||
* Unlike the built-in division, this is mathematically
|
||||
|
||||
@@ -8,8 +8,9 @@
|
||||
#include "number_affixutils.h"
|
||||
#include "unicode/utf16.h"
|
||||
|
||||
using namespace icu::number::impl;
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
int32_t AffixUtils::estimateLength(const CharSequence &patternString, UErrorCode &status) {
|
||||
AffixPatternState state = STATE_BASE;
|
||||
|
||||
@@ -49,6 +49,8 @@ struct AffixTag {
|
||||
// Exported as U_I18N_API because it is a base class for other exported types
|
||||
class U_I18N_API SymbolProvider {
|
||||
public:
|
||||
virtual ~SymbolProvider() = default;
|
||||
|
||||
// TODO: Could this be more efficient if it returned by reference?
|
||||
virtual UnicodeString getSymbol(AffixPatternType type) const = 0;
|
||||
};
|
||||
|
||||
@@ -13,8 +13,9 @@
|
||||
#include "charstr.h"
|
||||
#include "uresimp.h"
|
||||
|
||||
using namespace icu::number::impl;
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -316,6 +317,7 @@ void CompactHandler::processQuantity(DecimalQuantity &quantity, MicroProps &micr
|
||||
}
|
||||
|
||||
// FIXME: Deal with numDigits == 0 (Awaiting a test case)
|
||||
(void)numDigits;
|
||||
|
||||
// We already performed rounding. Do not perform it again.
|
||||
micros.rounding = Rounder::constructPassThrough();
|
||||
|
||||
@@ -16,8 +16,9 @@
|
||||
#include "number_roundingutils.h"
|
||||
#include "unicode/plurrule.h"
|
||||
|
||||
using namespace icu::number::impl;
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
namespace {
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
|
||||
#include "number_decimfmtprops.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
DecimalFormatProperties::DecimalFormatProperties() {
|
||||
|
||||
@@ -16,8 +16,6 @@
|
||||
#include "number_types.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
namespace number {
|
||||
namespace impl {
|
||||
|
||||
// Export an explicit template instantiation of the LocalPointer that is used as a
|
||||
// data member of CurrencyPluralInfoWrapper.
|
||||
@@ -29,6 +27,9 @@ template class U_I18N_API LocalPointerBase<CurrencyPluralInfo>;
|
||||
template class U_I18N_API LocalPointer<CurrencyPluralInfo>;
|
||||
#endif
|
||||
|
||||
namespace number {
|
||||
namespace impl {
|
||||
|
||||
// TODO: Figure out a nicer way to deal with CurrencyPluralInfo.
|
||||
// Exported as U_I18N_API because it is a public member field of exported DecimalFormatProperties
|
||||
struct U_I18N_API CurrencyPluralInfoWrapper {
|
||||
|
||||
@@ -247,33 +247,33 @@ LocalizedNumberFormatter::~LocalizedNumberFormatter() {
|
||||
}
|
||||
|
||||
FormattedNumber LocalizedNumberFormatter::formatInt(int64_t value, UErrorCode &status) const {
|
||||
if (U_FAILURE(status)) { return FormattedNumber(); }
|
||||
if (U_FAILURE(status)) { return FormattedNumber(U_ILLEGAL_ARGUMENT_ERROR); }
|
||||
auto results = new NumberFormatterResults();
|
||||
if (results == nullptr) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return FormattedNumber();
|
||||
return FormattedNumber(status);
|
||||
}
|
||||
results->quantity.setToLong(value);
|
||||
return formatImpl(results, status);
|
||||
}
|
||||
|
||||
FormattedNumber LocalizedNumberFormatter::formatDouble(double value, UErrorCode &status) const {
|
||||
if (U_FAILURE(status)) { return FormattedNumber(); }
|
||||
if (U_FAILURE(status)) { return FormattedNumber(U_ILLEGAL_ARGUMENT_ERROR); }
|
||||
auto results = new NumberFormatterResults();
|
||||
if (results == nullptr) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return FormattedNumber();
|
||||
return FormattedNumber(status);
|
||||
}
|
||||
results->quantity.setToDouble(value);
|
||||
return formatImpl(results, status);
|
||||
}
|
||||
|
||||
FormattedNumber LocalizedNumberFormatter::formatDecimal(StringPiece value, UErrorCode &status) const {
|
||||
if (U_FAILURE(status)) { return FormattedNumber(); }
|
||||
if (U_FAILURE(status)) { return FormattedNumber(U_ILLEGAL_ARGUMENT_ERROR); }
|
||||
auto results = new NumberFormatterResults();
|
||||
if (results == nullptr) {
|
||||
status = U_MEMORY_ALLOCATION_ERROR;
|
||||
return FormattedNumber();
|
||||
return FormattedNumber(status);
|
||||
}
|
||||
results->quantity.setToDecNumber(value);
|
||||
return formatImpl(results, status);
|
||||
@@ -317,28 +317,48 @@ LocalizedNumberFormatter::formatImpl(impl::NumberFormatterResults *results, UErr
|
||||
NumberFormatterImpl::applyStatic(fMacros, results->quantity, results->string, status);
|
||||
}
|
||||
|
||||
return FormattedNumber(results);
|
||||
// Do not save the results object if we encountered a failure.
|
||||
if (U_SUCCESS(status)) {
|
||||
return FormattedNumber(results);
|
||||
} else {
|
||||
delete results;
|
||||
return FormattedNumber(status);
|
||||
}
|
||||
}
|
||||
|
||||
UnicodeString FormattedNumber::toString() const {
|
||||
if (fResults == nullptr) { return {}; }
|
||||
if (fResults == nullptr) {
|
||||
// TODO: http://bugs.icu-project.org/trac/ticket/13437
|
||||
return {};
|
||||
}
|
||||
return fResults->string.toUnicodeString();
|
||||
}
|
||||
|
||||
Appendable &FormattedNumber::appendTo(Appendable &appendable) {
|
||||
if (fResults == nullptr) { return appendable; }
|
||||
if (fResults == nullptr) {
|
||||
// TODO: http://bugs.icu-project.org/trac/ticket/13437
|
||||
return appendable;
|
||||
}
|
||||
appendable.appendString(fResults->string.chars(), fResults->string.length());
|
||||
return appendable;
|
||||
}
|
||||
|
||||
void FormattedNumber::populateFieldPosition(FieldPosition &fieldPosition, UErrorCode &status) {
|
||||
if (fResults == nullptr) { return; }
|
||||
if (U_FAILURE(status)) { return; }
|
||||
if (fResults == nullptr) {
|
||||
status = fErrorCode;
|
||||
return;
|
||||
}
|
||||
fResults->string.populateFieldPosition(fieldPosition, 0, status);
|
||||
}
|
||||
|
||||
void
|
||||
FormattedNumber::populateFieldPositionIterator(FieldPositionIterator &iterator, UErrorCode &status) {
|
||||
if (fResults == nullptr) { return; }
|
||||
if (U_FAILURE(status)) { return; }
|
||||
if (fResults == nullptr) {
|
||||
status = fErrorCode;
|
||||
return;
|
||||
}
|
||||
fResults->string.populateFieldPositionIterator(iterator, status);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#include "number_compact.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -8,7 +8,9 @@
|
||||
#include "unicode/numberformatter.h"
|
||||
#include "number_patternstring.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
Grouper Grouper::defaults() {
|
||||
return {-2, -2, false};
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include "number_types.h"
|
||||
#include "number_decimalquantity.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
@@ -21,7 +22,7 @@ IntegerWidth IntegerWidth::zeroFillTo(int32_t minInt) {
|
||||
if (minInt >= 0 && minInt <= kMaxIntFracSig) {
|
||||
return {static_cast<int8_t>(minInt), -1};
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,7 +31,7 @@ IntegerWidth IntegerWidth::truncateAt(int32_t maxInt) {
|
||||
if (maxInt >= 0 && maxInt <= kMaxIntFracSig) {
|
||||
return {fUnion.minMaxInt.fMinInt, static_cast<int8_t>(maxInt)};
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include "cstring.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "number_modifiers.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "unicode/numberformatter.h"
|
||||
#include "number_types.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
@@ -59,7 +60,7 @@ ScientificNotation::withMinExponentDigits(int32_t minExponentDigits) const {
|
||||
NotationUnion union_ = {settings};
|
||||
return {NTN_SCIENTIFIC, union_};
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
#include "number_types.h"
|
||||
#include "number_stringbuilder.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
namespace {
|
||||
@@ -41,7 +43,7 @@ Padder Padder::codePoints(UChar32 cp, int32_t targetWidth, UNumberFormatPadPosit
|
||||
if (targetWidth >= 0) {
|
||||
return {cp, targetWidth, position};
|
||||
} else {
|
||||
return {U_NUMBER_PADDING_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_PADDING_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "unicode/unistr.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
MutablePatternModifier::MutablePatternModifier(bool isStrong) : fStrong(isStrong) {}
|
||||
|
||||
@@ -15,11 +15,6 @@
|
||||
#include "number_utils.h"
|
||||
|
||||
U_NAMESPACE_BEGIN
|
||||
namespace number {
|
||||
namespace impl {
|
||||
|
||||
// Forward declaration
|
||||
class MutablePatternModifier;
|
||||
|
||||
// Export an explicit template instantiation of the LocalPointer that is used as a
|
||||
// data member of ParameterizedModifier.
|
||||
@@ -27,10 +22,16 @@ class MutablePatternModifier;
|
||||
#if defined (_MSC_VER)
|
||||
// Ignore warning 4661 as LocalPointerBase does not use operator== or operator!=
|
||||
#pragma warning(suppress: 4661)
|
||||
template class U_I18N_API LocalPointerBase<ParameterizedModifier>;
|
||||
template class U_I18N_API LocalPointer<ParameterizedModifier>;
|
||||
template class U_I18N_API LocalPointerBase<number::impl::ParameterizedModifier>;
|
||||
template class U_I18N_API LocalPointer<number::impl::ParameterizedModifier>;
|
||||
#endif
|
||||
|
||||
namespace number {
|
||||
namespace impl {
|
||||
|
||||
// Forward declaration
|
||||
class MutablePatternModifier;
|
||||
|
||||
// Exported as U_I18N_API because it is needed for the unit test PatternModifierTest
|
||||
class U_I18N_API ImmutablePatternModifier : public MicroPropsGenerator, public UMemory {
|
||||
public:
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "number_utils.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
void PatternParser::parseToPatternInfo(const UnicodeString& patternString, ParsedPatternInfo& patternInfo, UErrorCode &status) {
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "number_types.h"
|
||||
#include "number_decimalquantity.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
@@ -57,7 +58,7 @@ FractionRounder Rounder::fixedFraction(int32_t minMaxFractionPlaces) {
|
||||
if (minMaxFractionPlaces >= 0 && minMaxFractionPlaces <= kMaxIntFracSig) {
|
||||
return constructFraction(minMaxFractionPlaces, minMaxFractionPlaces);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +66,7 @@ FractionRounder Rounder::minFraction(int32_t minFractionPlaces) {
|
||||
if (minFractionPlaces >= 0 && minFractionPlaces <= kMaxIntFracSig) {
|
||||
return constructFraction(minFractionPlaces, -1);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +74,7 @@ FractionRounder Rounder::maxFraction(int32_t maxFractionPlaces) {
|
||||
if (maxFractionPlaces >= 0 && maxFractionPlaces <= kMaxIntFracSig) {
|
||||
return constructFraction(0, maxFractionPlaces);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -82,7 +83,7 @@ FractionRounder Rounder::minMaxFraction(int32_t minFractionPlaces, int32_t maxFr
|
||||
minFractionPlaces <= maxFractionPlaces) {
|
||||
return constructFraction(minFractionPlaces, maxFractionPlaces);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,7 +91,7 @@ Rounder Rounder::fixedDigits(int32_t minMaxSignificantDigits) {
|
||||
if (minMaxSignificantDigits >= 0 && minMaxSignificantDigits <= kMaxIntFracSig) {
|
||||
return constructSignificant(minMaxSignificantDigits, minMaxSignificantDigits);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,7 +99,7 @@ Rounder Rounder::minDigits(int32_t minSignificantDigits) {
|
||||
if (minSignificantDigits >= 0 && minSignificantDigits <= kMaxIntFracSig) {
|
||||
return constructSignificant(minSignificantDigits, -1);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,7 +107,7 @@ Rounder Rounder::maxDigits(int32_t maxSignificantDigits) {
|
||||
if (maxSignificantDigits >= 0 && maxSignificantDigits <= kMaxIntFracSig) {
|
||||
return constructSignificant(0, maxSignificantDigits);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -115,7 +116,7 @@ Rounder Rounder::minMaxDigits(int32_t minSignificantDigits, int32_t maxSignifica
|
||||
minSignificantDigits <= maxSignificantDigits) {
|
||||
return constructSignificant(minSignificantDigits, maxSignificantDigits);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -123,7 +124,7 @@ IncrementRounder Rounder::increment(double roundingIncrement) {
|
||||
if (roundingIncrement > 0.0) {
|
||||
return constructIncrement(roundingIncrement, 0);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -141,7 +142,7 @@ Rounder FractionRounder::withMinDigits(int32_t minSignificantDigits) const {
|
||||
if (minSignificantDigits >= 0 && minSignificantDigits <= kMaxIntFracSig) {
|
||||
return constructFractionSignificant(*this, minSignificantDigits, -1);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +151,7 @@ Rounder FractionRounder::withMaxDigits(int32_t maxSignificantDigits) const {
|
||||
if (maxSignificantDigits >= 0 && maxSignificantDigits <= kMaxIntFracSig) {
|
||||
return constructFractionSignificant(*this, -1, maxSignificantDigits);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +185,7 @@ Rounder IncrementRounder::withMinFraction(int32_t minFrac) const {
|
||||
if (minFrac >= 0 && minFrac <= kMaxIntFracSig) {
|
||||
return constructIncrement(fUnion.increment.fIncrement, minFrac);
|
||||
} else {
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR};
|
||||
return {U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
#include "number_stringbuilder.h"
|
||||
#include "unicode/unum.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
// NOTE: The object lifecycle of ScientificModifier and ScientificHandler differ greatly in Java and C++.
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#include "uvectr32.h"
|
||||
|
||||
using namespace icu;
|
||||
using namespace icu::number;
|
||||
using namespace icu::number::impl;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -43,8 +43,8 @@ static constexpr char16_t kFallbackPaddingString[] = u" ";
|
||||
static constexpr char16_t kDefaultCurrency[] = u"XXX";
|
||||
|
||||
// FIXME: New error codes:
|
||||
static constexpr UErrorCode U_NUMBER_DIGIT_WIDTH_OUT_OF_RANGE_ERROR = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
static constexpr UErrorCode U_NUMBER_PADDING_WIDTH_OUT_OF_RANGE_ERROR = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
static constexpr UErrorCode U_NUMBER_DIGIT_WIDTH_OUTOFBOUNDS_ERROR = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
static constexpr UErrorCode U_NUMBER_PADDING_WIDTH_OUTOFBOUNDS_ERROR = U_ILLEGAL_ARGUMENT_ERROR;
|
||||
|
||||
// Forward declarations:
|
||||
|
||||
|
||||
@@ -213,7 +213,7 @@ void PersianCalendar::handleComputeFields(int32_t julianDay, UErrorCode &/*statu
|
||||
int32_t year, month, dayOfMonth, dayOfYear;
|
||||
|
||||
int32_t daysSinceEpoch = julianDay - PERSIAN_EPOCH;
|
||||
year = 1 + ClockMath::floorDivide(33 * daysSinceEpoch + 3, 12053);
|
||||
year = 1 + (int32_t)ClockMath::floorDivide(33 * (int64_t)daysSinceEpoch + 3, (int64_t)12053);
|
||||
|
||||
int32_t farvardin1 = 365 * (year - 1) + ClockMath::floorDivide(8 * year + 21, 33);
|
||||
dayOfYear = (daysSinceEpoch - farvardin1); // 0-based
|
||||
|
||||
@@ -789,7 +789,9 @@ AndConstraint::isFulfilled(const IFixedDecimal &number) {
|
||||
// An empty AndConstraint, created by a rule with a keyword but no following expression.
|
||||
return TRUE;
|
||||
}
|
||||
double n = number.getPluralOperand(digitsType); // pulls n | i | v | f value for the number.
|
||||
|
||||
PluralOperand operand = tokenTypeToPluralOperand(digitsType);
|
||||
double n = number.getPluralOperand(operand); // pulls n | i | v | f value for the number.
|
||||
// Will always be positive.
|
||||
// May be non-integer (n option only)
|
||||
do {
|
||||
@@ -1405,6 +1407,24 @@ PluralKeywordEnumeration::count(UErrorCode& /*status*/) const {
|
||||
PluralKeywordEnumeration::~PluralKeywordEnumeration() {
|
||||
}
|
||||
|
||||
PluralOperand tokenTypeToPluralOperand(tokenType tt) {
|
||||
switch(tt) {
|
||||
case tVariableN:
|
||||
return PLURAL_OPERAND_N;
|
||||
case tVariableI:
|
||||
return PLURAL_OPERAND_I;
|
||||
case tVariableF:
|
||||
return PLURAL_OPERAND_F;
|
||||
case tVariableV:
|
||||
return PLURAL_OPERAND_V;
|
||||
case tVariableT:
|
||||
return PLURAL_OPERAND_T;
|
||||
default:
|
||||
U_ASSERT(FALSE); // unexpected.
|
||||
return PLURAL_OPERAND_N;
|
||||
}
|
||||
}
|
||||
|
||||
IFixedDecimal::~IFixedDecimal() = default;
|
||||
|
||||
FixedDecimal::FixedDecimal(const VisibleDigits &digits) {
|
||||
|
||||
@@ -221,6 +221,12 @@ enum PluralOperand {
|
||||
PLURAL_OPERAND_J
|
||||
};
|
||||
|
||||
/**
|
||||
* Converts from the tokenType enum to PluralOperand. Asserts that the given
|
||||
* tokenType can be mapped to a PluralOperand.
|
||||
*/
|
||||
PluralOperand tokenTypeToPluralOperand(tokenType tt);
|
||||
|
||||
/**
|
||||
* An interface to FixedDecimal, allowing for other implementations.
|
||||
* @internal
|
||||
@@ -235,25 +241,6 @@ class U_I18N_API IFixedDecimal {
|
||||
*/
|
||||
virtual double getPluralOperand(PluralOperand operand) const = 0;
|
||||
|
||||
/** Converts from the tokenType enum to PluralOperand. */
|
||||
virtual double getPluralOperand(tokenType tt) const {
|
||||
switch(tt) {
|
||||
case tVariableN:
|
||||
return getPluralOperand(PLURAL_OPERAND_N);
|
||||
case tVariableI:
|
||||
return getPluralOperand(PLURAL_OPERAND_I);
|
||||
case tVariableF:
|
||||
return getPluralOperand(PLURAL_OPERAND_F);
|
||||
case tVariableV:
|
||||
return getPluralOperand(PLURAL_OPERAND_V);
|
||||
case tVariableT:
|
||||
return getPluralOperand(PLURAL_OPERAND_T);
|
||||
default:
|
||||
U_ASSERT(FALSE); // unexpected.
|
||||
return 0.0;
|
||||
}
|
||||
}
|
||||
|
||||
virtual bool isNaN() const = 0;
|
||||
|
||||
virtual bool isInfinite() const = 0;
|
||||
|
||||
@@ -3202,7 +3202,7 @@ int32_t SimpleDateFormat::subParse(const UnicodeString& text, int32_t& start, UC
|
||||
|
||||
case UDAT_FRACTIONAL_SECOND_FIELD:
|
||||
// Fractional seconds left-justify
|
||||
i = pos.getIndex() - start;
|
||||
i = countDigits(text, start, pos.getIndex());
|
||||
if (i < 3) {
|
||||
while (i < 3) {
|
||||
value *= 10;
|
||||
@@ -3728,6 +3728,19 @@ void SimpleDateFormat::parseInt(const UnicodeString& text,
|
||||
}
|
||||
}
|
||||
|
||||
int32_t SimpleDateFormat::countDigits(const UnicodeString& text, int32_t start, int32_t end) const {
|
||||
int32_t numDigits = 0;
|
||||
int32_t idx = start;
|
||||
while (idx < end) {
|
||||
UChar32 cp = text.char32At(idx);
|
||||
if (u_isdigit(cp)) {
|
||||
numDigits++;
|
||||
}
|
||||
idx += U16_LENGTH(cp);
|
||||
}
|
||||
return numDigits;
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
void SimpleDateFormat::translatePattern(const UnicodeString& originalPattern,
|
||||
|
||||
@@ -1869,8 +1869,8 @@ TimeZoneFormat::parseOffsetFieldsWithPattern(const UnicodeString& text, int32_t
|
||||
// leading space characters might be truncated. If the first pattern text
|
||||
// starts with such character (e.g. Bidi control), then we need to
|
||||
// skip the leading space charcters.
|
||||
if (!PatternProps::isWhiteSpace(text.char32At(idx))) {
|
||||
for (;;) {
|
||||
if (idx < text.length() && !PatternProps::isWhiteSpace(text.char32At(idx))) {
|
||||
while (len > 0) {
|
||||
UChar32 ch;
|
||||
int32_t chLen;
|
||||
U16_GET(patStr, 0, 0, len, ch)
|
||||
|
||||
@@ -465,8 +465,15 @@ ucol_prepareShortStringOpen( const char *definition,
|
||||
UResourceBundle *collElem = NULL;
|
||||
char keyBuffer[256];
|
||||
// if there is a keyword, we pick it up and try to get elements
|
||||
if(!uloc_getKeywordValue(buffer, "collation", keyBuffer, 256, status)) {
|
||||
// no keyword. we try to find the default setting, which will give us the keyword value
|
||||
int32_t keyLen = uloc_getKeywordValue(buffer, "collation", keyBuffer, sizeof(keyBuffer), status);
|
||||
// Treat too long a value as no keyword.
|
||||
if(keyLen >= (int32_t)sizeof(keyBuffer)) {
|
||||
keyLen = 0;
|
||||
*status = U_ZERO_ERROR;
|
||||
}
|
||||
if(keyLen == 0) {
|
||||
// no keyword
|
||||
// we try to find the default setting, which will give us the keyword value
|
||||
UResourceBundle *defaultColl = ures_getByKeyWithFallback(collations, "default", NULL, status);
|
||||
if(U_SUCCESS(*status)) {
|
||||
int32_t defaultKeyLen = 0;
|
||||
|
||||
@@ -1853,8 +1853,8 @@ class U_I18N_API LocalizedNumberFormatter
|
||||
* <p>
|
||||
* This function is very hot, being called in every call to the number formatting pipeline.
|
||||
*
|
||||
* @param fq
|
||||
* The quantity to be formatted.
|
||||
* @param results
|
||||
* The results object. This method takes ownership.
|
||||
* @return The formatted number result.
|
||||
*/
|
||||
FormattedNumber formatImpl(impl::NumberFormatterResults *results, UErrorCode &status) const;
|
||||
@@ -1941,10 +1941,14 @@ class U_I18N_API FormattedNumber : public UMemory {
|
||||
// Can't use LocalPointer because NumberFormatterResults is forward-declared
|
||||
const impl::NumberFormatterResults *fResults;
|
||||
|
||||
// Default constructor for error states
|
||||
FormattedNumber() : fResults(nullptr) {}
|
||||
// Error code for the terminal methods
|
||||
UErrorCode fErrorCode;
|
||||
|
||||
explicit FormattedNumber(impl::NumberFormatterResults *results) : fResults(results) {}
|
||||
explicit FormattedNumber(impl::NumberFormatterResults *results)
|
||||
: fResults(results), fErrorCode(U_ZERO_ERROR) {};
|
||||
|
||||
explicit FormattedNumber(UErrorCode errorCode)
|
||||
: fResults(nullptr), fErrorCode(errorCode) {};
|
||||
|
||||
// To give LocalizedNumberFormatter format methods access to this class's constructor:
|
||||
friend class LocalizedNumberFormatter;
|
||||
|
||||
@@ -1433,6 +1433,16 @@ private:
|
||||
int32_t checkIntSuffix(const UnicodeString& text, int32_t start,
|
||||
int32_t patLoc, UBool isNegative) const;
|
||||
|
||||
/**
|
||||
* Counts number of digit code points in the specified text.
|
||||
*
|
||||
* @param text input text
|
||||
* @param start start index, inclusive
|
||||
* @param end end index, exclusive
|
||||
* @return number of digits found in the text in the specified range.
|
||||
*/
|
||||
int32_t countDigits(const UnicodeString& text, int32_t start, int32_t end) const;
|
||||
|
||||
/**
|
||||
* Translate a pattern, mapping each character in the from string to the
|
||||
* corresponding character in the to string. Return an error if the original
|
||||
|
||||
@@ -417,7 +417,7 @@ CalendarLimitTest::doLimitsTest(Calendar& cal,
|
||||
}
|
||||
if (maxActual < maxLow || maxActual > maxHigh) {
|
||||
if ( uprv_strcmp(cal.getType(), "chinese") == 0 &&
|
||||
testMillis >= 2842992000000.0 && testMillis <= 2906668800000.0 &&
|
||||
testMillis >= 1802044800000.0 &&
|
||||
logKnownIssue("12620", "chinese calendar failures for some actualMax tests")) {
|
||||
logln((UnicodeString)"KnownFail: [" + cal.getType() + "] " +
|
||||
ymdToString(cal, ymd) +
|
||||
@@ -444,7 +444,7 @@ CalendarLimitTest::doLimitsTest(Calendar& cal,
|
||||
", allowed=(" + minLow + ".." + minHigh + ")..(" +
|
||||
maxLow + ".." + maxHigh + ")");
|
||||
} else if ( uprv_strcmp(cal.getType(), "chinese") == 0 &&
|
||||
testMillis >= 2842992000000.0 && testMillis <= 2906668800000.0 &&
|
||||
testMillis >= 1832544000000.0 &&
|
||||
logKnownIssue("12620", "chinese calendar failures for some actualMax tests")) {
|
||||
logln((UnicodeString)"KnownFail: [" + cal.getType() + "] " +
|
||||
ymdToString(cal, ymd) +
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#include "calregts.h"
|
||||
|
||||
#include "unicode/calendar.h"
|
||||
#include "unicode/gregocal.h"
|
||||
#include "unicode/simpletz.h"
|
||||
#include "unicode/smpdtfmt.h"
|
||||
@@ -91,6 +92,7 @@ CalendarRegressionTest::runIndexedTest( int32_t index, UBool exec, const char* &
|
||||
CASE(49,Test9019);
|
||||
CASE(50,TestT9452);
|
||||
CASE(51,TestT11632);
|
||||
CASE(52,TestPersianCalOverflow);
|
||||
default: name = ""; break;
|
||||
}
|
||||
}
|
||||
@@ -2985,6 +2987,36 @@ void CalendarRegressionTest::TestT11632(void) {
|
||||
assertEquals("correct datetime displayed for hour value", UnicodeString("1970-01-13T12:00:00"), dstr);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @bug ticket 13454
|
||||
*/
|
||||
void CalendarRegressionTest::TestPersianCalOverflow(void) {
|
||||
const char* localeID = "bs_Cyrl@calendar=persian";
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
Calendar* cal = Calendar::createInstance(Locale(localeID), status);
|
||||
if(U_FAILURE(status)) {
|
||||
dataerrln("FAIL: Calendar::createInstance for localeID %s: %s", localeID, u_errorName(status));
|
||||
} else {
|
||||
int32_t maxMonth = cal->getMaximum(UCAL_MONTH);
|
||||
int32_t maxDayOfMonth = cal->getMaximum(UCAL_DATE);
|
||||
int32_t jd, month, dayOfMonth;
|
||||
for (jd = 67023580; jd <= 67023584; jd++) { // year 178171, int32_t overflow if jd >= 67023582
|
||||
status = U_ZERO_ERROR;
|
||||
cal->clear();
|
||||
cal->set(UCAL_JULIAN_DAY, jd);
|
||||
month = cal->get(UCAL_MONTH, status);
|
||||
dayOfMonth = cal->get(UCAL_DATE, status);
|
||||
if ( U_FAILURE(status) ) {
|
||||
errln("FAIL: Calendar->get MONTH/DATE for localeID %s, julianDay %d, status %s\n", localeID, jd, u_errorName(status));
|
||||
} else if (month > maxMonth || dayOfMonth > maxDayOfMonth) {
|
||||
errln("FAIL: localeID %s, julianDay %d; maxMonth %d, got month %d; maxDayOfMonth %d, got dayOfMonth %d\n",
|
||||
localeID, jd, maxMonth, month, maxDayOfMonth, dayOfMonth);
|
||||
}
|
||||
}
|
||||
delete cal;
|
||||
}
|
||||
}
|
||||
|
||||
#endif /* #if !UCONFIG_NO_FORMATTING */
|
||||
|
||||
@@ -78,6 +78,7 @@ public:
|
||||
void Test9019(void);
|
||||
void TestT9452(void);
|
||||
void TestT11632(void);
|
||||
void TestPersianCalOverflow(void);
|
||||
|
||||
void printdate(GregorianCalendar *cal, const char *string);
|
||||
void dowTest(UBool lenient) ;
|
||||
|
||||
@@ -143,11 +143,11 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
|
||||
|
||||
// fi // 3 fi
|
||||
UnicodeString("1.1999"), // 00: yM (fixed expected result per ticket:6626:)
|
||||
UnicodeString("1.1999"), // 01: yMMM
|
||||
UnicodeString("tammi 1999"), // 01: yMMM
|
||||
UnicodeString("13.1.1999"), // 02: yMd
|
||||
UnicodeString("13.1.1999"), // 03: yMMMd
|
||||
UnicodeString("13. tammik. 1999"), // 03: yMMMd
|
||||
UnicodeString("13.1."), // 04: Md
|
||||
UnicodeString("13.1."), // 05: MMMd
|
||||
UnicodeString("13. tammik."), // 05: MMMd
|
||||
UnicodeString("13. tammikuuta"), // 06: MMMMd
|
||||
UnicodeString("1. nelj. 1999"), // 07: yQQQ
|
||||
UnicodeString("11.58 ip."), // 08: hhmm
|
||||
@@ -155,7 +155,7 @@ void IntlTestDateTimePatternGeneratorAPI::testAPI(/*char *par*/)
|
||||
UnicodeString("23.58"), // 10: jjmm
|
||||
UnicodeString("58.59"), // 11: mmss
|
||||
UnicodeString("tammikuu 1999"), // 12: yyyyMMMM
|
||||
UnicodeString("ke 13.1."), // 13: MMMEd -> EEE d. MMM
|
||||
UnicodeString("ke 13. tammik."), // 13: MMMEd -> EEE d. MMM
|
||||
UnicodeString("ke 13."), // 14: Ed -> ccc d.
|
||||
UnicodeString("23.58.59,123"), // 15: jmmssSSS -> "H.mm.ss,SSS"
|
||||
UnicodeString("23.58"), // 16: JJmm
|
||||
|
||||
@@ -1422,12 +1422,19 @@ void NumberFormatterApiTest::errors() {
|
||||
-1));
|
||||
|
||||
{
|
||||
UErrorCode status = U_ZERO_ERROR;
|
||||
lnf.formatInt(1, status);
|
||||
UErrorCode status1 = U_ZERO_ERROR;
|
||||
UErrorCode status2 = U_ZERO_ERROR;
|
||||
FormattedNumber fn = lnf.formatInt(1, status1);
|
||||
assertEquals(
|
||||
"Should fail with U_ILLEGAL_ARGUMENT_ERROR since rounder is not legal",
|
||||
U_ILLEGAL_ARGUMENT_ERROR,
|
||||
status);
|
||||
status1);
|
||||
FieldPosition fp;
|
||||
fn.populateFieldPosition(fp, status2);
|
||||
assertEquals(
|
||||
"Should fail with U_ILLEGAL_ARGUMENT_ERROR on terminal method",
|
||||
U_ILLEGAL_ARGUMENT_ERROR,
|
||||
status2);
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@@ -425,19 +425,19 @@ UBool NumberFormatTestDataDriven::isParsePass(
|
||||
return TRUE; // TRUE because failure handling is in the test suite
|
||||
}
|
||||
if (tuple.output == "NaN") {
|
||||
if (!std::isnan(result.getDouble())) {
|
||||
if (!uprv_isNaN(result.getDouble())) {
|
||||
appendErrorMessage.append("Expected NaN, but got: " + resultStr);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
} else if (tuple.output == "Inf") {
|
||||
if (!std::isinf(result.getDouble()) || result.getDouble() < 0) {
|
||||
if (!uprv_isInfinite(result.getDouble()) || result.getDouble() < 0) {
|
||||
appendErrorMessage.append("Expected Inf, but got: " + resultStr);
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
} else if (tuple.output == "-Inf") {
|
||||
if (!std::isinf(result.getDouble()) || result.getDouble() > 0) {
|
||||
if (!uprv_isInfinite(result.getDouble()) || result.getDouble() > 0) {
|
||||
appendErrorMessage.append("Expected -Inf, but got: " + resultStr);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -1003,6 +1003,9 @@ void StringCaseTest::TestCopyMoveEdits() {
|
||||
assertEquals("b remains: many edits, length delta", 250, b.lengthDelta());
|
||||
TestUtility::checkEqualEdits(*this, u"c = b", b, c, errorCode);
|
||||
|
||||
// std::move trouble on these platforms.
|
||||
// See https://ssl.icu-project.org/trac/ticket/13393
|
||||
#if !UPRV_INCOMPLETE_CPP11_SUPPORT && !(U_PLATFORM == U_PF_AIX || U_PLATFORM == U_PF_OS390)
|
||||
// move constructor empties object with heap array
|
||||
Edits d(std::move(a));
|
||||
assertEquals("d: move-constructed many edits, length delta", 250, d.lengthDelta());
|
||||
@@ -1029,6 +1032,7 @@ void StringCaseTest::TestCopyMoveEdits() {
|
||||
assertSuccess("iter.next()", errorCode);
|
||||
assertTrue("iter.hasChange()", iter.hasChange());
|
||||
assertEquals("iter.newLength()", 1, iter.newLength());
|
||||
#endif
|
||||
}
|
||||
|
||||
void StringCaseTest::TestEditsFindFwdBwd() {
|
||||
|
||||
@@ -484,7 +484,7 @@ TimeZoneFormatTest::TestTimeRoundTrip(void) {
|
||||
Locale("ko_KR"), Locale("nb_NO"), Locale("nl_NL"), Locale("nn_NO"), Locale("pl_PL"),
|
||||
Locale("pt"), Locale("pt_BR"), Locale("pt_PT"), Locale("ru_RU"), Locale("sv_SE"),
|
||||
Locale("th_TH"), Locale("tr_TR"), Locale("zh"), Locale("zh_Hans"), Locale("zh_Hans_CN"),
|
||||
Locale("zh_Hant"), Locale("zh_Hant_TW")
|
||||
Locale("zh_Hant"), Locale("zh_Hant_TW"), Locale("fa"), Locale("ccp")
|
||||
};
|
||||
|
||||
if (bTestAll) {
|
||||
@@ -601,7 +601,8 @@ void TimeZoneFormatTest::RunTimeRoundTripTests(int32_t threadNumber) {
|
||||
}
|
||||
}
|
||||
|
||||
if (*tzid == "Pacific/Apia" && uprv_strcmp(PATTERNS[patidx], "vvvv") == 0
|
||||
if ((*tzid == "Pacific/Apia" || *tzid == "Pacific/Midway" || *tzid == "Pacific/Pago_Pago")
|
||||
&& uprv_strcmp(PATTERNS[patidx], "vvvv") == 0
|
||||
&& logKnownIssue("11052", "Ambiguous zone name - Samoa Time")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -74,6 +74,10 @@ tzorig: $(TZCODE) $(TZDATA)
|
||||
cp $(srcdir)/zdump.c $(TZORIG)/zdump.c
|
||||
-mv $(TZORIG)/factory $(TZORIG)/factory.orig
|
||||
cat $(TZORIG)/factory.orig $(srcdir)/icuzones > $(TZORIG)/factory
|
||||
-mv $(TZORIG)/zishrink.awk $(TZORIG)/zishrink.awk.orig
|
||||
sed -e '/if (line ~ \/^R SystemV \/) return/s/^/#/' $(TZORIG)/zishrink.awk.orig > $(TZORIG)/zishrink.awk
|
||||
-mv $(TZORIG)/Makefile $(TZORIG)/Makefile.orig
|
||||
sed -e "s/BACKWARD=\$$(BACKWARD)/BACKWARD='\$$(BACKWARD)'/" $(TZORIG)/Makefile.orig > $(TZORIG)/Makefile
|
||||
$(MAKE) -C $@ $(TZORIG_OPTS) zdump zones
|
||||
|
||||
$(ZDUMPOUT): tzorig
|
||||
|
||||
@@ -71,3 +71,10 @@ Link America/Los_Angeles PST
|
||||
Link Pacific/Guadalcanal SST
|
||||
#Link Etc/UTC UTC # Olson LINK
|
||||
Link Asia/Ho_Chi_Minh VST
|
||||
|
||||
#
|
||||
# Aliases already dropped from the TZ database.
|
||||
# ICU may also remove these aliases.
|
||||
#
|
||||
Link America/Regina Canada/East-Saskatchewan # removed from backward in 2017c
|
||||
|
||||
|
||||
@@ -31,6 +31,7 @@
|
||||
|
||||
#ifdef ICU
|
||||
#include "dirent.h"
|
||||
#include "sys/stat.h"
|
||||
#endif
|
||||
|
||||
#ifndef isascii
|
||||
@@ -428,7 +429,7 @@ main(int argc, char *argv[])
|
||||
}
|
||||
closedir(dp);
|
||||
}
|
||||
#endif ICU
|
||||
#endif
|
||||
|
||||
if (vflag | Vflag) {
|
||||
intmax_t lo;
|
||||
@@ -495,7 +496,6 @@ main(int argc, char *argv[])
|
||||
int count;
|
||||
|
||||
count = getall(&namelist);
|
||||
|
||||
fakeargv = (char **) malloc((size_t) (argc + count) * sizeof *argv);
|
||||
/*
|
||||
if ((fakeargv = (char **) malloc((size_t) (argc + count) * sizeof *argv)) == NULL) {
|
||||
@@ -1020,9 +1020,9 @@ static void dumptimeICU(FILE * fp, time_t t)
|
||||
min = offset % 60;
|
||||
hour = offset / 60;
|
||||
|
||||
fprintf(fp, "%02d", hour);
|
||||
fprintf(fp, "%02d", min);
|
||||
fprintf(fp, "%02d", sec);
|
||||
fprintf(fp, "%02ld", hour);
|
||||
fprintf(fp, "%02ld", min);
|
||||
fprintf(fp, "%02ld", sec);
|
||||
fprintf(fp, "[DST=%d]", loc.tm_isdst);
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#*******************************************************************************
|
||||
api.report.version = 60
|
||||
api.report.prev.version = 59
|
||||
release.file.ver = 60rc
|
||||
api.doc.version = 60 Release Candidate
|
||||
release.file.ver = 60_1
|
||||
api.doc.version = 60.1
|
||||
maven.pom.ver = 60.1
|
||||
|
||||
|
||||
@@ -132,9 +132,10 @@ public class Parse {
|
||||
INSIDE_AFFIX_PATTERN;
|
||||
}
|
||||
|
||||
// TODO: Does this set make sense for the whitespace characters?
|
||||
// This set was decided after discussion with icu-design@. See ticket #13309.
|
||||
// Zs+TAB is "horizontal whitespace" according to UTS #18 (blank property).
|
||||
private static final UnicodeSet UNISET_WHITESPACE =
|
||||
new UnicodeSet("[[:whitespace:][\\u2000-\\u200D]]").freeze();
|
||||
new UnicodeSet("[[:Zs:][\\u0009]]").freeze();
|
||||
|
||||
// BiDi characters are skipped over and ignored at any point in the string, even in strict mode.
|
||||
private static final UnicodeSet UNISET_BIDI =
|
||||
|
||||
@@ -4966,7 +4966,7 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
|
||||
* @param str source string to be performed on
|
||||
* @param breakiter break iterator to determine the positions in which
|
||||
* the character should be title cased.
|
||||
* @return lowercase version of the argument string
|
||||
* @return titlecase version of the argument string
|
||||
* @stable ICU 2.6
|
||||
*/
|
||||
public static String toTitleCase(String str, BreakIterator breakiter)
|
||||
@@ -5058,7 +5058,7 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
|
||||
* @param str source string to be performed on
|
||||
* @param breakiter break iterator to determine the positions in which
|
||||
* the character should be title cased.
|
||||
* @return lowercase version of the argument string
|
||||
* @return titlecase version of the argument string
|
||||
* @stable ICU 2.6
|
||||
*/
|
||||
public static String toTitleCase(Locale locale, String str,
|
||||
@@ -5083,7 +5083,7 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
|
||||
* @param str source string to be performed on
|
||||
* @param titleIter break iterator to determine the positions in which
|
||||
* the character should be title cased.
|
||||
* @return lowercase version of the argument string
|
||||
* @return titlecase version of the argument string
|
||||
* @stable ICU 3.2
|
||||
*/
|
||||
public static String toTitleCase(ULocale locale, String str,
|
||||
@@ -5108,7 +5108,7 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
|
||||
* @param titleIter break iterator to determine the positions in which
|
||||
* the character should be title cased.
|
||||
* @param options bit set to modify the titlecasing operation
|
||||
* @return lowercase version of the argument string
|
||||
* @return titlecase version of the argument string
|
||||
* @stable ICU 3.8
|
||||
* @see #TITLECASE_NO_LOWERCASE
|
||||
* @see #TITLECASE_NO_BREAK_ADJUSTMENT
|
||||
@@ -5171,7 +5171,7 @@ public final class UCharacter implements ECharacterCategory, ECharacterDirection
|
||||
* @param titleIter break iterator to determine the positions in which
|
||||
* the character should be title cased.
|
||||
* @param options bit set to modify the titlecasing operation
|
||||
* @return lowercase version of the argument string
|
||||
* @return titlecase version of the argument string
|
||||
* @see #TITLECASE_NO_LOWERCASE
|
||||
* @see #TITLECASE_NO_BREAK_ADJUSTMENT
|
||||
* @stable ICU 54
|
||||
|
||||
@@ -202,7 +202,9 @@ import com.ibm.icu.util.ULocale.Category;
|
||||
* pattern string and the input string. For example, the pattern "# %" matches "35 %" (with a single
|
||||
* space), "35%" (with no space), "35 %" (with a non-breaking space), and "35 %" (with
|
||||
* multiple spaces). Arbitrary ignorables are also allowed at boundaries between the parts of the
|
||||
* number: prefix, number, exponent separator, and suffix.
|
||||
* number: prefix, number, exponent separator, and suffix. Ignorable whitespace characters are those
|
||||
* having the Unicode "blank" property for regular expressions, defined in UTS #18 Annex C, which is
|
||||
* "horizontal" whitespace, like spaces and tabs, but not "vertical" whitespace, like line breaks.
|
||||
*
|
||||
* <p>If {@link #parse(String, ParsePosition)} fails to parse a string, it returns <code>null</code>
|
||||
* and leaves the parse position unchanged. The convenience method {@link #parse(String)} indicates
|
||||
|
||||
@@ -424,6 +424,9 @@ public abstract class NumberFormat extends UFormat {
|
||||
* <p>Does not throw an exception; if no object can be parsed, index is
|
||||
* unchanged!
|
||||
*
|
||||
* <p>For more detail on parsing, see the "Parsing" header in the class
|
||||
* documentation of {@link DecimalFormat}.
|
||||
*
|
||||
* @see #isParseIntegerOnly
|
||||
* @see DecimalFormat#setParseBigDecimal
|
||||
* @see java.text.Format#parseObject(String, ParsePosition)
|
||||
|
||||
@@ -32,6 +32,7 @@ import java.util.Set;
|
||||
|
||||
import com.ibm.icu.impl.ICUData;
|
||||
import com.ibm.icu.impl.ICUResourceBundle;
|
||||
import com.ibm.icu.impl.PatternProps;
|
||||
import com.ibm.icu.impl.SoftCache;
|
||||
import com.ibm.icu.impl.TZDBTimeZoneNames;
|
||||
import com.ibm.icu.impl.TextTrieMap;
|
||||
@@ -2397,7 +2398,26 @@ public class TimeZoneFormat extends UFormat implements Freezable<TimeZoneFormat>
|
||||
if (patternItems[i] instanceof String) {
|
||||
String patStr = (String)patternItems[i];
|
||||
int len = patStr.length();
|
||||
if (!text.regionMatches(true, idx, patStr, 0, len)) {
|
||||
int patIdx = 0;
|
||||
if (i == 0) {
|
||||
// When TimeZoneFormat parse() is called from SimpleDateFormat,
|
||||
// leading space characters might be truncated. If the first pattern text
|
||||
// starts with such character (e.g. Bidi control), then we need to
|
||||
// skip the leading space characters.
|
||||
if (idx < text.length() && !PatternProps.isWhiteSpace(text.codePointAt(idx))) {
|
||||
while (len > 0) {
|
||||
int cp = patStr.codePointAt(patIdx);
|
||||
if (PatternProps.isWhiteSpace(cp)) {
|
||||
int cpLen = Character.charCount(cp);
|
||||
len -= cpLen;
|
||||
patIdx += cpLen;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!text.regionMatches(true, idx, patStr, patIdx, len)) {
|
||||
failed = true;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -568,7 +568,7 @@ public final class VersionInfo implements Comparable<VersionInfo>
|
||||
UNICODE_10_0 = getInstance(10, 0, 0, 0);
|
||||
|
||||
ICU_VERSION = getInstance(60, 1, 0, 0);
|
||||
ICU_DATA_VERSION = getInstance(60, 0, 1, 0);
|
||||
ICU_DATA_VERSION = getInstance(60, 1, 0, 0);
|
||||
UNICODE_VERSION = UNICODE_10_0;
|
||||
|
||||
UCOL_RUNTIME_VERSION = getInstance(9);
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:af06fc6894d8a366d1d9a12f68d1562ca602ddbcf574673aadc0a017f01583a8
|
||||
size 12459424
|
||||
oid sha256:9d9e1962263203f4c7c071c58cc0da6f23212294b163f6a7047df4e858c908c8
|
||||
size 12459520
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:07ca360bece76117efc098b97cf6bf082df398e4afe6150081de59a9d8f1a940
|
||||
size 92486
|
||||
oid sha256:9ab0aa84333a23a0e40f5641d96d4b12e0f7acc10b3ca32a98141d04af1ef59b
|
||||
size 92714
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:bc37dab789d1d29379040fa938b58d63a21d0e8bf5e7b6ec07a7e6e26fc0cab7
|
||||
oid sha256:49fc3149b6f7691682845386826d43267e196a0286eef1dc9ffaf7100690cab1
|
||||
size 813106
|
||||
|
||||
+19
-1
@@ -2503,5 +2503,23 @@ public class CalendarRegressionTest extends com.ibm.icu.dev.test.TestFmwk {
|
||||
assertEquals("Incorrect time for long range milliseconds","Sun Jan 25 21:00:00 PST 1970", cal.getTime().toString());
|
||||
}
|
||||
|
||||
}
|
||||
@Test
|
||||
public void TestPersianCalOverflow() {
|
||||
String localeID = "bs_Cyrl@calendar=persian";
|
||||
Calendar cal = Calendar.getInstance(new ULocale(localeID));
|
||||
int maxMonth = cal.getMaximum(Calendar.MONTH);
|
||||
int maxDayOfMonth = cal.getMaximum(Calendar.DATE);
|
||||
int jd, month, dayOfMonth;
|
||||
for (jd = 67023580; jd <= 67023584; jd++) { // year 178171, int32_t overflow if jd >= 67023582
|
||||
cal.clear();
|
||||
cal.set(Calendar.JULIAN_DAY, jd);
|
||||
month = cal.get(Calendar.MONTH);
|
||||
dayOfMonth = cal.get(Calendar.DATE);
|
||||
if (month > maxMonth || dayOfMonth > maxDayOfMonth) {
|
||||
errln("Error: localeID " + localeID + ", julianDay " + jd + "; maxMonth " + maxMonth + ", got month " + month +
|
||||
"; maxDayOfMonth " + maxDayOfMonth + ", got dayOfMonth " + dayOfMonth);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//eof
|
||||
|
||||
@@ -427,11 +427,11 @@ public class DateTimeGeneratorTest extends TestFmwk {
|
||||
|
||||
new ULocale("fi"),
|
||||
new String[] {"yM", "1.1999"}, // (fixed expected result per ticket 6872<-6626)
|
||||
new String[] {"yMMM", "1.1999"}, // (fixed expected result per ticket 6872<-7007)
|
||||
new String[] {"yMMM", "tammi 1999"}, // (fixed expected result per ticket 6872<-7007)
|
||||
new String[] {"yMd", "13.1.1999"},
|
||||
new String[] {"yMMMd", "13.1.1999"},
|
||||
new String[] {"yMMMd", "13. tammik. 1999"},
|
||||
new String[] {"Md", "13.1."},
|
||||
new String[] {"MMMd", "13.1."},
|
||||
new String[] {"MMMd", "13. tammik."},
|
||||
new String[] {"MMMMd", "13. tammikuuta"},
|
||||
new String[] {"yQQQ", "1. nelj. 1999"},
|
||||
new String[] {"hhmm", "11.58 ip."},
|
||||
@@ -439,7 +439,7 @@ public class DateTimeGeneratorTest extends TestFmwk {
|
||||
new String[] {"jjmm", "23.58"},
|
||||
new String[] {"mmss", "58.59"},
|
||||
new String[] {"yyyyMMMM", "tammikuu 1999"}, // (new item for testing 6872<-5702,7007)
|
||||
new String[] {"MMMEd", "ke 13.1."},
|
||||
new String[] {"MMMEd", "ke 13. tammik."},
|
||||
new String[] {"Ed", "ke 13."},
|
||||
new String[] {"jmmssSSS", "23.58.59,123"},
|
||||
new String[] {"JJmm", "23.58"},
|
||||
|
||||
@@ -63,6 +63,7 @@ import com.ibm.icu.text.NumberFormat.SimpleNumberFormatFactory;
|
||||
import com.ibm.icu.text.NumberingSystem;
|
||||
import com.ibm.icu.text.PluralRules;
|
||||
import com.ibm.icu.text.RuleBasedNumberFormat;
|
||||
import com.ibm.icu.text.UnicodeSet;
|
||||
import com.ibm.icu.util.Currency;
|
||||
import com.ibm.icu.util.Currency.CurrencyUsage;
|
||||
import com.ibm.icu.util.CurrencyAmount;
|
||||
@@ -438,8 +439,8 @@ public class NumberFormatTest extends TestFmwk {
|
||||
{" $ 124 ", "6", "-1"},
|
||||
{"124$", "3", "-1"},
|
||||
{"124 $", "3", "-1"},
|
||||
{"$124\u200D", "4", "-1"},
|
||||
{"$\u200D124", "5", "-1"},
|
||||
{"$124\u200A", "4", "-1"},
|
||||
{"$\u200A124", "5", "-1"},
|
||||
};
|
||||
NumberFormat foo = NumberFormat.getCurrencyInstance();
|
||||
for (int i = 0; i < DATA.length; ++i) {
|
||||
@@ -1712,6 +1713,29 @@ public class NumberFormatTest extends TestFmwk {
|
||||
expect(fmt, "ab 1234", n);
|
||||
expect(fmt, "a b1234", n);
|
||||
expect(fmt, "a b1234", n);
|
||||
expect(fmt, " a b 1234", n);
|
||||
|
||||
// Horizontal whitespace is allowed, but not vertical whitespace.
|
||||
expect(fmt, "\ta\u00A0b\u20001234", n);
|
||||
expect(fmt, "a \u200A b1234", n);
|
||||
expectParseException(fmt, "\nab1234", n);
|
||||
expectParseException(fmt, "a \n b1234", n);
|
||||
expectParseException(fmt, "a \u0085 b1234", n);
|
||||
expectParseException(fmt, "a \u2028 b1234", n);
|
||||
|
||||
// Test all characters in the UTS 18 "blank" set stated in the API docstring.
|
||||
UnicodeSet blanks = new UnicodeSet("[[:Zs:][\\u0009]]").freeze();
|
||||
for (String space : blanks) {
|
||||
String str = "a " + space + " b1234";
|
||||
expect(fmt, str, n);
|
||||
}
|
||||
|
||||
// Test that other whitespace characters do not work
|
||||
UnicodeSet otherWhitespace = new UnicodeSet("[[:whitespace:]]").removeAll(blanks).freeze();
|
||||
for (String space : otherWhitespace) {
|
||||
String str = "a " + space + " b1234";
|
||||
expectParseException(fmt, str, n);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2676,6 +2700,16 @@ public class NumberFormatTest extends TestFmwk {
|
||||
expect(fmt, str, new Long(n));
|
||||
}
|
||||
|
||||
/** Parse test */
|
||||
public void expectParseException(DecimalFormat fmt, String str, Number n) {
|
||||
Number num = null;
|
||||
try {
|
||||
num = fmt.parse(str);
|
||||
errln("Expected failure, but passed: " + n + " on " + fmt.toPattern() + " -> " + num);
|
||||
} catch (ParseException e) {
|
||||
}
|
||||
}
|
||||
|
||||
private void expectCurrency(NumberFormat nf, Currency curr,
|
||||
double value, String string) {
|
||||
DecimalFormat fmt = (DecimalFormat) nf;
|
||||
|
||||
@@ -360,7 +360,7 @@ public class TimeZoneFormatTest extends TestFmwk {
|
||||
new ULocale("ko_KR"), new ULocale("nb_NO"), new ULocale("nl_NL"), new ULocale("nn_NO"), new ULocale("pl_PL"),
|
||||
new ULocale("pt"), new ULocale("pt_BR"), new ULocale("pt_PT"), new ULocale("ru_RU"), new ULocale("sv_SE"),
|
||||
new ULocale("th_TH"), new ULocale("tr_TR"), new ULocale("zh"), new ULocale("zh_Hans"), new ULocale("zh_Hans_CN"),
|
||||
new ULocale("zh_Hant"), new ULocale("zh_Hant_HK"), new ULocale("zh_Hant_TW")
|
||||
new ULocale("zh_Hant"), new ULocale("zh_Hant_HK"), new ULocale("zh_Hant_TW"), new ULocale("ccp"), new ULocale("fa")
|
||||
};
|
||||
} else {
|
||||
LOCALES = new ULocale[] {
|
||||
@@ -418,7 +418,8 @@ public class TimeZoneFormatTest extends TestFmwk {
|
||||
}
|
||||
}
|
||||
|
||||
if (id.equals("Pacific/Apia") && PATTERNS[patidx].equals("vvvv")
|
||||
if ((id.equals("Pacific/Apia") || id.equals("Pacific/Midway") || id.equals("Pacific/Pago_Pago"))
|
||||
&& PATTERNS[patidx].equals("vvvv")
|
||||
&& logKnownIssue("11052", "Ambiguous zone name - Samoa Time")) {
|
||||
continue;
|
||||
}
|
||||
|
||||
+20
-12
@@ -14,21 +14,21 @@ h3.doc { text-decoration: underline }
|
||||
<body style="background-color: rgb(255, 255, 255);" lang="EN-US"
|
||||
link="#0000ff" vlink="#800080">
|
||||
<h1>International Components for Unicode for Java (ICU4J)</h1>
|
||||
<h2>Read Me for ICU4J 60 Release Candidate</h2>
|
||||
(Last Update: 2017-Oct-04)
|
||||
<h2>Read Me for ICU4J 60.1</h2>
|
||||
(Last Update: 2017-Oct-30)
|
||||
<hr size="2" width="100%">
|
||||
|
||||
<p>
|
||||
<!-- <b>Note:</b> This is major release of ICU4J. It contains bug fixes and adds implementations
|
||||
of inherited API and introduces new API or functionality. -->
|
||||
<b>Note:</b> This is major release of ICU4J. It contains bug fixes and adds implementations
|
||||
of inherited API and introduces new API or functionality.
|
||||
<!-- <b>Note:</b> This is a development milestone of ICU4J 60.
|
||||
The contents of this document may not reflect the recent changes done
|
||||
for ICU 60 development. It is not recommended for production use. -->
|
||||
<b>Note:</b> This is a release candidate of ICU4J 60.
|
||||
<!-- <b>Note:</b> This is a release candidate of ICU4J 60.
|
||||
The contents of this document may not reflect the recent changes done
|
||||
for ICU 60 development. This release candidate is intended for those
|
||||
wishing to verify ICU 60 integration before final release. It is not
|
||||
recommended for production use.
|
||||
recommended for production use. -->
|
||||
</p>
|
||||
<p>For the most recent release, see the <a
|
||||
href="http://www.icu-project.org/download/"> ICU4J
|
||||
@@ -162,7 +162,7 @@ file included in this package.
|
||||
<h2 class="doc"><a name="PlatformDependencies"></a>Platform Dependencies</h2>
|
||||
<p>
|
||||
ICU4J 60 depends on J2SE 6 functionality. Therefore, ICU4J only runs on
|
||||
JRE version 6 or later.
|
||||
JRE version 6 or later. ICU4J 60 is tested on JRE 6, 7, 8 and 9.
|
||||
|
||||
<h2 class="doc"><a name="download"></a>How to Download ICU4J</h2>
|
||||
<p>There are a few different ways to download the ICU4J releases.
|
||||
@@ -175,7 +175,7 @@ These versions are tested more thoroughly than day-to-day development
|
||||
builds, and they are packaged in jar files for convenient download.
|
||||
<ul>
|
||||
<li><a href="http://www.icu-project.org/download/">ICU Download page</a>.</li>
|
||||
<li>[TBD 60.1]Maven repository:
|
||||
<li>Maven repository:
|
||||
<pre>
|
||||
<dependency>
|
||||
<groupId>com.ibm.icu</groupId>
|
||||
@@ -428,6 +428,12 @@ ICU4J source archive is extracted.
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>lib</td>
|
||||
<td>Folder used for downloading depedency libraries.<br>
|
||||
<b>Note:</b> ICU4J runtime libraries do not depend on any external libraries other
|
||||
than JDK. These dependencies are for testing (such as JUnit).</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2 class="doc"><a name="API"></a>Where to get Documentation</h2>
|
||||
@@ -526,7 +532,7 @@ Buildfile: C:\icu4j\build.xml
|
||||
info:
|
||||
[echo] ----- Build Environment Information -------------------
|
||||
[echo] Java Home: C:\jdk1.8.0\jre
|
||||
[echo] Java Version: 1.8.0_102
|
||||
[echo] Java Version: 1.8.0_144
|
||||
[echo] Ant Home: C:\apache-ant
|
||||
[echo] Ant Version: Apache Ant(TM) version 1.9.4 compiled on April 29 2014
|
||||
|
||||
@@ -553,14 +559,16 @@ core:
|
||||
|
||||
[echo] ----------------------------------------------------
|
||||
[mkdir] Created dir: C:\icu4j\main\classes\core\out\bin
|
||||
[javac] Compiling 364 source files to C:\icu4j\main\classes\core\out\bin
|
||||
[javac] Compiling 415 source files to C:\icu4j\main\classes\core\out\bin
|
||||
[javac] Note: Some input files use or override a deprecated API.
|
||||
[javac] Note: Recompile with -Xlint:deprecation for details.
|
||||
|
||||
compile:
|
||||
|
||||
@copy:
|
||||
[copy] Copying 23 files to C:\icu4j\main\classes\core\out\bin
|
||||
[copy] Copying 24 files to C:\icu4j\main\classes\core\out\bin
|
||||
[copy] Copied 4 empty directories to 3 empty directories under D:\devicu\ma
|
||||
int-60\icu4j\main\classes\core\out\bin
|
||||
|
||||
set-icuconfig-datapath:
|
||||
|
||||
@@ -597,7 +605,7 @@ _build-localespi:
|
||||
compile:
|
||||
|
||||
@copy:
|
||||
[copy] Copying 10 files to C:\icu4j\main\classes\localespi\out\bin
|
||||
[copy] Copying 11 files to C:\icu4j\main\classes\localespi\out\bin
|
||||
|
||||
copy:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user