[sword-svn] r162 - in trunk: . as_is/borland source/common source/common/unicode source/data/brkitr source/data/misc source/data/translit source/i18n source/i18n/unicode source/layout source/test/cintltst source/test/intltest source/test/perf/strsrchperf source/test/testdata
chrislit at crosswire.org
chrislit at crosswire.org
Sat Feb 7 03:08:34 MST 2009
Author: chrislit
Date: 2009-02-07 03:08:34 -0700 (Sat, 07 Feb 2009)
New Revision: 162
Added:
trunk/APIChangeReport_401.html
trunk/icu4c.css
trunk/source/i18n/bms.cpp
trunk/source/i18n/bmsearch.cpp
trunk/source/i18n/colldata.cpp
trunk/source/i18n/unicode/bms.h
trunk/source/i18n/unicode/bmsearch.h
trunk/source/i18n/unicode/colldata.h
Modified:
trunk/APIChangeReport.html
trunk/as_is/borland/icuin.bpf
trunk/as_is/borland/icuin.bpr
trunk/readme.html
trunk/source/common/ucnv2022.c
trunk/source/common/ucnvhz.c
trunk/source/common/ucnvmbcs.c
trunk/source/common/unicode/ucasemap.h
trunk/source/common/unicode/uloc.h
trunk/source/common/unicode/uniset.h
trunk/source/common/unicode/unistr.h
trunk/source/common/unicode/uscript.h
trunk/source/common/unicode/uset.h
trunk/source/common/unicode/utext.h
trunk/source/common/unicode/uversion.h
trunk/source/data/brkitr/brkfiles.mk
trunk/source/data/misc/metazoneInfo.txt
trunk/source/data/misc/supplementalData.txt
trunk/source/data/misc/zoneinfo.txt
trunk/source/data/translit/root.txt
trunk/source/i18n/Makefile.in
trunk/source/i18n/i18n.vcproj
trunk/source/i18n/timezone.cpp
trunk/source/i18n/ucln_in.h
trunk/source/i18n/ucol.cpp
trunk/source/i18n/ucol_imp.h
trunk/source/i18n/ucol_sit.cpp
trunk/source/i18n/ucoleitr.cpp
trunk/source/i18n/unicode/basictz.h
trunk/source/i18n/unicode/dtitvinf.h
trunk/source/i18n/unicode/dtptngen.h
trunk/source/i18n/unicode/dtrule.h
trunk/source/i18n/unicode/rbtz.h
trunk/source/i18n/unicode/simpletz.h
trunk/source/i18n/unicode/timezone.h
trunk/source/i18n/unicode/tzrule.h
trunk/source/i18n/unicode/tztrans.h
trunk/source/i18n/unicode/ucal.h
trunk/source/i18n/unicode/ucoleitr.h
trunk/source/i18n/unicode/udatpg.h
trunk/source/i18n/unicode/utmscale.h
trunk/source/i18n/unicode/vtzone.h
trunk/source/i18n/usearch.cpp
trunk/source/layout/LEScripts.h
trunk/source/test/cintltst/callcoll.c
trunk/source/test/cintltst/nccbtst.c
trunk/source/test/cintltst/nucnvtst.c
trunk/source/test/cintltst/usrchtst.c
trunk/source/test/intltest/ssearch.cpp
trunk/source/test/intltest/ssearch.h
trunk/source/test/intltest/transrt.cpp
trunk/source/test/intltest/tztest.cpp
trunk/source/test/perf/strsrchperf/strsrchperf.cpp
trunk/source/test/perf/strsrchperf/strsrchperf.h
trunk/source/test/perf/strsrchperf/strsrchperf.vcproj
trunk/source/test/testdata/conversion.txt
trunk/source/test/testdata/ssearch.xml
Log:
ICU 4.0.1 update
Modified: trunk/APIChangeReport.html
===================================================================
--- trunk/APIChangeReport.html 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/APIChangeReport.html 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,1936 +1,4 @@
-<html>
-<!-- Copyright (c) 2008 International Business Machines and others. All rights reserved. -->
-<head>
-<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ICU4C API Comparison: ICU 3.8.1 with ICU 4.0</title>
-</head>
-<body>
-<h1>ICU4C API Comparison: ICU 3.8.1 with ICU 4.0</h1>
-<hr>
-<h2>Removed from ICU 3.8.1</h2>
-<table BORDER="1">
-<THEAD>
-<tr>
-<th>File</th><th>Public API Prototype</th><th>ICU 3.8.1</th><th>ICU 4.0</th>
-</tr>
-</THEAD>
-<tr STYLE="color: red">
-<td>LESwaps.h</td><td>static le_uint32 LESwaps::swapLong(le_uint32 value)</td><td>Stable</td><td>None</td>
-</tr>
-<tr STYLE="color: red">
-<td>LESwaps.h</td><td>static le_uint16 LESwaps::swapWord(le_uint16 value)</td><td>Stable</td><td>None</td>
-</tr>
-<tr STYLE="color: red">
-<td>LESwaps.h</td><td>static le_uint8 LESwaps::isBigEndian()</td><td>Stable</td><td>None</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>UBool MessageFormat::Subformat::operator!=(const Subformat &that) const</td><td>Internal</td><td>None</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>Subformat& MessageFormat::Subformat::operator=(const Subformat &that)</td><td>Internal</td><td>None</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>UBool MessageFormat::Subformat::operator==(const Subformat &that) const</td><td>Internal</td><td>None</td>
-</tr>
-<tr STYLE="">
-<td>ucol.h</td><td>int32_t ucol_identifierToShortString(uint32_t identifier, char *buffer, int32_t capacity, UBool forceDefaults, UErrorCode *status)</td><td>Internal</td><td>None</td>
-</tr>
-<tr STYLE="">
-<td>ucol.h</td><td>UCollator* ucol_openFromIdentifier(uint32_t identifier, UBool forceDefaults, UErrorCode *status)</td><td>Internal</td><td>None</td>
-</tr>
-<tr STYLE="">
-<td>ucol.h</td><td>uint32_t ucol_shortStringToIdentifier(const char *definition, UBool forceDefaults, UErrorCode *status)</td><td>Internal</td><td>None</td>
-</tr>
-<tr STYLE="">
-<td>ucol.h</td><td>uint32_t ucol_collatorToIdentifier(const UCollator *coll, const char *locale, UErrorCode *status)</td><td>Internal</td><td>None</td>
-</tr>
-</table>
-<P></P>
-<hr>
-<h2>Deprecated or Obsoleted in ICU 4.0</h2>
-<table BORDER="1">
-<THEAD>
-<tr>
-<th>File</th><th>Public API Prototype</th><th>ICU 3.8.1</th><th>ICU 4.0</th>
-</tr>
-</THEAD>
-</table>
-<P></P>
-<hr>
-<h2>Changed in ICU 4.0 (old, new)</h2>
-<table BORDER="1">
-<THEAD>
-<tr>
-<th>File</th><th>Public API Prototype</th><th>ICU 3.8.1</th><th>ICU 4.0</th>
-</tr>
-</THEAD>
-<tr STYLE="">
-<td>basictz.h</td><td>void BasicTimeZone::getSimpleRulesNear(UDate date, InitialTimeZoneRule *&initial, AnnualTimeZoneRule *&std, AnnualTimeZoneRule *&dst, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>void BasicTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)=0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>int32_t BasicTimeZone::countTransitionRules(UErrorCode &status)=0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>UBool BasicTimeZone::hasEquivalentTransitions(BasicTimeZone &tz, UDate start, UDate end, UBool ignoreDstAmount, UErrorCode &ec)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>UBool BasicTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>UBool BasicTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>BasicTimeZone::~BasicTimeZone()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>StringEnumeration* DateTimePatternGenerator::getBaseSkeletons(UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createInstance(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UBool DateTimePatternGenerator::operator!=(const DateTimePatternGenerator &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getBestPattern(const UnicodeString &skeleton, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>void DateTimePatternGenerator::setDecimal(const UnicodeString &decimal)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>void DateTimePatternGenerator::setAppendItemName(UDateTimePatternField field, const UnicodeString &value)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getPatternForSkeleton(const UnicodeString &skeleton) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>DateTimePatternGenerator* DateTimePatternGenerator::clone() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>DateTimePatternGenerator::~DateTimePatternGenerator()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getBaseSkeleton(const UnicodeString &pattern, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UClassID DateTimePatternGenerator::getDynamicClassID() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>static UClassID DateTimePatternGenerator::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UDateTimePatternConflict DateTimePatternGenerator::addPattern(const UnicodeString &pattern, UBool override, UnicodeString &conflictingPattern, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createEmptyInstance(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::replaceFieldTypes(const UnicodeString &pattern, const UnicodeString &skeleton, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getAppendItemFormat(UDateTimePatternField field) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>void DateTimePatternGenerator::setAppendItemFormat(UDateTimePatternField field, const UnicodeString &value)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createInstance(const Locale &uLocale, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getAppendItemName(UDateTimePatternField field) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>void DateTimePatternGenerator::setDateTimeFormat(const UnicodeString &dateTimeFormat)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>StringEnumeration* DateTimePatternGenerator::getSkeletons(UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getDateTimeFormat() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UBool DateTimePatternGenerator::operator==(const DateTimePatternGenerator &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getDecimal() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getSkeleton(const UnicodeString &pattern, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::~DateTimeRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleWeekInMonth(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>UBool DateTimeRule::operator==(const DateTimeRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleDayOfMonth(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>UBool DateTimeRule::operator!=(const DateTimeRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::DateTimeRule(const DateTimeRule &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule* DateTimeRule::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>static UClassID DateTimeRule::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleMonth(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule& DateTimeRule::operator=(const DateTimeRule &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, UBool after, int32_t millisInDay, TimeRuleType timeType)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t weekInMonth, int32_t dayOfWeek, int32_t millisInDay, TimeRuleType timeType)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleMillisInDay(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t millisInDay, TimeRuleType timeType)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateRuleType DateTimeRule::getDateRuleType(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>TimeRuleType DateTimeRule::getTimeRuleType(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleDayOfWeek(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>UClassID DateTimeRule::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>RuleBasedTimeZone::RuleBasedTimeZone(const RuleBasedTimeZone &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::hasSameRules(const TimeZone &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::addTransitionRule(TimeZoneRule *rule, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>int32_t RuleBasedTimeZone::countTransitionRules(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>RuleBasedTimeZone& RuleBasedTimeZone::operator=(const RuleBasedTimeZone &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>RuleBasedTimeZone::RuleBasedTimeZone(const UnicodeString &id, InitialTimeZoneRule *initialRule)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UClassID RuleBasedTimeZone::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::useDaylightTime(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::setRawOffset(int32_t offsetMillis)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::getOffset(UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>static UClassID RuleBasedTimeZone::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::operator!=(const TimeZone &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::complete(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>TimeZone* RuleBasedTimeZone::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>RuleBasedTimeZone::~RuleBasedTimeZone()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getRawOffset(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::operator==(const TimeZone &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>simpletz.h</td><td>void SimpleTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>simpletz.h</td><td>UBool SimpleTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>simpletz.h</td><td>UBool SimpleTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>simpletz.h</td><td>int32_t SimpleTimeZone::countTransitionRules(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>timezone.h</td><td>static const char* TimeZone::getTZDataVersion(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t AnnualTimeZoneRule::getStartYear(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule* AnnualTimeZoneRule::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule& InitialTimeZoneRule::operator=(const InitialTimeZoneRule &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule::~AnnualTimeZoneRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>static UClassID TimeArrayTimeZoneRule::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t TimeZoneRule::getRawOffset(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule::InitialTimeZoneRule(const InitialTimeZoneRule &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t AnnualTimeZoneRule::getEndYear(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule::~InitialTimeZoneRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule::InitialTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule* InitialTimeZoneRule::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule::~TimeArrayTimeZoneRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>const DateTimeRule* AnnualTimeZoneRule::getRule(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule& AnnualTimeZoneRule::operator=(const AnnualTimeZoneRule &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>static UClassID InitialTimeZoneRule::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule& TimeArrayTimeZoneRule::operator=(const TimeArrayTimeZoneRule &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeZoneRule* TimeZoneRule::clone(void) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t TimeZoneRule::getDSTSavings(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::operator==(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UClassID AnnualTimeZoneRule::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t TimeArrayTimeZoneRule::countStartTimes(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const UDate *startTimes, int32_t numStartTimes, DateTimeRule::TimeRuleType timeRuleType)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UClassID TimeArrayTimeZoneRule::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>DateTimeRule::TimeRuleType TimeArrayTimeZoneRule::getTimeType(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const AnnualTimeZoneRule &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::isEquivalentTo(const TimeZoneRule &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeZoneRule::~TimeZoneRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UnicodeString& TimeZoneRule::getName(UnicodeString &name) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const DateTimeRule &dateTimeRule, int32_t startYear, int32_t endYear)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule* TimeArrayTimeZoneRule::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>static UClassID AnnualTimeZoneRule::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getStartTimeAt(int32_t index, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, DateTimeRule *dateTimeRule, int32_t startYear, int32_t endYear)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UClassID InitialTimeZoneRule::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>UBool TimeZoneTransition::operator!=(const TimeZoneTransition &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition* TimeZoneTransition::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>const TimeZoneRule* TimeZoneTransition::getFrom(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>UClassID TimeZoneTransition::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>UBool TimeZoneTransition::operator==(const TimeZoneTransition &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::adoptFrom(TimeZoneRule *from)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule &from, const TimeZoneRule &to)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::adoptTo(TimeZoneRule *to)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>UDate TimeZoneTransition::getTime(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>static UClassID TimeZoneTransition::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::setFrom(const TimeZoneRule &from)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::setTime(UDate time)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>const TimeZoneRule* TimeZoneTransition::getTo(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition::~TimeZoneTransition()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition& TimeZoneTransition::operator=(const TimeZoneTransition &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::setTo(const TimeZoneRule &to)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition(const TimeZoneTransition &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucal.h</td><td>const char* ucal_getTZDataVersion(UErrorCode *status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>int32_t ucasemap_utf8FoldCase(const UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>void ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>const UBreakIterator* ucasemap_getBreakIterator(const UCaseMap *csm)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>int32_t ucasemap_utf8ToTitle(UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>int32_t ucasemap_toTitle(UCaseMap *csm, UChar *dest, int32_t destCapacity, const UChar *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>int32_t udatpg_getBaseSkeleton(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t length, UChar *baseSkeleton, int32_t capacity, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>int32_t udatpg_getSkeleton(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t length, UChar *skeleton, int32_t capacity, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UEnumeration* udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_close(UDateTimePatternGenerator *dtpg)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_openEmpty(UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg, UDateTimePatternField field, const UChar *value, int32_t length)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_open(const char *locale, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getDecimal(const UDateTimePatternGenerator *dtpg, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>int32_t udatpg_getBestPattern(UDateTimePatternGenerator *dtpg, const UChar *skeleton, int32_t length, UChar *bestPattern, int32_t capacity, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg, const UChar *skeleton, int32_t skeletonLength, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UEnumeration* udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UDateTimePatternConflict udatpg_addPattern(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t patternLength, UBool override, UChar *conflictingPattern, int32_t capacity, int32_t *pLength, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_setDecimal(UDateTimePatternGenerator *dtpg, const UChar *decimal, int32_t length)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg, UDateTimePatternField field, const UChar *value, int32_t length)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>int32_t udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t patternLength, const UChar *skeleton, int32_t skeletonLength, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg, const UChar *dtFormat, int32_t length)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uloc.h</td><td>int32_t uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity, UErrorCode *status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>int32_t UnicodeSet::span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>UnicodeFunctor* UnicodeSet::freeze()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>int32_t UnicodeSet::spanBackUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>UnicodeFunctor* UnicodeSet::cloneAsThawed() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>int32_t UnicodeSet::spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>int32_t UnicodeSet::spanUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>UBool UnicodeSet::isFrozen() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>unistr.h</td><td>UnicodeString& UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="color: red">
-<td>unistr.h</td><td>int32_t u_strlen(const UChar *s)</td><td>Stable</td><td></td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>void uset_freeze(USet *set)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>UBool uset_isFrozen(const USet *set)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>int32_t uset_spanUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>USet* uset_cloneAsThawed(const USet *set)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>int32_t uset_spanBackUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>int32_t uset_spanBack(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>USet* uset_clone(const USet *set)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>int32_t uset_span(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::write(UDate start, UnicodeString &result, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>int32_t VTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>VTimeZone& VTimeZone::operator=(const VTimeZone &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>static VTimeZone* VTimeZone::createVTimeZone(const UnicodeString &vtzdata, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::useDaylightTime(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UClassID VTimeZone::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::getOffset(UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::operator!=(const TimeZone &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>int32_t VTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::write(UnicodeString &result, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>static VTimeZone* VTimeZone::createVTimeZoneByID(const UnicodeString &ID)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>static UClassID VTimeZone::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::operator==(const TimeZone &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>int32_t VTimeZone::countTransitionRules(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::setLastModified(UDate lastModified)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::getTZURL(UnicodeString &url) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::setTZURL(const UnicodeString &url)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::getLastModified(UDate &lastModified) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>TimeZone* VTimeZone::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::setRawOffset(int32_t offsetMillis)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>int32_t VTimeZone::getRawOffset(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::hasSameRules(const TimeZone &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::writeSimple(UDate time, UnicodeString &result, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>VTimeZone::~VTimeZone()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>VTimeZone::VTimeZone(const VTimeZone &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-</table>
-<P></P>
-<hr>
-<h2>Promoted to stable in ICU 4.0</h2>
-<table BORDER="1">
-<THEAD>
-<tr>
-<th>File</th><th>Public API Prototype</th><th>ICU 3.8.1</th><th>ICU 4.0</th>
-</tr>
-</THEAD>
-<tr STYLE="">
-<td>basictz.h</td><td>void BasicTimeZone::getSimpleRulesNear(UDate date, InitialTimeZoneRule *&initial, AnnualTimeZoneRule *&std, AnnualTimeZoneRule *&dst, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>void BasicTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)=0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>int32_t BasicTimeZone::countTransitionRules(UErrorCode &status)=0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>UBool BasicTimeZone::hasEquivalentTransitions(BasicTimeZone &tz, UDate start, UDate end, UBool ignoreDstAmount, UErrorCode &ec)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>UBool BasicTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>UBool BasicTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>basictz.h</td><td>BasicTimeZone::~BasicTimeZone()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UBool DateIntervalInfo::operator==(const DateIntervalInfo &other) const</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UBool DateIntervalInfo::operator!=(const DateIntervalInfo &other) const</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>static UClassID DateIntervalInfo::getStaticClassID()</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UClassID DateIntervalInfo::getDynamicClassID() const</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>StringEnumeration* DateTimePatternGenerator::getBaseSkeletons(UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createInstance(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UBool DateTimePatternGenerator::operator!=(const DateTimePatternGenerator &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getBestPattern(const UnicodeString &skeleton, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>void DateTimePatternGenerator::setDecimal(const UnicodeString &decimal)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>void DateTimePatternGenerator::setAppendItemName(UDateTimePatternField field, const UnicodeString &value)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getPatternForSkeleton(const UnicodeString &skeleton) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>DateTimePatternGenerator* DateTimePatternGenerator::clone() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>DateTimePatternGenerator::~DateTimePatternGenerator()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getBaseSkeleton(const UnicodeString &pattern, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UClassID DateTimePatternGenerator::getDynamicClassID() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>static UClassID DateTimePatternGenerator::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UDateTimePatternConflict DateTimePatternGenerator::addPattern(const UnicodeString &pattern, UBool override, UnicodeString &conflictingPattern, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createEmptyInstance(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::replaceFieldTypes(const UnicodeString &pattern, const UnicodeString &skeleton, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getAppendItemFormat(UDateTimePatternField field) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>void DateTimePatternGenerator::setAppendItemFormat(UDateTimePatternField field, const UnicodeString &value)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createInstance(const Locale &uLocale, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getAppendItemName(UDateTimePatternField field) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>void DateTimePatternGenerator::setDateTimeFormat(const UnicodeString &dateTimeFormat)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>StringEnumeration* DateTimePatternGenerator::getSkeletons(UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getDateTimeFormat() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UBool DateTimePatternGenerator::operator==(const DateTimePatternGenerator &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getDecimal() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getSkeleton(const UnicodeString &pattern, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::~DateTimeRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleWeekInMonth(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>UBool DateTimeRule::operator==(const DateTimeRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleDayOfMonth(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>UBool DateTimeRule::operator!=(const DateTimeRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::DateTimeRule(const DateTimeRule &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule* DateTimeRule::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>static UClassID DateTimeRule::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleMonth(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule& DateTimeRule::operator=(const DateTimeRule &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, UBool after, int32_t millisInDay, TimeRuleType timeType)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t weekInMonth, int32_t dayOfWeek, int32_t millisInDay, TimeRuleType timeType)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleMillisInDay(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t millisInDay, TimeRuleType timeType)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>DateRuleType DateTimeRule::getDateRuleType(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>TimeRuleType DateTimeRule::getTimeRuleType(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>int32_t DateTimeRule::getRuleDayOfWeek(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtrule.h</td><td>UClassID DateTimeRule::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>LESwaps.h</td><td>static le_uint16 LESwaps::swapWord(const le_uint16 &value)</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>LESwaps.h</td><td>static le_uint32 LESwaps::swapLong(const le_uint32 &value)</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>UnicodeString& MessageFormat::format(const UnicodeString *argumentNames, const Formattable *arguments, int32_t count, UnicodeString &appendTo, UErrorCode &status) const</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>RuleBasedTimeZone::RuleBasedTimeZone(const RuleBasedTimeZone &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::hasSameRules(const TimeZone &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::addTransitionRule(TimeZoneRule *rule, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>int32_t RuleBasedTimeZone::countTransitionRules(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>RuleBasedTimeZone& RuleBasedTimeZone::operator=(const RuleBasedTimeZone &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>RuleBasedTimeZone::RuleBasedTimeZone(const UnicodeString &id, InitialTimeZoneRule *initialRule)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UClassID RuleBasedTimeZone::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::useDaylightTime(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::setRawOffset(int32_t offsetMillis)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::getOffset(UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>static UClassID RuleBasedTimeZone::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::operator!=(const TimeZone &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::complete(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>void RuleBasedTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>TimeZone* RuleBasedTimeZone::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>RuleBasedTimeZone::~RuleBasedTimeZone()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getRawOffset(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>rbtz.h</td><td>UBool RuleBasedTimeZone::operator==(const TimeZone &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>simpletz.h</td><td>void SimpleTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>simpletz.h</td><td>UBool SimpleTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>simpletz.h</td><td>UBool SimpleTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>simpletz.h</td><td>int32_t SimpleTimeZone::countTransitionRules(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>timezone.h</td><td>static const char* TimeZone::getTZDataVersion(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t AnnualTimeZoneRule::getStartYear(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule* AnnualTimeZoneRule::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule& InitialTimeZoneRule::operator=(const InitialTimeZoneRule &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule::~AnnualTimeZoneRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>static UClassID TimeArrayTimeZoneRule::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t TimeZoneRule::getRawOffset(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule::InitialTimeZoneRule(const InitialTimeZoneRule &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t AnnualTimeZoneRule::getEndYear(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule::~InitialTimeZoneRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule::InitialTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>InitialTimeZoneRule* InitialTimeZoneRule::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule::~TimeArrayTimeZoneRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>const DateTimeRule* AnnualTimeZoneRule::getRule(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule& AnnualTimeZoneRule::operator=(const AnnualTimeZoneRule &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>static UClassID InitialTimeZoneRule::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule& TimeArrayTimeZoneRule::operator=(const TimeArrayTimeZoneRule &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeZoneRule* TimeZoneRule::clone(void) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t TimeZoneRule::getDSTSavings(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::operator==(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UClassID AnnualTimeZoneRule::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>int32_t TimeArrayTimeZoneRule::countStartTimes(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const UDate *startTimes, int32_t numStartTimes, DateTimeRule::TimeRuleType timeRuleType)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UClassID TimeArrayTimeZoneRule::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>DateTimeRule::TimeRuleType TimeArrayTimeZoneRule::getTimeType(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const AnnualTimeZoneRule &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::isEquivalentTo(const TimeZoneRule &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeZoneRule::~TimeZoneRule()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UnicodeString& TimeZoneRule::getName(UnicodeString &name) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const DateTimeRule &dateTimeRule, int32_t startYear, int32_t endYear)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>TimeArrayTimeZoneRule* TimeArrayTimeZoneRule::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>static UClassID AnnualTimeZoneRule::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getStartTimeAt(int32_t index, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, DateTimeRule *dateTimeRule, int32_t startYear, int32_t endYear)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UClassID InitialTimeZoneRule::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tzrule.h</td><td>UBool InitialTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>UBool TimeZoneTransition::operator!=(const TimeZoneTransition &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition* TimeZoneTransition::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>const TimeZoneRule* TimeZoneTransition::getFrom(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>UClassID TimeZoneTransition::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>UBool TimeZoneTransition::operator==(const TimeZoneTransition &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::adoptFrom(TimeZoneRule *from)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule &from, const TimeZoneRule &to)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::adoptTo(TimeZoneRule *to)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>UDate TimeZoneTransition::getTime(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>static UClassID TimeZoneTransition::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::setFrom(const TimeZoneRule &from)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::setTime(UDate time)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>const TimeZoneRule* TimeZoneTransition::getTo(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition::~TimeZoneTransition()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition& TimeZoneTransition::operator=(const TimeZoneTransition &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>void TimeZoneTransition::setTo(const TimeZoneRule &to)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition(const TimeZoneTransition &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucal.h</td><td>const char* ucal_getTZDataVersion(UErrorCode *status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>int32_t ucasemap_utf8FoldCase(const UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>void ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>const UBreakIterator* ucasemap_getBreakIterator(const UCaseMap *csm)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>int32_t ucasemap_utf8ToTitle(UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>ucasemap.h</td><td>int32_t ucasemap_toTitle(UCaseMap *csm, UChar *dest, int32_t destCapacity, const UChar *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>int32_t udatpg_getBaseSkeleton(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t length, UChar *baseSkeleton, int32_t capacity, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>int32_t udatpg_getSkeleton(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t length, UChar *skeleton, int32_t capacity, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UEnumeration* udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_close(UDateTimePatternGenerator *dtpg)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_openEmpty(UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg, UDateTimePatternField field, const UChar *value, int32_t length)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_open(const char *locale, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getDecimal(const UDateTimePatternGenerator *dtpg, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>int32_t udatpg_getBestPattern(UDateTimePatternGenerator *dtpg, const UChar *skeleton, int32_t length, UChar *bestPattern, int32_t capacity, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg, const UChar *skeleton, int32_t skeletonLength, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>const UChar* udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UEnumeration* udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>UDateTimePatternConflict udatpg_addPattern(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t patternLength, UBool override, UChar *conflictingPattern, int32_t capacity, int32_t *pLength, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_setDecimal(UDateTimePatternGenerator *dtpg, const UChar *decimal, int32_t length)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg, UDateTimePatternField field, const UChar *value, int32_t length)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>int32_t udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t patternLength, const UChar *skeleton, int32_t skeletonLength, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>udatpg.h</td><td>void udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg, const UChar *dtFormat, int32_t length)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uloc.h</td><td>int32_t uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity, UErrorCode *status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>int32_t UnicodeSet::span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>UnicodeFunctor* UnicodeSet::freeze()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>int32_t UnicodeSet::spanBackUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>UnicodeFunctor* UnicodeSet::cloneAsThawed() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>int32_t UnicodeSet::spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>int32_t UnicodeSet::spanUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>UBool UnicodeSet::isFrozen() const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>unistr.h</td><td>UnicodeString& UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>void uset_freeze(USet *set)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>UBool uset_isFrozen(const USet *set)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>int32_t uset_spanUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>USet* uset_cloneAsThawed(const USet *set)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>int32_t uset_spanBackUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>int32_t uset_spanBack(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>USet* uset_clone(const USet *set)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>uset.h</td><td>int32_t uset_span(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::write(UDate start, UnicodeString &result, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>int32_t VTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>VTimeZone& VTimeZone::operator=(const VTimeZone &right)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>static VTimeZone* VTimeZone::createVTimeZone(const UnicodeString &vtzdata, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::useDaylightTime(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UClassID VTimeZone::getDynamicClassID(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::getOffset(UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::operator!=(const TimeZone &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>int32_t VTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::write(UnicodeString &result, UErrorCode &status) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>static VTimeZone* VTimeZone::createVTimeZoneByID(const UnicodeString &ID)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>static UClassID VTimeZone::getStaticClassID(void)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::operator==(const TimeZone &that) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>int32_t VTimeZone::countTransitionRules(UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::setLastModified(UDate lastModified)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::getTZURL(UnicodeString &url) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::setTZURL(const UnicodeString &url)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::getLastModified(UDate &lastModified) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>TimeZone* VTimeZone::clone(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::setRawOffset(int32_t offsetMillis)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>int32_t VTimeZone::getRawOffset(void) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>UBool VTimeZone::hasSameRules(const TimeZone &other) const</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>void VTimeZone::writeSimple(UDate time, UnicodeString &result, UErrorCode &status)</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>VTimeZone::~VTimeZone()</td><td>Draft</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>vtzone.h</td><td>VTimeZone::VTimeZone(const VTimeZone &source)</td><td>Draft</td><td>Stable</td>
-</tr>
-</table>
-<P></P>
-<hr>
-<h2>Added in ICU 4.0</h2>
-<table BORDER="1">
-<THEAD>
-<tr>
-<th>File</th><th>Public API Prototype</th><th>ICU 3.8.1</th><th>ICU 4.0</th>
-</tr>
-</THEAD>
-<tr STYLE="">
-<td>datefmt.h</td><td>static DateFormat* DateFormat::createPatternInstance(const UnicodeString &skeleton, const Locale &locale, UErrorCode &status)</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>DateInterval::DateInterval(UDate fromDate, UDate toDate)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>UClassID DateInterval::getDynamicClassID(void) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>static UClassID DateInterval::getStaticClassID(void)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>DateInterval& DateInterval::operator=(const DateInterval &)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>DateInterval::DateInterval(const DateInterval &other)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>DateInterval::~DateInterval()</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>UBool DateInterval::operator==(const DateInterval &other) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>UBool DateInterval::operator!=(const DateInterval &other) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>UDate DateInterval::getToDate() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>DateInterval* DateInterval::clone() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtintrv.h</td><td>UDate DateInterval::getFromDate() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &skeleton, const Locale &locale, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>UBool DateIntervalFormat::operator==(const Format &other) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>const DateIntervalInfo* DateIntervalFormat::getDateIntervalInfo(void) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &skeleton, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>UClassID DateIntervalFormat::getDynamicClassID(void) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &skeleton, const DateIntervalInfo &dtitvinf, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>UnicodeString& DateIntervalFormat::format(const Formattable &obj, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>DateIntervalFormat::~DateIntervalFormat()</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &skeleton, const Locale &locale, const DateIntervalInfo &dtitvinf, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>UnicodeString& DateIntervalFormat::format(Calendar &fromCalendar, Calendar &toCalendar, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>void DateIntervalFormat::setDateIntervalInfo(const DateIntervalInfo &newIntervalPatterns, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>UnicodeString& DateIntervalFormat::format(const DateInterval *dtInterval, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>UBool DateIntervalFormat::operator!=(const Format &other) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>void DateIntervalFormat::parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>const DateFormat* DateIntervalFormat::getDateFormat(void) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>static UClassID DateIntervalFormat::getStaticClassID(void)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvfmt.h</td><td>Format* DateIntervalFormat::clone(void) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>void DateIntervalInfo::setFallbackIntervalPattern(const UnicodeString &fallbackPattern, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>U_NAMESPACE_BEGIN static U_CDECL_BEGIN UBool U_CALLCONV hashTableValueComparator(UHashTok val1, UHashTok val2)</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UBool DateIntervalInfo::operator==(const DateIntervalInfo &other) const</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>DateIntervalInfo* DateIntervalInfo::clone(void) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>DateIntervalInfo::DateIntervalInfo(const DateIntervalInfo &)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UnicodeString& DateIntervalInfo::getIntervalPattern(const UnicodeString &skeleton, UCalendarDateFields field, UnicodeString &result, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>void DateIntervalInfo::setIntervalPattern(const UnicodeString &skeleton, UCalendarDateFields lrgDiffCalUnit, const UnicodeString &intervalPattern, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UBool DateIntervalInfo::operator!=(const DateIntervalInfo &other) const</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>DateIntervalInfo::DateIntervalInfo(const Locale &locale, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UBool DateIntervalInfo::getDefaultOrder() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UnicodeString& DateIntervalInfo::getFallbackIntervalPattern(UnicodeString &result) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>DateIntervalInfo& DateIntervalInfo::operator=(const DateIntervalInfo &)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>DateIntervalInfo::~DateIntervalInfo()</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>static UClassID DateIntervalInfo::getStaticClassID()</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>UClassID DateIntervalInfo::getDynamicClassID() const</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>dtitvinf.h</td><td>DateIntervalInfo::DateIntervalInfo(UErrorCode &status)</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>LESwaps.h</td><td>static le_uint16 LESwaps::swapWord(const le_uint16 &value)</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>LESwaps.h</td><td>static le_uint32 LESwaps::swapLong(const le_uint32 &value)</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>Format* MessageFormat::getFormat(const UnicodeString &formatName, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>UnicodeString& MessageFormat::format(const UnicodeString *argumentNames, const Formattable *arguments, int32_t count, UnicodeString &appendTo, UErrorCode &status) const</td><td>None</td><td>Stable</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>void MessageFormat::setFormat(const UnicodeString &formatName, const Format &format, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>UBool MessageFormat::usesNamedArguments() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>StringEnumeration* MessageFormat::getFormatNames(UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>msgfmt.h</td><td>void MessageFormat::adoptFormat(const UnicodeString &formatName, Format *formatToAdopt, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(const Locale &locale, const PluralRules &rules, const UnicodeString &pattern, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>Format* PluralFormat::clone(void) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>static UClassID PluralFormat::getStaticClassID(void)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(const Locale &locale, const PluralRules &rules, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UBool PluralFormat::operator==(const Format &other) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UnicodeString& PluralFormat::format(double number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>void PluralFormat::setNumberFormat(const NumberFormat *format, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UClassID PluralFormat::getDynamicClassID() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(const PluralFormat &other)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(const Locale &locale, const UnicodeString &pattern, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UnicodeString PluralFormat::format(int32_t number, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>void PluralFormat::setLocale(const Locale &locale, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UnicodeString PluralFormat::format(double number, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UnicodeString& PluralFormat::format(const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat& PluralFormat::operator=(const PluralFormat &other)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>void PluralFormat::parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UBool PluralFormat::operator!=(const Format &other) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(const Locale &locale, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(const UnicodeString &pattern, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(const PluralRules &rules, const UnicodeString &pattern, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::~PluralFormat()</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UnicodeString& PluralFormat::format(int32_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>UnicodeString& PluralFormat::toPattern(UnicodeString &appendTo)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>void PluralFormat::applyPattern(const UnicodeString &pattern, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurfmt.h</td><td>PluralFormat::PluralFormat(const PluralRules &rules, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>StringEnumeration* PluralRules::getKeywords(UErrorCode &status) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>PluralRules* PluralRules::clone() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>UnicodeString PluralRules::select(int32_t number) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>PluralRules::~PluralRules()</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>UnicodeString PluralRules::select(double number) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>PluralRules& PluralRules::operator=(const PluralRules &)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>PluralRules::PluralRules(const PluralRules &other)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>UBool PluralRules::operator!=(const PluralRules &other) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>UBool PluralRules::isKeyword(const UnicodeString &keyword) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>static UClassID PluralRules::getStaticClassID(void)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>static PluralRules* PluralRules::forLocale(const Locale &locale, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>UBool PluralRules::operator==(const PluralRules &other) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>PluralRules::PluralRules(UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>static PluralRules* PluralRules::createRules(const UnicodeString &description, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>static PluralRules* PluralRules::createDefaultRules(UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>UnicodeString PluralRules::getKeywordOther() const</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>plurrule.h</td><td>UClassID PluralRules::getDynamicClassID() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>void RegexMatcher::setMatchCallback(URegexMatchCallback *callback, const void *context, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>int32_t RegexMatcher::getStackLimit() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>RegexMatcher& RegexMatcher::region(int32_t start, int32_t limit, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>void RegexMatcher::resetPreserveRegion()</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>UBool RegexMatcher::hasTransparentBounds() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>int32_t RegexMatcher::regionEnd() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>UBool RegexMatcher::requireEnd() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>void RegexMatcher::getMatchCallback(URegexMatchCallback *&callback, const void *&context, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>RegexMatcher& RegexMatcher::useAnchoringBounds(UBool b)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>int32_t RegexMatcher::getTimeLimit() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>UBool RegexMatcher::hitEnd() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>void RegexMatcher::setTimeLimit(int32_t limit, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>RegexMatcher& RegexMatcher::useTransparentBounds(UBool b)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>UBool RegexMatcher::hasAnchoringBounds() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>void RegexMatcher::setStackLimit(int32_t limit, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>regex.h</td><td>int32_t RegexMatcher::regionStart() const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>smpdtfmt.h</td><td>const Locale& SimpleDateFormat::getSmpFmtLocale(void) const</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>smpdtfmt.h</td><td>static UBool SimpleDateFormat::isFieldUnitIgnored(const UnicodeString &pattern, UCalendarDateFields field)</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>smpdtfmt.h</td><td>UBool SimpleDateFormat::isFieldUnitIgnored(UCalendarDateFields field) const</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>timezone.h</td><td>static UnicodeString& TimeZone::getCanonicalID(const UnicodeString &id, UnicodeString &canonicalID, UBool &isSystemID, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>timezone.h</td><td>static UnicodeString& TimeZone::getCanonicalID(const UnicodeString &id, UnicodeString &canonicalID, UErrorCode &status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>ucal.h</td><td>UCalendar* ucal_clone(const UCalendar *cal, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>ucal.h</td><td>int32_t ucal_getCanonicalTimeZoneID(const UChar *id, int32_t len, UChar *result, int32_t resultCapacity, UBool *isSystemID, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>ucoleitr.h</td><td>int64_t ucol_previousProcessed(UCollationElements *elems, int32_t *ixLow, int32_t *ixHigh, UErrorCode *status)</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>ucoleitr.h</td><td>int64_t ucol_nextProcessed(UCollationElements *elems, int32_t *ixLow, int32_t *ixHigh, UErrorCode *status)</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>ucurr.h</td><td>int32_t ucurr_countCurrencies(const char *locale, UDate date, UErrorCode *ec)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>ucurr.h</td><td>int32_t ucurr_forLocaleAndDate(const char *locale, UDate date, int32_t index, UChar *buff, int32_t buffCapacity, UErrorCode *ec)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uloc.h</td><td>int32_t uloc_addLikelySubtags(const char *localeID, char *maximizedLocaleID, int32_t maximizedLocaleIDCapacity, UErrorCode *err)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uloc.h</td><td>int32_t uloc_minimizeSubtags(const char *localeID, char *minimizedLocaleID, int32_t minimizedLocaleIDCapacity, UErrorCode *err)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uloc.h</td><td>ULayoutType uloc_getLineOrientation(const char *localeId, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uloc.h</td><td>ULayoutType uloc_getCharacterOrientation(const char *localeId, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>UnicodeSet& UnicodeSet::removeAllStrings()</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>UBool UnicodeSet::isBogus(void) const</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uniset.h</td><td>void UnicodeSet::setToBogus()</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>void uregex_getMatchCallback(const URegularExpression *regexp, URegexMatchCallback **callback, const void **context, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>int32_t uregex_getStackLimit(const URegularExpression *regexp, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>UBool uregex_hitEnd(const URegularExpression *regexp, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>void uregex_useAnchoringBounds(URegularExpression *regexp, UBool b, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>int32_t uregex_getTimeLimit(const URegularExpression *regexp, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>U_CDECL_END void uregex_setMatchCallback(URegularExpression *regexp, URegexMatchCallback *callback, const void *context, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>void uregex_setTimeLimit(URegularExpression *regexp, int32_t limit, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>UBool uregex_hasAnchoringBounds(const URegularExpression *regexp, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>int32_t uregex_regionEnd(const URegularExpression *regexp, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>UBool uregex_requireEnd(const URegularExpression *regexp, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>void uregex_setRegion(URegularExpression *regexp, int32_t regionStart, int32_t regionLimit, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>void uregex_useTransparentBounds(URegularExpression *regexp, UBool b, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>UBool uregex_hasTransparentBounds(const URegularExpression *regexp, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>void uregex_setStackLimit(URegularExpression *regexp, int32_t limit, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>int32_t uregex_regionStart(const URegularExpression *regexp, UErrorCode *status)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>uregex.h</td><td>U_CDECL_BEGIN typedef UBool U_CALLCONV URegexMatchCallback(const void *context, int32_t steps)</td><td>None</td><td>Draft</td>
-</tr>
-<tr STYLE="">
-<td>usearch.h</td><td>UBool usearch_search(UStringSearch *strsrch, int32_t startIdx, int32_t *matchStart, int32_t *matchLimit, UErrorCode *status)</td><td>None</td><td>Internal</td>
-</tr>
-<tr STYLE="">
-<td>usearch.h</td><td>UBool usearch_searchBackwards(UStringSearch *strsrch, int32_t startIdx, int32_t *matchStart, int32_t *matchLimit, UErrorCode *status)</td><td>None</td><td>Internal</td>
-</tr>
-</table>
-<P></P>
-<hr>
-<p>
-<i><font size="-1">Contents generated by StableAPI tool on Fri Jun 27 08:52:04 PDT 2008<br>Copyright (C) 2008, International Business Machines Corporation, All Rights Reserved.</font></i>
-</p>
-</body>
-</html>
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright (C) 2008, International Business Machines Corporation, All Rights Reserved.
+ --><html><head><title>ICU4C API Comparison: 3.8.1 with 4.0</title><link type="text/css" rel="stylesheet" href="icu4c.css"/></head><body><h1>ICU4C API Comparison: 3.8.1 with 4.0</h1><hr/><h2>Removed from 3.8.1</h2><table BORDER="1"><THEAD><tr><th>File</th><th>API</th><th>3.8.1</th><th>4.0</th></tr></THEAD><tr class="row1"><td>LESwaps.h</td><td>static le_uint16 LESwaps::swapWord(le_uint16 value)</td><td class="stabchange">Stable<br/>2.8</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row0"><td>LESwaps.h</td><td>static le_uint32 LESwaps::swapLong(le_uint32 value)</td><td class="stabchange">Stable<br/>2.8</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row1"><td>LESwaps.h</td><td>static le_uint8 LESwaps::isBigEndian()</td><td class="stabchange">Stable<br/>2.8</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row0"><td>msgfmt.h</td><td>UBool MessageFormat::Subformat::operator==(const Subformat &that) const</td><td class="">Internal<br/>.</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row1"><td>msgfmt.h</td><td>Subformat& MessageFormat::Subformat::operator=(const Subformat &that)</td><td class="">Internal<br/>.</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row0"><td>msgfmt.h</td><td>UBool MessageFormat::Subformat::operator!=(const Subformat &that) const</td><td class="">Internal<br/>.</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row1"><td>ucol.h</td><td>UCollator* ucol_openFromIdentifier(uint32_t identifier, UBool forceDefaults, UErrorCode *status)</td><td class="">Internal<br/>3.0</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row0"><td>ucol.h</td><td>int32_t ucol_identifierToShortString(uint32_t identifier, char *buffer, int32_t capacity, UBool forceDefaults, UErrorCode *status)</td><td class="">Internal<br/>3.0</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row1"><td>ucol.h</td><td>uint32_t ucol_shortStringToIdentifier(const char *definition, UBool forceDefaults, UErrorCode *status)</td><td class="">Internal<br/>3.0</td><td>None<br/><span class=""><span/></span></td></tr><tr class="row0"><td>ucol.h</td><td>uint32_t ucol_collatorToIdentifier(const UCollator *coll, const char *locale, UErrorCode *status)</td><td class="">Internal<br/>3.0</td><td>None<br/><span class=""><span/></span></td></tr></table><P/><hr/><h2>Deprecated or Obsoleted in 4.0</h2><table BORDER="1"><THEAD><tr><th>File</th><th>API</th><th>3.8.1</th><th>4.0</th></tr></THEAD></table><P/><hr/><h2>Changed in 4.0 (old, new)</h2><table BORDER="1"><THEAD><tr><th>File</th><th>API</th><th>3.8.1</th><th>4.0</th></tr></THEAD><tr class="row1"><td>basictz.h</td><td>int32_t BasicTimeZone::countTransitionRules(UErrorCode &status)=0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>basictz.h</td><td>BasicTimeZone::~BasicTimeZone()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>basictz.h</td><td>void BasicTimeZone::getSimpleRulesNear(UDate date, InitialTimeZoneRule *&initial, AnnualTimeZoneRule *&std, AnnualTimeZoneRule *&dst, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>basictz.h</td><td>UBool BasicTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>basictz.h</td><td>UBool BasicTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>basictz.h</td><td>void BasicTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)=0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>basictz.h</td><td>UBool BasicTimeZone::hasEquivalentTransitions(BasicTimeZone &tz, UDate start, UDate end, UBool ignoreDstAmount, UErrorCode &ec)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>UBool DateTimePatternGenerator::operator!=(const DateTimePatternGenerator &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getAppendItemName(UDateTimePatternField field) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getPatternForSkeleton(const UnicodeString &skeleton) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>StringEnumeration* DateTimePatternGenerator::getBaseSkeletons(UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>DateTimePatternGenerator::~DateTimePatternGenerator()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getSkeleton(const UnicodeString &pattern, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>static UClassID DateTimePatternGenerator::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::replaceFieldTypes(const UnicodeString &pattern, const UnicodeString &skeleton, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>UBool DateTimePatternGenerator::operator==(const DateTimePatternGenerator &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>DateTimePatternGenerator* DateTimePatternGenerator::clone() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createInstance(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getDecimal() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getAppendItemFormat(UDateTimePatternField field) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UClassID DateTimePatternGenerator::getDynamicClassID() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>void DateTimePatternGenerator::setAppendItemName(UDateTimePatternField field, const UnicodeString &value)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>void DateTimePatternGenerator::setAppendItemFormat(UDateTimePatternField field, const UnicodeString &value)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>void DateTimePatternGenerator::setDecimal(const UnicodeString &decimal)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createEmptyInstance(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>StringEnumeration* DateTimePatternGenerator::getSkeletons(UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>void DateTimePatternGenerator::setDateTimeFormat(const UnicodeString &dateTimeFormat)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createInstance(const Locale &uLocale, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getBaseSkeleton(const UnicodeString &pattern, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getDateTimeFormat() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getBestPattern(const UnicodeString &skeleton, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>UDateTimePatternConflict DateTimePatternGenerator::addPattern(const UnicodeString &pattern, UBool override, UnicodeString &conflictingPattern, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t millisInDay, TimeRuleType timeType)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleWeekInMonth(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleMonth(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, UBool after, int32_t millisInDay, TimeRuleType timeType)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule* DateTimeRule::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>UClassID DateTimeRule::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule::~DateTimeRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleDayOfWeek(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>UBool DateTimeRule::operator==(const DateTimeRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>DateRuleType DateTimeRule::getDateRuleType(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleDayOfMonth(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>UBool DateTimeRule::operator!=(const DateTimeRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule& DateTimeRule::operator=(const DateTimeRule &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t weekInMonth, int32_t dayOfWeek, int32_t millisInDay, TimeRuleType timeType)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>TimeRuleType DateTimeRule::getTimeRuleType(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleMillisInDay(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule::DateTimeRule(const DateTimeRule &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>static UClassID DateTimeRule::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>RuleBasedTimeZone::RuleBasedTimeZone(const UnicodeString &id, InitialTimeZoneRule *initialRule)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>UClassID RuleBasedTimeZone::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>void RuleBasedTimeZone::addTransitionRule(TimeZoneRule *rule, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>void RuleBasedTimeZone::getOffset(UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::hasSameRules(const TimeZone &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>static UClassID RuleBasedTimeZone::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>void RuleBasedTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>void RuleBasedTimeZone::complete(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getRawOffset(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>void RuleBasedTimeZone::setRawOffset(int32_t offsetMillis)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>RuleBasedTimeZone& RuleBasedTimeZone::operator=(const RuleBasedTimeZone &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::operator==(const TimeZone &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::useDaylightTime(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::operator!=(const TimeZone &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>RuleBasedTimeZone::~RuleBasedTimeZone()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>TimeZone* RuleBasedTimeZone::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>int32_t RuleBasedTimeZone::countTransitionRules(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>RuleBasedTimeZone::RuleBasedTimeZone(const RuleBasedTimeZone &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>simpletz.h</td><td>UBool SimpleTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>simpletz.h</td><td>void SimpleTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>simpletz.h</td><td>UBool SimpleTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>simpletz.h</td><td>int32_t SimpleTimeZone::countTransitionRules(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>timezone.h</td><td>static const char* TimeZone::getTZDataVersion(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>TimeArrayTimeZoneRule& TimeArrayTimeZoneRule::operator=(const TimeArrayTimeZoneRule &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>AnnualTimeZoneRule& AnnualTimeZoneRule::operator=(const AnnualTimeZoneRule &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UClassID TimeArrayTimeZoneRule::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UClassID AnnualTimeZoneRule::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const AnnualTimeZoneRule &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>InitialTimeZoneRule* InitialTimeZoneRule::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>AnnualTimeZoneRule::~AnnualTimeZoneRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>InitialTimeZoneRule::InitialTimeZoneRule(const InitialTimeZoneRule &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>int32_t TimeZoneRule::getRawOffset(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>int32_t TimeArrayTimeZoneRule::countStartTimes(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>TimeArrayTimeZoneRule* TimeArrayTimeZoneRule::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>static UClassID TimeArrayTimeZoneRule::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>int32_t TimeZoneRule::getDSTSavings(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UnicodeString& TimeZoneRule::getName(UnicodeString &name) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>TimeArrayTimeZoneRule::~TimeArrayTimeZoneRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UClassID InitialTimeZoneRule::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>const DateTimeRule* AnnualTimeZoneRule::getRule(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>TimeZoneRule* TimeZoneRule::clone(void) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>static UClassID AnnualTimeZoneRule::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>TimeZoneRule::~TimeZoneRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>int32_t AnnualTimeZoneRule::getStartYear(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const DateTimeRule &dateTimeRule, int32_t startYear, int32_t endYear)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>InitialTimeZoneRule::~InitialTimeZoneRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const UDate *startTimes, int32_t numStartTimes, DateTimeRule::TimeRuleType timeRuleType)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>InitialTimeZoneRule& InitialTimeZoneRule::operator=(const InitialTimeZoneRule &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, DateTimeRule *dateTimeRule, int32_t startYear, int32_t endYear)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getStartTimeAt(int32_t index, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>InitialTimeZoneRule::InitialTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeZoneRule::operator==(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>AnnualTimeZoneRule* AnnualTimeZoneRule::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>static UClassID InitialTimeZoneRule::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>int32_t AnnualTimeZoneRule::getEndYear(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeZoneRule::isEquivalentTo(const TimeZoneRule &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>DateTimeRule::TimeRuleType TimeArrayTimeZoneRule::getTimeType(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>void TimeZoneTransition::setTo(const TimeZoneRule &to)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule &from, const TimeZoneRule &to)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>UBool TimeZoneTransition::operator==(const TimeZoneTransition &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>UBool TimeZoneTransition::operator!=(const TimeZoneTransition &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>void TimeZoneTransition::adoptTo(TimeZoneRule *to)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>const TimeZoneRule* TimeZoneTransition::getFrom(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>UClassID TimeZoneTransition::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>static UClassID TimeZoneTransition::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>void TimeZoneTransition::setTime(UDate time)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition(const TimeZoneTransition &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>TimeZoneTransition::~TimeZoneTransition()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>void TimeZoneTransition::adoptFrom(TimeZoneRule *from)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>TimeZoneTransition& TimeZoneTransition::operator=(const TimeZoneTransition &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>UDate TimeZoneTransition::getTime(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>TimeZoneTransition* TimeZoneTransition::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>const TimeZoneRule* TimeZoneTransition::getTo(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>void TimeZoneTransition::setFrom(const TimeZoneRule &from)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>ucal.h</td><td>const char* ucal_getTZDataVersion(UErrorCode *status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>ucasemap.h</td><td>int32_t ucasemap_toTitle(UCaseMap *csm, UChar *dest, int32_t destCapacity, const UChar *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>ucasemap.h</td><td>const UBreakIterator* ucasemap_getBreakIterator(const UCaseMap *csm)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>ucasemap.h</td><td>int32_t ucasemap_utf8ToTitle(UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>ucasemap.h</td><td>void ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>ucasemap.h</td><td>int32_t ucasemap_utf8FoldCase(const UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>UEnumeration* udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>const UChar* udatpg_getDecimal(const UDateTimePatternGenerator *dtpg, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>void udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg, UDateTimePatternField field, const UChar *value, int32_t length)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_open(const char *locale, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>const UChar* udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>void udatpg_setDecimal(UDateTimePatternGenerator *dtpg, const UChar *decimal, int32_t length)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>int32_t udatpg_getSkeleton(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t length, UChar *skeleton, int32_t capacity, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>void udatpg_close(UDateTimePatternGenerator *dtpg)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>void udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg, const UChar *dtFormat, int32_t length)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>int32_t udatpg_getBestPattern(UDateTimePatternGenerator *dtpg, const UChar *skeleton, int32_t length, UChar *bestPattern, int32_t capacity, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>const UChar* udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>void udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg, UDateTimePatternField field, const UChar *value, int32_t length)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_openEmpty(UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>UDateTimePatternConflict udatpg_addPattern(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t patternLength, UBool override, UChar *conflictingPattern, int32_t capacity, int32_t *pLength, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>UEnumeration* udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>const UChar* udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg, const UChar *skeleton, int32_t skeletonLength, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>int32_t udatpg_getBaseSkeleton(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t length, UChar *baseSkeleton, int32_t capacity, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>const UChar* udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>int32_t udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t patternLength, const UChar *skeleton, int32_t skeletonLength, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uloc.h</td><td>int32_t uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity, UErrorCode *status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>UBool UnicodeSet::isFrozen() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uniset.h</td><td>UnicodeFunctor* UnicodeSet::freeze()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>int32_t UnicodeSet::spanBackUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uniset.h</td><td>int32_t UnicodeSet::span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>int32_t UnicodeSet::spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uniset.h</td><td>int32_t UnicodeSet::spanUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>UnicodeFunctor* UnicodeSet::cloneAsThawed() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>unistr.h</td><td>UnicodeString& UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uset.h</td><td>int32_t uset_spanBackUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uset.h</td><td>int32_t uset_span(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uset.h</td><td>int32_t uset_spanBack(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uset.h</td><td>UBool uset_isFrozen(const USet *set)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uset.h</td><td>int32_t uset_spanUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uset.h</td><td>USet* uset_cloneAsThawed(const USet *set)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uset.h</td><td>USet* uset_clone(const USet *set)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uset.h</td><td>void uset_freeze(USet *set)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UBool VTimeZone::operator!=(const TimeZone &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>void VTimeZone::setRawOffset(int32_t offsetMillis)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UBool VTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>TimeZone* VTimeZone::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UBool VTimeZone::hasSameRules(const TimeZone &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>VTimeZone& VTimeZone::operator=(const VTimeZone &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>static VTimeZone* VTimeZone::createVTimeZone(const UnicodeString &vtzdata, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>void VTimeZone::write(UDate start, UnicodeString &result, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UBool VTimeZone::useDaylightTime(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UClassID VTimeZone::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>void VTimeZone::write(UnicodeString &result, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>static UClassID VTimeZone::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>int32_t VTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>void VTimeZone::setLastModified(UDate lastModified)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UBool VTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>void VTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UBool VTimeZone::getTZURL(UnicodeString &url) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>static VTimeZone* VTimeZone::createVTimeZoneByID(const UnicodeString &ID)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>VTimeZone::~VTimeZone()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UBool VTimeZone::operator==(const TimeZone &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UBool VTimeZone::getLastModified(UDate &lastModified) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>int32_t VTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>VTimeZone::VTimeZone(const VTimeZone &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>int32_t VTimeZone::getRawOffset(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>void VTimeZone::getOffset(UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>void VTimeZone::writeSimple(UDate time, UnicodeString &result, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>void VTimeZone::setTZURL(const UnicodeString &url)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>int32_t VTimeZone::countTransitionRules(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr></table><P/><hr/><h2>Promoted to stable in 4.0</h2><table BORDER="1"><THEAD><tr><th>File</th><th>API</th><th>3.8.1</th><th>4.0</th></tr></THEAD><tr class="row1"><td>basictz.h</td><td>int32_t BasicTimeZone::countTransitionRules(UErrorCode &status)=0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>basictz.h</td><td>BasicTimeZone::~BasicTimeZone()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>basictz.h</td><td>void BasicTimeZone::getSimpleRulesNear(UDate date, InitialTimeZoneRule *&initial, AnnualTimeZoneRule *&std, AnnualTimeZoneRule *&dst, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>basictz.h</td><td>UBool BasicTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>basictz.h</td><td>UBool BasicTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)=0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>basictz.h</td><td>void BasicTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)=0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>basictz.h</td><td>UBool BasicTimeZone::hasEquivalentTransitions(BasicTimeZone &tz, UDate start, UDate end, UBool ignoreDstAmount, UErrorCode &ec)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>UClassID DateIntervalInfo::getDynamicClassID() const</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>static UClassID DateIntervalInfo::getStaticClassID()</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>UBool DateIntervalInfo::operator==(const DateIntervalInfo &other) const</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>UBool DateIntervalInfo::operator!=(const DateIntervalInfo &other) const</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>UBool DateTimePatternGenerator::operator!=(const DateTimePatternGenerator &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getAppendItemName(UDateTimePatternField field) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getPatternForSkeleton(const UnicodeString &skeleton) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>StringEnumeration* DateTimePatternGenerator::getBaseSkeletons(UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>DateTimePatternGenerator::~DateTimePatternGenerator()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getSkeleton(const UnicodeString &pattern, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>static UClassID DateTimePatternGenerator::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::replaceFieldTypes(const UnicodeString &pattern, const UnicodeString &skeleton, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>UBool DateTimePatternGenerator::operator==(const DateTimePatternGenerator &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>DateTimePatternGenerator* DateTimePatternGenerator::clone() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createInstance(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getDecimal() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getAppendItemFormat(UDateTimePatternField field) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UClassID DateTimePatternGenerator::getDynamicClassID() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>void DateTimePatternGenerator::setAppendItemName(UDateTimePatternField field, const UnicodeString &value)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>void DateTimePatternGenerator::setAppendItemFormat(UDateTimePatternField field, const UnicodeString &value)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>void DateTimePatternGenerator::setDecimal(const UnicodeString &decimal)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createEmptyInstance(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>StringEnumeration* DateTimePatternGenerator::getSkeletons(UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>void DateTimePatternGenerator::setDateTimeFormat(const UnicodeString &dateTimeFormat)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>static DateTimePatternGenerator* DateTimePatternGenerator::createInstance(const Locale &uLocale, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getBaseSkeleton(const UnicodeString &pattern, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>const UnicodeString& DateTimePatternGenerator::getDateTimeFormat() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtptngen.h</td><td>UnicodeString DateTimePatternGenerator::getBestPattern(const UnicodeString &skeleton, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtptngen.h</td><td>UDateTimePatternConflict DateTimePatternGenerator::addPattern(const UnicodeString &pattern, UBool override, UnicodeString &conflictingPattern, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t millisInDay, TimeRuleType timeType)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleWeekInMonth(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleMonth(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, UBool after, int32_t millisInDay, TimeRuleType timeType)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule* DateTimeRule::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>UClassID DateTimeRule::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule::~DateTimeRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleDayOfWeek(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>UBool DateTimeRule::operator==(const DateTimeRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>DateRuleType DateTimeRule::getDateRuleType(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleDayOfMonth(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>UBool DateTimeRule::operator!=(const DateTimeRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule& DateTimeRule::operator=(const DateTimeRule &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>DateTimeRule::DateTimeRule(int32_t month, int32_t weekInMonth, int32_t dayOfWeek, int32_t millisInDay, TimeRuleType timeType)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>TimeRuleType DateTimeRule::getTimeRuleType(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>int32_t DateTimeRule::getRuleMillisInDay(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>dtrule.h</td><td>DateTimeRule::DateTimeRule(const DateTimeRule &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>dtrule.h</td><td>static UClassID DateTimeRule::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>LESwaps.h</td><td>static le_uint16 LESwaps::swapWord(const le_uint16 &value)</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>2.8</span></span></td></tr><tr class="row0"><td>LESwaps.h</td><td>static le_uint32 LESwaps::swapLong(const le_uint32 &value)</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>2.8</span></span></td></tr><tr class="row1"><td>msgfmt.h</td><td>UnicodeString& MessageFormat::format(const UnicodeString *argumentNames, const Formattable *arguments, int32_t count, UnicodeString &appendTo, UErrorCode &status) const</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>RuleBasedTimeZone::RuleBasedTimeZone(const UnicodeString &id, InitialTimeZoneRule *initialRule)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>UClassID RuleBasedTimeZone::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>void RuleBasedTimeZone::addTransitionRule(TimeZoneRule *rule, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>void RuleBasedTimeZone::getOffset(UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::hasSameRules(const TimeZone &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>static UClassID RuleBasedTimeZone::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>void RuleBasedTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>void RuleBasedTimeZone::complete(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getRawOffset(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>void RuleBasedTimeZone::setRawOffset(int32_t offsetMillis)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>RuleBasedTimeZone& RuleBasedTimeZone::operator=(const RuleBasedTimeZone &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::operator==(const TimeZone &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::useDaylightTime(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::operator!=(const TimeZone &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>UBool RuleBasedTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>RuleBasedTimeZone::~RuleBasedTimeZone()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>TimeZone* RuleBasedTimeZone::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>int32_t RuleBasedTimeZone::countTransitionRules(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>rbtz.h</td><td>RuleBasedTimeZone::RuleBasedTimeZone(const RuleBasedTimeZone &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>rbtz.h</td><td>int32_t RuleBasedTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>simpletz.h</td><td>UBool SimpleTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>simpletz.h</td><td>void SimpleTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>simpletz.h</td><td>UBool SimpleTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>simpletz.h</td><td>int32_t SimpleTimeZone::countTransitionRules(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>timezone.h</td><td>static const char* TimeZone::getTZDataVersion(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>TimeArrayTimeZoneRule& TimeArrayTimeZoneRule::operator=(const TimeArrayTimeZoneRule &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>AnnualTimeZoneRule& AnnualTimeZoneRule::operator=(const AnnualTimeZoneRule &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UClassID TimeArrayTimeZoneRule::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UClassID AnnualTimeZoneRule::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const AnnualTimeZoneRule &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>InitialTimeZoneRule* InitialTimeZoneRule::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>AnnualTimeZoneRule::~AnnualTimeZoneRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>InitialTimeZoneRule::InitialTimeZoneRule(const InitialTimeZoneRule &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>int32_t TimeZoneRule::getRawOffset(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>int32_t TimeArrayTimeZoneRule::countStartTimes(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>TimeArrayTimeZoneRule* TimeArrayTimeZoneRule::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>static UClassID TimeArrayTimeZoneRule::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>int32_t TimeZoneRule::getDSTSavings(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UnicodeString& TimeZoneRule::getName(UnicodeString &name) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>TimeArrayTimeZoneRule::~TimeArrayTimeZoneRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UClassID InitialTimeZoneRule::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>const DateTimeRule* AnnualTimeZoneRule::getRule(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>TimeZoneRule* TimeZoneRule::clone(void) const =0</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>static UClassID AnnualTimeZoneRule::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>TimeZoneRule::~TimeZoneRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>int32_t AnnualTimeZoneRule::getStartYear(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings, UBool inclusive, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const DateTimeRule &dateTimeRule, int32_t startYear, int32_t endYear)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>InitialTimeZoneRule::~InitialTimeZoneRule()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>TimeArrayTimeZoneRule::TimeArrayTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, const UDate *startTimes, int32_t numStartTimes, DateTimeRule::TimeRuleType timeRuleType)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool InitialTimeZoneRule::getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>InitialTimeZoneRule& InitialTimeZoneRule::operator=(const InitialTimeZoneRule &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeZoneRule::operator!=(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>AnnualTimeZoneRule::AnnualTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings, DateTimeRule *dateTimeRule, int32_t startYear, int32_t endYear)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeArrayTimeZoneRule::getStartTimeAt(int32_t index, UDate &result) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::operator==(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool AnnualTimeZoneRule::isEquivalentTo(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>InitialTimeZoneRule::InitialTimeZoneRule(const UnicodeString &name, int32_t rawOffset, int32_t dstSavings)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeZoneRule::operator==(const TimeZoneRule &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>AnnualTimeZoneRule* AnnualTimeZoneRule::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>static UClassID InitialTimeZoneRule::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>int32_t AnnualTimeZoneRule::getEndYear(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tzrule.h</td><td>UBool TimeZoneRule::isEquivalentTo(const TimeZoneRule &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tzrule.h</td><td>DateTimeRule::TimeRuleType TimeArrayTimeZoneRule::getTimeType(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>void TimeZoneTransition::setTo(const TimeZoneRule &to)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition(UDate time, const TimeZoneRule &from, const TimeZoneRule &to)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>UBool TimeZoneTransition::operator==(const TimeZoneTransition &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>UBool TimeZoneTransition::operator!=(const TimeZoneTransition &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>void TimeZoneTransition::adoptTo(TimeZoneRule *to)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>const TimeZoneRule* TimeZoneTransition::getFrom(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>UClassID TimeZoneTransition::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>static UClassID TimeZoneTransition::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>void TimeZoneTransition::setTime(UDate time)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>TimeZoneTransition::TimeZoneTransition(const TimeZoneTransition &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>TimeZoneTransition::~TimeZoneTransition()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>void TimeZoneTransition::adoptFrom(TimeZoneRule *from)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>TimeZoneTransition& TimeZoneTransition::operator=(const TimeZoneTransition &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>UDate TimeZoneTransition::getTime(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>TimeZoneTransition* TimeZoneTransition::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>tztrans.h</td><td>const TimeZoneRule* TimeZoneTransition::getTo(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>tztrans.h</td><td>void TimeZoneTransition::setFrom(const TimeZoneRule &from)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>ucal.h</td><td>const char* ucal_getTZDataVersion(UErrorCode *status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>ucasemap.h</td><td>int32_t ucasemap_toTitle(UCaseMap *csm, UChar *dest, int32_t destCapacity, const UChar *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>ucasemap.h</td><td>const UBreakIterator* ucasemap_getBreakIterator(const UCaseMap *csm)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>ucasemap.h</td><td>int32_t ucasemap_utf8ToTitle(UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>ucasemap.h</td><td>void ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>ucasemap.h</td><td>int32_t ucasemap_utf8FoldCase(const UCaseMap *csm, char *dest, int32_t destCapacity, const char *src, int32_t srcLength, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>UEnumeration* udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>const UChar* udatpg_getDecimal(const UDateTimePatternGenerator *dtpg, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>void udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg, UDateTimePatternField field, const UChar *value, int32_t length)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_open(const char *locale, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>const UChar* udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>void udatpg_setDecimal(UDateTimePatternGenerator *dtpg, const UChar *decimal, int32_t length)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>int32_t udatpg_getSkeleton(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t length, UChar *skeleton, int32_t capacity, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>void udatpg_close(UDateTimePatternGenerator *dtpg)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>void udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg, const UChar *dtFormat, int32_t length)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>int32_t udatpg_getBestPattern(UDateTimePatternGenerator *dtpg, const UChar *skeleton, int32_t length, UChar *bestPattern, int32_t capacity, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>const UChar* udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>void udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg, UDateTimePatternField field, const UChar *value, int32_t length)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>UDateTimePatternGenerator* udatpg_openEmpty(UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>UDateTimePatternConflict udatpg_addPattern(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t patternLength, UBool override, UChar *conflictingPattern, int32_t capacity, int32_t *pLength, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>UEnumeration* udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>const UChar* udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg, const UChar *skeleton, int32_t skeletonLength, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>int32_t udatpg_getBaseSkeleton(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t length, UChar *baseSkeleton, int32_t capacity, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>udatpg.h</td><td>const UChar* udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>udatpg.h</td><td>int32_t udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg, const UChar *pattern, int32_t patternLength, const UChar *skeleton, int32_t skeletonLength, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uloc.h</td><td>int32_t uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity, UErrorCode *status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uniset.h</td><td>UBool UnicodeSet::isFrozen() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>UnicodeFunctor* UnicodeSet::freeze()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uniset.h</td><td>int32_t UnicodeSet::spanBackUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>int32_t UnicodeSet::span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uniset.h</td><td>int32_t UnicodeSet::spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>int32_t UnicodeSet::spanUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uniset.h</td><td>UnicodeFunctor* UnicodeSet::cloneAsThawed() const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>unistr.h</td><td>UnicodeString& UnicodeString::toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uset.h</td><td>int32_t uset_spanBackUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uset.h</td><td>int32_t uset_span(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uset.h</td><td>int32_t uset_spanBack(const USet *set, const UChar *s, int32_t length, USetSpanCondition spanCondition)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uset.h</td><td>UBool uset_isFrozen(const USet *set)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uset.h</td><td>int32_t uset_spanUTF8(const USet *set, const char *s, int32_t length, USetSpanCondition spanCondition)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uset.h</td><td>USet* uset_cloneAsThawed(const USet *set)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>uset.h</td><td>USet* uset_clone(const USet *set)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>uset.h</td><td>void uset_freeze(USet *set)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UBool VTimeZone::operator!=(const TimeZone &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>void VTimeZone::setRawOffset(int32_t offsetMillis)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UBool VTimeZone::getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>TimeZone* VTimeZone::clone(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UBool VTimeZone::hasSameRules(const TimeZone &other) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>VTimeZone& VTimeZone::operator=(const VTimeZone &right)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>static VTimeZone* VTimeZone::createVTimeZone(const UnicodeString &vtzdata, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>void VTimeZone::write(UDate start, UnicodeString &result, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UBool VTimeZone::useDaylightTime(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UClassID VTimeZone::getDynamicClassID(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>void VTimeZone::write(UnicodeString &result, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>static UClassID VTimeZone::getStaticClassID(void)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>int32_t VTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>void VTimeZone::setLastModified(UDate lastModified)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UBool VTimeZone::getNextTransition(UDate base, UBool inclusive, TimeZoneTransition &result)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>void VTimeZone::getTimeZoneRules(const InitialTimeZoneRule *&initial, const TimeZoneRule *trsrules[], int32_t &trscount, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UBool VTimeZone::getTZURL(UnicodeString &url) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>static VTimeZone* VTimeZone::createVTimeZoneByID(const UnicodeString &ID)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>VTimeZone::~VTimeZone()</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>UBool VTimeZone::operator==(const TimeZone &that) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>UBool VTimeZone::getLastModified(UDate &lastModified) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>int32_t VTimeZone::getOffset(uint8_t era, int32_t year, int32_t month, int32_t day, uint8_t dayOfWeek, int32_t millis, int32_t monthLength, UErrorCode &status) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>VTimeZone::VTimeZone(const VTimeZone &source)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>int32_t VTimeZone::getRawOffset(void) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>void VTimeZone::getOffset(UDate date, UBool local, int32_t &rawOffset, int32_t &dstOffset, UErrorCode &ec) const</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>void VTimeZone::writeSimple(UDate time, UnicodeString &result, UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row1"><td>vtzone.h</td><td>void VTimeZone::setTZURL(const UnicodeString &url)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr><tr class="row0"><td>vtzone.h</td><td>int32_t VTimeZone::countTransitionRules(UErrorCode &status)</td><td class="">Draft<br/>3.8</td><td>Stable<br/><span class=""><span>3.8</span></span></td></tr></table><P/><hr/><h2>Added in 4.0</h2><table BORDER="1"><THEAD><tr><th>File</th><th>API</th><th>3.8.1</th><th>4.0</th></tr></THEAD><tr class="row1"><td>datefmt.h</td><td>static DateFormat* DateFormat::createPatternInstance(const UnicodeString &skeleton, const Locale &locale, UErrorCode &status)</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtintrv.h</td><td>UBool DateInterval::operator==(const DateInterval &other) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtintrv.h</td><td>DateInterval* DateInterval::clone() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtintrv.h</td><td>UBool DateInterval::operator!=(const DateInterval &other) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtintrv.h</td><td>UDate DateInterval::getFromDate() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtintrv.h</td><td>UDate DateInterval::getToDate() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtintrv.h</td><td>DateInterval& DateInterval::operator=(const DateInterval &)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtintrv.h</td><td>DateInterval::~DateInterval()</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtintrv.h</td><td>DateInterval::DateInterval(const DateInterval &other)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtintrv.h</td><td>DateInterval::DateInterval(UDate fromDate, UDate toDate)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtintrv.h</td><td>UClassID DateInterval::getDynamicClassID(void) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtintrv.h</td><td>static UClassID DateInterval::getStaticClassID(void)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>UnicodeString& DateIntervalFormat::format(const Formattable &obj, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvfmt.h</td><td>const DateIntervalInfo* DateIntervalFormat::getDateIntervalInfo(void) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>void DateIntervalFormat::parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvfmt.h</td><td>static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &skeleton, const Locale &locale, const DateIntervalInfo &dtitvinf, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>UClassID DateIntervalFormat::getDynamicClassID(void) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvfmt.h</td><td>static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &skeleton, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>UnicodeString& DateIntervalFormat::format(Calendar &fromCalendar, Calendar &toCalendar, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvfmt.h</td><td>static UClassID DateIntervalFormat::getStaticClassID(void)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>UnicodeString& DateIntervalFormat::format(const DateInterval *dtInterval, UnicodeString &appendTo, FieldPosition &fieldPosition, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvfmt.h</td><td>void DateIntervalFormat::setDateIntervalInfo(const DateIntervalInfo &newIntervalPatterns, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &skeleton, const Locale &locale, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvfmt.h</td><td>UBool DateIntervalFormat::operator!=(const Format &other) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>const DateFormat* DateIntervalFormat::getDateFormat(void) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvfmt.h</td><td>static DateIntervalFormat* DateIntervalFormat::createInstance(const UnicodeString &skeleton, const DateIntervalInfo &dtitvinf, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>DateIntervalFormat::~DateIntervalFormat()</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvfmt.h</td><td>Format* DateIntervalFormat::clone(void) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvfmt.h</td><td>UBool DateIntervalFormat::operator==(const Format &other) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>UClassID DateIntervalInfo::getDynamicClassID() const</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>DateIntervalInfo::DateIntervalInfo(const Locale &locale, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>UBool DateIntervalInfo::getDefaultOrder() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>UnicodeString& DateIntervalInfo::getFallbackIntervalPattern(UnicodeString &result) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>DateIntervalInfo::DateIntervalInfo(const DateIntervalInfo &)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>void DateIntervalInfo::setFallbackIntervalPattern(const UnicodeString &fallbackPattern, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>DateIntervalInfo::~DateIntervalInfo()</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>DateIntervalInfo* DateIntervalInfo::clone(void) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>DateIntervalInfo::DateIntervalInfo(UErrorCode &status)</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>UnicodeString& DateIntervalInfo::getIntervalPattern(const UnicodeString &skeleton, UCalendarDateFields field, UnicodeString &result, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>static UClassID DateIntervalInfo::getStaticClassID()</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>DateIntervalInfo& DateIntervalInfo::operator=(const DateIntervalInfo &)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>UBool DateIntervalInfo::operator==(const DateIntervalInfo &other) const</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>UBool DateIntervalInfo::operator!=(const DateIntervalInfo &other) const</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>dtitvinf.h</td><td>U_NAMESPACE_BEGIN static U_CDECL_BEGIN UBool U_CALLCONV hashTableValueComparator(UHashTok val1, UHashTok val2)</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>dtitvinf.h</td><td>void DateIntervalInfo::setIntervalPattern(const UnicodeString &skeleton, UCalendarDateFields lrgDiffCalUnit, const UnicodeString &intervalPattern, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>LESwaps.h</td><td>static le_uint16 LESwaps::swapWord(const le_uint16 &value)</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>2.8</span></span></td></tr><tr class="row1"><td>LESwaps.h</td><td>static le_uint32 LESwaps::swapLong(const le_uint32 &value)</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>2.8</span></span></td></tr><tr class="row0"><td>msgfmt.h</td><td>Format* MessageFormat::getFormat(const UnicodeString &formatName, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>msgfmt.h</td><td>void MessageFormat::setFormat(const UnicodeString &formatName, const Format &format, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>msgfmt.h</td><td>void MessageFormat::adoptFormat(const UnicodeString &formatName, Format *formatToAdopt, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>msgfmt.h</td><td>UnicodeString& MessageFormat::format(const UnicodeString *argumentNames, const Formattable *arguments, int32_t count, UnicodeString &appendTo, UErrorCode &status) const</td><td class="">None<br/></td><td>Stable<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>msgfmt.h</td><td>UBool MessageFormat::usesNamedArguments() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>msgfmt.h</td><td>StringEnumeration* MessageFormat::getFormatNames(UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>PluralFormat& PluralFormat::operator=(const PluralFormat &other)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>void PluralFormat::parseObject(const UnicodeString &source, Formattable &result, ParsePosition &parse_pos) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(const Locale &locale, const PluralRules &rules, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>void PluralFormat::setLocale(const Locale &locale, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>Format* PluralFormat::clone(void) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(const PluralRules &rules, const UnicodeString &pattern, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>UnicodeString& PluralFormat::format(double number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(const Locale &locale, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(const UnicodeString &pattern, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>UnicodeString& PluralFormat::toPattern(UnicodeString &appendTo)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>UnicodeString PluralFormat::format(double number, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>UnicodeString& PluralFormat::format(const Formattable &obj, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>static UClassID PluralFormat::getStaticClassID(void)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>PluralFormat::~PluralFormat()</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>UBool PluralFormat::operator==(const Format &other) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>UClassID PluralFormat::getDynamicClassID() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>UnicodeString& PluralFormat::format(int32_t number, UnicodeString &appendTo, FieldPosition &pos, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>UBool PluralFormat::operator!=(const Format &other) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(const Locale &locale, const PluralRules &rules, const UnicodeString &pattern, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>UnicodeString PluralFormat::format(int32_t number, UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>void PluralFormat::setNumberFormat(const NumberFormat *format, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(const PluralRules &rules, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(const Locale &locale, const UnicodeString &pattern, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>void PluralFormat::applyPattern(const UnicodeString &pattern, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(const PluralFormat &other)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurfmt.h</td><td>PluralFormat::PluralFormat(UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>UClassID PluralRules::getDynamicClassID() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurrule.h</td><td>PluralRules::PluralRules(const PluralRules &other)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>static PluralRules* PluralRules::createRules(const UnicodeString &description, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurrule.h</td><td>static PluralRules* PluralRules::forLocale(const Locale &locale, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>PluralRules& PluralRules::operator=(const PluralRules &)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurrule.h</td><td>PluralRules::PluralRules(UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>UBool PluralRules::operator!=(const PluralRules &other) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurrule.h</td><td>UnicodeString PluralRules::select(double number) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>PluralRules::~PluralRules()</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurrule.h</td><td>UnicodeString PluralRules::select(int32_t number) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>static UClassID PluralRules::getStaticClassID(void)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurrule.h</td><td>static PluralRules* PluralRules::createDefaultRules(UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>PluralRules* PluralRules::clone() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurrule.h</td><td>UBool PluralRules::operator==(const PluralRules &other) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>UnicodeString PluralRules::getKeywordOther() const</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>plurrule.h</td><td>UBool PluralRules::isKeyword(const UnicodeString &keyword) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>plurrule.h</td><td>StringEnumeration* PluralRules::getKeywords(UErrorCode &status) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>regex.h</td><td>RegexMatcher& RegexMatcher::useTransparentBounds(UBool b)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>regex.h</td><td>UBool RegexMatcher::requireEnd() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>regex.h</td><td>UBool RegexMatcher::hasAnchoringBounds() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>regex.h</td><td>RegexMatcher& RegexMatcher::useAnchoringBounds(UBool b)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>regex.h</td><td>void RegexMatcher::setTimeLimit(int32_t limit, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>regex.h</td><td>int32_t RegexMatcher::regionStart() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>regex.h</td><td>UBool RegexMatcher::hitEnd() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>regex.h</td><td>int32_t RegexMatcher::getStackLimit() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>regex.h</td><td>void RegexMatcher::resetPreserveRegion()</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>.</span></span></td></tr><tr class="row0"><td>regex.h</td><td>RegexMatcher& RegexMatcher::region(int32_t start, int32_t limit, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>regex.h</td><td>void RegexMatcher::setMatchCallback(URegexMatchCallback *callback, const void *context, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>regex.h</td><td>int32_t RegexMatcher::getTimeLimit() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>regex.h</td><td>void RegexMatcher::setStackLimit(int32_t limit, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>regex.h</td><td>UBool RegexMatcher::hasTransparentBounds() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>regex.h</td><td>int32_t RegexMatcher::regionEnd() const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>regex.h</td><td>void RegexMatcher::getMatchCallback(URegexMatchCallback *&callback, const void *&context, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>smpdtfmt.h</td><td>const Locale& SimpleDateFormat::getSmpFmtLocale(void) const</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>smpdtfmt.h</td><td>UBool SimpleDateFormat::isFieldUnitIgnored(UCalendarDateFields field) const</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>smpdtfmt.h</td><td>static UBool SimpleDateFormat::isFieldUnitIgnored(const UnicodeString &pattern, UCalendarDateFields field)</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>timezone.h</td><td>static UnicodeString& TimeZone::getCanonicalID(const UnicodeString &id, UnicodeString &canonicalID, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>timezone.h</td><td>static UnicodeString& TimeZone::getCanonicalID(const UnicodeString &id, UnicodeString &canonicalID, UBool &isSystemID, UErrorCode &status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>ucal.h</td><td>int32_t ucal_getCanonicalTimeZoneID(const UChar *id, int32_t len, UChar *result, int32_t resultCapacity, UBool *isSystemID, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>ucal.h</td><td>UCalendar* ucal_clone(const UCalendar *cal, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>ucoleitr.h</td><td>int64_t ucol_previousProcessed(UCollationElements *elems, int32_t *ixLow, int32_t *ixHigh, UErrorCode *status)</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>.</span></span></td></tr><tr class="row1"><td>ucoleitr.h</td><td>int64_t ucol_nextProcessed(UCollationElements *elems, int32_t *ixLow, int32_t *ixHigh, UErrorCode *status)</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>.</span></span></td></tr><tr class="row0"><td>ucurr.h</td><td>int32_t ucurr_countCurrencies(const char *locale, UDate date, UErrorCode *ec)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>ucurr.h</td><td>int32_t ucurr_forLocaleAndDate(const char *locale, UDate date, int32_t index, UChar *buff, int32_t buffCapacity, UErrorCode *ec)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uloc.h</td><td>ULayoutType uloc_getCharacterOrientation(const char *localeId, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uloc.h</td><td>int32_t uloc_minimizeSubtags(const char *localeID, char *minimizedLocaleID, int32_t minimizedLocaleIDCapacity, UErrorCode *err)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uloc.h</td><td>ULayoutType uloc_getLineOrientation(const char *localeId, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uloc.h</td><td>int32_t uloc_addLikelySubtags(const char *localeID, char *maximizedLocaleID, int32_t maximizedLocaleIDCapacity, UErrorCode *err)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>UnicodeSet& UnicodeSet::removeAllStrings()</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>.</span></span></td></tr><tr class="row1"><td>uniset.h</td><td>UBool UnicodeSet::isBogus(void) const</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uniset.h</td><td>void UnicodeSet::setToBogus()</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uregex.h</td><td>UBool uregex_hitEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uregex.h</td><td>int32_t uregex_getTimeLimit(const URegularExpression *regexp, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uregex.h</td><td>void uregex_setTimeLimit(URegularExpression *regexp, int32_t limit, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uregex.h</td><td>UBool uregex_requireEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uregex.h</td><td>void uregex_useAnchoringBounds(URegularExpression *regexp, UBool b, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uregex.h</td><td>void uregex_setStackLimit(URegularExpression *regexp, int32_t limit, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uregex.h</td><td>int32_t uregex_regionEnd(const URegularExpression *regexp, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uregex.h</td><td>UBool uregex_hasAnchoringBounds(const URegularExpression *regexp, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uregex.h</td><td>U_CDECL_BEGIN typedef UBool U_CALLCONV URegexMatchCallback(const void *context, int32_t steps)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uregex.h</td><td>UBool uregex_hasTransparentBounds(const URegularExpression *regexp, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uregex.h</td><td>void uregex_setRegion(URegularExpression *regexp, int32_t regionStart, int32_t regionLimit, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uregex.h</td><td>int32_t uregex_getStackLimit(const URegularExpression *regexp, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uregex.h</td><td>void uregex_getMatchCallback(const URegularExpression *regexp, URegexMatchCallback **callback, const void **context, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uregex.h</td><td>void uregex_useTransparentBounds(URegularExpression *regexp, UBool b, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>uregex.h</td><td>U_CDECL_END void uregex_setMatchCallback(URegularExpression *regexp, URegexMatchCallback *callback, const void *context, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row0"><td>uregex.h</td><td>int32_t uregex_regionStart(const URegularExpression *regexp, UErrorCode *status)</td><td class="">None<br/></td><td>Draft<br/><span class=""><span>4.0</span></span></td></tr><tr class="row1"><td>usearch.h</td><td>UBool usearch_searchBackwards(UStringSearch *strsrch, int32_t startIdx, int32_t *matchStart, int32_t *matchLimit, UErrorCode *status)</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>.</span></span></td></tr><tr class="row0"><td>usearch.h</td><td>UBool usearch_search(UStringSearch *strsrch, int32_t startIdx, int32_t *matchStart, int32_t *matchLimit, UErrorCode *status)</td><td class="">None<br/></td><td>Internal<br/><span class=""><span>.</span></span></td></tr></table><P/><hr/><p><i><font size="-1">Contents generated by StableAPI tool on Mon Jul 21 12:20:55 PDT 2008<br/>Copyright (C) 2008, International Business Machines Corporation, All Rights Reserved.</font></i></p></body></html>
\ No newline at end of file
Added: trunk/APIChangeReport_401.html
===================================================================
--- trunk/APIChangeReport_401.html (rev 0)
+++ trunk/APIChangeReport_401.html 2009-02-07 10:08:34 UTC (rev 162)
@@ -0,0 +1,901 @@
+<?xml version="1.0" encoding="UTF-8"?> <!--
+ Copyright (C) 2009, International Business Machines Corporation, All Rights Reserved.
+ -->
+<html>
+ <head>
+ <title>
+ ICU4C API Comparison: 4.0 with 4.0.1
+ </title>
+ <link type="text/css" rel="stylesheet" href="icu4c.css"/>
+ </head>
+ <body>
+ <h1>
+ ICU4C API Comparison: 4.0 with 4.0.1
+ </h1>
+ <hr/>
+ <h2>
+ Removed from 4.0
+ </h2>
+<!-- <table BORDER="1">
+ <THEAD>
+ <tr>
+ <th>
+ File
+ </th>
+ <th>
+ API
+ </th>
+ <th>
+ 4.0
+ </th>
+ <th>
+ 4.0.1
+ </th>
+ </tr>
+ </THEAD>
+ </table>
+--> <P/><hr/>
+ <h2>
+ Deprecated or Obsoleted in 4.0.1
+ </h2>
+<!-- <table BORDER="1">
+ <THEAD>
+ <tr>
+ <th>
+ File
+ </th>
+ <th>
+ API
+ </th>
+ <th>
+ 4.0
+ </th>
+ <th>
+ 4.0.1
+ </th>
+ </tr>
+ </THEAD>
+ </table>
+--> <P/><hr/>
+ <h2>
+ Changed in 4.0.1 (old, new)
+ </h2>
+<!-- <table BORDER="1">
+ <THEAD>
+ <tr>
+ <th>
+ File
+ </th>
+ <th>
+ API
+ </th>
+ <th>
+ 4.0
+ </th>
+ <th>
+ 4.0.1
+ </th>
+ </tr>
+ </THEAD>
+ </table>
+--> <P/><hr/>
+ <h2>
+ Promoted to stable in 4.0.1
+ </h2>
+<!-- Spurious: these items are stable 2.2 in the *base* class.
+ <table BORDER="1">
+ <THEAD>
+ <tr>
+ <th>
+ File
+ </th>
+ <th>
+ API
+ </th>
+ <th>
+ 4.0
+ </th>
+ <th>
+ 4.0.1
+ </th>
+ </tr>
+ </THEAD>
+ <tr class="row1">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ UClassID BoyerMooreSearch::getDynamicClassID() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ UClassID CollData::getDynamicClassID() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ UClassID CEList::getDynamicClassID() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ UClassID StringList::getDynamicClassID() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ </table>
+--> <P/><hr/>
+ <h2>
+ Added in 4.0.1
+ </h2>
+ <table BORDER="1">
+ <THEAD>
+ <tr>
+ <th>
+ File
+ </th>
+ <th>
+ API
+ </th>
+ <th>
+ 4.0
+ </th>
+ <th>
+ 4.0.1
+ </th>
+ </tr>
+ </THEAD>
+ <tr class="row1">
+ <td>
+ bms.h
+ </td>
+ <td>
+ UBool bms_search(BMS *bms, int32_t offset, int32_t *start, int32_t *end)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bms.h
+ </td>
+ <td>
+ void bms_setTargetString(BMS *bms, const UChar *target, int32_t targetLength, UErrorCode *status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bms.h
+ </td>
+ <td>
+ void ucd_freeCache()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bms.h
+ </td>
+ <td>
+ UBool bms_empty(BMS *bms)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bms.h
+ </td>
+ <td>
+ UCollator* ucd_getCollator(UCD *ucd)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bms.h
+ </td>
+ <td>
+ void bms_close(BMS *bms)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ <br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bms.h
+ </td>
+ <td>
+ UCD* ucd_open(UCollator *coll, UErrorCode *status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bms.h
+ </td>
+ <td>
+ void ucd_flushCache()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bms.h
+ </td>
+ <td>
+ UCD* bms_getData(BMS *bms)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bms.h
+ </td>
+ <td>
+ void ucd_close(UCD *ucd)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bms.h
+ </td>
+ <td>
+ BMS* bms_open(UCD *ucd, const UChar *pattern, int32_t patternLength, const UChar *target, int32_t targetLength, UErrorCode *status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ BoyerMooreSearch::BoyerMooreSearch(CollData *theData, const UnicodeString &patternString, const UnicodeString *targetString, UErrorCode &status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ GoodSuffixTable* BoyerMooreSearch::getGoodSuffixTable()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ BadCharacterTable* BoyerMooreSearch::getBadCharacterTable()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ UClassID BoyerMooreSearch::getDynamicClassID() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview<!-- incorrectly: stable 2.2 --></span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ void BoyerMooreSearch::setTargetString(const UnicodeString *targetString, UErrorCode &status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ UBool BoyerMooreSearch::empty()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ CollData* BoyerMooreSearch::getData()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ CEList* BoyerMooreSearch::getPatternCEs()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ BoyerMooreSearch::~BoyerMooreSearch()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ UBool BoyerMooreSearch::search(int32_t offset, int32_t &start, int32_t &end)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ bmsearch.h
+ </td>
+ <td>
+ static UClassID BoyerMooreSearch::getStaticClassID()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ <br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ void CollData::freeCEList(const CEList *list)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ StringList::StringList(UErrorCode &status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ static void CollData::flushCollDataCache()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ static void CollData::freeCollDataCache()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ static void CollData::close(CollData *collData)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ UClassID CollData::getDynamicClassID() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview<!-- incorrectly: stable 2.2 --></span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ int32_t StringList::size() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ void StringList::add(const UChar *chars, int32_t count, UErrorCode &status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ UCollator* CollData::getCollator() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ <br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ CEList::~CEList()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ <br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ int32_t CEList::size() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ int32_t CollData::minLengthInChars(const CEList *ces, int32_t offset, int32_t *history) const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ static UClassID StringList::getStaticClassID()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ <br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ uint32_t& CEList::operator[](int32_t index) const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ StringList::~StringList()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ static UClassID CollData::getStaticClassID()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ <br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ const CEList* CollData::getCEList(const UnicodeString *string) const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview.</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ const UnicodeString* StringList::get(int32_t index) const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ static UClassID CEList::getStaticClassID()
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ <br/><span class=""><span/></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ UClassID CEList::getDynamicClassID() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview<!-- incorrectly: stable 2.2 --></span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ void StringList::add(const UnicodeString *string, UErrorCode &status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ UClassID StringList::getDynamicClassID() const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview<!-- incorrectly: stable 2.2 --></span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ uint32_t CEList::get(int32_t index) const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ CEList::CEList(UCollator *coll, const UnicodeString &string, UErrorCode &status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ static CollData* CollData::open(UCollator *collator, UErrorCode &status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ UBool CEList::matchesAt(int32_t offset, const CEList *other) const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ const StringList* CollData::getStringList(int32_t ce) const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview.</span></span>
+ </td>
+ </tr>
+ <tr class="row0">
+ <td>
+ colldata.h
+ </td>
+ <td>
+ int32_t CollData::minLengthInChars(const CEList *ces, int32_t offset) const
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>4.0.1 technology preview</span></span>
+ </td>
+ </tr>
+ <tr class="row1">
+ <td>
+ ucoleitr.h
+ </td>
+ <td>
+ void ucol_forceHanImplicit(UCollationElements *elems, UErrorCode *status)
+ </td>
+ <td class="">
+ None<br/>
+ </td>
+ <td>
+ Internal<br/><span class=""><span>.</span></span>
+ </td>
+ </tr>
+ </table>
+ <P/><hr/>
+ <p>
+ <i><font size="-1">Contents generated by StableAPI tool on Wed Jan 07 00:21:49 PST 2009<br/>Copyright (C) 2009, International Business Machines Corporation, All Rights Reserved.</font></i>
+ </p>
+ </body>
+</html>
Modified: trunk/as_is/borland/icuin.bpf
===================================================================
--- trunk/as_is/borland/icuin.bpf 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/as_is/borland/icuin.bpf 2009-02-07 10:08:34 UTC (rev 162)
@@ -128,6 +128,9 @@
USEUNIT("..\..\source\i18n\plurrule.cpp");
USEUNIT("..\..\source\i18n\dtitvfmt.cpp");
USEUNIT("..\..\source\i18n\dtitvinf.cpp");
+USEUNIT("..\..\source\i18n\colldata.cpp");
+USEUNIT("..\..\source\i18n\bms.cpp");
+USEUNIT("..\..\source\i18n\bmsearch.cpp");
//---------------------------------------------------------------------------
#define Library
Modified: trunk/as_is/borland/icuin.bpr
===================================================================
--- trunk/as_is/borland/icuin.bpr 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/as_is/borland/icuin.bpr 2009-02-07 10:08:34 UTC (rev 162)
@@ -65,7 +65,9 @@
..\..\source\i18n\brktrans.obj ..\..\source\i18n\cecal.obj
..\..\source\i18n\coptccal.obj ..\..\source\i18n\ethpccal.obj
..\..\source\i18n\plurfmt.obj ..\..\source\i18n\plurrule.obj
- ..\..\source\i18n\dtitvfmt.obj ..\..\source\i18n\dtitvinf.obj"/>
+ ..\..\source\i18n\dtitvfmt.obj ..\..\source\i18n\dtitvinf.obj
+ ..\..\source\i18n\colldata.obj ..\..\source\i18n\bms.obj
+ ..\..\source\i18n\bmsearch.obj"/>
<RESFILES value=""/>
<IDLFILES value=""/>
<IDLGENFILES value=""/>
Added: trunk/icu4c.css
===================================================================
--- trunk/icu4c.css (rev 0)
+++ trunk/icu4c.css 2009-02-07 10:08:34 UTC (rev 162)
@@ -0,0 +1,245 @@
+/*
+ * Default CSS style sheet for the ICU Open Source site
+ * Copyright (C) 2005-2008, International Business Machines
+ * Corporation and others. All Rights Reserved.
+ */
+
+/* Global styles */
+body,p,li,ol,ul,th,td {
+ font-size: 10pt;
+ font-family: "Arial", "Helvetica", sans-serif;
+}
+
+body {
+ margin: 1em;
+}
+
+body.draft {
+ background-image: url(images/draftbg.png);
+}
+
+.mainbody {
+ padding: 1em;
+}
+
+/*
+ * Customize the headers to have less space around them than usual
+ */
+h1 {
+ margin-bottom: 5pt;
+ margin-top: 5pt;
+ font-weight: 700;
+ font-size: 20pt;
+ font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h2 {
+ margin-bottom: 0pt;
+ margin-top: 12pt;
+ font-weight: 700;
+ font-size: 14pt;
+ font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h3 {
+ background-color: #666666;
+ color: White;
+ margin-bottom: 0pt;
+ margin-top: 12pt;
+ padding-left: 0.75em;
+ font-size: 1em;
+ font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h4 {
+ margin-bottom: 0pt;
+ margin-top: 12pt;
+ font-size: 1em;
+ font-family: "Arial", "Helvetica", sans-serif;
+}
+
+h5, h6 {
+ margin-bottom: 0pt;
+ margin-top: 12pt;
+ padding-left: 0.75em;
+ font-size: x-small;
+ font-family: "Arial", "Helvetica", sans-serif;
+}
+
+/*
+ * Navigation sidebar on the left hand of most pages
+ */
+td.sidebar1 {
+ background-color: #99CCFF;
+ font-weight: 700;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ padding-top: 1em;
+ padding-left: 0.2em;
+ white-space: nowrap;
+}
+
+td.sidebar2 {
+ background-color: #99CCFF;
+ margin-top: 0px;
+ margin-bottom: 0px;
+ margin-left: 0px;
+ padding-top: 1px;
+ padding-bottom: 1px;
+ padding-left: 1px;
+ padding-right: 0.5em;
+ white-space: nowrap;
+ text-decoration: none;
+ display: block;
+}
+td.sidebar2:hover {
+ background-color: #EEEEFF;
+ padding-top: 1px;
+ padding-bottom: 1px;
+ padding-left: 1px;
+ padding-right: 0.5em;
+}
+
+a.sidebar2 {
+ text-decoration: none;
+ display: block;
+ width: 100%;
+}
+a.sidebar2:link {
+ color: #000099;
+ display: block;
+}
+a.sidebar2:hover {
+ background-color: #EEEEFF;
+ display: block;
+}
+.underlinehover:hover {
+ background-color: #EEEEFF;
+ text-decoration: underline;
+}
+
+/* This is the faded header at the top */
+td.fadedtop {
+ background-color: #006699;
+ background-image: url(http://www.icu-project.org/images/gr100.gif);
+}
+
+/* Related site on the left */
+p.relatedsite {
+ color: White;
+ font-weight: 700;
+ font-size: 10pt;
+ margin-top: 1em;
+ margin-bottom: 0;
+ padding-left: 0.2em;
+ white-space: nowrap;
+}
+
+/* Related site on the left */
+p.sidebar3 {
+ margin-top: 0.75em;
+ margin-bottom: 0;
+ padding-left: 0.8em;
+}
+a.sidebar3 {
+ font-size: 0.9em;
+ text-decoration: none;
+}
+a.sidebar3:link {
+ text-decoration: none;
+ color: White;
+}
+a.sidebar3:hover {
+ text-decoration: underline;
+}
+
+/* FAQ */
+li.faq_contents {
+ font-weight: 500;
+}
+p.faq_q {
+ font-weight: 700;
+ margin-bottom: 0px;
+}
+p.faq_a {
+ margin-top: 0px;
+}
+
+/* News items */
+table.newsItem {
+ padding-left: 1em;
+ padding-right: 1em;
+ border-width: medium;
+}
+th.newsItem {
+ background-color: #666666;
+ color: White;
+}
+td.newsItem {
+ background-color: #CCCCCC;
+}
+
+td.release-line,th.release-line {
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ white-space: nowrap;
+ border:1px;
+}
+.note {
+ font-style: italic;
+ font-size: small;
+ margin-left: 1em;
+}
+samp {
+ margin-left: 1em;
+ margin-right: 2em;
+ border-style: groove;
+ padding: 1em;
+ display: block;
+ background-color: #EEEEEE
+}
+table.rtable caption {
+ margin-left: 2px;
+ margin-right: 2px;
+ padding: 3px;
+ font-weight: bold;
+ background-color: #dee2ff;
+ text-align: left;
+}
+table.rtable tr th {
+ background-color: #dee2ff;
+ text-align: left;
+}
+table.rtable tr td {
+ background-color: #c0c0fd;
+ padding: 3px;
+}
+
+/* APIChangeReport specific things */
+.row0 {
+ background-color: white;
+}
+
+.row1 {
+ background-color: #dfd;
+}
+
+.verchange {
+ color: red;
+ font-weight: bold;
+ font-size: large;
+}
+
+.stabchange {
+ color: red;
+ font-size: large;
+}
+
+.bigwarn {
+ color: red;
+ background-color: white;
+ font-size: x-large;
+ margin: 0.5 em;
+}
+
+
Modified: trunk/readme.html
===================================================================
--- trunk/readme.html 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/readme.html 2009-02-07 10:08:34 UTC (rev 162)
@@ -30,10 +30,10 @@
<body>
<h1>International Components for Unicode<br />
- <abbr title="International Components for Unicode">ICU</abbr> 4.0 ReadMe</h1>
+ <abbr title="International Components for Unicode">ICU</abbr> 4.0.1 ReadMe</h1>
- <p>Version: 2008 June 30th<br />
- Copyright © 1997-2008 International Business Machines Corporation and
+ <p>Version: 2009 Jan 15th<br />
+ Copyright © 1997-2009 International Business Machines Corporation and
others. All Rights Reserved.</p>
<!-- Remember that there is a copyright at the end too -->
<hr />
@@ -211,12 +211,15 @@
<h2><a name="News" href="#News" id="News">What is new in this
release?</a></h2>
- <p>To see which APIs are new or changed in this release, view the <a href="APIChangeReport.html">ICU4C API Change Report</a>. </p>
+ <p>To see which APIs are new or changed in this release since the previous feature release (3.8), view the <a href="APIChangeReport.html">ICU4C API Change Report</a>. </p>
+ <p>This is a an update release of 4.0, containing mostly selected bug fixes and implementations of inherited API, but
+ does not introduce new API or functionality. These changes will be rolled into the next release of ICU4J </p>
- <p><!-- The following list concentrates on <em>changes that affect existing
- applications migrating from previous ICU releases</em>. --> For more news about
- this release, see the <a href="http://www.icu-project.org/download/">ICU 4.0
+ <p>To see which non-stable APIs are new or changed in 4.0.1 since 4.0, view the <a href="APIChangeReport_401.html">ICU4C 4.0 vs. 4.0.1 API Change Report</a>. </p>
+
+ <p>For more news about
+ this release, see the <a href="http://www.icu-project.org/download/">ICU 4.0.1
download page</a>.</p>
<h2><a name="Download" href="#Download" id="Download">How To Download the
Modified: trunk/source/common/ucnv2022.c
===================================================================
--- trunk/source/common/ucnv2022.c 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/ucnv2022.c 2009-02-07 10:08:34 UTC (rev 162)
@@ -754,6 +754,7 @@
UConverterDataISO2022* myData2022 = ((UConverterDataISO2022*)_this->extraInfo);
uint32_t key = myData2022->key;
int32_t offset = 0;
+ int8_t initialToULength = _this->toULength;
char c;
value = VALID_NON_TERMINAL_2022;
@@ -806,7 +807,6 @@
return;
} else if (value == INVALID_2022 ) {
*err = U_ILLEGAL_ESCAPE_SEQUENCE;
- return;
} else /* value == VALID_TERMINAL_2022 */ {
switch(var){
#ifdef U_ENABLE_GENERIC_ISO_2022
@@ -938,6 +938,35 @@
}
if(U_SUCCESS(*err)) {
_this->toULength = 0;
+ } else if(*err==U_ILLEGAL_ESCAPE_SEQUENCE) {
+ if(_this->toULength>1) {
+ /*
+ * Ticket 5691: consistent illegal sequences:
+ * - We include at least the first byte (ESC) in the illegal sequence.
+ * - If any of the non-initial bytes could be the start of a character,
+ * we stop the illegal sequence before the first one of those.
+ * In escape sequences, all following bytes are "printable", that is,
+ * unless they are completely illegal (>7f in SBCS, outside 21..7e in DBCS),
+ * they are valid single/lead bytes.
+ * For simplicity, we always only report the initial ESC byte as the
+ * illegal sequence and back out all other bytes we looked at.
+ */
+ /* Back out some bytes. */
+ int8_t backOutDistance=_this->toULength-1;
+ int8_t bytesFromThisBuffer=_this->toULength-initialToULength;
+ if(backOutDistance<=bytesFromThisBuffer) {
+ /* same as initialToULength<=1 */
+ *source-=backOutDistance;
+ } else {
+ /* Back out bytes from the previous buffer: Need to replay them. */
+ _this->preToULength=(int8_t)(bytesFromThisBuffer-backOutDistance);
+ /* same as -(initialToULength-1) */
+ /* preToULength is negative! */
+ uprv_memcpy(_this->preToU, _this->toUBytes+1, -_this->preToULength);
+ *source-=bytesFromThisBuffer;
+ }
+ _this->toULength=1;
+ }
} else if(*err==U_UNSUPPORTED_ESCAPE_SEQUENCE) {
_this->toUCallbackReason = UCNV_UNASSIGNED;
}
@@ -1118,6 +1147,7 @@
}
}
+#if 0 /* 5691: Call sites now check for validity. They can just += 0x8080 after that. */
/*
* This method does the reverse of _2022FromGR94DBCS(). Given the 2022 code point, it returns the
* 2 byte value that is in the range A1..FE for each byte. Otherwise it returns the 2022 code point
@@ -1133,6 +1163,7 @@
return value;
}
}
+#endif
#ifdef U_ENABLE_GENERIC_ISO_2022
@@ -1990,6 +2021,7 @@
mySourceChar = args->converter->toUBytes[0];
args->converter->toULength = 0;
cs = (StateEnum)pToU2022State->cs[pToU2022State->g];
+ targetUniChar = missingCharMarker;
goto getTrailByte;
}
@@ -2119,21 +2151,44 @@
default:
/* G0 DBCS */
if(mySource < mySourceLimit) {
- char trailByte;
+ int leadIsOk, trailIsOk;
+ uint8_t trailByte;
getTrailByte:
- trailByte = *mySource++;
- tmpSourceChar = (mySourceChar << 8) | (uint8_t)(trailByte);
- if(cs == JISX208) {
- _2022ToSJIS((uint8_t)mySourceChar, (uint8_t)trailByte, tempBuf);
- } else {
- if (cs == KSC5601) {
- tmpSourceChar = _2022ToGR94DBCS(tmpSourceChar);
+ trailByte = (uint8_t)*mySource;
+ /*
+ * Ticket 5691: consistent illegal sequences:
+ * - We include at least the first byte in the illegal sequence.
+ * - If any of the non-initial bytes could be the start of a character,
+ * we stop the illegal sequence before the first one of those.
+ *
+ * In ISO-2022 DBCS, if the second byte is in the 21..7e range or is
+ * an ESC/SO/SI, we report only the first byte as the illegal sequence.
+ * Otherwise we convert or report the pair of bytes.
+ */
+ leadIsOk = (uint8_t)(mySourceChar - 0x21) <= (0x7e - 0x21);
+ trailIsOk = (uint8_t)(trailByte - 0x21) <= (0x7e - 0x21);
+ if (leadIsOk && trailIsOk) {
+ ++mySource;
+ tmpSourceChar = (mySourceChar << 8) | trailByte;
+ if(cs == JISX208) {
+ _2022ToSJIS((uint8_t)mySourceChar, trailByte, tempBuf);
+ mySourceChar = tmpSourceChar;
+ } else {
+ /* Copy before we modify tmpSourceChar so toUnicodeCallback() sees the correct bytes. */
+ mySourceChar = tmpSourceChar;
+ if (cs == KSC5601) {
+ tmpSourceChar += 0x8080; /* = _2022ToGR94DBCS(tmpSourceChar) */
+ }
+ tempBuf[0] = (char)(tmpSourceChar >> 8);
+ tempBuf[1] = (char)(tmpSourceChar);
}
- tempBuf[0] = (char)(tmpSourceChar >> 8);
- tempBuf[1] = (char)(tmpSourceChar);
+ targetUniChar = ucnv_MBCSSimpleGetNextUChar(myData->myConverterArray[cs], tempBuf, 2, FALSE);
+ } else if (!(trailIsOk || IS_2022_CONTROL(trailByte))) {
+ /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+ ++mySource;
+ /* add another bit so that the code below writes 2 bytes in case of error */
+ mySourceChar = 0x10000 | (mySourceChar << 8) | trailByte;
}
- targetUniChar = ucnv_MBCSSimpleGetNextUChar(myData->myConverterArray[cs], tempBuf, 2, FALSE);
- mySourceChar = tmpSourceChar;
} else {
args->converter->toUBytes[0] = (uint8_t)mySourceChar;
args->converter->toULength = 1;
@@ -2275,7 +2330,12 @@
}
/* only DBCS or SBCS characters are expected*/
/* DB characters with high bit set to 1 are expected */
- if(length > 2 || length==0 ||(((targetByteUnit & 0x8080) != 0x8080)&& length==2)){
+ if( length > 2 || length==0 ||
+ (length == 1 && targetByteUnit > 0x7f) ||
+ (length == 2 &&
+ ((uint16_t)(targetByteUnit - 0xa1a1) > (0xfefe - 0xa1a1) ||
+ (uint8_t)(targetByteUnit - 0xa1) > (0xfe - 0xa1)))
+ ) {
targetByteUnit=missingCharMarker;
}
if (targetByteUnit != missingCharMarker){
@@ -2604,17 +2664,34 @@
myData->isEmptySegment = FALSE; /* Any invalid char errors will be detected separately, so just reset this */
if(myData->toU2022State.g == 1) {
if(mySource < mySourceLimit) {
- char trailByte;
+ int leadIsOk, trailIsOk;
+ uint8_t trailByte;
getTrailByte:
- trailByte = *mySource++;
- tempBuf[0] = (char)(mySourceChar + 0x80);
- tempBuf[1] = (char)(trailByte + 0x80);
- mySourceChar = (mySourceChar << 8) | (uint8_t)(trailByte);
- if((mySourceChar & 0x8080) == 0) {
+ targetUniChar = missingCharMarker;
+ trailByte = (uint8_t)*mySource;
+ /*
+ * Ticket 5691: consistent illegal sequences:
+ * - We include at least the first byte in the illegal sequence.
+ * - If any of the non-initial bytes could be the start of a character,
+ * we stop the illegal sequence before the first one of those.
+ *
+ * In ISO-2022 DBCS, if the second byte is in the 21..7e range or is
+ * an ESC/SO/SI, we report only the first byte as the illegal sequence.
+ * Otherwise we convert or report the pair of bytes.
+ */
+ leadIsOk = (uint8_t)(mySourceChar - 0x21) <= (0x7e - 0x21);
+ trailIsOk = (uint8_t)(trailByte - 0x21) <= (0x7e - 0x21);
+ if (leadIsOk && trailIsOk) {
+ ++mySource;
+ tempBuf[0] = (char)(mySourceChar + 0x80);
+ tempBuf[1] = (char)(trailByte + 0x80);
targetUniChar = ucnv_MBCSSimpleGetNextUChar(sharedData, tempBuf, 2, useFallback);
- } else {
- /* illegal bytes > 0x7f */
- targetUniChar = missingCharMarker;
+ mySourceChar = (mySourceChar << 8) | trailByte;
+ } else if (!(trailIsOk || IS_2022_CONTROL(trailByte))) {
+ /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+ ++mySource;
+ /* add another bit so that the code below writes 2 bytes in case of error */
+ mySourceChar = 0x10000 | (mySourceChar << 8) | trailByte;
}
} else {
args->converter->toUBytes[0] = (uint8_t)mySourceChar;
@@ -2622,8 +2699,10 @@
break;
}
}
- else{
+ else if(mySourceChar <= 0x7f) {
targetUniChar = ucnv_MBCSSimpleGetNextUChar(sharedData, mySource - 1, 1, useFallback);
+ } else {
+ targetUniChar = 0xffff;
}
if(targetUniChar < 0xfffe){
if(args->offsets) {
@@ -3120,6 +3199,7 @@
/* continue with a partial double-byte character */
mySourceChar = args->converter->toUBytes[0];
args->converter->toULength = 0;
+ targetUniChar = missingCharMarker;
goto getTrailByte;
}
@@ -3199,29 +3279,50 @@
UConverterSharedData *cnv;
StateEnum tempState;
int32_t tempBufLen;
- char trailByte;
+ int leadIsOk, trailIsOk;
+ uint8_t trailByte;
getTrailByte:
- trailByte = *mySource++;
- tempState = (StateEnum)pToU2022State->cs[pToU2022State->g];
- if(tempState >= CNS_11643_0) {
- cnv = myData->myConverterArray[CNS_11643];
- tempBuf[0] = (char) (0x80+(tempState-CNS_11643_0));
- tempBuf[1] = (char) (mySourceChar);
- tempBuf[2] = trailByte;
- tempBufLen = 3;
+ trailByte = (uint8_t)*mySource;
+ /*
+ * Ticket 5691: consistent illegal sequences:
+ * - We include at least the first byte in the illegal sequence.
+ * - If any of the non-initial bytes could be the start of a character,
+ * we stop the illegal sequence before the first one of those.
+ *
+ * In ISO-2022 DBCS, if the second byte is in the 21..7e range or is
+ * an ESC/SO/SI, we report only the first byte as the illegal sequence.
+ * Otherwise we convert or report the pair of bytes.
+ */
+ leadIsOk = (uint8_t)(mySourceChar - 0x21) <= (0x7e - 0x21);
+ trailIsOk = (uint8_t)(trailByte - 0x21) <= (0x7e - 0x21);
+ if (leadIsOk && trailIsOk) {
+ ++mySource;
+ tempState = (StateEnum)pToU2022State->cs[pToU2022State->g];
+ if(tempState >= CNS_11643_0) {
+ cnv = myData->myConverterArray[CNS_11643];
+ tempBuf[0] = (char) (0x80+(tempState-CNS_11643_0));
+ tempBuf[1] = (char) (mySourceChar);
+ tempBuf[2] = (char) trailByte;
+ tempBufLen = 3;
- }else{
- cnv = myData->myConverterArray[tempState];
- tempBuf[0] = (char) (mySourceChar);
- tempBuf[1] = trailByte;
- tempBufLen = 2;
+ }else{
+ cnv = myData->myConverterArray[tempState];
+ tempBuf[0] = (char) (mySourceChar);
+ tempBuf[1] = (char) trailByte;
+ tempBufLen = 2;
+ }
+ targetUniChar = ucnv_MBCSSimpleGetNextUChar(cnv, tempBuf, tempBufLen, FALSE);
+ mySourceChar = (mySourceChar << 8) | trailByte;
+ } else if (!(trailIsOk || IS_2022_CONTROL(trailByte))) {
+ /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+ ++mySource;
+ /* add another bit so that the code below writes 2 bytes in case of error */
+ mySourceChar = 0x10000 | (mySourceChar << 8) | trailByte;
}
- mySourceChar = (mySourceChar << 8) | (uint8_t)(trailByte);
if(pToU2022State->g>=2) {
/* return from a single-shift state to the previous one */
pToU2022State->g=pToU2022State->prevG;
}
- targetUniChar = ucnv_MBCSSimpleGetNextUChar(cnv, tempBuf, tempBufLen, FALSE);
} else {
args->converter->toUBytes[0] = (uint8_t)mySourceChar;
args->converter->toULength = 1;
Modified: trunk/source/common/ucnvhz.c
===================================================================
--- trunk/source/common/ucnvhz.c 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/ucnvhz.c 2009-02-07 10:08:34 UTC (rev 162)
@@ -198,10 +198,30 @@
/* if the first byte is equal to TILDE and the trail byte
* is not a valid byte then it is an error condition
*/
- mySourceChar = 0x7e00 | mySourceChar;
- targetUniChar = 0xffff;
+ /*
+ * Ticket 5691: consistent illegal sequences:
+ * - We include at least the first byte in the illegal sequence.
+ * - If any of the non-initial bytes could be the start of a character,
+ * we stop the illegal sequence before the first one of those.
+ */
myData->isEmptySegment = FALSE; /* different error here, reset this to avoid spurious future error */
- break;
+ *err = U_ILLEGAL_ESCAPE_SEQUENCE;
+ args->converter->toUBytes[0] = UCNV_TILDE;
+ if( myData->isStateDBCS ?
+ (0x21 <= mySourceChar && mySourceChar <= 0x7e) :
+ mySourceChar <= 0x7f
+ ) {
+ /* The current byte could be the start of a character: Back it out. */
+ args->converter->toULength = 1;
+ --mySource;
+ } else {
+ /* Include the current byte in the illegal sequence. */
+ args->converter->toUBytes[1] = mySourceChar;
+ args->converter->toULength = 2;
+ }
+ args->target = myTarget;
+ args->source = mySource;
+ return;
}
} else if(myData->isStateDBCS) {
if(args->converter->toUnicodeStatus == 0x00){
@@ -217,19 +237,36 @@
}
else{
/* trail byte */
+ int leadIsOk, trailIsOk;
uint32_t leadByte = args->converter->toUnicodeStatus & 0xff;
- if( (uint8_t)(leadByte - 0x21) <= (0x7d - 0x21) &&
- (uint8_t)(mySourceChar - 0x21) <= (0x7e - 0x21)
- ) {
+ targetUniChar = 0xffff;
+ /*
+ * Ticket 5691: consistent illegal sequences:
+ * - We include at least the first byte in the illegal sequence.
+ * - If any of the non-initial bytes could be the start of a character,
+ * we stop the illegal sequence before the first one of those.
+ *
+ * In HZ DBCS, if the second byte is in the 21..7e range,
+ * we report only the first byte as the illegal sequence.
+ * Otherwise we convert or report the pair of bytes.
+ */
+ leadIsOk = (uint8_t)(leadByte - 0x21) <= (0x7d - 0x21);
+ trailIsOk = (uint8_t)(mySourceChar - 0x21) <= (0x7e - 0x21);
+ if (leadIsOk && trailIsOk) {
tempBuf[0] = (char) (leadByte+0x80) ;
tempBuf[1] = (char) (mySourceChar+0x80);
targetUniChar = ucnv_MBCSSimpleGetNextUChar(myData->gbConverter->sharedData,
tempBuf, 2, args->converter->useFallback);
+ mySourceChar= (leadByte << 8) | mySourceChar;
+ } else if (trailIsOk) {
+ /* report a single illegal byte and continue with the following DBCS starter byte */
+ --mySource;
+ mySourceChar = (int32_t)leadByte;
} else {
- targetUniChar = 0xffff;
+ /* report a pair of illegal bytes if the second byte is not a DBCS starter */
+ /* add another bit so that the code below writes 2 bytes in case of error */
+ mySourceChar= 0x10000 | (leadByte << 8) | mySourceChar;
}
- /* add another bit so that the code below writes 2 bytes in case of error */
- mySourceChar= 0x10000 | (leadByte << 8) | mySourceChar;
args->converter->toUnicodeStatus =0x00;
}
}
Modified: trunk/source/common/ucnvmbcs.c
===================================================================
--- trunk/source/common/ucnvmbcs.c 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/ucnvmbcs.c 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,7 +1,7 @@
/*
******************************************************************************
*
-* Copyright (C) 2000-2007, International Business Machines
+* Copyright (C) 2000-2008, International Business Machines
* Corporation and others. All Rights Reserved.
*
******************************************************************************
@@ -2151,6 +2151,65 @@
pArgs->offsets=offsets;
}
+static UBool
+hasValidTrailBytes(const int32_t (*stateTable)[256], uint8_t state) {
+ const int32_t *row=stateTable[state];
+ int32_t b, entry;
+ /* First test for final entries in this state for some commonly valid byte values. */
+ entry=row[0xa1];
+ if( !MBCS_ENTRY_IS_TRANSITION(entry) &&
+ MBCS_ENTRY_FINAL_ACTION(entry)!=MBCS_STATE_ILLEGAL
+ ) {
+ return TRUE;
+ }
+ entry=row[0x41];
+ if( !MBCS_ENTRY_IS_TRANSITION(entry) &&
+ MBCS_ENTRY_FINAL_ACTION(entry)!=MBCS_STATE_ILLEGAL
+ ) {
+ return TRUE;
+ }
+ /* Then test for final entries in this state. */
+ for(b=0; b<=0xff; ++b) {
+ entry=row[b];
+ if( !MBCS_ENTRY_IS_TRANSITION(entry) &&
+ MBCS_ENTRY_FINAL_ACTION(entry)!=MBCS_STATE_ILLEGAL
+ ) {
+ return TRUE;
+ }
+ }
+ /* Then recurse for transition entries. */
+ for(b=0; b<=0xff; ++b) {
+ entry=row[b];
+ if( MBCS_ENTRY_IS_TRANSITION(entry) &&
+ hasValidTrailBytes(stateTable, (uint8_t)MBCS_ENTRY_TRANSITION_STATE(entry))
+ ) {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+/*
+ * Is byte b a single/lead byte in this state?
+ * Recurse for transition states, because here we don't want to say that
+ * b is a lead byte if all byte sequences that start with b are illegal.
+ */
+static UBool
+isSingleOrLead(const int32_t (*stateTable)[256], uint8_t state, UBool isDBCSOnly, uint8_t b) {
+ const int32_t *row=stateTable[state];
+ int32_t entry=row[b];
+ if(MBCS_ENTRY_IS_TRANSITION(entry)) { /* lead byte */
+ return hasValidTrailBytes(stateTable, (uint8_t)MBCS_ENTRY_TRANSITION_STATE(entry));
+ } else {
+ uint8_t action=(uint8_t)(MBCS_ENTRY_FINAL_ACTION(entry));
+ if(action==MBCS_STATE_CHANGE_ONLY && isDBCSOnly) {
+ return FALSE; /* SI/SO are illegal for DBCS-only conversion */
+ } else {
+ return action!=MBCS_STATE_ILLEGAL;
+ }
+ }
+}
+
U_CFUNC void
ucnv_MBCSToUnicodeWithOffsets(UConverterToUnicodeArgs *pArgs,
UErrorCode *pErrorCode) {
@@ -2506,6 +2565,34 @@
sourceIndex=nextSourceIndex;
} else if(U_FAILURE(*pErrorCode)) {
/* callback(illegal) */
+ if(byteIndex>1) {
+ /*
+ * Ticket 5691: consistent illegal sequences:
+ * - We include at least the first byte in the illegal sequence.
+ * - If any of the non-initial bytes could be the start of a character,
+ * we stop the illegal sequence before the first one of those.
+ */
+ UBool isDBCSOnly=(UBool)(cnv->sharedData->mbcs.dbcsOnlyState!=0);
+ int8_t i;
+ for(i=1;
+ i<byteIndex && !isSingleOrLead(stateTable, state, isDBCSOnly, bytes[i]);
+ ++i) {}
+ if(i<byteIndex) {
+ /* Back out some bytes. */
+ int8_t backOutDistance=byteIndex-i;
+ int32_t bytesFromThisBuffer=(int32_t)(source-(const uint8_t *)pArgs->source);
+ byteIndex=i; /* length of reported illegal byte sequence */
+ if(backOutDistance<=bytesFromThisBuffer) {
+ source-=backOutDistance;
+ } else {
+ /* Back out bytes from the previous buffer: Need to replay them. */
+ cnv->preToULength=(int8_t)(bytesFromThisBuffer-backOutDistance);
+ /* preToULength is negative! */
+ uprv_memcpy(cnv->preToU, bytes+i, -cnv->preToULength);
+ source=(const uint8_t *)pArgs->source;
+ }
+ }
+ }
break;
} else /* unassigned sequences indicated with byteIndex>0 */ {
/* try an extension mapping */
@@ -2516,7 +2603,7 @@
&offsets, sourceIndex,
pArgs->flush,
pErrorCode);
- sourceIndex=nextSourceIndex+(int32_t)(source-(const uint8_t *)pArgs->source);
+ sourceIndex=nextSourceIndex+=(int32_t)(source-(const uint8_t *)pArgs->source);
if(U_FAILURE(*pErrorCode)) {
/* not mappable or buffer overflow */
@@ -2807,15 +2894,37 @@
if(c<0) {
if(U_SUCCESS(*pErrorCode) && source==sourceLimit && lastSource<source) {
- *pErrorCode=U_TRUNCATED_CHAR_FOUND;
- }
- if(U_FAILURE(*pErrorCode)) {
/* incomplete character byte sequence */
uint8_t *bytes=cnv->toUBytes;
cnv->toULength=(int8_t)(source-lastSource);
do {
*bytes++=*lastSource++;
} while(lastSource<source);
+ *pErrorCode=U_TRUNCATED_CHAR_FOUND;
+ } else if(U_FAILURE(*pErrorCode)) {
+ /* callback(illegal) */
+ /*
+ * Ticket 5691: consistent illegal sequences:
+ * - We include at least the first byte in the illegal sequence.
+ * - If any of the non-initial bytes could be the start of a character,
+ * we stop the illegal sequence before the first one of those.
+ */
+ UBool isDBCSOnly=(UBool)(cnv->sharedData->mbcs.dbcsOnlyState!=0);
+ uint8_t *bytes=cnv->toUBytes;
+ *bytes++=*lastSource++; /* first byte */
+ if(lastSource==source) {
+ cnv->toULength=1;
+ } else /* lastSource<source: multi-byte character */ {
+ int8_t i;
+ for(i=1;
+ lastSource<source && !isSingleOrLead(stateTable, state, isDBCSOnly, *lastSource);
+ ++i
+ ) {
+ *bytes++=*lastSource++;
+ }
+ cnv->toULength=i;
+ source=lastSource;
+ }
} else {
/* no output because of empty input or only state changes */
*pErrorCode=U_INDEX_OUTOFBOUNDS_ERROR;
Modified: trunk/source/common/unicode/ucasemap.h
===================================================================
--- trunk/source/common/unicode/ucasemap.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/unicode/ucasemap.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -136,7 +136,7 @@
* @see ucasemap_toTitle
* @see ucasemap_utf8ToTitle
* @see UnicodeString::toTitle
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
#define U_TITLECASE_NO_LOWERCASE 0x100
@@ -161,7 +161,7 @@
* @see ucasemap_utf8ToTitle
* @see UnicodeString::toTitle
* @see U_TITLECASE_NO_LOWERCASE
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
#define U_TITLECASE_NO_BREAK_ADJUSTMENT 0x200
@@ -174,7 +174,7 @@
* Do not modify the returned break iterator.
* @param csm UCaseMap service object.
* @return titlecasing break iterator
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT const UBreakIterator * U_EXPORT2
ucasemap_getBreakIterator(const UCaseMap *csm);
@@ -197,7 +197,7 @@
*
* @see ucasemap_toTitle
* @see ucasemap_utf8ToTitle
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT void U_EXPORT2
ucasemap_setBreakIterator(UCaseMap *csm, UBreakIterator *iterToAdopt, UErrorCode *pErrorCode);
@@ -241,7 +241,7 @@
* in which case it will be greater than destCapacity.
*
* @see u_strToTitle
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT int32_t U_EXPORT2
ucasemap_toTitle(UCaseMap *csm,
@@ -348,7 +348,7 @@
* @see u_strToTitle
* @see U_TITLECASE_NO_LOWERCASE
* @see U_TITLECASE_NO_BREAK_ADJUSTMENT
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT int32_t U_EXPORT2
ucasemap_utf8ToTitle(UCaseMap *csm,
@@ -384,7 +384,7 @@
* @see ucasemap_setOptions
* @see U_FOLD_CASE_DEFAULT
* @see U_FOLD_CASE_EXCLUDE_SPECIAL_I
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT int32_t U_EXPORT2
ucasemap_utf8FoldCase(const UCaseMap *csm,
Modified: trunk/source/common/unicode/uloc.h
===================================================================
--- trunk/source/common/unicode/uloc.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/unicode/uloc.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -957,7 +957,7 @@
* @param status an error is returned if the LCID is unrecognized or the output buffer
* is too small
* @return actual the actual size of the locale ID, not including NUL-termination
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT int32_t U_EXPORT2
uloc_getLocaleForLCID(uint32_t hostID, char *locale, int32_t localeCapacity,
Modified: trunk/source/common/unicode/uniset.h
===================================================================
--- trunk/source/common/unicode/uniset.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/unicode/uniset.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -480,7 +480,7 @@
* @return TRUE/FALSE for whether the set has been frozen
* @see freeze
* @see cloneAsThawed
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
inline UBool isFrozen() const;
@@ -495,7 +495,7 @@
* @return this set.
* @see isFrozen
* @see cloneAsThawed
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UnicodeFunctor *freeze();
@@ -505,7 +505,7 @@
* @return the mutable clone
* @see freeze
* @see isFrozen
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UnicodeFunctor *cloneAsThawed() const;
@@ -816,7 +816,7 @@
* @param spanCondition specifies the containment condition
* @return the length of the initial substring according to the spanCondition;
* 0 if the start of the string does not fit the spanCondition
- * @stable ICU 4.0
+ * @stable ICU 3.8
* @see USetSpanCondition
*/
int32_t span(const UChar *s, int32_t length, USetSpanCondition spanCondition) const;
@@ -835,7 +835,7 @@
* @param spanCondition specifies the containment condition
* @return the start of the trailing substring according to the spanCondition;
* the string length if the end of the string does not fit the spanCondition
- * @stable ICU 4.0
+ * @stable ICU 3.8
* @see USetSpanCondition
*/
int32_t spanBack(const UChar *s, int32_t length, USetSpanCondition spanCondition) const;
@@ -855,7 +855,7 @@
* @param spanCondition specifies the containment condition
* @return the length of the initial substring according to the spanCondition;
* 0 if the start of the string does not fit the spanCondition
- * @stable ICU 4.0
+ * @stable ICU 3.8
* @see USetSpanCondition
*/
int32_t spanUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const;
@@ -874,7 +874,7 @@
* @param spanCondition specifies the containment condition
* @return the start of the trailing substring according to the spanCondition;
* the string length if the end of the string does not fit the spanCondition
- * @stable ICU 4.0
+ * @stable ICU 3.8
* @see USetSpanCondition
*/
int32_t spanBackUTF8(const char *s, int32_t length, USetSpanCondition spanCondition) const;
Modified: trunk/source/common/unicode/unistr.h
===================================================================
--- trunk/source/common/unicode/unistr.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/unicode/unistr.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -2501,7 +2501,7 @@
* @see U_TITLECASE_NO_LOWERCASE
* @see U_TITLECASE_NO_BREAK_ADJUSTMENT
* @see ucasemap_open
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UnicodeString &toTitle(BreakIterator *titleIter, const Locale &locale, uint32_t options);
Modified: trunk/source/common/unicode/uscript.h
===================================================================
--- trunk/source/common/unicode/uscript.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/unicode/uscript.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -161,7 +161,7 @@
USCRIPT_UNWRITTEN_LANGUAGES = 102,/* Zxxx */
USCRIPT_UNKNOWN = 103,/* Zzzz */ /* Unknown="Code for uncoded script", for unassigned code points */
- /* New script codes from ISO 15924 @stable ICU 4.0 */
+ /* New script codes from ISO 15924 @stable ICU 3.8 */
USCRIPT_CARIAN = 104,/* Cari */
USCRIPT_JAPANESE = 105,/* Jpan */
USCRIPT_LANNA = 106,/* Lana */
Modified: trunk/source/common/unicode/uset.h
===================================================================
--- trunk/source/common/unicode/uset.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/unicode/uset.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -152,7 +152,7 @@
* (strings with unpaired surrogates which cannot be converted to UTF-8)
* are ignored.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
typedef enum USetSpanCondition {
/**
@@ -164,7 +164,7 @@
* it returned consists only of characters that are not in the set,
* and none of its strings overlap with the span.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
USET_SPAN_NOT_CONTAINED = 0,
/**
@@ -179,7 +179,7 @@
* (There must be a single, non-overlapping concatenation of characters or strings.)
* This is equivalent to a POSIX regular expression for (OR of each set element)*.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
USET_SPAN_CONTAINED = 1,
/**
@@ -198,12 +198,12 @@
* Use this span condition together with other longest-match algorithms,
* such as ICU converters (ucnv_getUnicodeSet()).
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
USET_SPAN_SIMPLE = 2,
/**
* One more than the last span condition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
USET_SPAN_CONDITION_COUNT
} USetSpanCondition;
@@ -300,7 +300,7 @@
* @param set the original set
* @return the newly allocated copy of the set
* @see uset_cloneAsThawed
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT USet * U_EXPORT2
uset_clone(const USet *set);
@@ -312,7 +312,7 @@
* @return TRUE/FALSE for whether the set has been frozen
* @see uset_freeze
* @see uset_cloneAsThawed
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT UBool U_EXPORT2
uset_isFrozen(const USet *set);
@@ -329,7 +329,7 @@
* @return the same set, now frozen
* @see uset_isFrozen
* @see uset_cloneAsThawed
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT void U_EXPORT2
uset_freeze(USet *set);
@@ -342,7 +342,7 @@
* @see uset_freeze
* @see uset_isFrozen
* @see uset_clone
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT USet * U_EXPORT2
uset_cloneAsThawed(const USet *set);
@@ -855,7 +855,7 @@
* @param spanCondition specifies the containment condition
* @return the length of the initial substring according to the spanCondition;
* 0 if the start of the string does not fit the spanCondition
- * @stable ICU 4.0
+ * @stable ICU 3.8
* @see USetSpanCondition
*/
U_DRAFT int32_t U_EXPORT2
@@ -876,7 +876,7 @@
* @param spanCondition specifies the containment condition
* @return the start of the trailing substring according to the spanCondition;
* the string length if the end of the string does not fit the spanCondition
- * @stable ICU 4.0
+ * @stable ICU 3.8
* @see USetSpanCondition
*/
U_DRAFT int32_t U_EXPORT2
@@ -898,7 +898,7 @@
* @param spanCondition specifies the containment condition
* @return the length of the initial substring according to the spanCondition;
* 0 if the start of the string does not fit the spanCondition
- * @stable ICU 4.0
+ * @stable ICU 3.8
* @see USetSpanCondition
*/
U_DRAFT int32_t U_EXPORT2
@@ -919,7 +919,7 @@
* @param spanCondition specifies the containment condition
* @return the start of the trailing substring according to the spanCondition;
* the string length if the end of the string does not fit the spanCondition
- * @stable ICU 4.0
+ * @stable ICU 3.8
* @see USetSpanCondition
*/
U_DRAFT int32_t U_EXPORT2
Modified: trunk/source/common/unicode/utext.h
===================================================================
--- trunk/source/common/unicode/utext.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/unicode/utext.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -726,7 +726,7 @@
* If the index is out of range, it will be pinned to be within
* the range of the input text.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
#define UTEXT_SETNATIVEINDEX(ut, ix) \
{ int64_t __offset = (ix) - (ut)->chunkNativeStart; \
Modified: trunk/source/common/unicode/uversion.h
===================================================================
--- trunk/source/common/unicode/uversion.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/common/unicode/uversion.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -74,7 +74,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION_PATCHLEVEL_NUM 0
+#define U_ICU_VERSION_PATCHLEVEL_NUM 1
/** The current ICU build level version as an integer.
* This value is for use by ICU clients. It defaults to 0.
@@ -95,7 +95,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
-#define U_ICU_VERSION "4.0"
+#define U_ICU_VERSION "4.0.1"
/** The current ICU library major/minor version as a string without dots, for library name suffixes.
* This value will change in the subsequent releases of ICU
Modified: trunk/source/data/brkitr/brkfiles.mk
===================================================================
--- trunk/source/data/brkitr/brkfiles.mk 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/data/brkitr/brkfiles.mk 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
# * Copyright (C) 1998-2008, International Business Machines
# * Corporation and others. All Rights Reserved.
-BRK_RES_CLDR_VERSION = 1.6
+BRK_RES_CLDR_VERSION = 1.6.1
# A list of txt's to build
# Note:
#
Modified: trunk/source/data/misc/metazoneInfo.txt
===================================================================
--- trunk/source/data/misc/metazoneInfo.txt 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/data/misc/metazoneInfo.txt 2009-02-07 10:08:34 UTC (rev 162)
@@ -565,24 +565,34 @@
mz0{
"Argentina",
"1970-01-01 00:00",
- "1991-03-01 02:00",
+ "1990-03-14 02:00",
}
mz1{
"Argentina_Western",
- "1991-03-01 02:00",
- "1991-05-07 04:00",
+ "1990-03-14 02:00",
+ "1991-06-01 04:00",
}
mz2{
"Argentina",
- "1991-05-07 04:00",
- "2004-05-31 03:00",
+ "1991-06-01 04:00",
+ "1999-10-03 03:00",
}
mz3{
"Argentina_Western",
+ "1999-10-03 03:00",
+ "2000-03-03 03:00",
+ }
+ mz4{
+ "Argentina",
+ "2000-03-03 03:00",
"2004-05-31 03:00",
+ }
+ mz5{
+ "Argentina_Western",
+ "2004-05-31 03:00",
"2004-07-25 04:00",
}
- mz4{
+ mz6{
"Argentina",
"2004-07-25 04:00",
"9999-12-31 23:59",
@@ -940,6 +950,11 @@
mz0{
"Acre",
"1970-01-01 00:00",
+ "2008-06-24 05:00",
+ }
+ mz1{
+ "Amazon",
+ "2008-06-24 05:00",
"9999-12-31 23:59",
}
}
@@ -1678,9 +1693,26 @@
mz0{
"Acre",
"1970-01-01 00:00",
+ "2008-06-24 05:00",
+ }
+ mz1{
+ "Amazon",
+ "2008-06-24 05:00",
"9999-12-31 23:59",
}
}
+ "America:Santarem"{
+ mz0{
+ "Amazon",
+ "1970-01-01 00:00",
+ "2008-06-24 04:00",
+ }
+ mz1{
+ "Brasilia",
+ "2008-06-24 04:00",
+ "9999-12-31 23:59",
+ }
+ }
"America:Santiago"{
mz0{
"Chile",
Modified: trunk/source/data/misc/supplementalData.txt
===================================================================
--- trunk/source/data/misc/supplementalData.txt 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/data/misc/supplementalData.txt 2009-02-07 10:08:34 UTC (rev 162)
@@ -4395,7 +4395,7 @@
"TW",
}
}
- cldrVersion{"1.6"}
+ cldrVersion{"1.6.1"} // ICU 4.0 and 4.0.1 used CLDR 1.6.1 data, but CLDR's supplementalData.xml was not updated properly.
languageData{
aa{
primary{
Modified: trunk/source/data/misc/zoneinfo.txt
===================================================================
--- trunk/source/data/misc/zoneinfo.txt 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/data/misc/zoneinfo.txt 2009-02-07 10:08:34 UTC (rev 162)
@@ -3,20 +3,20 @@
// Corporation and others. All Rights Reserved.
//---------------------------------------------------------
// Build tool: tz2icu
-// Build date: Tue May 27 11:55:54 2008
+// Build date: Mon Oct 27 11:56:39 2008
// Olson source: ftp://elsie.nci.nih.gov/pub/
-// Olson version: 2008c
-// ICU version: 4.0
+// Olson version: 2008i
+// ICU version: 4.1.2
//---------------------------------------------------------
// >> !!! >> THIS IS A MACHINE-GENERATED FILE << !!! <<
// >> !!! >>> DO NOT EDIT <<< !!! <<
//---------------------------------------------------------
zoneinfo:table(nofallback) {
- TZVersion { "2008c" }
+ TZVersion { "2008i" }
Zones:array {
- /* ACT */ :int { 328 } //Z#0
-, /* AET */ :int { 340 } //Z#1
+ /* ACT */ :int { 330 } //Z#0
+, /* AET */ :int { 342 } //Z#1
, /* AGT */ :int { 63 } //Z#2
, /* ART */ :int { 18 } //Z#3
, /* AST */ :int { 59 } //Z#4
@@ -34,7 +34,7 @@
:intvector { -2147483648, -1062210920 }
:intvector { 9320, 0, 10800, 0 }
:bin { "0001" }
- :intvector { 7, 369 }
+ :intvector { 7, 371 }
} //Z#7
, /* Africa/Algiers */ :array {
:intvector { -2147483648, -1855958961, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1531443600, -956365200, -950486400, -942012000, -812502000, -796262400, -781052400, -766630800, -733280400, -439430400, -212029200, 41468400, 54774000, 231724800, 246236400, 259545600, 275274000, 309740400, 325468800, 341802000, 357523200 }
@@ -90,10 +90,10 @@
:bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Egypt"
:intvector { 7200, 2009 }
- :intvector { 3, 18, 374 }
+ :intvector { 3, 18, 376 }
} //Z#18
, /* Africa/Casablanca */ :array {
- :intvector { -2147483648, -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1222556400 }
+ :intvector { -2147483648, -1773012580, -956361600, -950490000, -942019200, -761187600, -617241600, -605149200, -81432000, -71110800, 141264000, 147222000, 199756800, 207702000, 231292800, 244249200, 265507200, 271033200, 448243200, 504918000, 1212278400, 1220223600 }
:intvector { -1820, 0, 0, 0, 0, 3600, 3600, 0 }
:bin { "00010201020102010201020102010201020103010201" }
} //Z#19
@@ -148,7 +148,7 @@
:intvector { -2147483648, -2109290652 }
:intvector { 7200, 0, 7452, 0 }
:bin { "0100" }
- :intvector { 29, 351 }
+ :intvector { 29, 353 }
} //Z#29
, /* Africa/Johannesburg */ :array {
:intvector { -2147483648, -2109288600, -860976000, -845254800, -829526400, -813805200 }
@@ -275,7 +275,7 @@
:intvector { -2147483648, -1577926364, -574902000, -568087200, -512175600, -504928800, -449888400, -441856800, -347158800, 378684000, 386463600, 402271200, 417999600, 433807200, 449622000, 465429600, 481590000, 496965600, 512953200, 528674400, 544230000, 560037600, 575852400, 591660000, 607388400, 623196000, 641775600, 844034400, 860108400, 875916000 }
:intvector { 3164, 0, 3600, 0, 3600, 3600, 7200, 0 }
:bin { "000102010201020103010201020102010201020102010201020103010203" }
- :intvector { 55, 500 }
+ :intvector { 55, 502 }
} //Z#55
, /* Africa/Tunis */ :array {
:intvector { -2147483648, -1855958961, -969242400, -950493600, -941940000, -891136800, -877827600, -857257200, -844556400, -842918400, -842223600, -828230400, -812502000, -796269600, -781052400, -766634400, 231202800, 243903600, 262825200, 276044400, 581122800, 591145200, 606870000, 622594800, 641516400, 654649200, 1114902000, 1128038400, 1143334800, 1162083600 }
@@ -297,7 +297,7 @@
:bin { "000101000001000100010001000100010001000100010001000100010001000100010202030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"US"
:intvector { -36000, 2008 }
- :intvector { 58, 78, 584 }
+ :intvector { 58, 79, 586 }
} //Z#58
, /* America/Anchorage */ :array {
:intvector { -2147483648, -880200000, -769395600, -765378000, -86882400, -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, 439030800, 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 }
@@ -305,7 +305,7 @@
:bin { "000101000001000100010001000100010001000100010001000100010001000100010202030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"US"
:intvector { -32400, 2008 }
- :intvector { 4, 59, 580, 583 }
+ :intvector { 4, 59, 582, 585 }
} //Z#59
, /* America/Anguilla */ :array {
:intvector { -2147483648, -1825098464 }
@@ -323,2451 +323,2449 @@
:bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
} //Z#62
, /* America/Argentina/Buenos_Aires */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800, 1224385200 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201030403040304030403040304030203040304" }
"Arg"
:intvector { -10800, 2009 }
- :intvector { 2, 63, 87 }
+ :intvector { 2, 63, 88 }
} //Z#63
, /* America/Argentina/Catamarca */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000, 1198983600, 1205632800 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
- :bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040304010403040302030103040304" }
- "Arg"
- :intvector { -10800, 2009 }
- :intvector { 64, 65, 92 }
+ :bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020103040304030403040104030403020301030403" }
+ :intvector { 64, 65, 93 }
} //Z#64
, /* America/Argentina/ComodRivadavia */ :int { 64 } //Z#65
, /* America/Argentina/Cordoba */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800, 1224385200 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201030403040304030401040304030203040304" }
"Arg"
:intvector { -10800, 2009 }
- :intvector { 66, 98, 185 }
+ :intvector { 66, 99, 186 }
} //Z#66
, /* America/Argentina/Jujuy */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 657086400, 669178800, 686721600, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 657086400, 669178800, 686721600, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
- :bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201030403040304010201040304030203040304" }
- "Arg"
- :intvector { -10800, 2009 }
- :intvector { 67, 138 }
+ :bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040102010403040302030403" }
+ :intvector { 67, 139 }
} //Z#67
, /* America/Argentina/La_Rioja */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667792800, 673588800, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667792800, 673588800, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000, 1198983600, 1205632800 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
- :bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201030403040304030401030403040302030103040304" }
- "Arg"
- :intvector { -10800, 2009 }
+ :bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040304010304030403020301030403" }
} //Z#68
, /* America/Argentina/Mendoza */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 655963200, 667796400, 687499200, 699418800, 719380800, 731469600, 938919600, 952052400, 1085281200, 1096171200, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 655963200, 667796400, 687499200, 699418800, 719380800, 731469600, 938919600, 952052400, 1085281200, 1096171200, 1198983600, 1205632800 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
- :bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040102010201040302030103040304" }
- "Arg"
- :intvector { -10800, 2009 }
- :intvector { 69, 153 }
+ :bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020103040304030401020102010403020301030403" }
+ :intvector { 69, 154 }
} //Z#69
, /* America/Argentina/Rio_Gallegos */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087704000, 1198983600, 1205632800 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
- :bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040304030403040302030103040304" }
- "Arg"
- :intvector { -10800, 2009 }
+ :bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020103040304030403040304030403020301030403" }
} //Z#70
-, /* America/Argentina/San_Juan */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667792800, 673588800, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1085972400, 1090728000, 1198983600, 1205632800, 1223175600 }
+, /* America/Argentina/Salta */ :array {
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1198983600, 1205632800 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
- :bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201030403040304030401030403040302030103040304" }
- "Arg"
- :intvector { -10800, 2009 }
+ :bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040304010403040302030403" }
} //Z#71
-, /* America/Argentina/San_Luis */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667792800, 673588800, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1085972400, 1090728000, 1198983600, 1200880800 }
+, /* America/Argentina/San_Juan */ :array {
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667792800, 673588800, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1085972400, 1090728000, 1198983600, 1205632800 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
:bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040304010304030403020301030403" }
} //Z#72
+, /* America/Argentina/San_Luis */ :array {
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 637380000, 655963200, 667796400, 675748800, 938919600, 952052400, 1085972400, 1090728000, 1198983600, 1200880800 }
+ :intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
+ :bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020103040304030401020103020301030403" }
+ } //Z#73
, /* America/Argentina/Tucuman */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087099200, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687931200, 699415200, 719377200, 731469600, 938919600, 952052400, 1086058800, 1087099200, 1198983600, 1205632800, 1224385200 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
:bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040304010403040302030103040304" }
"Arg"
:intvector { -10800, 2009 }
- } //Z#73
+ } //Z#74
, /* America/Argentina/Ushuaia */ :array {
- :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1085886000, 1087704000, 1198983600, 1205632800, 1223175600 }
+ :intvector { -2147483648, -1567453392, -1233432000, -1222981200, -1205956800, -1194037200, -1172865600, -1162501200, -1141329600, -1130965200, -1109793600, -1099429200, -1078257600, -1067806800, -1046635200, -1036270800, -1015099200, -1004734800, -983563200, -973198800, -952027200, -941576400, -931032000, -900882000, -890337600, -833749200, -827265600, -752274000, -733780800, -197326800, -190843200, -184194000, -164491200, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 596948400, 605066400, 624423600, 636516000, 656478000, 667965600, 687927600, 699415200, 719377200, 731469600, 938919600, 952052400, 1085886000, 1087704000, 1198983600, 1205632800 }
:intvector { -15408, 0, -14400, 0, -14400, 3600, -10800, 0, -10800, 3600 }
- :bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010304030403040304030403040302030103040304" }
- "Arg"
- :intvector { -10800, 2009 }
- } //Z#74
+ :bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020103040304030403040304030403020301030403" }
+ } //Z#75
, /* America/Aruba */ :array {
:intvector { -2147483648, -1826738376, -157750200 }
:intvector { -16824, 0, -16200, 0, -14400, 0 }
:bin { "000102" }
- } //Z#75
+ } //Z#76
, /* America/Asuncion */ :array {
:intvector { -2147483648, -1206389360, 86760000, 134017200, 181368000, 194497200, 212990400, 226033200, 244526400, 257569200, 276062400, 291783600, 307598400, 323406000, 339220800, 354942000, 370756800, 386478000, 402292800, 418014000, 433828800, 449636400, 465451200, 481172400, 496987200, 512708400, 528523200, 544244400, 560059200, 575866800, 591681600, 607402800, 625032000, 638938800, 654753600, 670474800, 686721600, 699418800, 718257600, 733546800, 749448000, 762318000, 780984000, 793767600, 812520000, 825649200, 844574400, 856666800, 876024000, 888721200, 907473600, 920775600, 938923200, 952225200, 970372800, 983674800, 1002427200, 1018148400, 1030852800, 1049598000, 1062907200, 1081047600, 1097985600, 1110682800, 1129435200 }
:intvector { -14400, 0, -14400, 3600, -13840, 0, -10800, 0 }
:bin { "0200030001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
"Para"
:intvector { -14400, 2006 }
- } //Z#76
+ } //Z#77
, /* America/Atikokan */ :array {
:intvector { -2147483648, -1632067200, -1614790800, -923248800, -880214400, -769395600, -765392400 }
:intvector { -21600, 0, -21600, 3600, -18000, 0 }
:bin { "00010001010102" }
- :intvector { 77, 97 }
- } //Z#77
-, /* America/Atka */ :int { 58 } //Z#78
+ :intvector { 78, 98 }
+ } //Z#78
+, /* America/Atka */ :int { 58 } //Z#79
, /* America/Bahia */ :array {
:intvector { -2147483648, -1767216356, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800 }
:intvector { -10800, 0, -10800, 3600, -9244, 0 }
:bin { "020001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
- } //Z#79
+ } //Z#80
, /* America/Barbados */ :array {
:intvector { -2147483648, -1451678492, -1199217692, 234943200, 244616400, 261554400, 276066000, 293004000, 307515600, 325058400, 338706000 }
:intvector { -14400, 0, -14400, 3600, -14308, 0 }
:bin { "0202000100010001000100" }
- } //Z#80
+ } //Z#81
, /* America/Belem */ :array {
:intvector { -2147483648, -1767213964, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600 }
:intvector { -11636, 0, -10800, 0, -10800, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201" }
- } //Z#81
+ } //Z#82
, /* America/Belize */ :array {
:intvector { -2147483648, -1822500432, -1616954400, -1606069800, -1585504800, -1574015400, -1554055200, -1542565800, -1522605600, -1511116200, -1490551200, -1479666600, -1459101600, -1448217000, -1427652000, -1416162600, -1396202400, -1384713000, -1364752800, -1353263400, -1333303200, -1321813800, -1301248800, -1290364200, -1269799200, -1258914600, -1238349600, -1226860200, -1206900000, -1195410600, -1175450400, -1163961000, -1143396000, -1132511400, -1111946400, -1101061800, -1080496800, -1069612200, -1049047200, -1037557800, -1017597600, -1006108200, -986148000, -974658600, -954093600, -943209000, -922644000, -911759400, -891194400, -879705000, -859744800, -848255400, 123919200, 129618000, 409039200, 413874000 }
:intvector { -21600, 0, -21600, 1800, -21600, 3600, -21168, 0 }
:bin { "0300010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010002000200" }
- } //Z#82
+ } //Z#83
, /* America/Blanc-Sablon */ :array {
:intvector { -2147483648, -1632074400, -1614798000, -880221600, -769395600, -765399600 }
:intvector { -14400, 0, -14400, 3600 }
:bin { "000100010100" }
- } //Z#83
+ } //Z#84
, /* America/Boa_Vista */ :array {
:intvector { -2147483648, -1767211040, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 938923200, 951620400, 970977600, 971578800 }
:intvector { -14560, 0, -14400, 0, -14400, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201" }
- } //Z#84
+ } //Z#85
, /* America/Bogota */ :array {
:intvector { -2147483648, -1739041420, 704869200, 733896000 }
:intvector { -18000, 0, -18000, 3600, -17780, 0 }
:bin { "02000100" }
- } //Z#85
+ } //Z#86
, /* America/Boise */ :array {
:intvector { -2147483648, -1633269600, -1615129200, -1601820000, -1583679600, -1471788000, -880210800, -769395600, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 129114000, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
:intvector { -28800, 0, -28800, 3600, -25200, 0, -25200, 3600 }
:bin { "00010001000203030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"US"
:intvector { -25200, 2008 }
- } //Z#86
-, /* America/Buenos_Aires */ :int { 63 } //Z#87
+ } //Z#87
+, /* America/Buenos_Aires */ :int { 63 } //Z#88
, /* America/Cambridge_Bay */ :array {
:intvector { -2147483648, -1577923200, -880210800, -769395600, -765388800, -147891600, -131562000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954662400, 972802800, 973400400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
:intvector { -25200, 0, -25200, 3600, -25200, 7200, -21600, 0, -21600, 3600, -18000, 0, 0, 0 }
:bin { "06000101000200010001000100010001000100010001000100010001000100010001000100010001000100010001030405030100010001000100010001000100" }
"Canada"
:intvector { -25200, 2008 }
- } //Z#88
+ } //Z#89
, /* America/Campo_Grande */ :array {
- :intvector { -2147483648, -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1223784000 }
+ :intvector { -2147483648, -1767212492, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1066536000, 1076814000, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1540094400, 1550372400, 1571544000, 1581822000, 1602993600, 1613876400, 1634443200, 1645326000, 1665892800, 1677380400, 1697342400, 1708225200, 1729396800, 1739674800, 1760846400, 1771729200, 1792296000, 1803178800, 1823745600, 1834628400, 1855195200, 1866078000, 1887249600, 1897527600, 1918699200, 1928977200, 1950148800, 1960426800, 1981598400, 1992481200, 2013048000, 2024535600, 2044497600, 2055380400, 2076552000, 2086830000, 2108001600, 2118884400, 2139451200 }
:intvector { -14400, 0, -14400, 3600, -13108, 0 }
- :bin { "0200010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
+ :bin { "020001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
"Brazil"
- :intvector { -14400, 2009 }
- } //Z#89
+ :intvector { -14400, 2038 }
+ } //Z#90
, /* America/Cancun */ :array {
:intvector { -2147483648, -1514743200, 377935200, 828860400, 846396000, 860310000, 877845600, 891759600, 902037600, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000 }
:intvector { -21600, 0, -21600, 3600, -20824, 0, -18000, 0, -18000, 3600 }
:bin { "020003040304030401000100010001000100" }
"Mexico"
:intvector { -21600, 2003 }
- } //Z#90
+ } //Z#91
, /* America/Caracas */ :array {
:intvector { -2147483648, -1826739140, -157750200, 1197183600 }
:intvector { -16200, 0, -16060, 0, -14400, 0 }
:bin { "01000200" }
- } //Z#91
-, /* America/Catamarca */ :int { 64 } //Z#92
+ } //Z#92
+, /* America/Catamarca */ :int { 64 } //Z#93
, /* America/Cayenne */ :array {
:intvector { -2147483648, -1846269040, -71092800 }
:intvector { -14400, 0, -12560, 0, -10800, 0 }
:bin { "010002" }
- } //Z#93
+ } //Z#94
, /* America/Cayman */ :array {
:intvector { -2147483648, -1827687168 }
:intvector { -18432, 0, -18000, 0 }
:bin { "0001" }
- } //Z#94
+ } //Z#95
, /* America/Chicago */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -1563724800, -1551632400, -1538928000, -1520182800, -1504454400, -1491757200, -1473004800, -1459702800, -1441555200, -1428253200, -1410105600, -1396803600, -1378656000, -1365354000, -1347206400, -1333904400, -1315152000, -1301850000, -1283702400, -1270400400, -1252252800, -1238950800, -1220803200, -1207501200, -1189353600, -1176051600, -1157299200, -1144602000, -1125849600, -1112547600, -1094400000, -1081098000, -1067788800, -1045414800, -1031500800, -1018198800, -1000051200, -986749200, -967996800, -955299600, -936547200, -923245200, -905097600, -891795600, -880214400, -769395600, -765392400, -747244800, -733942800, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -447267600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -131562000, -116438400, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
:intvector { -21600, 0, -21600, 3600, -18000, 0 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010002000100010001000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -21600, 2008 }
- :intvector { 95, 354, 571, 586 }
- } //Z#95
+ :intvector { 96, 356, 573, 588 }
+ } //Z#96
, /* America/Chihuahua */ :array {
:intvector { -2147483648, -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, 828864000, 846399600, 860313600, 877849200, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600 }
:intvector { -25460, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }
:bin { "000103010301030403040302010201020102010201" }
"Mexico"
:intvector { -25200, 2003 }
- } //Z#96
-, /* America/Coral_Harbour */ :int { 77 } //Z#97
-, /* America/Cordoba */ :int { 66 } //Z#98
+ } //Z#97
+, /* America/Coral_Harbour */ :int { 78 } //Z#98
+, /* America/Cordoba */ :int { 66 } //Z#99
, /* America/Costa_Rica */ :array {
:intvector { -2147483648, -1545071020, 288770400, 297234000, 320220000, 328683600, 664264800, 678344400, 695714400, 700635600 }
:intvector { -21600, 0, -21600, 3600, -20180, 0 }
:bin { "02000100010001000100" }
- } //Z#99
+ } //Z#100
, /* America/Cuiaba */ :array {
- :intvector { -2147483648, -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1223784000 }
+ :intvector { -2147483648, -1767212140, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 592977600, 602046000, 624427200, 634705200, 656481600, 666759600, 687931200, 697604400, 719985600, 728449200, 750830400, 761713200, 782280000, 793162800, 813729600, 824007600, 844574400, 856062000, 876110400, 888721200, 908078400, 919566000, 938923200, 951620400, 970977600, 982465200, 1003032000, 1013914800, 1036296000, 1045364400, 1099368000, 1108868400, 1129435200, 1140318000, 1162699200, 1172372400, 1192334400, 1203217200, 1224388800, 1234666800, 1255838400, 1266721200, 1287288000, 1298170800, 1318737600, 1330225200, 1350792000, 1361070000, 1382241600, 1392519600, 1413691200, 1424574000, 1445140800, 1456023600, 1476590400, 1487473200, 1508040000, 1518922800, 1540094400, 1550372400, 1571544000, 1581822000, 1602993600, 1613876400, 1634443200, 1645326000, 1665892800, 1677380400, 1697342400, 1708225200, 1729396800, 1739674800, 1760846400, 1771729200, 1792296000, 1803178800, 1823745600, 1834628400, 1855195200, 1866078000, 1887249600, 1897527600, 1918699200, 1928977200, 1950148800, 1960426800, 1981598400, 1992481200, 2013048000, 2024535600, 2044497600, 2055380400, 2076552000, 2086830000, 2108001600, 2118884400, 2139451200 }
:intvector { -14400, 0, -14400, 3600, -13460, 0 }
- :bin { "020001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
+ :bin { "02000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
"Brazil"
- :intvector { -14400, 2009 }
- } //Z#100
+ :intvector { -14400, 2038 }
+ } //Z#101
, /* America/Curacao */ :array {
:intvector { -2147483648, -1826738656, -157750200 }
:intvector { -16544, 0, -16200, 0, -14400, 0 }
:bin { "000102" }
- } //Z#101
+ } //Z#102
, /* America/Danmarkshavn */ :array {
:intvector { -2147483648, -1686091520, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 820465200 }
:intvector { -10800, 0, -10800, 3600, -4480, 0, 0, 0 }
:bin { "0200010001000100010001000100010001000100010001000100010001000100010003" }
- } //Z#102
+ } //Z#103
, /* America/Dawson */ :array {
:intvector { -2147483648, -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -769395600, -765381600, -147884400, -131554800, 120646800, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }
:intvector { -32400, 0, -32400, 3600, -32400, 7200, -28800, 0, -28800, 3600 }
:bin { "00010001000101000200030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
"Canada"
:intvector { -28800, 2008 }
- } //Z#103
+ } //Z#104
, /* America/Dawson_Creek */ :array {
:intvector { -2147483648, -1632060000, -1614783600, -880207200, -769395600, -765385200, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 84013200 }
:intvector { -28800, 0, -28800, 3600, -25200, 0 }
:bin { "00010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000102" }
- } //Z#104
+ } //Z#105
, /* America/Denver */ :array {
:intvector { -2147483648, -1633273200, -1615132800, -1601823600, -1583683200, -1570374000, -1551628800, -1538924400, -1534089600, -880210800, -769395600, -765388800, -147884400, -131558400, -116434800, -100108800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
:intvector { -25200, 0, -25200, 3600 }
:bin { "0001000100010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -25200, 2008 }
- :intvector { 105, 190, 515, 576, 592 }
- } //Z#105
+ :intvector { 106, 192, 517, 578, 594 }
+ } //Z#106
, /* America/Detroit */ :array {
:intvector { -2147483648, -2051202469, -1724083200, -880218000, -769395600, -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 }
:intvector { -21600, 0, -19931, 0, -18000, 0, -18000, 3600 }
:bin { "0100020303020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"US"
:intvector { -18000, 2008 }
- :intvector { 106, 591 }
- } //Z#106
+ :intvector { 107, 593 }
+ } //Z#107
, /* America/Dominica */ :array {
:intvector { -2147483648, -1846266804 }
:intvector { -14736, 0, -14400, 0 }
:bin { "0001" }
- } //Z#107
+ } //Z#108
, /* America/Edmonton */ :array {
:intvector { -2147483648, -1998663968, -1632063600, -1614787200, -1600614000, -1596816000, -1567954800, -1551628800, -1536505200, -1523203200, -1504450800, -1491753600, -1473001200, -1459699200, -880210800, -769395600, -765388800, -715791600, -702489600, -84380400, -68659200, -21481200, -5760000, 73472400, 89193600, 104922000, 120643200, 136371600, 152092800, 167821200, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
:intvector { -27232, 0, -25200, 0, -25200, 3600 }
:bin { "0001020102010201020102010201020201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
"Canada"
:intvector { -25200, 2008 }
- :intvector { 108, 361 }
- } //Z#108
+ :intvector { 109, 363 }
+ } //Z#109
, /* America/Eirunepe */ :array {
- :intvector { -2147483648, -1767208832, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 750834000, 761716800 }
- :intvector { -18000, 0, -18000, 3600, -16768, 0 }
- :bin { "0200010001000100010001000100010001000100010001000100010001000100" }
- } //Z#109
+ :intvector { -2147483648, -1767208832, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 750834000, 761716800, 1214283600 }
+ :intvector { -18000, 0, -18000, 3600, -16768, 0, -14400, 0 }
+ :bin { "020001000100010001000100010001000100010001000100010001000100010003" }
+ } //Z#110
, /* America/El_Salvador */ :array {
:intvector { -2147483648, -1546279392, 547020000, 559717200, 578469600, 591166800 }
:intvector { -21600, 0, -21600, 3600, -21408, 0 }
:bin { "020001000100" }
- } //Z#110
-, /* America/Ensenada */ :int { 201 } //Z#111
-, /* America/Fort_Wayne */ :int { 126 } //Z#112
+ } //Z#111
+, /* America/Ensenada */ :int { 203 } //Z#112
+, /* America/Fort_Wayne */ :int { 127 } //Z#113
, /* America/Fortaleza */ :array {
:intvector { -2147483648, -1767216360, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 938919600, 951616800, 970974000, 972180000, 1003028400, 1013911200 }
:intvector { -10800, 0, -10800, 3600, -9240, 0 }
:bin { "02000100010001000100010001000100010001000100010001000100010001000100010001000100" }
- } //Z#113
+ } //Z#114
, /* America/Glace_Bay */ :array {
:intvector { -2147483648, -2131646412, -1632074400, -1614798000, -880221600, -769395600, -765399600, -526500000, -513198000, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }
:intvector { -14400, 0, -14400, 3600, -14388, 0 }
:bin { "020001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Canada"
:intvector { -14400, 2008 }
- } //Z#114
+ } //Z#115
, /* America/Godthab */ :array {
:intvector { -2147483648, -1686083584, 323845200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { -12416, 0, -10800, 0, -10800, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201020102010201" }
"EU"
:intvector { -10800, 1997 }
- } //Z#115
+ } //Z#116
, /* America/Goose_Bay */ :array {
:intvector { -2147483648, -1632076148, -1614799748, -1096921748, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -769395600, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -119903400, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544593660, 562129260, 576043260, 594180060, 607492860, 625633260, 638942460, 657082860, 670996860, 688532460, 702446460, 719982060, 733896060, 752036460, 765345660, 783486060, 796795260, 814935660, 828849660, 846385260, 860299260, 877834860, 891748860, 909284460, 923198460, 941338860, 954648060, 972788460, 986097660, 1004238060, 1018152060, 1035687660, 1049601660, 1067137260, 1081051260, 1099191660, 1112500860, 1130641260, 1143950460, 1162090860, 1173585660, 1194145260 }
:intvector { -14400, 0, -14400, 3600, -14400, 7200, -12652, 0, -12652, 3600, -12600, 0, -12600, 3600 }
:bin { "030403050605060506050605060506050606050605060506050605060506050605060506050605060506050605060506050605060506050605060500010001000100010001000100010001000100010001000100010001000100010001000100010001000100010002000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"StJohns"
:intvector { -14400, 2008 }
- } //Z#116
+ } //Z#117
, /* America/Grand_Turk */ :array {
:intvector { -2147483648, -1827687168, 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 }
:intvector { -18432, 0, -18000, 0, -18000, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
"TC"
:intvector { -18000, 2008 }
- } //Z#117
+ } //Z#118
, /* America/Grenada */ :array {
:intvector { -2147483648, -1846266780 }
:intvector { -14820, 0, -14400, 0 }
:bin { "0001" }
- } //Z#118
+ } //Z#119
, /* America/Guadeloupe */ :array {
:intvector { -2147483648, -1848254032 }
:intvector { -14768, 0, -14400, 0 }
:bin { "0001" }
- :intvector { 119, 150, 191 }
- } //Z#119
+ :intvector { 120, 151, 193 }
+ } //Z#120
, /* America/Guatemala */ :array {
:intvector { -2147483648, -1617040676, 123055200, 130914000, 422344800, 433054800, 669708000, 684219600, 1146376800, 1159678800 }
:intvector { -21724, 0, -21600, 0, -21600, 3600 }
:bin { "00010201020102010201" }
- } //Z#120
+ } //Z#121
, /* America/Guayaquil */ :array {
:intvector { -2147483648, -1230749160 }
:intvector { -18840, 0, -18000, 0 }
:bin { "0001" }
- } //Z#121
+ } //Z#122
, /* America/Guyana */ :array {
:intvector { -2147483648, -1730578040, -113688900, 176010300, 662698800 }
:intvector { -14400, 0, -13960, 0, -13500, 0, -10800, 0 }
:bin { "0102020300" }
- } //Z#122
+ } //Z#123
, /* America/Halifax */ :array {
:intvector { -2147483648, -2131645536, -1696276800, -1680469200, -1632074400, -1614798000, -1566763200, -1557090000, -1535486400, -1524949200, -1504468800, -1493413200, -1472414400, -1461963600, -1440964800, -1429390800, -1409515200, -1396731600, -1376856000, -1366491600, -1346616000, -1333832400, -1313956800, -1303678800, -1282507200, -1272661200, -1251057600, -1240088400, -1219608000, -1207429200, -1188763200, -1175979600, -1157313600, -1143925200, -1124049600, -1113771600, -1091390400, -1081026000, -1059854400, -1050786000, -1030910400, -1018126800, -999460800, -986677200, -965592000, -955227600, -935956800, -923173200, -904507200, -891723600, -880221600, -769395600, -765399600, -747252000, -733950000, -715802400, -702500400, -684352800, -671050800, -652903200, -639601200, -589399200, -576097200, -557949600, -544647600, -526500000, -513198000, -495050400, -481748400, -431546400, -418244400, -400096800, -386794800, -368647200, -355345200, -337197600, -323895600, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 104911200, 120632400, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }
:intvector { -15264, 0, -14400, 0, -14400, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010202010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
"Canada"
:intvector { -14400, 2008 }
- :intvector { 123, 357, 569 }
- } //Z#123
+ :intvector { 124, 359, 571 }
+ } //Z#124
, /* America/Havana */ :array {
:intvector { -2147483648, -1402813824, -1311534000, -1300996800, -933534000, -925675200, -902084400, -893620800, -870030000, -862171200, -775681200, -767822400, -744231600, -736372800, -144702000, -134251200, -113425200, -102542400, -86295600, -72907200, -54154800, -41457600, -21495600, -5774400, 9954000, 25675200, 41403600, 57729600, 73458000, 87364800, 104907600, 118900800, 136357200, 150436800, 167806800, 183528000, 199256400, 215582400, 230706000, 247032000, 263365200, 276667200, 290581200, 308721600, 322030800, 340171200, 358318800, 371620800, 389768400, 403070400, 421218000, 434520000, 452667600, 466574400, 484117200, 498024000, 511333200, 529473600, 542782800, 560923200, 574837200, 592372800, 606286800, 623822400, 638946000, 655876800, 671000400, 687330000, 702450000, 718779600, 733899600, 750229200, 765349200, 781678800, 796798800, 813128400, 828853200, 844578000, 860302800, 876632400, 891147600, 909291600, 922597200, 941346000, 954651600, 972795600, 986101200, 1004245200, 1018155600, 1035694800, 1049605200, 1067144400, 1081054800, 1162098000, 1173589200, 1193547600, 1205643600, 1224997200 }
:intvector { -19776, 0, -18000, 0, -18000, 3600 }
:bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
"Cuba"
:intvector { -18000, 2009 }
- :intvector { 124, 368 }
- } //Z#124
+ :intvector { 125, 370 }
+ } //Z#125
, /* America/Hermosillo */ :array {
:intvector { -2147483648, -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400 }
:intvector { -28800, 0, -26632, 0, -25200, 0, -25200, 3600, -21600, 0 }
:bin { "01020402040204020002030203020302" }
- } //Z#125
+ } //Z#126
, /* America/Indiana/Indianapolis */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -900259200, -891795600, -880214400, -769395600, -765392400, -747244800, -733942800, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -386787600, -368640000, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162101600, 1173596400, 1194156000 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "000100010001000101000100010001000100010001000100010001000200020302030203020302" }
"US"
:intvector { -18000, 2008 }
- :intvector { 112, 126, 134, 480, 587 }
- } //Z#126
+ :intvector { 113, 127, 135, 482, 589 }
+ } //Z#127
, /* America/Indiana/Knox */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -447267600, -431539200, -415818000, -400089600, -386787600, -368640000, -355338000, -337190400, -321469200, -305740800, -289414800, -273686400, -257965200, -242236800, -195066000, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 1143961200, 1162105200, 1173600000, 1194159600 }
:intvector { -21600, 0, -21600, 3600, -18000, 0 }
:bin { "00010001000101000100010001000100010001000100010001000100010001000100010001000200010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010201000100" }
"US"
:intvector { -21600, 2008 }
- :intvector { 127, 142, 590 }
- } //Z#127
+ :intvector { 128, 143, 592 }
+ } //Z#128
, /* America/Indiana/Marengo */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -589392000, -576090000, -495043200, -481741200, -463593600, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 183535200, 1143961200, 1162101600, 1173596400, 1194156000 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "00010001000101000100010001000100010001000100010002030203020302030203020102030203020302" }
"US"
:intvector { -18000, 2008 }
- } //Z#128
+ } //Z#129
, /* America/Indiana/Petersburg */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -257965200, -242236800, -226515600, -210787200, -195066000, -179337600, -163616400, -147888000, -100112400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 1143961200, 1162105200, 1173600000, 1194159600, 1205046000, 1225605600 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "00010001000101000100010001000100010001000100010001000100020001000100010001000100010001000100010001000102010001020302" }
"US"
:intvector { -18000, 2009 }
- } //Z#129
+ } //Z#130
, /* America/Indiana/Tell_City */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -747244800, -733942800, -526492800, -513190800, -495043200, -481741200, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -289414800, -273686400, -260989200, -242236800, -226515600, -210787200, -195066000, -179337600, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194159600 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "0001000100010100010001000100010001000100010001000100010001000100020302030201000100" }
"US"
:intvector { -21600, 2008 }
- } //Z#130
+ } //Z#131
, /* America/Indiana/Vevay */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -495043200, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 1143961200, 1162101600, 1173596400, 1194156000 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "000100010001010002030203020302030203020302" }
"US"
:intvector { -18000, 2008 }
- } //Z#131
+ } //Z#132
, /* America/Indiana/Vincennes */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -747244800, -733942800, -526492800, -513190800, -495043200, -481741200, -462996000, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -289414800, -273686400, -260989200, -242236800, -226515600, -210787200, -195066000, -179337600, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194159600, 1205046000, 1225605600 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "00010001000101000100010001000100010001000100010001000100010001000203020302010001020302" }
"US"
:intvector { -18000, 2009 }
- } //Z#132
+ } //Z#133
, /* America/Indiana/Winamac */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -747244800, -733942800, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620841600, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -447267600, -431539200, -415818000, -400089600, -386787600, -368640000, -355338000, -337190400, -323888400, -305740800, -292438800, -273686400, -21488400, -5767200, 9961200, 25682400, 1143961200, 1162105200, 1173600000, 1194156000, 1205046000, 1225605600 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "00010001000101000100010001000100010001000100010001000100010001000100010001000203020302010003020302" }
"US"
:intvector { -18000, 2009 }
- } //Z#133
-, /* America/Indianapolis */ :int { 126 } //Z#134
+ } //Z#134
+, /* America/Indianapolis */ :int { 127 } //Z#135
, /* America/Inuvik */ :array {
:intvector { -2147483648, -536457600, -147888000, -131558400, 294228000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
:intvector { -28800, 0, -28800, 7200, -25200, 0, -25200, 3600, 0, 0 }
:bin { "04000100020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"Canada"
:intvector { -25200, 2008 }
- } //Z#135
+ } //Z#136
, /* America/Iqaluit */ :array {
:intvector { -2147483648, -865296000, -769395600, -765396000, -147898800, -131569200, 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, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600, -18000, 7200, 0, 0 }
:bin { "0503030204020302030203020302030203020302030203020302030203020302030203020302030203020302030001020302030203020302030203020302" }
"Canada"
:intvector { -18000, 2008 }
- } //Z#136
+ } //Z#137
, /* America/Jamaica */ :array {
:intvector { -2147483648, -1827687168, 136364400, 152085600, 162370800, 183535200, 199263600, 215589600, 230713200, 247039200, 262767600, 278488800, 294217200, 309938400, 325666800, 341388000, 357116400, 372837600, 388566000, 404892000, 420015600, 436341600 }
:intvector { -18432, 0, -18000, 0, -18000, 3600 }
:bin { "00010201020102010201020102010201020102010201" }
- :intvector { 137, 497 }
- } //Z#137
-, /* America/Jujuy */ :int { 67 } //Z#138
+ :intvector { 138, 499 }
+ } //Z#138
+, /* America/Jujuy */ :int { 67 } //Z#139
, /* America/Juneau */ :array {
:intvector { -2147483648, -880207200, -769395600, -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, 439030800, 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 }
:intvector { -32400, 0, -32400, 3600, -28800, 0, -28800, 3600 }
:bin { "0203030203020302030203020302030203020302030203020302030203020302030000010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -32400, 2008 }
- } //Z#139
+ } //Z#140
, /* America/Kentucky/Louisville */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -1535904000, -1525280400, -905097600, -891795600, -880214400, -769395600, -765392400, -757360800, -744224400, -715795200, -608144400, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -415818000, -400089600, -384368400, -368640000, -352918800, -337190400, -321469200, -305740800, -289414800, -273686400, -266432400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152089200, 162370800, 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 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "00010001000100010001010001000100010001000100010001000100010001000100010001020302030203020302030203020102030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"US"
:intvector { -18000, 2008 }
- :intvector { 140, 146 }
- } //Z#140
+ :intvector { 141, 147 }
+ } //Z#141
, /* America/Kentucky/Monticello */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600 }
:bin { "00010001000101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001020302030203020302030203020302" }
"US"
:intvector { -18000, 2008 }
- } //Z#141
-, /* America/Knox_IN */ :int { 127 } //Z#142
+ } //Z#142
+, /* America/Knox_IN */ :int { 128 } //Z#143
, /* America/La_Paz */ :array {
:intvector { -2147483648, -1205954844, -1192307244 }
:intvector { -16356, 0, -16356, 3600, -14400, 0 }
:bin { "000102" }
- } //Z#143
+ } //Z#144
, /* America/Lima */ :array {
:intvector { -2147483648, -1938538284, -1009825200, -1002052800, -986756400, -971035200, -955306800, -939585600, 504939600, 512712000, 536475600, 544248000, 631170000, 638942400, 757400400, 765172800 }
:intvector { -18516, 0, -18000, 0, -18000, 3600 }
:bin { "00010201020102010201020102010201" }
- } //Z#144
+ } //Z#145
, /* America/Los_Angeles */ :array {
:intvector { -2147483648, -1633269600, -1615129200, -1601820000, -1583679600, -880207200, -769395600, -765385200, -687967200, -662655600, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -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, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }
:intvector { -28800, 0, -28800, 3600 }
:bin { "000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -28800, 2008 }
- :intvector { 145, 520, 578, 593, 594 }
- } //Z#145
-, /* America/Louisville */ :int { 140 } //Z#146
+ :intvector { 146, 522, 580, 595, 596 }
+ } //Z#146
+, /* America/Louisville */ :int { 141 } //Z#147
, /* America/Maceio */ :array {
:intvector { -2147483648, -1767217028, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 813726000, 824004000, 938919600, 951616800, 970974000, 972180000, 1003028400, 1013911200 }
:intvector { -10800, 0, -10800, 3600, -8572, 0 }
:bin { "020001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
- } //Z#147
+ } //Z#148
, /* America/Managua */ :array {
:intvector { -2147483648, -1121105688, 105084000, 161758800, 290584800, 299134800, 322034400, 330584400, 694260000, 717310800, 725868000, 852094800, 1113112800, 1128229200, 1146384000, 1159682400 }
:intvector { -21600, 0, -21600, 3600, -20712, 0, -18000, 0 }
:bin { "02000300010001000300030001000100" }
- } //Z#148
+ } //Z#149
, /* America/Manaus */ :array {
:intvector { -2147483648, -1767211196, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 750830400, 761713200 }
:intvector { -14404, 0, -14400, 0, -14400, 3600 }
:bin { "0001020102010201020102010201020102010201020102010201020102010201" }
- :intvector { 149, 350 }
- } //Z#149
-, /* America/Marigot */ :int { 119 } //Z#150
+ :intvector { 150, 352 }
+ } //Z#150
+, /* America/Marigot */ :int { 120 } //Z#151
, /* America/Martinique */ :array {
:intvector { -2147483648, -1851537340, 323841600, 338958000 }
:intvector { -14660, 0, -14400, 0, -14400, 3600 }
:bin { "00010201" }
- } //Z#151
+ } //Z#152
, /* America/Mazatlan */ :array {
:intvector { -2147483648, -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -873828000, -661539600, 28800, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 989139600, 1001836800, 1018170000, 1035705600 }
:intvector { -28800, 0, -25540, 0, -25200, 0, -25200, 3600, -21600, 0 }
:bin { "010204020402040200020302030203020302030203020302" }
"Mexico"
:intvector { -25200, 2003 }
- :intvector { 152, 506 }
- } //Z#152
-, /* America/Mendoza */ :int { 69 } //Z#153
+ :intvector { 153, 508 }
+ } //Z#153
+, /* America/Mendoza */ :int { 69 } //Z#154
, /* America/Menominee */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -747244800, -733942800, -116438400, -100112400, -21484800, 104914800, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
:intvector { -21600, 0, -21600, 3600, -18000, 0 }
:bin { "0001000100010100010001000201000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -21600, 2008 }
- } //Z#154
+ } //Z#155
, /* America/Merida */ :array {
:intvector { -2147483648, -1514743200, 377935200, 407653200, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000 }
:intvector { -21600, 0, -21600, 3600, -21508, 0, -18000, 0 }
:bin { "020003000100010001000100010001000100" }
"Mexico"
:intvector { -21600, 2003 }
- } //Z#155
+ } //Z#156
, /* America/Mexico_City */ :array {
:intvector { -2147483648, -1514739600, -1343066400, -1234807200, -1220292000, -1207159200, -1191344400, -975261600, -963169200, -917114400, -907354800, -821901600, -810068400, -627501600, -612990000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000 }
:intvector { -25200, 0, -23796, 0, -21600, 0, -21600, 3600 }
:bin { "0100020002000203020302030203020302030203020302030203020302" }
"Mexico"
:intvector { -21600, 2003 }
- :intvector { 156, 507 }
- } //Z#156
+ :intvector { 157, 509 }
+ } //Z#157
, /* America/Miquelon */ :array {
:intvector { -2147483648, -1850328920, 326001600, 544597200, 562132800, 576046800, 594187200, 607496400, 625636800, 638946000, 657086400, 671000400, 688536000, 702450000, 719985600, 733899600, 752040000, 765349200, 783489600, 796798800, 814939200, 828853200, 846388800, 860302800, 877838400, 891752400, 909288000, 923202000, 941342400, 954651600, 972792000, 986101200, 1004241600, 1018155600, 1035691200, 1049605200, 1067140800, 1081054800, 1099195200, 1112504400, 1130644800, 1143954000, 1162094400, 1173589200, 1194148800 }
:intvector { -14400, 0, -13480, 0, -10800, 0, -10800, 3600 }
:bin { "010002030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"Canada"
:intvector { -10800, 2008 }
- } //Z#157
+ } //Z#158
, /* America/Moncton */ :array {
:intvector { -2147483648, -2131642800, -1632074400, -1614798000, -1153681200, -1145822400, -1122231600, -1114372800, -1090782000, -1082923200, -1059332400, -1051473600, -1027882800, -1020024000, -996433200, -988574400, -965674800, -955396800, -934743600, -923947200, -904503600, -891892800, -880221600, -769395600, -765399600, -747252000, -733950000, -715802400, -702500400, -684352800, -671050800, -652903200, -639601200, -620848800, -608151600, -589399200, -576097200, -557949600, -544647600, -526500000, -513198000, -495050400, -481748400, -463600800, -450298800, -431546400, -418244400, -400096800, -384375600, -368647200, -352926000, -337197600, -321476400, -305748000, -289422000, -273693600, -257972400, -242244000, -226522800, -210794400, -195073200, -179344800, -163623600, -147895200, -131569200, -116445600, -100119600, -84391200, -68670000, -52941600, -37220400, -21492000, -5770800, 9957600, 25678800, 41407200, 57733200, 73461600, 89182800, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733896060, 752036460, 765345660, 783486060, 796795260, 814935660, 828849660, 846385260, 860299260, 877834860, 891748860, 909284460, 923198460, 941338860, 954648060, 972788460, 986097660, 1004238060, 1018152060, 1035687660, 1049601660, 1067137260, 1081051260, 1099191660, 1112500860, 1130641260, 1143950460, 1162090860, 1173592800, 1194152400 }
:intvector { -18000, 0, -14400, 0, -14400, 3600 }
:bin { "000102010201020102010201020102010201020102010202010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
"Canada"
:intvector { -14400, 2008 }
- } //Z#158
+ } //Z#159
, /* America/Monterrey */ :array {
:intvector { -2147483648, -1514743200, 576057600, 594198000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 989136000, 1001833200, 1018166400, 1035702000 }
:intvector { -24076, 0, -21600, 0, -21600, 3600 }
:bin { "000102010201020102010201020102010201" }
"Mexico"
:intvector { -21600, 2003 }
- } //Z#159
+ } //Z#160
, /* America/Montevideo */ :array {
:intvector { -2147483648, -1567455316, -1459542600, -1443819600, -1428006600, -1412283600, -1396470600, -1380747600, -1141590600, -1128286800, -1110141000, -1096837200, -1078691400, -1065387600, -1046637000, -1033938000, -1015187400, -1002488400, -983737800, -971038800, -952288200, -938984400, -920838600, -907534800, -896819400, -883602000, -853619400, -845848800, -334789200, -319672800, -314226000, -309996000, -149720400, -134604000, -118270800, -100044000, -86821200, -68508000, -50446800, -34119000, -18910800, -2583000, 12625200, 28953000, 72932400, 82692000, 132116400, 156911400, 212983200, 250052400, 260244000, 307594800, 325994400, 566449200, 574308000, 597812400, 605671200, 625633200, 636516000, 656478000, 667965600, 688532400, 699415200, 719377200, 730864800, 1095562800, 1111896000, 1128834000, 1142136000, 1159678800, 1173585600, 1191733200 }
:intvector { -13484, 0, -12600, 0, -12600, 1800, -10800, 0, -10800, 1800, -10800, 3600 }
:bin { "000102010201020102010201020102010201020102010201020105030503050305030503050304030403040305030405030503050305030503050305030503050305030503050305" }
"Uruguay"
:intvector { -10800, 2008 }
- } //Z#160
+ } //Z#161
, /* America/Montreal */ :array {
:intvector { -2147483648, -1665334800, -1662753600, -1632070800, -1614794400, -1601742600, -1583775000, -1567355400, -1554053400, -1535907600, -1522603800, -1504458000, -1491154200, -1439830800, -1428255000, -1409504400, -1396805400, -1378054800, -1365355800, -1346612400, -1333915200, -1315162800, -1301860800, -1283713200, -1270411200, -1252263600, -1238961600, -1220814000, -1207512000, -1188759600, -1176062400, -1157310000, -1144008000, -1125860400, -1112558400, -1094410800, -1081108800, -1062961200, -1049659200, -1031511600, -1018209600, -1000062000, -986760000, -968007600, -955310400, -936558000, -880218000, -769395600, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -636573600, -620845200, -605124000, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 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 }
:intvector { -18000, 0, -18000, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000101010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Canada"
:intvector { -18000, 2008 }
- } //Z#161
+ } //Z#162
, /* America/Montserrat */ :array {
:intvector { -2147483648, -1846266608 }
:intvector { -14932, 0, -14400, 0 }
:bin { "0001" }
- } //Z#162
+ } //Z#163
, /* America/Nassau */ :array {
:intvector { -2147483648, -1825095036, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 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 }
:intvector { -18564, 0, -18000, 0, -18000, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
"US"
:intvector { -18000, 2008 }
- } //Z#163
+ } //Z#164
, /* America/New_York */ :array {
:intvector { -2147483648, -1633280400, -1615140000, -1601830800, -1583690400, -1570381200, -1551636000, -1536512400, -1523210400, -1504458000, -1491760800, -1473008400, -1459706400, -1441558800, -1428256800, -1410109200, -1396807200, -1378659600, -1365357600, -1347210000, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1189357200, -1176055200, -1157302800, -1144605600, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -923248800, -905101200, -891799200, -880218000, -769395600, -765396000, -747248400, -733946400, -715798800, -702496800, -684349200, -671047200, -652899600, -639597600, -620845200, -608148000, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -447271200, -431542800, -415821600, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 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 }
:intvector { -18000, 0, -18000, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -18000, 2008 }
- :intvector { 164, 573, 588 }
- } //Z#164
+ :intvector { 165, 575, 590 }
+ } //Z#165
, /* America/Nipigon */ :array {
:intvector { -2147483648, -1632070800, -1614794400, -923252400, -880218000, -769395600, -765396000, 136364400, 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 }
:intvector { -18000, 0, -18000, 3600 }
:bin { "000100010101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Canada"
:intvector { -18000, 2008 }
- } //Z#165
+ } //Z#166
, /* America/Nome */ :array {
:intvector { -2147483648, -880196400, -769395600, -765374400, -86878800, -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, 439030800, 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 }
:intvector { -39600, 0, -39600, 3600, -32400, 0, -32400, 3600 }
:bin { "000101000001000100010001000100010001000100010001000100010001000100010202030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"US"
:intvector { -32400, 2008 }
- } //Z#166
+ } //Z#167
, /* America/Noronha */ :array {
:intvector { -2147483648, -1767217820, -1206961200, -1191366000, -1175378400, -1159830000, -633823200, -622072800, -602287200, -591836400, -570751200, -560214000, -539128800, -531356400, -191368800, -184201200, -155167200, -150073200, -128901600, -121129200, -99957600, -89593200, -68421600, -57970800, 499744800, 511232400, 530589600, 540262800, 562125600, 571194000, 592970400, 602038800, 624420000, 634698000, 938916000, 951613200, 970970400, 971571600, 1003024800, 1013907600 }
:intvector { -7780, 0, -7200, 0, -7200, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- :intvector { 167, 348 }
- } //Z#167
+ :intvector { 168, 350 }
+ } //Z#168
, /* America/North_Dakota/Center */ :array {
:intvector { -2147483648, -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -769395600, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
:intvector { -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }
:bin { "000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000102030203020302030203020302030203020302030203020302030203020302" }
"US"
:intvector { -21600, 2008 }
- } //Z#168
+ } //Z#169
, /* America/North_Dakota/New_Salem */ :array {
:intvector { -2147483648, -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -769395600, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
:intvector { -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }
:bin { "000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001020302030203020302" }
"US"
:intvector { -21600, 2008 }
- } //Z#169
+ } //Z#170
, /* America/Panama */ :array {
:intvector { -2147483648, -1946918424 }
:intvector { -19176, 0, -18000, 0 }
:bin { "0001" }
- } //Z#170
+ } //Z#171
, /* America/Pangnirtung */ :array {
:intvector { -2147483648, -1546300800, -880221600, -769395600, -765399600, -147902400, -131572800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814946400, 828860400, 846396000, 860310000, 877845600, 891759600, 909295200, 923209200, 941349600, 954662400, 972802800, 986108400, 1004248800, 1018162800, 1035698400, 1049612400, 1067148000, 1081062000, 1099202400, 1112511600, 1130652000, 1143961200, 1162101600, 1173596400, 1194156000 }
:intvector { -21600, 0, -21600, 3600, -18000, 0, -18000, 3600, -14400, 0, -14400, 3600, -14400, 7200, 0, 0 }
:bin { "070405050406040504050405040504050405040504050405040504050405040504050405040302030203020302030001020302030203020302030203020302" }
"Canada"
:intvector { -18000, 2008 }
- } //Z#171
+ } //Z#172
, /* America/Paramaribo */ :array {
:intvector { -2147483648, -1861906760, -1104524348, -765317964, 185686200, 465449400 }
:intvector { -13252, 0, -13240, 0, -13236, 0, -12600, 0, -10800, 0 }
:bin { "010002030304" }
- } //Z#172
+ } //Z#173
, /* America/Phoenix */ :array {
:intvector { -2147483648, -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -820519140, -812653140, -796845540, -84380400, -68659200 }
:intvector { -25200, 0, -25200, 3600 }
:bin { "0001000100010001000100" }
- :intvector { 173, 517, 585 }
- } //Z#173
+ :intvector { 174, 519, 587 }
+ } //Z#174
, /* America/Port-au-Prince */ :array {
:intvector { -2147483648, -1670483460, 421218000, 436334400, 452062800, 467784000, 483512400, 499233600, 514962000, 530683200, 546411600, 562132800, 576050400, 594194400, 607500000, 625644000, 638949600, 657093600, 671004000, 688543200, 702453600, 719992800, 733903200, 752047200, 765352800, 783496800, 796802400, 814946400, 828856800, 846396000, 860306400, 877845600, 1112504400, 1130644800, 1143954000, 1162094400 }
:intvector { -18000, 0, -18000, 3600, -17340, 0 }
:bin { "020001000100010001000100010001000100010001000100010001000100010001000100" }
- } //Z#174
+ } //Z#175
, /* America/Port_of_Spain */ :array {
:intvector { -2147483648, -1825098836 }
:intvector { -14764, 0, -14400, 0 }
:bin { "0001" }
- } //Z#175
-, /* America/Porto_Acre */ :int { 184 } //Z#176
+ } //Z#176
+, /* America/Porto_Acre */ :int { 185 } //Z#177
, /* America/Porto_Velho */ :array {
:intvector { -2147483648, -1767210264, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200 }
:intvector { -15336, 0, -14400, 0, -14400, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201" }
- } //Z#177
+ } //Z#178
, /* America/Puerto_Rico */ :array {
:intvector { -2147483648, -873057600, -769395600, -765399600 }
:intvector { -14400, 0, -14400, 3600 }
:bin { "00010100" }
- :intvector { 178, 519 }
- } //Z#178
+ :intvector { 179, 521 }
+ } //Z#179
, /* America/Rainy_River */ :array {
:intvector { -2147483648, -1632067200, -1614790800, -923248800, -880214400, -769395600, -765392400, 136368000, 152089200, 167817600, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
:intvector { -21600, 0, -21600, 3600 }
:bin { "000100010101000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Canada"
:intvector { -21600, 2008 }
- } //Z#179
+ } //Z#180
, /* America/Rankin_Inlet */ :array {
:intvector { -2147483648, -410227200, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
:intvector { -21600, 0, -21600, 3600, -21600, 7200, -18000, 0, 0, 0 }
:bin { "040002000100010001000100010001000100010001000100010001000100010001000100010001000100010001030100010001000100010001000100" }
"Canada"
:intvector { -21600, 2008 }
- } //Z#180
+ } //Z#181
, /* America/Recife */ :array {
:intvector { -2147483648, -1767217224, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -191365200, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 938919600, 951616800, 970974000, 971575200, 1003028400, 1013911200 }
:intvector { -10800, 0, -10800, 3600, -8376, 0 }
:bin { "02000100010001000100010001000100010001000100010001000100010001000100010001000100" }
- } //Z#181
+ } //Z#182
, /* America/Regina */ :array {
:intvector { -2147483648, -2030202084, -1632063600, -1614787200, -1251651600, -1238349600, -1220202000, -1206900000, -1188752400, -1175450400, -1156698000, -1144000800, -1125248400, -1111946400, -1032714000, -1016992800, -1001264400, -986148000, -969814800, -954093600, -937760400, -922039200, -906310800, -890589600, -880210800, -769395600, -765388800, -748450800, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -620838000, -608140800, -589388400, -576086400, -557938800, -544636800, -526489200, -513187200, -495039600, -481737600, -463590000, -450288000, -431535600, -418233600, -400086000, -386784000, -337186800, -321465600, -305737200 }
:intvector { -25200, 0, -25200, 3600, -25116, 0, -21600, 0 }
:bin { "020001000100010001000100010001000100010001000100010100010001000100010001000100010001000100010001000100010003" }
- :intvector { 182, 359, 364 }
- } //Z#182
+ :intvector { 183, 361, 366 }
+ } //Z#183
, /* America/Resolute */ :array {
:intvector { -2147483648, -704937600, -147895200, -131565600, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200 }
:intvector { -21600, 0, -21600, 3600, -21600, 7200, -18000, 0, 0, 0 }
:bin { "04000200010001000100010001000100010001000100010001000100010001000100010001000100010001000103010001000100010001000103" }
- } //Z#183
+ } //Z#184
, /* America/Rio_Branco */ :array {
- :intvector { -2147483648, -1767209328, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800 }
- :intvector { -18000, 0, -18000, 3600, -16272, 0 }
- :bin { "020001000100010001000100010001000100010001000100010001000100" }
- :intvector { 176, 184, 347 }
- } //Z#184
-, /* America/Rosario */ :int { 66 } //Z#185
+ :intvector { -2147483648, -1767209328, -1206950400, -1191355200, -1175367600, -1159819200, -633812400, -622062000, -602276400, -591825600, -570740400, -560203200, -539118000, -531345600, -191358000, -184190400, -155156400, -150062400, -128890800, -121118400, -99946800, -89582400, -68410800, -57960000, 499755600, 511243200, 530600400, 540273600, 562136400, 571204800, 1214283600 }
+ :intvector { -18000, 0, -18000, 3600, -16272, 0, -14400, 0 }
+ :bin { "02000100010001000100010001000100010001000100010001000100010003" }
+ :intvector { 177, 185, 349 }
+ } //Z#185
+, /* America/Rosario */ :int { 66 } //Z#186
+, /* America/Santarem */ :array {
+ :intvector { -2147483648, -1767212472, -1206954000, -1191358800, -1175371200, -1159822800, -633816000, -622065600, -602280000, -591829200, -570744000, -560206800, -539121600, -531349200, -191361600, -184194000, -155160000, -150066000, -128894400, -121122000, -99950400, -89586000, -68414400, -57963600, 499752000, 511239600, 530596800, 540270000, 562132800, 571201200, 1214280000 }
+ :intvector { -14400, 0, -14400, 3600, -13128, 0, -10800, 0 }
+ :bin { "02000100010001000100010001000100010001000100010001000100010003" }
+ } //Z#187
, /* America/Santiago */ :array {
:intvector { -2147483648, -1893439034, -1688410800, -1619983034, -1593806400, -1335986234, -1317585600, -1304362800, -1286049600, -1272826800, -1254513600, -1241290800, -1222977600, -1209754800, -1191355200, -1178132400, -870552000, -865278000, -736376400, -713646000, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 591768000, 605674800, 624427200, 637729200, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600 }
:intvector { -18000, 0, -18000, 3600, -16966, 0, -14400, 0, -14400, 3600 }
:bin { "02000203020100010001000100010001000100030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304" }
"Chile"
:intvector { -14400, 2010 }
- :intvector { 186, 366 }
- } //Z#186
+ :intvector { 188, 368 }
+ } //Z#188
, /* America/Santo_Domingo */ :array {
:intvector { -2147483648, -1159773600, -100119600, -89668800, -5770800, 4422600, 25678800, 33193800, 57733200, 64816200, 89182800, 96438600, 120632400, 127974600, 152082000, 972799200, 975823200 }
:intvector { -18000, 0, -18000, 1800, -18000, 3600, -16800, 0, -14400, 0 }
:bin { "0300020001000100010001000100040004" }
- } //Z#187
+ } //Z#189
, /* America/Sao_Paulo */ :array {
- :intvector { -2147483648, -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1223780400 }
+ :intvector { -2147483648, -1767214412, -1206957600, -1191362400, -1175374800, -1159826400, -633819600, -622069200, -602283600, -591832800, -570747600, -560210400, -539125200, -531352800, -195426000, -184197600, -155163600, -150069600, -128898000, -121125600, -99954000, -89589600, -68418000, -57967200, 499748400, 511236000, 530593200, 540266400, 562129200, 571197600, 592974000, 602042400, 624423600, 634701600, 656478000, 666756000, 687927600, 697600800, 719982000, 728445600, 750826800, 761709600, 782276400, 793159200, 813726000, 824004000, 844570800, 856058400, 876106800, 888717600, 908074800, 919562400, 938919600, 951616800, 970974000, 982461600, 1003028400, 1013911200, 1036292400, 1045360800, 1066532400, 1076810400, 1099364400, 1108864800, 1129431600, 1140314400, 1162695600, 1172368800, 1192330800, 1203213600, 1224385200, 1234663200, 1255834800, 1266717600, 1287284400, 1298167200, 1318734000, 1330221600, 1350788400, 1361066400, 1382238000, 1392516000, 1413687600, 1424570400, 1445137200, 1456020000, 1476586800, 1487469600, 1508036400, 1518919200, 1540090800, 1550368800, 1571540400, 1581818400, 1602990000, 1613872800, 1634439600, 1645322400, 1665889200, 1677376800, 1697338800, 1708221600, 1729393200, 1739671200, 1760842800, 1771725600, 1792292400, 1803175200, 1823742000, 1834624800, 1855191600, 1866074400, 1887246000, 1897524000, 1918695600, 1928973600, 1950145200, 1960423200, 1981594800, 1992477600, 2013044400, 2024532000, 2044494000, 2055376800, 2076548400, 2086826400, 2107998000, 2118880800, 2139447600 }
:intvector { -11188, 0, -10800, 0, -10800, 3600 }
- :bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
+ :bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
"Brazil"
- :intvector { -10800, 2009 }
- :intvector { 188, 345, 349 }
- } //Z#188
+ :intvector { -10800, 2038 }
+ :intvector { 190, 347, 351 }
+ } //Z#190
, /* America/Scoresbysund */ :array {
:intvector { -2147483648, -1686090728, 323841600, 338961600, 354679200, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { -7200, 0, -7200, 3600, -5272, 0, -3600, 0, -3600, 3600 }
:bin { "020001000403040304030403040304030403040304030403040304030403040304030403" }
"EU"
:intvector { -3600, 1997 }
- } //Z#189
-, /* America/Shiprock */ :int { 105 } //Z#190
-, /* America/St_Barthelemy */ :int { 119 } //Z#191
+ } //Z#191
+, /* America/Shiprock */ :int { 106 } //Z#192
+, /* America/St_Barthelemy */ :int { 120 } //Z#193
, /* America/St_Johns */ :array {
:intvector { -2147483648, -1664130548, -1650137348, -1632076148, -1614799748, -1598650148, -1590100148, -1567286948, -1551565748, -1535837348, -1520116148, -1503782948, -1488666548, -1472333348, -1457216948, -1440883748, -1425767348, -1409434148, -1394317748, -1377984548, -1362263348, -1346534948, -1330813748, -1314480548, -1299364148, -1283030948, -1267914548, -1251581348, -1236464948, -1220131748, -1205015348, -1188682148, -1172960948, -1156627748, -1141511348, -1125178148, -1110061748, -1096921748, -1093728600, -1078612200, -1061670600, -1048973400, -1030221000, -1017523800, -998771400, -986074200, -966717000, -954624600, -935267400, -922570200, -903817800, -891120600, -872368200, -769395600, -765401400, -746044200, -733347000, -714594600, -701897400, -683145000, -670447800, -651695400, -638998200, -619641000, -606943800, -589401000, -576099000, -557951400, -544649400, -526501800, -513199800, -495052200, -481750200, -463602600, -450300600, -431548200, -418246200, -400098600, -386796600, -368649000, -355347000, -337199400, -323897400, -305749800, -289423800, -273695400, -257974200, -242245800, -226524600, -210796200, -195075000, -179346600, -163625400, -147897000, -131571000, -116447400, -100121400, -84393000, -68671800, -52943400, -37222200, -21493800, -5772600, 9955800, 25677000, 41405400, 57731400, 73459800, 89181000, 104909400, 120630600, 136359000, 152080200, 167808600, 183529800, 199258200, 215584200, 230707800, 247033800, 262762200, 278483400, 294211800, 309933000, 325661400, 341382600, 357111000, 372832200, 388560600, 404886600, 420010200, 436336200, 452064600, 467785800, 483514200, 499235400, 514963800, 530685000, 544591860, 562127460, 576041460, 594178260, 607491060, 625631460, 638940660, 657081060, 670995060, 688530660, 702444660, 719980260, 733894260, 752034660, 765343860, 783484260, 796793460, 814933860, 828847860, 846383460, 860297460, 877833060, 891747060, 909282660, 923196660, 941337060, 954646260, 972786660, 986095860, 1004236260, 1018150260, 1035685860, 1049599860, 1067135460, 1081049460, 1099189860, 1112499060, 1130639460, 1143948660, 1162089060, 1173583860, 1194143460 }
:intvector { -12652, 0, -12652, 3600, -12600, 0, -12600, 3600, -12600, 7200 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010002030203020302030203020302030203030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030204020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"StJohns"
:intvector { -12600, 2008 }
- :intvector { 192, 353, 362 }
- } //Z#192
+ :intvector { 194, 355, 364 }
+ } //Z#194
, /* America/St_Kitts */ :array {
:intvector { -2147483648, -1825098548 }
:intvector { -15052, 0, -14400, 0 }
:bin { "0001" }
- } //Z#193
+ } //Z#195
, /* America/St_Lucia */ :array {
:intvector { -2147483648, -1830369360 }
:intvector { -14640, 0, -14400, 0 }
:bin { "0001" }
- } //Z#194
+ } //Z#196
, /* America/St_Thomas */ :array {
:intvector { -2147483648, -1846266016 }
:intvector { -15584, 0, -14400, 0 }
:bin { "0001" }
- :intvector { 195, 205 }
- } //Z#195
+ :intvector { 197, 207 }
+ } //Z#197
, /* America/St_Vincent */ :array {
:intvector { -2147483648, -1830369304 }
:intvector { -14696, 0, -14400, 0 }
:bin { "0001" }
- } //Z#196
+ } //Z#198
, /* America/Swift_Current */ :array {
:intvector { -2147483648, -2030201320, -1632063600, -1614787200, -880210800, -769395600, -765388800, -747241200, -732729600, -715791600, -702489600, -684342000, -671040000, -652892400, -639590400, -400086000, -384364800, -337186800, -321465600, -305737200, -292435200, -273682800, -260985600, 73472400 }
:intvector { -25880, 0, -25200, 0, -25200, 3600, -21600, 0 }
:bin { "000102010202010201020102010201020102010201020103" }
- } //Z#197
+ } //Z#199
, /* America/Tegucigalpa */ :array {
:intvector { -2147483648, -1538503868, 547020000, 559717200, 578469600, 591166800, 1146981600, 1154926800 }
:intvector { -21600, 0, -21600, 3600, -20932, 0 }
:bin { "0200010001000100" }
- } //Z#198
+ } //Z#200
, /* America/Thule */ :array {
:intvector { -2147483648, -1686079492, 670399200, 686120400, 701848800, 717570000, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }
:intvector { -16508, 0, -14400, 0, -14400, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201020102010201" }
"Thule"
:intvector { -14400, 2008 }
- } //Z#199
+ } //Z#201
, /* America/Thunder_Bay */ :array {
:intvector { -2147483648, -1893434400, -880218000, -769395600, -765396000, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 136364400, 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 }
:intvector { -21600, 0, -18000, 0, -18000, 3600 }
:bin { "00010202010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
"Canada"
:intvector { -18000, 2008 }
- } //Z#200
+ } //Z#202
, /* America/Tijuana */ :array {
:intvector { -2147483648, -1514736000, -1451667600, -1343062800, -1234803600, -1222963200, -1207242000, -873820800, -769395600, -761677200, -686073600, -661539600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200 }
:intvector { -28800, 0, -28800, 3600, -28084, 0, -25200, 0 }
:bin { "0203000300010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Mexico"
:intvector { -28800, 2003 }
- :intvector { 111, 201, 505 }
- } //Z#201
+ :intvector { 112, 203, 507 }
+ } //Z#203
, /* America/Toronto */ :array {
:intvector { -2147483648, -1632070800, -1614794400, -1601753400, -1583697600, -1567357200, -1554667200, -1534698000, -1524074400, -1503248400, -1492365600, -1471798800, -1460916000, -1440954000, -1428861600, -1409504400, -1397412000, -1378054800, -1365962400, -1346605200, -1333908000, -1315155600, -1301853600, -1283706000, -1270404000, -1252256400, -1238954400, -1220806800, -1207504800, -1188752400, -1176055200, -1157302800, -1144000800, -1125853200, -1112551200, -1094403600, -1081101600, -1062954000, -1049652000, -1031504400, -1018202400, -1000054800, -986752800, -968000400, -955303200, -936550800, -880218000, -769395600, -765396000, -747248400, -733946400, -715806000, -702504000, -684356400, -671054400, -652906800, -634161600, -620845200, -602704800, -589395600, -576093600, -557946000, -544644000, -526496400, -513194400, -495046800, -481744800, -463597200, -450295200, -431542800, -418240800, -400093200, -384372000, -368643600, -352922400, -337194000, -321472800, -305744400, -289418400, -273690000, -257968800, -242240400, -226519200, -210790800, -195069600, -179341200, -163620000, -147891600, -131565600, -116442000, -100116000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 136364400, 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 }
:intvector { -18000, 0, -18000, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000101010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Canada"
:intvector { -18000, 2008 }
- :intvector { 202, 360 }
- } //Z#202
+ :intvector { 204, 362 }
+ } //Z#204
, /* America/Tortola */ :array {
:intvector { -2147483648, -1846266092 }
:intvector { -15508, 0, -14400, 0 }
:bin { "0001" }
- } //Z#203
+ } //Z#205
, /* America/Vancouver */ :array {
:intvector { -2147483648, -1632060000, -1614783600, -880207200, -769395600, -765385200, -747237600, -732726000, -715788000, -702486000, -684338400, -671036400, -652888800, -639586800, -620834400, -608137200, -589384800, -576082800, -557935200, -544633200, -526485600, -513183600, -495036000, -481734000, -463586400, -450284400, -431532000, -418230000, -400082400, -386780400, -368632800, -355330800, -337183200, -323881200, -305733600, -292431600, -273679200, -260982000, -242229600, -226508400, -210780000, -195058800, -179330400, -163609200, -147880800, -131554800, -116431200, -100105200, -84376800, -68655600, -52927200, -37206000, -21477600, -5756400, 9972000, 25693200, 41421600, 57747600, 73476000, 89197200, 104925600, 120646800, 136375200, 152096400, 167824800, 183546000, 199274400, 215600400, 230724000, 247050000, 262778400, 278499600, 294228000, 309949200, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }
:intvector { -28800, 0, -28800, 3600 }
:bin { "00010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Canada"
:intvector { -28800, 2008 }
- :intvector { 204, 363 }
- } //Z#204
-, /* America/Virgin */ :int { 195 } //Z#205
+ :intvector { 206, 365 }
+ } //Z#206
+, /* America/Virgin */ :int { 197 } //Z#207
, /* America/Whitehorse */ :array {
:intvector { -2147483648, -1632056400, -1615125600, -1596978000, -1583164800, -880203600, -769395600, -765381600, -147884400, -131554800, -110552400, 325677600, 341398800, 357127200, 372848400, 388576800, 404902800, 420026400, 436352400, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }
:intvector { -32400, 0, -32400, 3600, -32400, 7200, -28800, 0, -28800, 3600 }
:bin { "00010001000101000200030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
"Canada"
:intvector { -28800, 2008 }
- :intvector { 206, 365 }
- } //Z#206
+ :intvector { 208, 367 }
+ } //Z#208
, /* America/Winnipeg */ :array {
:intvector { -2147483648, -1694368800, -1681671600, -1632067200, -1614790800, -1029686400, -1018198800, -880214400, -769395600, -765392400, -746035200, -732733200, -715795200, -702493200, -684345600, -671043600, -652896000, -639594000, -620755200, -607626000, -589392000, -576090000, -557942400, -544640400, -526492800, -513190800, -495043200, -481741200, -463593600, -450291600, -431539200, -418237200, -400089600, -386787600, -368640000, -355338000, -337190400, -321469200, -305740800, -292438800, -210787200, -198090000, -116438400, -100108800, -84384000, -68659200, -52934400, -37209600, -21484800, -5760000, 9964800, 25689600, 41414400, 57744000, 73468800, 89193600, 104918400, 120643200, 136368000, 152092800, 167817600, 183542400, 199267200, 215596800, 230716800, 247046400, 262771200, 278496000, 294220800, 309945600, 325670400, 341395200, 357120000, 372844800, 388569600, 404899200, 420019200, 436348800, 452073600, 467798400, 483523200, 499248000, 514972800, 530697600, 544608000, 562147200, 576057600, 594201600, 607507200, 625651200, 638956800, 657100800, 671011200, 688550400, 702460800, 720000000, 733910400, 752054400, 765360000, 783504000, 796809600, 814953600, 828864000, 846403200, 860313600, 877852800, 891763200, 909302400, 923212800, 941356800, 954662400, 972806400, 986112000, 1004256000, 1018166400, 1035705600, 1049616000, 1067155200, 1081065600, 1099209600, 1112515200, 1130659200, 1136095200, 1143964800, 1162105200, 1173600000, 1194159600 }
:intvector { -21600, 0, -21600, 3600 }
:bin { "00010001000100010100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000001000100" }
"Canada"
:intvector { -21600, 2008 }
- :intvector { 207, 358 }
- } //Z#207
+ :intvector { 209, 360 }
+ } //Z#209
, /* America/Yakutat */ :array {
:intvector { -2147483648, -880203600, -769395600, -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, 439030800, 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 }
:intvector { -32400, 0, -32400, 3600 }
:bin { "0001010001000100010001000100010001000100010001000100010001000100010000010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -32400, 2008 }
- } //Z#208
+ } //Z#210
, /* America/Yellowknife */ :array {
:intvector { -2147483648, -1104537600, -880210800, -769395600, -765388800, -147891600, -131562000, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
:intvector { -25200, 0, -25200, 3600, -25200, 7200, 0, 0 }
:bin { "030001010002000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Canada"
:intvector { -25200, 2008 }
- } //Z#209
+ } //Z#211
, /* Antarctica/Casey */ :array {
:intvector { -2147483648, -31536000 }
:intvector { 0, 0, 28800, 0 }
:bin { "0001" }
- } //Z#210
+ } //Z#212
, /* Antarctica/Davis */ :array {
:intvector { -2147483648, -409190400, -163062000, -28857600 }
:intvector { 0, 0, 25200, 0 }
:bin { "00010001" }
- } //Z#211
+ } //Z#213
, /* Antarctica/DumontDUrville */ :array {
:intvector { -2147483648, -725846400, -566992800, -415497600 }
:intvector { 0, 0, 36000, 0 }
:bin { "00010001" }
- } //Z#212
+ } //Z#214
, /* Antarctica/Mawson */ :array {
:intvector { -2147483648, -501206400 }
:intvector { 0, 0, 21600, 0 }
:bin { "0001" }
- } //Z#213
+ } //Z#215
, /* Antarctica/McMurdo */ :array {
:intvector { -2147483648, -441849600, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 }
:intvector { 0, 0, 43200, 0, 43200, 3600 }
:bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
"NZAQ"
:intvector { 43200, 2009 }
- :intvector { 214, 217 }
- } //Z#214
+ :intvector { 216, 219 }
+ } //Z#216
, /* Antarctica/Palmer */ :array {
:intvector { -2147483648, -157766400, -152658000, -132955200, -121122000, -101419200, -86821200, -71092800, -54766800, -39038400, -23317200, -7588800, 128142000, 136605600, 389070000, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 591768000, 605674800, 624427200, 637729200, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400 }
:intvector { -14400, 0, -14400, 3600, -10800, 0, -10800, 3600, 0, 0 }
:bin { "04010001000100010001000203020001000100010001000100010001000100010001000100010001000100010001000100010001" }
"ChileAQ"
:intvector { -14400, 2001 }
- } //Z#215
+ } //Z#217
, /* Antarctica/Rothera */ :array {
:intvector { -2147483648, 218246400 }
:intvector { -10800, 0, 0, 0 }
:bin { "0100" }
- } //Z#216
-, /* Antarctica/South_Pole */ :int { 214 } //Z#217
+ } //Z#218
+, /* Antarctica/South_Pole */ :int { 216 } //Z#219
, /* Antarctica/Syowa */ :array {
:intvector { -2147483648, -407808000 }
:intvector { 0, 0, 10800, 0 }
:bin { "0001" }
- } //Z#218
+ } //Z#220
, /* Antarctica/Vostok */ :array {
:intvector { -2147483648, -380073600 }
:intvector { 0, 0, 21600, 0 }
:bin { "0001" }
- } //Z#219
-, /* Arctic/Longyearbyen */ :int { 444 } //Z#220
+ } //Z#221
+, /* Arctic/Longyearbyen */ :int { 446 } //Z#222
, /* Asia/Aden */ :array {
:intvector { -2147483648, -631162848 }
:intvector { 10800, 0, 10848, 0 }
:bin { "0100" }
- } //Z#221
+ } //Z#223
, /* Asia/Almaty */ :array {
:intvector { -2147483648, -1441170468, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 662666400, 701802000, 717523200, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1110823200 }
:intvector { 18000, 0, 18468, 0, 21600, 0, 21600, 3600 }
:bin { "010002030203020302030203020302030203020302030202030203020302030203020302030203020302030203020302030202" }
- } //Z#222
+ } //Z#224
, /* Asia/Amman */ :array {
:intvector { -2147483648, -1230776624, 108165600, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 215643600, 231285600, 244501200, 262735200, 275950800, 481154400, 496962000, 512949600, 528670800, 544399200, 560120400, 575848800, 592174800, 610581600, 623624400, 641167200, 655074000, 671839200, 685918800, 702856800, 717973200, 733701600, 749422800, 765151200, 779662800, 797205600, 811116000, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 930780000, 938642400, 954367200, 970092000, 985816800, 1001541600, 1017266400, 1032991200, 1048716000, 1066946400, 1080165600, 1097791200, 1112220000, 1128031200, 1143669600, 1161900000 }
:intvector { 7200, 0, 7200, 3600, 8624, 0 }
:bin { "02000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Jordan"
:intvector { 7200, 2007 }
- } //Z#223
+ } //Z#225
, /* Asia/Anadyr */ :array {
:intvector { -2147483648, -1441194596, -1247572800, 354884400, 370692000, 386420400, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701780400, 717501600, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800, 828194400, 846338400 }
:intvector { 39600, 0, 39600, 3600, 42596, 0, 43200, 0, 43200, 3600, 46800, 0, 46800, 3600 }
:bin { "020305060504030403040304030403040304030403040301000304030403040304030403" }
"Russia"
:intvector { 43200, 1997 }
- } //Z#224
+ } //Z#226
, /* Asia/Aqtau */ :array {
:intvector { -2147483648, -1441164064, -1247544000, -220942800, 370724400, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 662670000, 692823600, 701805600, 717526800, 733266000, 748990800, 764715600, 780440400, 796165200, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1110830400 }
:intvector { 12064, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
:bin { "00010303050403040304030403040304030403040304030303040304030403020102010201020102010201020102010201020103" }
- } //Z#225
+ } //Z#227
, /* Asia/Aqtobe */ :array {
:intvector { -2147483648, -1441165720, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 662670000, 692823600, 701805600, 717526800, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600, 859669200, 877813200, 891118800, 909262800, 922568400, 941317200, 954018000, 972766800, 985467600, 1004216400, 1017522000, 1035666000, 1048971600, 1067115600, 1080421200, 1099170000, 1110826800 }
:intvector { 13720, 0, 14400, 0, 18000, 0, 18000, 3600, 21600, 0 }
:bin { "00010203040302030203020302030203020302030203020202030203020302030203020302030203020302030203020302030202" }
- } //Z#226
+ } //Z#228
, /* Asia/Ashgabat */ :array {
:intvector { -2147483648, -1441166012, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 688507200, 695772000 }
:intvector { 14012, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600 }
:bin { "000103040304030403040304030403040304030403040302010103" }
- :intvector { 227, 228 }
- } //Z#227
-, /* Asia/Ashkhabad */ :int { 227 } //Z#228
+ :intvector { 229, 230 }
+ } //Z#229
+, /* Asia/Ashkhabad */ :int { 229 } //Z#230
, /* Asia/Baghdad */ :array {
:intvector { -2147483648, -1641005856, 389048400, 402264000, 417906000, 433800000, 449614800, 465422400, 481150800, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670464000, 686275200, 702086400, 717897600, 733622400, 749433600, 765158400, 780969600, 796694400, 812505600, 828316800, 844128000, 859852800, 875664000, 891388800, 907200000, 922924800, 938736000, 954547200, 970358400, 986083200, 1001894400, 1017619200, 1033430400, 1049155200, 1064966400, 1080777600, 1096588800, 1112313600, 1128124800, 1143849600, 1159660800, 1175385600, 1191196800 }
:intvector { 10656, 0, 10800, 0, 10800, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- } //Z#229
+ } //Z#231
, /* Asia/Bahrain */ :array {
:intvector { -2147483648, -1577935340, 76190400 }
:intvector { 10800, 0, 12140, 0, 14400, 0 }
:bin { "010200" }
- } //Z#230
+ } //Z#232
, /* Asia/Baku */ :array {
:intvector { -2147483648, -1441163964, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 683496000, 686098800, 701812800, 717534000, 828234000, 846378000, 852062400, 859680000, 877824000 }
:intvector { 10800, 0, 10800, 3600, 11964, 0, 14400, 0, 14400, 3600 }
:bin { "020003040304030403040304030403040304030403040301010001030403030403" }
"Azer"
:intvector { 14400, 1998 }
- } //Z#231
+ } //Z#233
, /* Asia/Bangkok */ :array {
:intvector { -2147483648, -1570084924 }
:intvector { 24124, 0, 25200, 0 }
:bin { "0001" }
- } //Z#232
+ } //Z#234
, /* Asia/Beirut */ :array {
:intvector { -2147483648, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1473645600, -1460948400, -399866400, -386650800, -368330400, -355114800, -336794400, -323578800, -305172000, -291956400, -273636000, -260420400, 78012000, 86734800, 105055200, 118270800, 136591200, 149806800, 168127200, 181342800, 199749600, 212965200, 231285600, 244501200, 262735200, 275950800, 452210400, 466722000, 483746400, 498258000, 515282400, 529794000, 546818400, 561330000, 581119200, 592952400, 610754400, 624488400, 641512800, 656024400, 673048800, 687560400, 704671200, 718146000, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 843944400, 859672800, 875394000, 891122400, 906843600, 922572000, 941317200 }
:intvector { 7200, 0, 7200, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Lebanon"
:intvector { 7200, 2000 }
- } //Z#233
+ } //Z#235
, /* Asia/Bishkek */ :array {
:intvector { -2147483648, -1441169904, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 683582400, 703018800, 717530400, 734468400, 748980000, 765918000, 780429600, 797367600, 811879200, 828817200, 843933600, 859671000, 877811400, 891120600, 909261000, 922570200, 941315400, 954019800, 972765000, 985469400, 1004214600, 1017523800, 1035664200, 1048973400, 1067113800, 1080423000, 1099168200, 1111872600, 1123783200 }
:intvector { 17904, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
:bin { "0001030403040304030403040304030403040304030403020102010201020102010201020102010201020102010201020102010203" }
- } //Z#234
+ } //Z#236
, /* Asia/Brunei */ :array {
:intvector { -2147483648, -1383464380, -1167636600 }
:intvector { 27000, 0, 27580, 0, 28800, 0 }
:bin { "010002" }
- } //Z#235
-, /* Asia/Calcutta */ :int { 262 } //Z#236
+ } //Z#237
+, /* Asia/Calcutta */ :int { 264 } //Z#238
, /* Asia/Choibalsan */ :array {
:intvector { -2147483648, -2032933080, 252435600, 417974400, 433778400, 449593200, 465314400, 481042800, 496764000, 512492400, 528213600, 543942000, 559663200, 575391600, 591112800, 606841200, 622562400, 638290800, 654616800, 670345200, 686066400, 701794800, 717516000, 733244400, 748965600, 764694000, 780415200, 796143600, 811864800, 828198000, 843919200, 859647600, 875368800, 891097200, 906818400, 988390800, 1001692800, 1017421200, 1033142400, 1048870800, 1064592000, 1080320400, 1096041600, 1111770000, 1127491200, 1143219600, 1159545600, 1206889200 }
:intvector { 25200, 0, 27480, 0, 28800, 0, 32400, 0, 32400, 3600 }
:bin { "010002040304030403040304030403040304030403040304030403040304030403040304030403040304030403040302" }
- } //Z#237
+ } //Z#239
, /* Asia/Chongqing */ :array {
:intvector { -2147483648, -1325487980, 325962000, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
:intvector { 25200, 0, 25580, 0, 28800, 0, 28800, 3600 }
:bin { "010002030203020302030203020302" }
- :intvector { 238, 239 }
- } //Z#238
-, /* Asia/Chungking */ :int { 238 } //Z#239
+ :intvector { 240, 241 }
+ } //Z#240
+, /* Asia/Chungking */ :int { 240 } //Z#241
, /* Asia/Colombo */ :array {
:intvector { -2147483648, -2019705572, -883287000, -862639200, -764051400, 832962600, 846266400, 1145039400 }
:intvector { 19172, 0, 19800, 0, 19800, 1800, 19800, 3600, 21600, 0, 23400, 0 }
:bin { "0001020301050401" }
- } //Z#240
-, /* Asia/Dacca */ :int { 243 } //Z#241
+ } //Z#242
+, /* Asia/Dacca */ :int { 245 } //Z#243
, /* Asia/Damascus */ :array {
- :intvector { -2147483648, -1577931912, -1568592000, -1554080400, -1537142400, -1522630800, -1505692800, -1491181200, -1474243200, -1459126800, -242265600, -228877200, -210556800, -197427600, -178934400, -165718800, -147398400, -134269200, -116467200, -102646800, -84326400, -71110800, -52704000, -39488400, -21168000, -7952400, 10368000, 23583600, 41904000, 55119600, 73526400, 86742000, 105062400, 118278000, 136598400, 149814000, 168134400, 181350000, 199756800, 212972400, 231292800, 241916400, 262828800, 273452400, 418694400, 433810800, 450316800, 465433200, 508896000, 529196400, 541555200, 562633200, 574387200, 594255600, 607305600, 623199600, 638928000, 654649200, 670456800, 686264400, 702684000, 717886800, 733096800, 748904400, 765151200, 780958800, 796687200, 812494800, 828309600, 844117200, 859759200, 875653200, 891208800, 907189200, 922917600, 938725200, 954540000, 970347600, 986076000, 1001883600, 1017612000, 1033419600, 1049148000, 1064955600, 1080770400, 1096578000, 1112306400, 1128114000, 1143842400, 1158872400, 1175205600, 1193950800, 1207260000, 1222808400 }
+ :intvector { -2147483648, -1577931912, -1568592000, -1554080400, -1537142400, -1522630800, -1505692800, -1491181200, -1474243200, -1459126800, -242265600, -228877200, -210556800, -197427600, -178934400, -165718800, -147398400, -134269200, -116467200, -102646800, -84326400, -71110800, -52704000, -39488400, -21168000, -7952400, 10368000, 23583600, 41904000, 55119600, 73526400, 86742000, 105062400, 118278000, 136598400, 149814000, 168134400, 181350000, 199756800, 212972400, 231292800, 241916400, 262828800, 273452400, 418694400, 433810800, 450316800, 465433200, 508896000, 529196400, 541555200, 562633200, 574387200, 594255600, 607305600, 623199600, 638928000, 654649200, 670456800, 686264400, 702684000, 717886800, 733096800, 748904400, 765151200, 780958800, 796687200, 812494800, 828309600, 844117200, 859759200, 875653200, 891208800, 907189200, 922917600, 938725200, 954540000, 970347600, 986076000, 1001883600, 1017612000, 1033419600, 1049148000, 1064955600, 1080770400, 1096578000, 1112306400, 1128114000, 1143842400, 1158872400, 1175205600, 1193950800, 1207260000, 1225486800 }
:intvector { 7200, 0, 7200, 3600, 8712, 0 }
:bin { "02000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"Syria"
:intvector { 7200, 2009 }
- } //Z#242
+ } //Z#244
, /* Asia/Dhaka */ :array {
:intvector { -2147483648, -891582800, -872058600, -862637400, -576138600, 38772000 }
:intvector { 19800, 0, 21200, 0, 21600, 0, 23400, 0 }
:bin { "010300030202" }
- :intvector { 241, 243, 346 }
- } //Z#243
+ :intvector { 243, 245, 348 }
+ } //Z#245
, /* Asia/Dili */ :array {
:intvector { -2147483648, -1830414140, -879152400, -766054800, 199897200, 969120000 }
:intvector { 28800, 0, 30140, 0, 32400, 0 }
:bin { "010002020002" }
- } //Z#244
+ } //Z#246
, /* Asia/Dubai */ :array {
:intvector { -2147483648, -1577936472 }
:intvector { 13272, 0, 14400, 0 }
:bin { "0001" }
- } //Z#245
+ } //Z#247
, /* Asia/Dushanbe */ :array {
:intvector { -2147483648, -1441168512, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 684363600 }
:intvector { 16512, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
:bin { "00010304030403040304030403040304030403040304030201" }
- } //Z#246
+ } //Z#248
, /* Asia/Gaza */ :array {
- :intvector { -2147483648, -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576540000, 589237200, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 820447200, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 915141600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000 }
+ :intvector { -2147483648, -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -399088800, -386650800, -368330400, -355114800, -336790800, -323654400, -305168400, -292032000, -273632400, -260496000, -242096400, -228960000, -210560400, -197424000, -178938000, -165801600, -147402000, -134265600, -115866000, -102643200, -84330000, -81313200, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576540000, 589237200, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 820447200, 828655200, 843170400, 860104800, 874620000, 891554400, 906069600, 915141600, 924213600, 939934800, 956268000, 971989200, 987717600, 1003438800, 1019167200, 1034888400, 1050616800, 1066338000, 1082066400, 1096581600, 1113516000, 1128380400, 1143842400, 1158872400, 1175378400, 1189638000, 1207000800, 1219878000 }
:intvector { 7200, 0, 7200, 3600 }
- :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000001000100010000010001000100010001000100010001000100" }
+ :bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010000010001000100000100010001000100010001000100010001000100" }
"Palestine"
- :intvector { 7200, 2008 }
- } //Z#247
+ :intvector { 7200, 2009 }
+ } //Z#249
, /* Asia/Harbin */ :array {
:intvector { -2147483648, -1325492804, -1194078600, -946800000, -115894800, 325956600, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
:intvector { 28800, 0, 28800, 3600, 30404, 0, 30600, 0, 32400, 0 }
:bin { "020300040300010001000100010001000100" }
- } //Z#248
+ } //Z#250
, /* Asia/Ho_Chi_Minh */ :array {
:intvector { -2147483648, -2005974400, -1855983920, -1819954800, -1220428800 }
:intvector { 25200, 0, 25580, 0, 25600, 0, 28800, 0 }
:bin { "0201000300" }
- :intvector { 249, 287, 598 }
- } //Z#249
+ :intvector { 251, 289, 600 }
+ } //Z#251
, /* Asia/Hong_Kong */ :array {
:intvector { -2147483648, -2056692996, -747981000, -728544600, -717049800, -694503000, -683785800, -668064600, -654755400, -636615000, -623305800, -605165400, -591856200, -573715800, -559801800, -542266200, -528352200, -510211800, -498112200, -478762200, -466662600, -446707800, -435213000, -415258200, -403158600, -383808600, -371709000, -352359000, -340259400, -320909400, -308809800, -288855000, -277360200, -257405400, -245910600, -225955800, -213856200, -194506200, -182406600, -163056600, -148537800, -132816600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72214200, 88540200, 104268600, 119989800, 135718200, 151439400, 167167800, 182889000, 198617400, 214338600, 230067000, 245788200, 295385400, 309292200, 326835000, 340741800 }
:intvector { 27396, 0, 28800, 0, 28800, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- :intvector { 250, 479 }
- } //Z#250
+ :intvector { 252, 481 }
+ } //Z#252
, /* Asia/Hovd */ :array {
:intvector { -2147483648, -2032927596, 252439200, 417978000, 433785600, 449600400, 465321600, 481050000, 496771200, 512499600, 528220800, 543949200, 559670400, 575398800, 591120000, 606848400, 622569600, 638298000, 654624000, 670352400, 686073600, 701802000, 717523200, 733251600, 748972800, 764701200, 780422400, 796150800, 811872000, 828205200, 843926400, 859654800, 875376000, 891104400, 906825600, 988398000, 1001700000, 1017428400, 1033149600, 1048878000, 1064599200, 1080327600, 1096048800, 1111777200, 1127498400, 1143226800, 1159552800 }
:intvector { 21600, 0, 21996, 0, 25200, 0, 25200, 3600 }
:bin { "0100020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
- } //Z#251
+ } //Z#253
, /* Asia/Irkutsk */ :array {
:intvector { -2147483648, -1575874640, -1247554800, 354902400, 370710000, 386438400, 402246000, 417974400, 433782000, 449596800, 465328800, 481053600, 496778400, 512503200, 528228000, 543952800, 559677600, 575402400, 591127200, 606852000, 622576800, 638301600, 654631200, 670356000, 686084400, 695761200, 701794800, 717516000, 733255200, 748980000, 764704800, 780429600, 796154400, 811879200, 828208800, 846352800 }
:intvector { 25040, 0, 25200, 0, 25200, 3600, 28800, 0, 28800, 3600 }
:bin { "000103040304030403040304030403040304030403040302010304030403040304030403" }
"Russia"
:intvector { 28800, 1997 }
- } //Z#252
-, /* Asia/Istanbul */ :int { 429 } //Z#253
+ } //Z#254
+, /* Asia/Istanbul */ :int { 431 } //Z#255
, /* Asia/Jakarta */ :array {
:intvector { -2147483648, -1451719200, -1172906400, -876641400, -766054800, -683883000, -620812800, -189415800 }
:intvector { 25200, 0, 25632, 0, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }
:bin { "0102030503040300" }
- } //Z#254
+ } //Z#256
, /* Asia/Jayapura */ :array {
:intvector { -2147483648, -1172913768, -799491600, -189423000 }
:intvector { 32400, 0, 33768, 0, 34200, 0 }
:bin { "01000200" }
- } //Z#255
+ } //Z#257
, /* Asia/Jerusalem */ :array {
:intvector { -2147483648, -1641003640, -933645600, -857358000, -844300800, -825822000, -812685600, -794199600, -779853600, -762656400, -748310400, -731127600, -681962400, -673243200, -667962000, -652327200, -636426000, -622087200, -608947200, -591847200, -572486400, -558576000, -542851200, -527731200, -514425600, -490845600, -482986800, -459475200, -451537200, -428551200, -418262400, -400032000, -387428400, 142380000, 150843600, 167176800, 178664400, 482277600, 495579600, 516751200, 526424400, 545436000, 558478800, 576540000, 589237200, 609890400, 620773200, 638316000, 651618000, 669765600, 683672400, 701820000, 715726800, 733701600, 747176400, 765151200, 778021200, 796600800, 810075600, 826840800, 842821200, 858895200, 874184400, 890344800, 905029200, 923011200, 936313200, 955670400, 970783200, 986770800, 1001282400, 1017356400, 1033941600, 1048806000, 1065132000, 1081292400, 1095804000, 1112313600, 1128812400, 1143763200, 1159657200, 1175212800, 1189897200, 1206662400, 1223161200, 1238112000, 1254006000, 1269561600, 1284246000, 1301616000, 1317510000, 1333065600, 1348354800, 1364515200, 1378594800, 1395964800, 1411858800, 1427414400, 1442703600, 1459468800, 1475967600, 1490918400, 1506207600, 1522368000, 1537052400, 1553817600, 1570316400, 1585267200, 1601161200, 1616716800, 1631401200, 1648771200, 1664665200, 1680220800, 1695510000, 1711670400, 1728169200, 1743120000, 1759014000, 1774569600, 1789858800, 1806019200, 1823122800, 1838073600, 1853362800, 1869523200, 1884207600, 1900972800, 1917471600, 1932422400, 1947711600, 1963872000, 1978556400, 1995926400, 2011820400, 2027376000, 2042060400, 2058825600, 2075324400, 2090275200, 2106169200, 2121724800, 2136409200 }
:intvector { 7200, 0, 7200, 3600, 7200, 7200, 8440, 0 }
:bin { "0300010001000100010001000201000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
- :intvector { 256, 297, 495 }
- } //Z#256
+ :intvector { 258, 299, 497 }
+ } //Z#258
, /* Asia/Kabul */ :array {
:intvector { -2147483648, -788932800 }
:intvector { 14400, 0, 16200, 0 }
:bin { "0001" }
- } //Z#257
+ } //Z#259
, /* Asia/Kamchatka */ :array {
:intvector { -2147483648, -1487759676, -1247569200, 354888000, 370695600, 386424000, 402231600, 417960000, 433767600, 449582400, 465314400, 481039200, 496764000, 512488800, 528213600, 543938400, 559663200, 575388000, 591112800, 606837600, 622562400, 638287200, 654616800, 670341600, 686070000, 695746800, 701780400, 717501600, 733240800, 748965600, 764690400, 780415200, 796140000, 811864800, 828194400, 846338400 }
:intvector { 38076, 0, 39600, 0, 39600, 3600, 43200, 0, 43200, 3600 }
:bin { "000103040304030403040304030403040304030403040302010304030403040304030403" }
"Russia"
:intvector { 43200, 1997 }
- } //Z#258
+ } //Z#260
, /* Asia/Karachi */ :array {
- :intvector { -2147483648, -1988166492, -862637400, -764145000, -576135000, 38775600, 1018119660, 1033840860, 1212260400, 1220205600 }
+ :intvector { -2147483648, -1988166492, -862637400, -764145000, -576135000, 38775600, 1018119660, 1033840860, 1212260400, 1225476000 }
:intvector { 16092, 0, 18000, 0, 18000, 3600, 19800, 0, 19800, 3600 }
:bin { "00030403010102010201" }
- :intvector { 259, 516 }
- } //Z#259
+ :intvector { 261, 518 }
+ } //Z#261
, /* Asia/Kashgar */ :array {
:intvector { -2147483648, -1325480636, -946791000, 325969200, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
:intvector { 18000, 0, 18236, 0, 19800, 0, 28800, 0, 28800, 3600 }
:bin { "01020003040304030403040304030403" }
- } //Z#260
+ } //Z#262
, /* Asia/Katmandu */ :array {
:intvector { -2147483648, -1577943676, 504901800 }
:intvector { 19800, 0, 20476, 0, 20700, 0 }
:bin { "010002" }
- } //Z#261
+ } //Z#263
, /* Asia/Kolkata */ :array {
:intvector { -2147483648, -891582800, -872058600, -862637400, -764145000 }
:intvector { 19800, 0, 19800, 3600, 21200, 0, 23400, 0 }
:bin { "0203000100" }
- :intvector { 236, 262, 481 }
- } //Z#262
+ :intvector { 238, 264, 483 }
+ } //Z#264
, /* Asia/Krasnoyarsk */ :array {
:intvector { -2147483648, -1577513480, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701798400, 717519600, 733258800, 748983600, 764708400, 780433200, 796158000, 811882800, 828212400, 846356400 }
:intvector { 21600, 0, 21600, 3600, 22280, 0, 25200, 0, 25200, 3600 }
:bin { "020003040304030403040304030403040304030403040301000304030403040304030403" }
"Russia"
:intvector { 25200, 1997 }
- } //Z#263
+ } //Z#265
, /* Asia/Kuala_Lumpur */ :array {
:intvector { -2147483648, -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, 378664200 }
:intvector { 24925, 0, 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }
:bin { "0001020304060405" }
- } //Z#264
+ } //Z#266
, /* Asia/Kuching */ :array {
:intvector { -2147483648, -1383463280, -1167636600, -1082448000, -1074586800, -1050825600, -1042964400, -1019289600, -1011428400, -987753600, -979892400, -956217600, -948356400, -924595200, -916734000, -893059200, -885198000, -879667200, -767005200, 378662400 }
:intvector { 26480, 0, 27000, 0, 28800, 0, 28800, 1200, 32400, 0 }
:bin { "0001020302030203020302030203020302040202" }
- } //Z#265
+ } //Z#267
, /* Asia/Kuwait */ :array {
:intvector { -2147483648, -631163516 }
:intvector { 10800, 0, 11516, 0 }
:bin { "0100" }
- } //Z#266
-, /* Asia/Macao */ :int { 268 } //Z#267
+ } //Z#268
+, /* Asia/Macao */ :int { 270 } //Z#269
, /* Asia/Macau */ :array {
:intvector { -2147483648, -1830411260, -277360200, -257405400, -245910600, -225955800, -214473600, -194506200, -182406600, -163056600, -150969600, -131619600, -117088200, -101367000, -85638600, -69312600, -53584200, -37863000, -22134600, -6413400, 9315000, 25036200, 40764600, 56485800, 72201600, 87922800, 103651200, 119977200, 135705600, 151439400, 167167800, 182889000, 198617400, 214338600, 230067000, 245788200, 261504000, 277225200, 292953600, 309279600, 325008000, 340729200, 945619200 }
:intvector { 27260, 0, 28800, 0, 28800, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020101" }
- :intvector { 267, 268 }
- } //Z#268
+ :intvector { 269, 270 }
+ } //Z#270
, /* Asia/Magadan */ :array {
:intvector { -2147483648, -1441188192, -1247565600, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701784000, 717505200, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000 }
:intvector { 36000, 0, 36000, 3600, 36192, 0, 39600, 0, 39600, 3600 }
:bin { "020003040304030403040304030403040304030403040301000304030403040304030403" }
"Russia"
:intvector { 39600, 1997 }
- } //Z#269
+ } //Z#271
, /* Asia/Makassar */ :array {
:intvector { -2147483648, -1577951856, -1172908656, -880272000, -766054800 }
:intvector { 28656, 0, 28800, 0, 32400, 0 }
:bin { "0000010201" }
- :intvector { 270, 301 }
- } //Z#270
+ :intvector { 272, 303 }
+ } //Z#272
, /* Asia/Manila */ :array {
:intvector { -2147483648, -1046678400, -1038733200, -873273600, -794221200, -496224000, -489315600, 259344000, 275151600 }
:intvector { 28800, 0, 28800, 3600, 32400, 0 }
:bin { "000100020001000100" }
- } //Z#271
+ } //Z#273
, /* Asia/Muscat */ :array {
:intvector { -2147483648, -1577937260 }
:intvector { 14060, 0, 14400, 0 }
:bin { "0001" }
- } //Z#272
+ } //Z#274
, /* Asia/Nicosia */ :array {
:intvector { -2147483648, -1518920008, 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 }
:intvector { 7200, 0, 7200, 3600, 8008, 0 }
:bin { "02000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"EUAsia"
:intvector { 7200, 2000 }
- :intvector { 273, 443 }
- } //Z#273
+ :intvector { 275, 445 }
+ } //Z#275
, /* Asia/Novosibirsk */ :array {
:intvector { -2147483648, -1579476700, -1247551200, 354906000, 370713600, 386442000, 402249600, 417978000, 433785600, 449600400, 465332400, 481057200, 496782000, 512506800, 528231600, 543956400, 559681200, 575406000, 591130800, 606855600, 622580400, 638305200, 654634800, 670359600, 686088000, 695764800, 701798400, 717519600, 733258800, 738086400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000 }
:intvector { 19900, 0, 21600, 0, 21600, 3600, 25200, 0, 25200, 3600 }
:bin { "00010304030403040304030403040304030403040304030201030403040201020102010201" }
"Russia"
:intvector { 21600, 1997 }
- } //Z#274
+ } //Z#276
, /* Asia/Omsk */ :array {
:intvector { -2147483648, -1582088016, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 686091600, 695768400, 701802000, 717523200, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000 }
:intvector { 17616, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
:bin { "000103040304030403040304030403040304030403040302010304030403040304030403" }
"Russia"
:intvector { 21600, 1997 }
- } //Z#275
+ } //Z#277
, /* Asia/Oral */ :array {
:intvector { -2147483648, -1441164324, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622591200, 638316000, 654645600, 662673600, 692827200, 701809200, 717530400, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200, 859672800, 877816800, 891122400, 909266400, 922572000, 941320800, 954021600, 972770400, 985471200, 1004220000, 1017525600, 1035669600, 1048975200, 1067119200, 1080424800, 1099173600, 1110830400 }
:intvector { 12324, 0, 14400, 0, 14400, 3600, 18000, 0, 18000, 3600, 21600, 0 }
:bin { "00010304050403040304030403040304030403020102010101020102010201020102010201020102010201020102010201020103" }
- } //Z#276
+ } //Z#278
, /* Asia/Phnom_Penh */ :array {
:intvector { -2147483648, -2005973980, -1855983920, -1819954800, -1220428800 }
:intvector { 25180, 0, 25200, 0, 25580, 0, 28800, 0 }
:bin { "0002010301" }
- } //Z#277
+ } //Z#279
, /* Asia/Pontianak */ :array {
:intvector { -2147483648, -1946186240, -1172906240, -881220600, -766054800, -683883000, -620812800, -189415800, 567964800 }
:intvector { 25200, 0, 26240, 0, 27000, 0, 28800, 0, 32400, 0 }
:bin { "010102040203020300" }
- } //Z#278
+ } //Z#280
, /* Asia/Pyongyang */ :array {
:intvector { -2147483648, -2053931400, -1325494800, -1199262600, -498128400, -264931200 }
:intvector { 28800, 0, 30600, 0, 32400, 0 }
:bin { "010201020002" }
- } //Z#279
+ } //Z#281
, /* Asia/Qatar */ :array {
:intvector { -2147483648, -1577935568, 76190400 }
:intvector { 10800, 0, 12368, 0, 14400, 0 }
:bin { "010200" }
- } //Z#280
+ } //Z#282
, /* Asia/Qyzylorda */ :array {
:intvector { -2147483648, -1441167712, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 662670000, 692823600, 695768400, 701802000, 717523200, 733262400, 748987200, 764712000, 780436800, 796161600, 811886400, 828216000, 846360000, 859665600, 877809600, 891115200, 909259200, 922564800, 941313600, 954014400, 972763200, 985464000, 1004212800, 1017518400, 1035662400, 1048968000, 1067112000, 1080417600, 1099166400, 1110823200 }
:intvector { 14400, 0, 15712, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
:bin { "0100020304030203020302030203020302030203020302020204050405040504050405040504050405040504050405040504050404" }
- } //Z#281
+ } //Z#283
, /* Asia/Rangoon */ :array {
:intvector { -2147483648, -1577946276, -873268200, -778410000 }
:intvector { 23076, 0, 23400, 0, 32400, 0 }
:bin { "00010201" }
- } //Z#282
+ } //Z#284
, /* Asia/Riyadh */ :array {
:intvector { -2147483648, -631163212 }
:intvector { 10800, 0, 11212, 0 }
:bin { "0100" }
- } //Z#283
+ } //Z#285
, /* Asia/Riyadh87 */ :array {
:intvector { -2147483648, 536489776, 536576206, 536662631, 536749061, 536835486, 536921916, 537008341, 537094766, 537181191, 537267616, 537354041, 537440466, 537526886, 537613311, 537699731, 537786151, 537872571, 537958991, 538045411, 538131831, 538218246, 538304666, 538391081, 538477496, 538563911, 538650326, 538736736, 538823151, 538909561, 538995971, 539082381, 539168791, 539255196, 539341606, 539428011, 539514416, 539600821, 539687226, 539860031, 540378426, 540551221, 540637616, 540724011, 540810406, 540896801, 540983191, 541069586, 541155976, 541242366, 541328756, 541415146, 541501536, 541587926, 541674316, 541760701, 541847091, 541933476, 542019861, 542106251, 542192636, 542279021, 542365406, 542451791, 542538171, 542624556, 542710941, 542797326, 542883706, 542970091, 543056471, 543142856, 543229236, 543315621, 543402001, 543488386, 543574766, 543661146, 543747531, 543833911, 543920291, 544006676, 544093056, 544179441, 544265821, 544352201, 544438586, 544524966, 544611351, 544697731, 544784116, 544870501, 544956881, 545043266, 545129651, 545216031, 545302416, 545388801, 545475186, 545561571, 545647961, 545734346, 545820731, 545907121, 545993506, 546079896, 546166281, 546252671, 546339061, 546425451, 546511841, 546598231, 546684621, 546771011, 546857406, 546943796, 547030191, 547116586, 547202981, 547289376, 547375771, 547462166, 547548561, 547721356, 548412561, 548585366, 548671771, 548758176, 548844581, 548930986, 549017391, 549103796, 549190206, 549276611, 549363021, 549449426, 549535836, 549622246, 549708656, 549795066, 549881476, 549967886, 550054296, 550140706, 550227121, 550313531, 550399946, 550486356, 550572766, 550659181, 550745591, 550832006, 550918421, 551004831, 551091246, 551177656, 551264071, 551350486, 551436896, 551523311, 551609721, 551696136, 551782546, 551868961, 551955371, 552041786, 552128196, 552214606, 552301021, 552387431, 552473841, 552560251, 552646661, 552733071, 552819481, 552905891, 552992296, 553078706, 553165116, 553251521, 553337926, 553424336, 553510741, 553597146, 553683551, 553856356, 553942761, 554201966, 554547561, 554806756, 554893151, 554979546, 555065941, 555152336, 555238731, 555325126, 555411516, 555497911, 555584301, 555670691, 555757081, 555843471, 555929861, 556016251, 556102641, 556189026, 556275416, 556361801, 556448186, 556534571, 556620956, 556707341, 556793726, 556880111, 556966496, 557052876, 557139261, 557225641, 557312026, 557398406, 557484786, 557571166, 557657551, 557743931, 557830311, 557916691, 558003071, 558089451, 558175826, 558262206, 558348586, 558434966, 558521346, 558607721, 558694101, 558780481, 558866861, 558953236, 559039616, 559125996, 559212371, 559298751, 559385131, 559471511, 559557891, 559644271, 559730646, 559817026, 559903406, 559989786, 560076166, 560162551, 560248931, 560335311, 560421691, 560508076, 560594456, 560680841, 560767221, 560853606, 560939991, 561026376, 561112761, 561199146, 561285531, 561371921, 561458306, 561544696, 561631081, 561717471, 561803861, 561890251, 561976641, 562063036, 562149426, 562235821, 562322211, 562408606, 562495001, 562667796, 562840591, 563186196, 563359001, 563445406, 563531811, 563618216, 563704621, 563791031, 563877436, 563963846, 564050256, 564136666, 564223081, 564309491, 564395906, 564482321, 564568736, 564655151, 564741566, 564827986, 564914406, 565000821, 565087241, 565173661, 565260086, 565346506, 565432926, 565519351, 565605776, 565692201, 565778626, 565865051, 565951476, 566037901, 566124326, 566210756, 566297181, 566383611, 566470041, 566556466, 566642896, 566729326, 566815756, 566902186, 566988616, 567075046, 567161476, 567247906, 567334336, 567420766, 567507196, 567593621, 567680051, 567766481, 567852911, 567939341, 567982541 }
:intvector { 11224, -855, 11224, -850, 11224, -845, 11224, -840, 11224, -835, 11224, -830, 11224, -825, 11224, -820, 11224, -815, 11224, -810, 11224, -805, 11224, -800, 11224, -795, 11224, -790, 11224, -785, 11224, -780, 11224, -775, 11224, -770, 11224, -760, 11224, -750, 11224, -740, 11224, -735, 11224, -725, 11224, -720, 11224, -715, 11224, -705, 11224, -700, 11224, -690, 11224, -685, 11224, -675, 11224, -670, 11224, -660, 11224, -655, 11224, -645, 11224, -635, 11224, -630, 11224, -615, 11224, -595, 11224, -580, 11224, -575, 11224, -565, 11224, -555, 11224, -550, 11224, -535, 11224, -530, 11224, -515, 11224, -510, 11224, -495, 11224, -490, 11224, -480, 11224, -465, 11224, -460, 11224, -445, 11224, -440, 11224, -425, 11224, -415, 11224, -410, 11224, -390, 11224, -385, 11224, -380, 11224, -375, 11224, -370, 11224, -365, 11224, -360, 11224, -355, 11224, -350, 11224, -345, 11224, -340, 11224, -335, 11224, -330, 11224, -325, 11224, -320, 11224, -315, 11224, -310, 11224, -305, 11224, -300, 11224, -295, 11224, -285, 11224, -280, 11224, -275, 11224, -265, 11224, -255, 11224, -250, 11224, -245, 11224, -240, 11224, -230, 11224, -225, 11224, -220, 11224, -210, 11224, -200, 11224, -195, 11224, -190, 11224, -185, 11224, -180, 11224, -175, 11224, -170, 11224, -165, 11224, -160, 11224, -155, 11224, -150, 11224, -145, 11224, -140, 11224, -135, 11224, -125, 11224, -120, 11224, -110, 11224, -105, 11224, -100, 11224, -95, 11224, -90, 11224, -85, 11224, -80, 11224, -75, 11224, -70, 11224, -65, 11224, -55, 11224, -50, 11224, -45, 11224, -40, 11224, -30, 11224, -25, 11224, -20, 11224, -15, 11224, -10, 11224, -5, 11224, 0, 11224, 5, 11224, 10, 11224, 15, 11224, 20, 11224, 25, 11224, 30, 11224, 40, 11224, 45, 11224, 55, 11224, 65, 11224, 70, 11224, 80, 11224, 85, 11224, 90, 11224, 95, 11224, 100, 11224, 105, 11224, 110, 11224, 115, 11224, 120, 11224, 125, 11224, 130, 11224, 135, 11224, 140, 11224, 145, 11224, 150, 11224, 155, 11224, 160, 11224, 165, 11224, 170, 11224, 180, 11224, 185, 11224, 190, 11224, 195, 11224, 200, 11224, 205, 11224, 210, 11224, 215, 11224, 220, 11224, 230, 11224, 250, 11224, 255, 11224, 275, 11224, 280, 11224, 295, 11224, 310, 11224, 315, 11224, 335, 11224, 340, 11224, 360, 11224, 365, 11224, 380, 11224, 395, 11224, 405, 11224, 420, 11224, 425, 11224, 445, 11224, 450, 11224, 465, 11224, 475, 11224, 485, 11224, 500, 11224, 505, 11224, 525, 11224, 530, 11224, 550, 11224, 570, 11224, 575, 11224, 590, 11224, 600, 11224, 610, 11224, 625, 11224, 645, 11224, 650, 11224, 665, 11224, 670, 11224, 685, 11224, 690, 11224, 700, 11224, 715, 11224, 720, 11224, 735, 11224, 755, 11224, 770, 11224, 785, 11224, 790, 11224, 800, 11224, 810, 11224, 815, 11224, 825, 11224, 830, 11224, 840, 11224, 845, 11224, 855, 11224, 870, 11224, 880, 11224, 885, 11224, 895, 11224, 905, 11224, 910, 11224, 915, 11224, 920, 11224, 925, 11224, 930, 11224, 935, 11224, 940, 11224, 945, 11224, 950, 11224, 955, 11224, 960, 11224, 965, 11224, 970, 11224, 975, 11224, 980, 11224, 985 }
:bin { "7d5955514d49433e39373532302e2b2927252422201e1b1917151312100e0c0a080705040302010001020304050608090b0d0f1112131416181a1c1d1f2123242526282a2c2d2f3133343638393d4044484b4e505356585b5e6265676a6d707376787b7e8083858688898c8e90929496989a9b9c9d9e9fa0a1a2a3a4a3a2a1a09f9e9d9c9b9a98979593918f8d8b8988868583817f7c7a777573716f6c69686664615f5c5a5857555351504f4d4c4a4847454342413f3e3d3c3b3a393a3b3c3d3e3f4041434446484a4c4d4f50525456585a5d606366686b6e7274777b7f8285878a8e92979b9ea2a5a7a8aaacaeafb1b3b5b6b8babcbebfc0c2c4c5c6c8cacccecfd0d1d2d4d6d8dadbdcdddfe0e2e4e6e7e9eaecedeeeff0efeeedecebeae8e7e5e3e1dfdedcdbd9d7d5d3d1d0cfcdcbc9c7c5c3c1bfbdbbb9b7b4b2b0adaba9a6a49e99938d88847f7975706a66607d" }
- :intvector { 284, 508 }
- } //Z#284
+ :intvector { 286, 510 }
+ } //Z#286
, /* Asia/Riyadh88 */ :array {
:intvector { -2147483648, 568025771, 568112196, 568198626, 568285056, 568371481, 568457906, 568544336, 568630761, 568717186, 568803611, 568890036, 568976461, 569062881, 569149306, 569235726, 569322146, 569408566, 569494986, 569581406, 569667826, 569754241, 569840661, 569927076, 570013491, 570099906, 570186321, 570272736, 570359146, 570445556, 570531966, 570618376, 570704786, 570791196, 570877601, 570964011, 571050416, 571136821, 571223226, 571396031, 571914426, 572087221, 572173616, 572260011, 572346406, 572432801, 572519196, 572605586, 572691976, 572778371, 572864761, 572951151, 573037541, 573123926, 573210316, 573296706, 573383091, 573469481, 573555866, 573642251, 573728636, 573815021, 573901406, 573987791, 574074176, 574160561, 574246946, 574333326, 574419711, 574506096, 574592476, 574678861, 574765241, 574851626, 574938006, 575024386, 575110771, 575197151, 575283536, 575369916, 575456296, 575542681, 575629061, 575715441, 575801826, 575888206, 575974591, 576060971, 576147356, 576233736, 576320121, 576406501, 576492886, 576579271, 576665651, 576752036, 576838421, 576924806, 577011191, 577097576, 577183961, 577270346, 577356736, 577443121, 577529511, 577615896, 577702286, 577788671, 577875061, 577961451, 578047841, 578134231, 578220626, 578307016, 578393406, 578479801, 578566191, 578652586, 578738981, 578825376, 578911771, 578998166, 579084561, 579257356, 579948561, 580121366, 580207771, 580294176, 580380581, 580466986, 580553391, 580639796, 580726201, 580812611, 580899016, 580985426, 581071836, 581158246, 581244651, 581331061, 581417471, 581503886, 581590296, 581676706, 581763116, 581849531, 581935941, 582022351, 582108766, 582195176, 582281591, 582368001, 582454416, 582540831, 582627241, 582713656, 582800066, 582886481, 582972896, 583059306, 583145721, 583232131, 583318546, 583404956, 583491371, 583577781, 583664196, 583750606, 583837016, 583923426, 584009841, 584096251, 584182661, 584269071, 584355481, 584441886, 584528296, 584614706, 584701111, 584787521, 584873926, 584960331, 585046736, 585133141, 585219546, 585305951, 585392356, 585478761, 585737966, 586169961, 586342756, 586429151, 586601946, 586688341, 586774731, 586861126, 586947521, 587033911, 587120301, 587206696, 587293086, 587379476, 587465866, 587552251, 587638641, 587725031, 587811416, 587897806, 587984191, 588070576, 588156961, 588243346, 588329731, 588416116, 588502496, 588588881, 588675266, 588761646, 588848026, 588934411, 589020791, 589107171, 589193551, 589279936, 589366316, 589452696, 589539076, 589625456, 589711831, 589798211, 589884591, 589970971, 590057351, 590143726, 590230106, 590316486, 590402866, 590489241, 590575621, 590662001, 590748381, 590834756, 590921136, 591007516, 591093896, 591180276, 591266651, 591353031, 591439411, 591525791, 591612171, 591698551, 591784936, 591871316, 591957696, 592044081, 592130461, 592216846, 592303226, 592389611, 592475996, 592562381, 592648766, 592735151, 592821536, 592907921, 592994311, 593080696, 593167086, 593253476, 593339861, 593426256, 593512646, 593599036, 593685426, 593771821, 593858216, 593944611, 594031006, 594117401, 594203796, 594376591, 594722196, 594895001, 595067806, 595154216, 595240621, 595327026, 595413436, 595499846, 595586256, 595672666, 595759076, 595845491, 595931901, 596018316, 596104731, 596191146, 596277566, 596363981, 596450401, 596536816, 596623236, 596709656, 596796081, 596882501, 596968921, 597055346, 597141771, 597228191, 597314616, 597401041, 597487471, 597573896, 597660321, 597746751, 597833176, 597919606, 598006031, 598092461, 598178891, 598265321, 598351751, 598438176, 598524606, 598611036, 598697466, 598783896, 598870326, 598956756, 599043186, 599129616, 599216046, 599302476, 599388906, 599475331, 599561761, 599604961 }
:intvector { 11224, -855, 11224, -850, 11224, -845, 11224, -840, 11224, -835, 11224, -830, 11224, -825, 11224, -820, 11224, -810, 11224, -800, 11224, -795, 11224, -790, 11224, -785, 11224, -780, 11224, -775, 11224, -770, 11224, -765, 11224, -760, 11224, -750, 11224, -745, 11224, -740, 11224, -730, 11224, -715, 11224, -705, 11224, -700, 11224, -690, 11224, -685, 11224, -675, 11224, -665, 11224, -660, 11224, -650, 11224, -645, 11224, -630, 11224, -615, 11224, -610, 11224, -600, 11224, -590, 11224, -585, 11224, -570, 11224, -550, 11224, -535, 11224, -530, 11224, -520, 11224, -505, 11224, -500, 11224, -485, 11224, -465, 11224, -460, 11224, -450, 11224, -435, 11224, -430, 11224, -410, 11224, -395, 11224, -390, 11224, -385, 11224, -380, 11224, -375, 11224, -370, 11224, -365, 11224, -360, 11224, -355, 11224, -350, 11224, -345, 11224, -340, 11224, -335, 11224, -330, 11224, -325, 11224, -320, 11224, -310, 11224, -305, 11224, -300, 11224, -295, 11224, -290, 11224, -285, 11224, -280, 11224, -275, 11224, -265, 11224, -255, 11224, -250, 11224, -240, 11224, -230, 11224, -220, 11224, -215, 11224, -205, 11224, -200, 11224, -195, 11224, -185, 11224, -180, 11224, -170, 11224, -160, 11224, -155, 11224, -145, 11224, -140, 11224, -130, 11224, -125, 11224, -120, 11224, -110, 11224, -105, 11224, -100, 11224, -95, 11224, -90, 11224, -80, 11224, -75, 11224, -70, 11224, -65, 11224, -60, 11224, -55, 11224, -50, 11224, -45, 11224, -40, 11224, -35, 11224, -30, 11224, -25, 11224, -15, 11224, -10, 11224, 0, 11224, 5, 11224, 10, 11224, 15, 11224, 20, 11224, 25, 11224, 30, 11224, 35, 11224, 40, 11224, 45, 11224, 50, 11224, 55, 11224, 60, 11224, 65, 11224, 70, 11224, 80, 11224, 90, 11224, 100, 11224, 105, 11224, 110, 11224, 115, 11224, 120, 11224, 125, 11224, 130, 11224, 135, 11224, 140, 11224, 145, 11224, 150, 11224, 160, 11224, 165, 11224, 170, 11224, 175, 11224, 180, 11224, 185, 11224, 190, 11224, 195, 11224, 200, 11224, 205, 11224, 210, 11224, 215, 11224, 220, 11224, 225, 11224, 250, 11224, 255, 11224, 270, 11224, 285, 11224, 290, 11224, 310, 11224, 315, 11224, 335, 11224, 345, 11224, 355, 11224, 370, 11224, 375, 11224, 395, 11224, 400, 11224, 420, 11224, 425, 11224, 440, 11224, 455, 11224, 460, 11224, 480, 11224, 500, 11224, 505, 11224, 525, 11224, 535, 11224, 545, 11224, 560, 11224, 565, 11224, 585, 11224, 605, 11224, 625, 11224, 630, 11224, 640, 11224, 655, 11224, 660, 11224, 675, 11224, 680, 11224, 695, 11224, 715, 11224, 720, 11224, 730, 11224, 740, 11224, 750, 11224, 760, 11224, 765, 11224, 775, 11224, 780, 11224, 795, 11224, 810, 11224, 825, 11224, 830, 11224, 840, 11224, 845, 11224, 855, 11224, 860, 11224, 865, 11224, 875, 11224, 880, 11224, 885, 11224, 890, 11224, 900, 11224, 910, 11224, 915, 11224, 920, 11224, 930, 11224, 940, 11224, 950, 11224, 955, 11224, 960, 11224, 965, 11224, 970, 11224, 975, 11224, 980, 11224, 985 }
:bin { "7355514e4a45413b3633312f2d2b2927262422201e1c1a18161513110f0d0b0908070604030201000102030405060708090a0c0e101214151617191b1d1f202123252627282a2c2d2e30323334383b3f4345494c4e50525557595b5e606366696c6f717376797b7e8082838587898b8d8e8f91929495969798999a9b9a9998979695949392908f8e8c8a8987858382817f7c7a78757371706d6a686564615f5d5b5a5857555351504f4e4c4b494745444341403e3d3c3b3a3938373635363738393a3c3d3e4042434446484b4c4d4f50525456585a5c5f6164676b6e7174787b7f8284888d9094989c9d9fa1a2a4a6a8a9abadafb0b1b3b5b7b8b9babcbec0c1c2c4c6c8cacbcccdcfd1d3d5d7d8dadbdcdddedfe0e1e2e3e4e5e4e3e2e0dfdedddcdbd9d8d6d4d2d0cecccbc9c7c5c3c1bfbdbbb9b8b6b4b2b0aeacaaa7a5a3a09e9c97918c86827d77726d67625d5a5673" }
- :intvector { 285, 509 }
- } //Z#285
+ :intvector { 287, 511 }
+ } //Z#287
, /* Asia/Riyadh89 */ :array {
:intvector { -2147483648, 599648191, 599734621, 599821046, 599907476, 599993901, 600080326, 600166751, 600253181, 600339606, 600426031, 600512451, 600598876, 600685301, 600771721, 600858141, 600944561, 601030981, 601117401, 601203821, 601290241, 601376656, 601463071, 601549491, 601635906, 601722316, 601808731, 601895146, 601981556, 602067966, 602154376, 602240786, 602327196, 602413601, 602500011, 602586416, 602672821, 602759226, 602932031, 603104836, 603364031, 603536826, 603709621, 603796016, 603882411, 603968806, 604055196, 604141591, 604227981, 604314371, 604400761, 604487151, 604573541, 604659931, 604746321, 604832706, 604919096, 605005481, 605091871, 605178256, 605264641, 605351026, 605437411, 605523796, 605610181, 605696566, 605782946, 605869331, 605955716, 606042096, 606128481, 606214861, 606301246, 606387626, 606474011, 606560391, 606646771, 606733156, 606819536, 606905916, 606992301, 607078681, 607165066, 607251446, 607337826, 607424211, 607510591, 607596976, 607683356, 607769741, 607856121, 607942506, 608028886, 608115271, 608201656, 608288041, 608374426, 608460811, 608547196, 608633581, 608719966, 608806351, 608892736, 608979126, 609065511, 609151901, 609238286, 609324676, 609411066, 609497456, 609583846, 609670236, 609756626, 609843016, 609929411, 610015801, 610102196, 610188586, 610274981, 610361376, 610447771, 610534166, 610706961, 610879756, 611484561, 611657366, 611743771, 611916576, 612002981, 612089391, 612175796, 612262201, 612348611, 612435016, 612521426, 612607831, 612694241, 612780651, 612867061, 612953471, 613039881, 613126291, 613212701, 613299116, 613385526, 613471936, 613558351, 613644761, 613731176, 613817586, 613904001, 613990411, 614076826, 614163241, 614249651, 614336066, 614422476, 614508891, 614595306, 614681716, 614768131, 614854541, 614940956, 615027366, 615113781, 615200191, 615286601, 615373016, 615459426, 615545836, 615632246, 615718656, 615805066, 615891476, 615977886, 616064296, 616150701, 616237111, 616323516, 616409926, 616496331, 616582736, 616669141, 616755546, 616841951, 616928356, 617101161, 617273966, 617705961, 617878756, 618051551, 618137946, 618224341, 618310736, 618397126, 618483521, 618569911, 618656306, 618742696, 618829086, 618915476, 619001866, 619088256, 619174646, 619261031, 619347421, 619433806, 619520191, 619606581, 619692966, 619779351, 619865736, 619952116, 620038501, 620124886, 620211266, 620297651, 620384031, 620470416, 620556796, 620643176, 620729561, 620815941, 620902321, 620988701, 621075081, 621161461, 621247841, 621334216, 621420596, 621506976, 621593356, 621679736, 621766111, 621852491, 621938871, 622025251, 622111626, 622198006, 622284386, 622370766, 622457141, 622543521, 622629901, 622716281, 622802661, 622889041, 622975416, 623061796, 623148176, 623234561, 623320941, 623407321, 623493701, 623580086, 623666466, 623752846, 623839231, 623925616, 624011996, 624098381, 624184766, 624271151, 624357536, 624443926, 624530311, 624616696, 624703086, 624789476, 624875866, 624962256, 625048646, 625135036, 625221426, 625307821, 625394216, 625480606, 625567001, 625653396, 625826191, 626085386, 626171791, 626430996, 626517401, 626603806, 626690211, 626776616, 626863021, 626949431, 627035841, 627122251, 627208661, 627295071, 627381486, 627467896, 627554311, 627640726, 627727141, 627813561, 627899976, 627986396, 628072816, 628159231, 628245651, 628332076, 628418496, 628504916, 628591341, 628677766, 628764191, 628850611, 628937036, 629023466, 629109891, 629196316, 629282746, 629369171, 629455601, 629542026, 629628456, 629714886, 629801316, 629887741, 629974171, 630060601, 630147031, 630233461, 630319891, 630406321, 630492751, 630579181, 630665611, 630752041, 630838471, 630924896, 631011326, 631097756, 631140956 }
:intvector { 11224, -860, 11224, -855, 11224, -850, 11224, -845, 11224, -840, 11224, -835, 11224, -830, 11224, -825, 11224, -820, 11224, -815, 11224, -810, 11224, -805, 11224, -800, 11224, -795, 11224, -790, 11224, -785, 11224, -780, 11224, -775, 11224, -770, 11224, -765, 11224, -755, 11224, -745, 11224, -740, 11224, -730, 11224, -720, 11224, -715, 11224, -705, 11224, -695, 11224, -680, 11224, -665, 11224, -650, 11224, -645, 11224, -635, 11224, -625, 11224, -620, 11224, -605, 11224, -590, 11224, -585, 11224, -570, 11224, -565, 11224, -555, 11224, -545, 11224, -540, 11224, -525, 11224, -520, 11224, -505, 11224, -500, 11224, -485, 11224, -475, 11224, -470, 11224, -455, 11224, -450, 11224, -435, 11224, -430, 11224, -415, 11224, -405, 11224, -395, 11224, -390, 11224, -385, 11224, -380, 11224, -375, 11224, -370, 11224, -365, 11224, -360, 11224, -355, 11224, -350, 11224, -345, 11224, -340, 11224, -335, 11224, -330, 11224, -325, 11224, -320, 11224, -310, 11224, -305, 11224, -300, 11224, -290, 11224, -280, 11224, -270, 11224, -260, 11224, -255, 11224, -250, 11224, -245, 11224, -240, 11224, -235, 11224, -230, 11224, -225, 11224, -215, 11224, -205, 11224, -200, 11224, -190, 11224, -180, 11224, -175, 11224, -165, 11224, -160, 11224, -155, 11224, -150, 11224, -145, 11224, -140, 11224, -130, 11224, -125, 11224, -120, 11224, -115, 11224, -110, 11224, -100, 11224, -95, 11224, -90, 11224, -80, 11224, -75, 11224, -65, 11224, -55, 11224, -50, 11224, -40, 11224, -35, 11224, -25, 11224, -20, 11224, -10, 11224, -5, 11224, 0, 11224, 10, 11224, 15, 11224, 25, 11224, 35, 11224, 40, 11224, 50, 11224, 55, 11224, 60, 11224, 65, 11224, 75, 11224, 85, 11224, 90, 11224, 95, 11224, 100, 11224, 105, 11224, 110, 11224, 115, 11224, 120, 11224, 125, 11224, 130, 11224, 135, 11224, 140, 11224, 145, 11224, 150, 11224, 160, 11224, 165, 11224, 175, 11224, 180, 11224, 185, 11224, 190, 11224, 195, 11224, 200, 11224, 205, 11224, 210, 11224, 215, 11224, 220, 11224, 235, 11224, 240, 11224, 260, 11224, 265, 11224, 285, 11224, 290, 11224, 305, 11224, 320, 11224, 325, 11224, 350, 11224, 370, 11224, 375, 11224, 390, 11224, 405, 11224, 410, 11224, 430, 11224, 435, 11224, 455, 11224, 460, 11224, 475, 11224, 485, 11224, 495, 11224, 510, 11224, 515, 11224, 535, 11224, 540, 11224, 560, 11224, 565, 11224, 580, 11224, 585, 11224, 600, 11224, 610, 11224, 615, 11224, 635, 11224, 655, 11224, 660, 11224, 675, 11224, 680, 11224, 690, 11224, 700, 11224, 710, 11224, 725, 11224, 730, 11224, 745, 11224, 760, 11224, 780, 11224, 795, 11224, 800, 11224, 810, 11224, 815, 11224, 825, 11224, 835, 11224, 840, 11224, 850, 11224, 865, 11224, 880, 11224, 890, 11224, 900, 11224, 905, 11224, 910, 11224, 915, 11224, 920, 11224, 925, 11224, 930, 11224, 935, 11224, 940, 11224, 945, 11224, 950, 11224, 955, 11224, 960, 11224, 965, 11224, 970, 11224, 975, 11224, 980, 11224, 985, 11224, 990 }
:bin { "7556514d4a46413c373532302e2b29272523211f1d1c1b1917161412100e0c0a080705040302010001020304050608090b0d0f1113141517181a1b1c1d1e2022232426282a2c2d2f31333436383b3f4346494b4d505356585a5c606266686a6c6e70727476787a7b7e7f81838587898b8d8e8f90919394959697989998979695949291908f8e8d8c8a88868482807f7d7b7a7877757371706e6c6b69676562615e5c5a5957565552504e4d4c4b4a484746444341403f3e3d3c3b3a393a3b3c3d3e3f4142444547484a4b4c4d4f51545657595b5d616366696b6d6f727577797c7f82868a8e9195999b9d9ea0a2a3a4a6a8aaabadafb1b2b4b6b8babbbcbec0c2c4c5c6c7c8cacccecfd0d1d2d3d5d7d9dbdddedfe1e2e3e4e5e4e3e2e1e0dfdedcdad8d6d4d2d1d0cfcdcbc9c7c6c5c3c1bfbdbbb9b7b5b3b0aeaca9a7a5a3a19f9c9a96908c86807c7874706c68645f5a75" }
- :intvector { 286, 510 }
- } //Z#286
-, /* Asia/Saigon */ :int { 249 } //Z#287
+ :intvector { 288, 512 }
+ } //Z#288
+, /* Asia/Saigon */ :int { 251 } //Z#289
, /* Asia/Sakhalin */ :array {
:intvector { -2147483648, -2031039048, -1009875600, -768560400, 354891600, 370699200, 386427600, 402235200, 417963600, 433771200, 449586000, 465318000, 481042800, 496767600, 512492400, 528217200, 543942000, 559666800, 575391600, 591116400, 606841200, 622566000, 638290800, 654620400, 670345200, 686073600, 695750400, 701784000, 717505200, 733244400, 748969200, 764694000, 780418800, 796143600, 811868400, 828198000, 846342000, 859647600, 877795200 }
:intvector { 32400, 0, 34248, 0, 36000, 0, 36000, 3600, 39600, 0, 39600, 3600 }
:bin { "010000040504050405040504050405040504050405040504030204050405040504050405040302" }
"Russia"
:intvector { 36000, 1998 }
- } //Z#288
+ } //Z#290
, /* Asia/Samarkand */ :array {
:intvector { -2147483648, -1441168032, -1247544000, 354913200, 370720800, 386445600, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 683661600, 686091600, 694206000 }
:intvector { 14400, 0, 16032, 0, 18000, 0, 18000, 3600, 21600, 0 }
:bin { "010002030403020302030203020302030203020302030203030202" }
- } //Z#289
+ } //Z#291
, /* Asia/Seoul */ :array {
:intvector { -2147483648, -2053931400, -1325494800, -1199262600, -498128400, -303984000, -293533200, -264931200, -39515400, 547570800, 560872800, 579020400, 592322400 }
:intvector { 28800, 0, 28800, 3600, 30600, 0, 32400, 0, 32400, 3600 }
:bin { "02030203000100020304030403" }
- :intvector { 290, 565 }
- } //Z#290
+ :intvector { 292, 567 }
+ } //Z#292
, /* Asia/Shanghai */ :array {
:intvector { -2147483648, -1325491552, -933494400, -923130000, -908784000, -891594000, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
:intvector { 28800, 0, 28800, 3600, 29152, 0 }
:bin { "020001000100010001000100010001000100" }
- :intvector { 291, 356, 518 }
- } //Z#291
+ :intvector { 293, 358, 520 }
+ } //Z#293
, /* Asia/Singapore */ :array {
:intvector { -2147483648, -2038200925, -1167634800, -1073028000, -894180000, -879665400, -767005200, -138785400, 378664200 }
:intvector { 24925, 0, 25200, 0, 25200, 1200, 26400, 0, 27000, 0, 28800, 0, 32400, 0 }
:bin { "000102030406040405" }
- :intvector { 292, 567 }
- } //Z#292
+ :intvector { 294, 569 }
+ } //Z#294
, /* Asia/Taipei */ :array {
:intvector { -2147483648, -778579200, -765363600, -747043200, -733827600, -715507200, -702291600, -683884800, -670669200, -652348800, -639133200, -620812800, -607597200, -589276800, -576061200, -562924800, -541760400, -528710400, -510224400, -497174400, -478688400, -465638400, -449830800, -434016000, -418208400, -402480000, -386672400, -370944000, -355136400, -339408000, -323600400, -302515200, -291978000, -270979200, -260442000, 133977600, 149785200, 165513600, 181321200, 331142400, 339087600 }
:intvector { 28800, 0, 28800, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
- :intvector { 293, 564 }
- } //Z#293
+ :intvector { 295, 566 }
+ } //Z#295
, /* Asia/Tashkent */ :array {
:intvector { -2147483648, -1441168632, -1247547600, 354909600, 370717200, 386445600, 402253200, 417981600, 433789200, 449604000, 465336000, 481060800, 496785600, 512510400, 528235200, 543960000, 559684800, 575409600, 591134400, 606859200, 622584000, 638308800, 654638400, 670363200, 683661600, 686091600, 694206000 }
:intvector { 16632, 0, 18000, 0, 18000, 3600, 21600, 0, 21600, 3600 }
:bin { "000103040304030403040304030403040304030403040302020101" }
- } //Z#294
+ } //Z#296
, /* Asia/Tbilisi */ :array {
:intvector { -2147483648, -1441162756, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 671140800, 686098800, 694213200, 701816400, 717537600, 733266000, 748987200, 764715600, 780436800, 796161600, 811882800, 828216000, 859662000, 877806000, 891115200, 909255600, 922564800, 941310000, 954014400, 972759600, 985464000, 1004209200, 1017518400, 1035658800, 1048968000, 1067108400, 1080417600, 1088276400, 1099177200, 1111878000 }
:intvector { 10756, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
:bin { "000103040304030403040304030403040304030403040302020101020102010203040304040304030403040304030403040304020103" }
- } //Z#295
+ } //Z#297
, /* Asia/Tehran */ :array {
:intvector { -2147483648, -1704165944, -757394744, 247177800, 259272000, 277758000, 283982400, 290809800, 306531000, 322432200, 338499000, 673216200, 685481400, 701209800, 717103800, 732745800, 748639800, 764281800, 780175800, 795817800, 811711800, 827353800, 843247800, 858976200, 874870200, 890512200, 906406200, 922048200, 937942200, 953584200, 969478200, 985206600, 1001100600, 1016742600, 1032636600, 1048278600, 1064172600, 1079814600, 1095708600, 1111437000, 1127331000, 1206045000, 1221939000, 1237667400, 1253561400, 1269203400, 1285097400, 1300739400, 1316633400, 1332275400, 1348169400, 1363897800, 1379791800, 1395433800, 1411327800, 1426969800, 1442863800, 1458505800, 1474399800, 1490128200, 1506022200, 1521664200, 1537558200, 1553200200, 1569094200, 1584736200, 1600630200, 1616358600, 1632252600, 1647894600, 1663788600, 1679430600, 1695324600, 1710966600, 1726860600, 1742589000, 1758483000, 1774125000, 1790019000, 1805661000, 1821555000, 1837197000, 1853091000, 1868733000, 1884627000, 1900355400, 1916249400, 1931891400, 1947785400, 1963427400, 1979321400, 1994963400, 2010857400, 2026585800, 2042479800, 2058121800, 2074015800, 2089657800, 2105551800, 2121193800, 2137087800 }
:intvector { 12344, 0, 12600, 0, 12600, 3600, 14400, 0, 14400, 3600 }
:bin { "0000010304030102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
- :intvector { 296, 494 }
- } //Z#296
-, /* Asia/Tel_Aviv */ :int { 256 } //Z#297
-, /* Asia/Thimbu */ :int { 299 } //Z#298
+ :intvector { 298, 496 }
+ } //Z#298
+, /* Asia/Tel_Aviv */ :int { 258 } //Z#299
+, /* Asia/Thimbu */ :int { 301 } //Z#300
, /* Asia/Thimphu */ :array {
:intvector { -2147483648, -706341516, 560025000 }
:intvector { 19800, 0, 21516, 0, 21600, 0 }
:bin { "010002" }
- :intvector { 298, 299 }
- } //Z#299
+ :intvector { 300, 301 }
+ } //Z#301
, /* Asia/Tokyo */ :array {
:intvector { -2147483648, -1009875600, -683794800, -672393600, -654764400, -640944000, -620290800, -609494400, -588841200, -578044800 }
:intvector { 32400, 0, 32400, 3600 }
:bin { "00000100010001000100" }
- :intvector { 300, 496, 498 }
- } //Z#300
-, /* Asia/Ujung_Pandang */ :int { 270 } //Z#301
+ :intvector { 302, 498, 500 }
+ } //Z#302
+, /* Asia/Ujung_Pandang */ :int { 272 } //Z#303
, /* Asia/Ulaanbaatar */ :array {
:intvector { -2147483648, -2032931252, 252435600, 417974400, 433782000, 449596800, 465318000, 481046400, 496767600, 512496000, 528217200, 543945600, 559666800, 575395200, 591116400, 606844800, 622566000, 638294400, 654620400, 670348800, 686070000, 701798400, 717519600, 733248000, 748969200, 764697600, 780418800, 796147200, 811868400, 828201600, 843922800, 859651200, 875372400, 891100800, 906822000, 988394400, 1001696400, 1017424800, 1033146000, 1048874400, 1064595600, 1080324000, 1096045200, 1111773600, 1127494800, 1143223200, 1159549200 }
:intvector { 25200, 0, 25652, 0, 28800, 0, 28800, 3600 }
:bin { "0100020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
- :intvector { 302, 303 }
- } //Z#302
-, /* Asia/Ulan_Bator */ :int { 302 } //Z#303
+ :intvector { 304, 305 }
+ } //Z#304
+, /* Asia/Ulan_Bator */ :int { 304 } //Z#305
, /* Asia/Urumqi */ :array {
:intvector { -2147483648, -1325483420, 325965600, 515520000, 527007600, 545155200, 558457200, 576604800, 589906800, 608659200, 621961200, 640108800, 653410800, 671558400, 684860400 }
:intvector { 21020, 0, 21600, 0, 28800, 0, 28800, 3600 }
:bin { "000102030203020302030203020302" }
- } //Z#304
+ } //Z#306
, /* Asia/Vientiane */ :array {
:intvector { -2147483648, -2005973424, -1855983920, -1819954800, -1220428800 }
:intvector { 24624, 0, 25200, 0, 25580, 0, 28800, 0 }
:bin { "0002010301" }
- } //Z#305
+ } //Z#307
, /* Asia/Vladivostok */ :array {
:intvector { -2147483648, -1487321264, -1247562000, 354895200, 370702800, 386431200, 402238800, 417967200, 433774800, 449589600, 465321600, 481046400, 496771200, 512496000, 528220800, 543945600, 559670400, 575395200, 591120000, 606844800, 622569600, 638294400, 654624000, 670348800, 686077200, 695754000, 701787600, 717508800, 733248000, 748972800, 764697600, 780422400, 796147200, 811872000, 828201600, 846345600 }
:intvector { 31664, 0, 32400, 0, 32400, 3600, 36000, 0, 36000, 3600 }
:bin { "000103040304030403040304030403040304030403040302010304030403040304030403" }
"Russia"
:intvector { 36000, 1997 }
- } //Z#306
+ } //Z#308
, /* Asia/Yakutsk */ :array {
:intvector { -2147483648, -1579423120, -1247558400, 354898800, 370706400, 386434800, 402242400, 417970800, 433778400, 449593200, 465325200, 481050000, 496774800, 512499600, 528224400, 543949200, 559674000, 575398800, 591123600, 606848400, 622573200, 638298000, 654627600, 670352400, 686080800, 695757600, 701791200, 717512400, 733251600, 748976400, 764701200, 780426000, 796150800, 811875600, 828205200, 846349200 }
:intvector { 28800, 0, 28800, 3600, 31120, 0, 32400, 0, 32400, 3600 }
:bin { "020003040304030403040304030403040304030403040301000304030403040304030403" }
"Russia"
:intvector { 32400, 1997 }
- } //Z#307
+ } //Z#309
, /* Asia/Yekaterinburg */ :array {
:intvector { -2147483648, -1592611344, -1247544000, 354913200, 370720800, 386449200, 402256800, 417985200, 433792800, 449607600, 465339600, 481064400, 496789200, 512514000, 528238800, 543963600, 559688400, 575413200, 591138000, 606862800, 622587600, 638312400, 654642000, 670366800, 686095200, 695772000, 701805600, 717526800, 733266000, 748990800, 764715600, 780440400, 796165200, 811890000, 828219600, 846363600 }
:intvector { 14400, 0, 14400, 3600, 14544, 0, 18000, 0, 18000, 3600 }
:bin { "020003040304030403040304030403040304030403040301000304030403040304030403" }
"Russia"
:intvector { 18000, 1997 }
- } //Z#308
+ } //Z#310
, /* Asia/Yerevan */ :array {
:intvector { -2147483648, -1441162680, -405140400, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622591200, 638316000, 654645600, 670370400, 685569600, 686098800, 701812800, 717534000, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 852062400, 859672800, 877816800 }
:intvector { 10680, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
:bin { "00010304030403040304030403040304030403040304030202010201020102010203030403" }
"RussiaAsia"
:intvector { 14400, 1998 }
- :intvector { 309, 511 }
- } //Z#309
+ :intvector { 311, 513 }
+ } //Z#311
, /* Atlantic/Azores */ :array {
:intvector { -2147483648, -1849557928, -1689548400, -1677794400, -1667430000, -1647730800, -1635807600, -1616194800, -1604358000, -1584658800, -1572735600, -1553036400, -1541199600, -1521500400, -1442444400, -1426806000, -1379286000, -1364770800, -1348441200, -1333321200, -1316386800, -1301266800, -1284332400, -1269817200, -1221433200, -1206918000, -1191193200, -1175468400, -1127689200, -1111964400, -1096844400, -1080514800, -1063580400, -1049065200, -1033340400, -1017615600, -1002495600, -986166000, -969231600, -950482800, -942015600, -922662000, -906937200, -891126000, -877302000, -873676800, -864000000, -857948400, -845852400, -842832000, -831340800, -825894000, -814402800, -810777600, -799891200, -794444400, -782953200, -779328000, -768441600, -762994800, -749084400, -733359600, -717624000, -701899200, -686174400, -670449600, -654724800, -639000000, -591825600, -575496000, -559771200, -544046400, -528321600, -512596800, -496872000, -481147200, -465422400, -449697600, -433972800, -417643200, -401918400, -386193600, -370468800, -354744000, -339019200, -323294400, -307569600, -291844800, -276120000, -260395200, -244670400, -228340800, -212616000, -196891200, -181166400, -165441600, -149716800, -133992000, -118267200, 228272400, 243997200, 260326800, 276051600, 291776400, 307504800, 323226000, 338954400, 354679200, 370404000, 386128800, 401853600, 417582000, 433303200, 449028000, 465357600, 481082400, 496807200, 512532000, 528256800, 543981600, 559706400, 575431200, 591156000, 606880800, 622605600, 638330400, 654660000, 670384800, 686109600, 701834400, 717559200, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { -7200, 0, -7200, 3600, -7200, 7200, -6872, 0, -3600, 0, -3600, 3600, 0, 0 }
:bin { "03000100010001000100010001000100010001000100010001000100010001000100010001000100010001000102010001020100010201000102010001000100010001000100010001000100010001000100010001000100010001000100010001000405040504050405040504050405040504050405040504050405040504050405060504050405040504" }
"EU"
:intvector { -3600, 1997 }
- } //Z#310
+ } //Z#312
, /* Atlantic/Bermuda */ :array {
:intvector { -2147483648, -1262281256, 136360800, 152082000, 167810400, 183531600, 199260000, 215586000, 230709600, 247035600, 262764000, 278485200, 294213600, 309934800, 325663200, 341384400, 357112800, 372834000, 388562400, 404888400, 420012000, 436338000, 452066400, 467787600, 483516000, 499237200, 514965600, 530686800, 544600800, 562136400, 576050400, 594190800, 607500000, 625640400, 638949600, 657090000, 671004000, 688539600, 702453600, 719989200, 733903200, 752043600, 765352800, 783493200, 796802400, 814942800, 828856800, 846392400, 860306400, 877842000, 891756000, 909291600, 923205600, 941346000, 954655200, 972795600, 986104800, 1004245200, 1018159200, 1035694800, 1049608800, 1067144400, 1081058400, 1099198800, 1112508000, 1130648400, 1143957600, 1162098000, 1173592800, 1194152400 }
:intvector { -15544, 0, -14400, 0, -14400, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201" }
"US"
:intvector { -14400, 2008 }
- } //Z#311
+ } //Z#313
, /* Atlantic/Canary */ :array {
:intvector { -2147483648, -1509663504, -733874400, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { -3696, 0, -3600, 0, 0, 0, 0, 3600 }
:bin { "00010203020302030203020302030203020302030203020302030203020302030203020302" }
"EU"
:intvector { 0, 1997 }
- } //Z#312
+ } //Z#314
, /* Atlantic/Cape_Verde */ :array {
:intvector { -2147483648, -1988144756, -862610400, -764118000, 186120000 }
:intvector { -7200, 0, -7200, 3600, -5644, 0, -3600, 0 }
:bin { "0200010003" }
- } //Z#313
-, /* Atlantic/Faeroe */ :int { 315 } //Z#314
+ } //Z#315
+, /* Atlantic/Faeroe */ :int { 317 } //Z#316
, /* Atlantic/Faroe */ :array {
:intvector { -2147483648, -1955748776, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { -1624, 0, 0, 0, 0, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201" }
"EU"
:intvector { 0, 1997 }
- :intvector { 314, 315 }
- } //Z#315
-, /* Atlantic/Jan_Mayen */ :int { 444 } //Z#316
+ :intvector { 316, 317 }
+ } //Z#317
+, /* Atlantic/Jan_Mayen */ :int { 446 } //Z#318
, /* Atlantic/Madeira */ :array {
:intvector { -2147483648, -1849560744, -1689552000, -1677798000, -1667433600, -1647734400, -1635811200, -1616198400, -1604361600, -1584662400, -1572739200, -1553040000, -1541203200, -1521504000, -1442448000, -1426809600, -1379289600, -1364774400, -1348444800, -1333324800, -1316390400, -1301270400, -1284336000, -1269820800, -1221436800, -1206921600, -1191196800, -1175472000, -1127692800, -1111968000, -1096848000, -1080518400, -1063584000, -1049068800, -1033344000, -1017619200, -1002499200, -986169600, -969235200, -950486400, -942019200, -922665600, -906940800, -891129600, -877305600, -873680400, -864003600, -857952000, -845856000, -842835600, -831344400, -825897600, -814406400, -810781200, -799894800, -794448000, -782956800, -779331600, -768445200, -762998400, -749088000, -733363200, -717627600, -701902800, -686178000, -670453200, -654728400, -639003600, -591829200, -575499600, -559774800, -544050000, -528325200, -512600400, -496875600, -481150800, -465426000, -449701200, -433976400, -417646800, -401922000, -386197200, -370472400, -354747600, -339022800, -323298000, -307573200, -291848400, -276123600, -260398800, -244674000, -228344400, -212619600, -196894800, -181170000, -165445200, -149720400, -133995600, -118270800, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { -4056, 0, -3600, 0, -3600, 3600, -3600, 7200, 0, 0, 0, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020102010203020102030201020302010203020102010201020102010201020102010201020102010201020102010201020102010201020102010405040504050405040504050405040504050405040504050405040504050405040504050405040504" }
"EU"
:intvector { 0, 1997 }
- } //Z#317
+ } //Z#319
, /* Atlantic/Reykjavik */ :array {
:intvector { -2147483648, -1956609132, -1668211200, -1647212400, -1636675200, -1613430000, -968025600, -949615200, -942008400, -920239200, -909957600, -888789600, -877903200, -857944800, -846453600, -826495200, -815004000, -795045600, -783554400, -762991200, -752104800, -731541600, -717631200, -700092000, -686181600, -668642400, -654732000, -636588000, -623282400, -605743200, -591832800, -573688800, -559778400, -542239200, -528328800, -510789600, -496879200, -479340000, -465429600, -447890400, -433980000, -415836000, -401925600, -384386400, -370476000, -352936800, -339026400, -321487200, -307576800, -290037600, -276127200, -258588000, -244677600, -226533600, -212623200, -195084000, -181173600, -163634400, -149724000, -132184800, -118274400, -100735200, -86824800, -68680800, -54770400 }
:intvector { -5268, 0, -3600, 0, -3600, 3600, 0, 0 }
:bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020103" }
- :intvector { 318, 482 }
- } //Z#318
+ :intvector { 320, 484 }
+ } //Z#320
, /* Atlantic/South_Georgia */ :array {
:intvector { -2147483648 }
:intvector { -7200, 0 }
:bin { "00" }
- } //Z#319
+ } //Z#321
, /* Atlantic/St_Helena */ :array {
:intvector { -2147483648, -599614632 }
:intvector { -1368, 0, 0, 0 }
:bin { "0001" }
- } //Z#320
+ } //Z#322
, /* Atlantic/Stanley */ :array {
:intvector { -2147483648, -1824235716, -1018209600, -1003093200, -986760000, -971643600, -954705600, -939589200, -923256000, -908139600, -891806400, -876690000, -860356800, -852066000, 420609600, 433306800, 452052000, 464151600, 483501600, 495601200, 514350000, 527054400, 545799600, 558504000, 577249200, 589953600, 608698800, 621403200, 640753200, 652852800, 672202800, 684907200, 703652400, 716356800, 735102000, 747806400, 766551600, 779256000, 798001200, 810705600, 830055600, 842760000, 861505200, 874209600, 892954800, 905659200, 924404400, 937108800, 955854000, 968558400, 987310800, 999410400 }
:intvector { -14400, 0, -14400, 3600, -13884, 0, -10800, 0, -10800, 3600 }
:bin { "02000100010001000100010001000304030403010001000100010001000100010001000100010001000100010001000100010001" }
"Falk"
:intvector { -14400, 2002 }
- } //Z#321
-, /* Australia/ACT */ :int { 340 } //Z#322
+ } //Z#323
+, /* Australia/ACT */ :int { 342 } //Z#324
, /* Australia/Adelaide */ :array {
:intvector { -2147483648, -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 384280200, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 637691400, 657045000, 667931400, 688494600, 701195400, 719944200, 731435400, 751998600, 764094600, 783448200, 796149000, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 }
:intvector { 34200, 0, 34200, 3600 }
:bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
"AS"
:intvector { 34200, 2009 }
- :intvector { 323, 339 }
- } //Z#323
+ :intvector { 325, 341 }
+ } //Z#325
, /* Australia/Brisbane */ :array {
:intvector { -2147483648, -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200 }
:intvector { 36000, 0, 36000, 3600 }
:bin { "0001000100010001000100010001000100" }
- :intvector { 324, 338 }
- } //Z#324
+ :intvector { 326, 340 }
+ } //Z#326
, /* Australia/Broken_Hill */ :array {
:intvector { -2147483648, -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400, 57688200, 67969800, 89137800, 100024200, 120587400, 131473800, 152037000, 162923400, 183486600, 194977800, 215541000, 226427400, 246990600, 257877000, 278440200, 289326600, 309889800, 320776200, 341339400, 352225800, 372789000, 386699400, 404843400, 415729800, 436293000, 447179400, 467742600, 478629000, 499192200, 511288200, 530037000, 542737800, 562091400, 574792200, 594145800, 606241800, 625595400, 636481800, 657045000, 667931400, 688494600, 699381000, 719944200, 731435400, 751998600, 762885000, 783448200, 794334600, 814897800, 828203400, 846347400, 859653000, 877797000, 891102600, 909246600, 922552200, 941301000, 946647000, 954001800, 972750600, 985451400, 1004200200, 1017505800, 1035649800, 1048955400, 1067099400, 1080405000, 1099153800, 1111854600, 1130603400, 1143909000, 1162053000, 1174753800, 1193502600, 1207413000, 1223137800 }
:intvector { 34200, 0, 34200, 3600 }
:bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000101000100010001000100010001000100010001" }
"AS"
:intvector { 34200, 2009 }
- :intvector { 325, 344 }
- } //Z#325
-, /* Australia/Canberra */ :int { 340 } //Z#326
+ :intvector { 327, 346 }
+ } //Z#327
+, /* Australia/Canberra */ :int { 342 } //Z#328
, /* Australia/Currie */ :array {
:intvector { -2147483648, -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 }
:intvector { 36000, 0, 36000, 3600 }
:bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
"AT"
:intvector { 36000, 2009 }
- } //Z#327
+ } //Z#329
, /* Australia/Darwin */ :array {
:intvector { -2147483648, -1672565340, -1665390600, -883639800, -876126600, -860398200, -844677000, -828343800, -813227400 }
:intvector { 34200, 0, 34200, 3600 }
:bin { "000100010001000100" }
- :intvector { 0, 328, 336 }
- } //Z#328
+ :intvector { 0, 330, 338 }
+ } //Z#330
, /* Australia/Eucla */ :array {
:intvector { -2147483648, -1672562640, -1665387900, -883637100, -876123900, -860395500, -844674300, 152039700, 162926100, 436295700, 447182100, 690311700, 699383700, 1165079700, 1174756500, 1193505300, 1206810900, 1224954900, 1238260500 }
:intvector { 31500, 0, 31500, 3600 }
:bin { "00010001000100010001000100010001000100" }
- } //Z#329
+ } //Z#331
, /* Australia/Hobart */ :array {
:intvector { -2147483648, -1680508800, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, -71136000, -55411200, -37267200, -25776000, -5817600, 5673600, 25632000, 37728000, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386092800, 404841600, 417542400, 436291200, 447177600, 467740800, 478627200, 499190400, 510076800, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 670348800, 686678400, 701798400, 718128000, 733248000, 749577600, 764697600, 781027200, 796147200, 812476800, 828201600, 844531200, 859651200, 875980800, 891100800, 907430400, 922550400, 938880000, 954000000, 967305600, 985449600, 1002384000, 1017504000, 1033833600, 1048953600, 1065283200, 1080403200, 1096732800, 1111852800, 1128182400, 1143907200, 1159632000, 1174752000, 1191686400, 1207411200, 1223136000 }
:intvector { 36000, 0, 36000, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
"AT"
:intvector { 36000, 2009 }
- :intvector { 330, 341 }
- } //Z#330
-, /* Australia/LHI */ :int { 333 } //Z#331
+ :intvector { 332, 343 }
+ } //Z#332
+, /* Australia/LHI */ :int { 335 } //Z#333
, /* Australia/Lindeman */ :array {
:intvector { -2147483648, -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 709912800, 719942400, 731433600, 751996800, 762883200 }
:intvector { 36000, 0, 36000, 3600 }
:bin { "00010001000100010001000100010001000001000100" }
- } //Z#332
+ } //Z#334
, /* Australia/Lord_Howe */ :array {
:intvector { -2147483648, 352216800, 372785400, 384273000, 404839800, 415722600, 436289400, 447172200, 467739000, 478621800, 499188600, 511282800, 530033400, 542732400, 562087800, 574786800, 594142200, 606236400, 625591800, 636476400, 657041400, 667926000, 688491000, 699375600, 719940600, 731430000, 751995000, 762879600, 783444600, 794329200, 814894200, 828198000, 846343800, 859647600, 877793400, 891097200, 909243000, 922546800, 941297400, 953996400, 967303800, 985446000, 1004196600, 1017500400, 1035646200, 1048950000, 1067095800, 1080399600, 1099150200, 1111849200, 1130599800, 1143903600, 1162049400, 1174748400, 1193499000, 1207407600, 1223134200 }
:intvector { 36000, 0, 37800, 0, 37800, 1800, 37800, 3600 }
:bin { "000103010301030103010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
"LH"
:intvector { 37800, 2009 }
- :intvector { 331, 333 }
- } //Z#333
+ :intvector { 333, 335 }
+ } //Z#335
, /* Australia/Melbourne */ :array {
:intvector { -2147483648, -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 384278400, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 561484800, 574790400, 594144000, 606240000, 625593600, 637689600, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 796147200, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 }
:intvector { 36000, 0, 36000, 3600 }
:bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
"AV"
:intvector { 36000, 2009 }
- :intvector { 334, 342 }
- } //Z#334
-, /* Australia/NSW */ :int { 340 } //Z#335
-, /* Australia/North */ :int { 328 } //Z#336
+ :intvector { 336, 344 }
+ } //Z#336
+, /* Australia/NSW */ :int { 342 } //Z#337
+, /* Australia/North */ :int { 330 } //Z#338
, /* Australia/Perth */ :array {
:intvector { -2147483648, -1672559940, -1665385200, -883634400, -876121200, -860392800, -844671600, 152042400, 162928800, 436298400, 447184800, 690314400, 699386400, 1165082400, 1174759200, 1193508000, 1206813600, 1224957600, 1238263200 }
:intvector { 28800, 0, 28800, 3600 }
:bin { "00010001000100010001000100010001000100" }
- :intvector { 337, 343 }
- } //Z#337
-, /* Australia/Queensland */ :int { 324 } //Z#338
-, /* Australia/South */ :int { 323 } //Z#339
+ :intvector { 339, 345 }
+ } //Z#339
+, /* Australia/Queensland */ :int { 326 } //Z#340
+, /* Australia/South */ :int { 325 } //Z#341
, /* Australia/Sydney */ :array {
:intvector { -2147483648, -1672567140, -1665392400, -883641600, -876128400, -860400000, -844678800, -828345600, -813229200, 57686400, 67968000, 89136000, 100022400, 120585600, 131472000, 152035200, 162921600, 183484800, 194976000, 215539200, 226425600, 246988800, 257875200, 278438400, 289324800, 309888000, 320774400, 341337600, 352224000, 372787200, 386697600, 404841600, 415728000, 436291200, 447177600, 467740800, 478627200, 499190400, 511286400, 530035200, 542736000, 562089600, 574790400, 594144000, 606240000, 625593600, 636480000, 657043200, 667929600, 688492800, 699379200, 719942400, 731433600, 751996800, 762883200, 783446400, 794332800, 814896000, 828201600, 846345600, 859651200, 877795200, 891100800, 909244800, 922550400, 941299200, 954000000, 967305600, 985449600, 1004198400, 1017504000, 1035648000, 1048953600, 1067097600, 1080403200, 1099152000, 1111852800, 1130601600, 1143907200, 1162051200, 1174752000, 1193500800, 1207411200, 1223136000 }
:intvector { 36000, 0, 36000, 3600 }
:bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001" }
"AN"
:intvector { 36000, 2009 }
- :intvector { 1, 322, 326, 335, 340 }
- } //Z#340
-, /* Australia/Tasmania */ :int { 330 } //Z#341
-, /* Australia/Victoria */ :int { 334 } //Z#342
-, /* Australia/West */ :int { 337 } //Z#343
-, /* Australia/Yancowinna */ :int { 325 } //Z#344
-, /* BET */ :int { 188 } //Z#345
-, /* BST */ :int { 243 } //Z#346
-, /* Brazil/Acre */ :int { 184 } //Z#347
-, /* Brazil/DeNoronha */ :int { 167 } //Z#348
-, /* Brazil/East */ :int { 188 } //Z#349
-, /* Brazil/West */ :int { 149 } //Z#350
-, /* CAT */ :int { 29 } //Z#351
+ :intvector { 1, 324, 328, 337, 342 }
+ } //Z#342
+, /* Australia/Tasmania */ :int { 332 } //Z#343
+, /* Australia/Victoria */ :int { 336 } //Z#344
+, /* Australia/West */ :int { 339 } //Z#345
+, /* Australia/Yancowinna */ :int { 327 } //Z#346
+, /* BET */ :int { 190 } //Z#347
+, /* BST */ :int { 245 } //Z#348
+, /* Brazil/Acre */ :int { 185 } //Z#349
+, /* Brazil/DeNoronha */ :int { 168 } //Z#350
+, /* Brazil/East */ :int { 190 } //Z#351
+, /* Brazil/West */ :int { 150 } //Z#352
+, /* CAT */ :int { 29 } //Z#353
, /* CET */ :array {
- :intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+ :intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
- :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"C-Eur"
:intvector { 3600, 1997 }
- } //Z#352
-, /* CNT */ :int { 192 } //Z#353
-, /* CST */ :int { 95 } //Z#354
+ } //Z#354
+, /* CNT */ :int { 194 } //Z#355
+, /* CST */ :int { 96 } //Z#356
, /* CST6CDT */ :array {
:intvector { -2147483648, -1633276800, -1615136400, -1601827200, -1583686800, -880214400, -769395600, -765392400, -84384000, -68662800, -52934400, -37213200, -21484800, -5763600, 9964800, 25686000, 41414400, 57740400, 73468800, 89190000, 104918400, 120639600, 126691200, 152089200, 162374400, 183538800, 199267200, 215593200, 230716800, 247042800, 262771200, 278492400, 294220800, 309942000, 325670400, 341391600, 357120000, 372841200, 388569600, 404895600, 420019200, 436345200, 452073600, 467794800, 483523200, 499244400, 514972800, 530694000, 544608000, 562143600, 576057600, 594198000, 607507200, 625647600, 638956800, 657097200, 671011200, 688546800, 702460800, 719996400, 733910400, 752050800, 765360000, 783500400, 796809600, 814950000, 828864000, 846399600, 860313600, 877849200, 891763200, 909298800, 923212800, 941353200, 954662400, 972802800, 986112000, 1004252400, 1018166400, 1035702000, 1049616000, 1067151600, 1081065600, 1099206000, 1112515200, 1130655600, 1143964800, 1162105200, 1173600000, 1194159600 }
:intvector { -21600, 0, -21600, 3600 }
:bin { "000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -21600, 2008 }
- } //Z#355
-, /* CTT */ :int { 291 } //Z#356
-, /* Canada/Atlantic */ :int { 123 } //Z#357
-, /* Canada/Central */ :int { 207 } //Z#358
-, /* Canada/East-Saskatchewan */ :int { 182 } //Z#359
-, /* Canada/Eastern */ :int { 202 } //Z#360
-, /* Canada/Mountain */ :int { 108 } //Z#361
-, /* Canada/Newfoundland */ :int { 192 } //Z#362
-, /* Canada/Pacific */ :int { 204 } //Z#363
-, /* Canada/Saskatchewan */ :int { 182 } //Z#364
-, /* Canada/Yukon */ :int { 206 } //Z#365
-, /* Chile/Continental */ :int { 186 } //Z#366
-, /* Chile/EasterIsland */ :int { 525 } //Z#367
-, /* Cuba */ :int { 124 } //Z#368
-, /* EAT */ :int { 7 } //Z#369
-, /* ECT */ :int { 445 } //Z#370
+ } //Z#357
+, /* CTT */ :int { 293 } //Z#358
+, /* Canada/Atlantic */ :int { 124 } //Z#359
+, /* Canada/Central */ :int { 209 } //Z#360
+, /* Canada/East-Saskatchewan */ :int { 183 } //Z#361
+, /* Canada/Eastern */ :int { 204 } //Z#362
+, /* Canada/Mountain */ :int { 109 } //Z#363
+, /* Canada/Newfoundland */ :int { 194 } //Z#364
+, /* Canada/Pacific */ :int { 206 } //Z#365
+, /* Canada/Saskatchewan */ :int { 183 } //Z#366
+, /* Canada/Yukon */ :int { 208 } //Z#367
+, /* Chile/Continental */ :int { 188 } //Z#368
+, /* Chile/EasterIsland */ :int { 527 } //Z#369
+, /* Cuba */ :int { 125 } //Z#370
+, /* EAT */ :int { 7 } //Z#371
+, /* ECT */ :int { 447 } //Z#372
, /* EET */ :array {
:intvector { -2147483648, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 7200, 0, 7200, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 7200, 1997 }
- } //Z#371
+ } //Z#373
, /* EST */ :array {
:intvector { }
:intvector { -18000, 0 }
:bin { "" }
- } //Z#372
+ } //Z#374
, /* EST5EDT */ :array {
:intvector { -2147483648, -1633280400, -1615140000, -1601830800, -1583690400, -880218000, -769395600, -765396000, -84387600, -68666400, -52938000, -37216800, -21488400, -5767200, 9961200, 25682400, 41410800, 57736800, 73465200, 89186400, 104914800, 120636000, 126687600, 152085600, 162370800, 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 }
:intvector { -18000, 0, -18000, 3600 }
:bin { "000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -18000, 2008 }
- } //Z#373
-, /* Egypt */ :int { 18 } //Z#374
-, /* Eire */ :int { 424 } //Z#375
+ } //Z#375
+, /* Egypt */ :int { 18 } //Z#376
+, /* Eire */ :int { 426 } //Z#377
, /* Etc/GMT */ :array {
:intvector { }
:intvector { 0, 0 }
:bin { "" }
- :intvector { 376, 377, 390, 405, 406, 473, 474, 475, 476, 477 }
- } //Z#376
-, /* Etc/GMT+0 */ :int { 376 } //Z#377
+ :intvector { 378, 379, 392, 407, 408, 475, 476, 477, 478, 479 }
+ } //Z#378
+, /* Etc/GMT+0 */ :int { 378 } //Z#379
, /* Etc/GMT+1 */ :array {
:intvector { }
:intvector { -3600, 0 }
:bin { "" }
- } //Z#378
+ } //Z#380
, /* Etc/GMT+10 */ :array {
:intvector { }
:intvector { -36000, 0 }
:bin { "" }
- :intvector { 379, 574 }
- } //Z#379
+ :intvector { 381, 576 }
+ } //Z#381
, /* Etc/GMT+11 */ :array {
:intvector { }
:intvector { -39600, 0 }
:bin { "" }
- } //Z#380
+ } //Z#382
, /* Etc/GMT+12 */ :array {
:intvector { }
:intvector { -43200, 0 }
:bin { "" }
- } //Z#381
+ } //Z#383
, /* Etc/GMT+2 */ :array {
:intvector { }
:intvector { -7200, 0 }
:bin { "" }
- } //Z#382
+ } //Z#384
, /* Etc/GMT+3 */ :array {
:intvector { }
:intvector { -10800, 0 }
:bin { "" }
- } //Z#383
+ } //Z#385
, /* Etc/GMT+4 */ :array {
:intvector { }
:intvector { -14400, 0 }
:bin { "" }
- :intvector { 384, 568 }
- } //Z#384
+ :intvector { 386, 570 }
+ } //Z#386
, /* Etc/GMT+5 */ :array {
:intvector { }
:intvector { -18000, 0 }
:bin { "" }
- :intvector { 385, 572 }
- } //Z#385
+ :intvector { 387, 574 }
+ } //Z#387
, /* Etc/GMT+6 */ :array {
:intvector { }
:intvector { -21600, 0 }
:bin { "" }
- :intvector { 386, 570 }
- } //Z#386
+ :intvector { 388, 572 }
+ } //Z#388
, /* Etc/GMT+7 */ :array {
:intvector { }
:intvector { -25200, 0 }
:bin { "" }
- :intvector { 387, 575 }
- } //Z#387
+ :intvector { 389, 577 }
+ } //Z#389
, /* Etc/GMT+8 */ :array {
:intvector { }
:intvector { -28800, 0 }
:bin { "" }
- :intvector { 388, 577 }
- } //Z#388
+ :intvector { 390, 579 }
+ } //Z#390
, /* Etc/GMT+9 */ :array {
:intvector { }
:intvector { -32400, 0 }
:bin { "" }
- :intvector { 389, 579 }
- } //Z#389
-, /* Etc/GMT-0 */ :int { 376 } //Z#390
+ :intvector { 391, 581 }
+ } //Z#391
+, /* Etc/GMT-0 */ :int { 378 } //Z#392
, /* Etc/GMT-1 */ :array {
:intvector { }
:intvector { 3600, 0 }
:bin { "" }
- } //Z#391
+ } //Z#393
, /* Etc/GMT-10 */ :array {
:intvector { }
:intvector { 36000, 0 }
:bin { "" }
- } //Z#392
+ } //Z#394
, /* Etc/GMT-11 */ :array {
:intvector { }
:intvector { 39600, 0 }
:bin { "" }
- } //Z#393
+ } //Z#395
, /* Etc/GMT-12 */ :array {
:intvector { }
:intvector { 43200, 0 }
:bin { "" }
- } //Z#394
+ } //Z#396
, /* Etc/GMT-13 */ :array {
:intvector { }
:intvector { 46800, 0 }
:bin { "" }
- } //Z#395
+ } //Z#397
, /* Etc/GMT-14 */ :array {
:intvector { }
:intvector { 50400, 0 }
:bin { "" }
- } //Z#396
+ } //Z#398
, /* Etc/GMT-2 */ :array {
:intvector { }
:intvector { 7200, 0 }
:bin { "" }
- } //Z#397
+ } //Z#399
, /* Etc/GMT-3 */ :array {
:intvector { }
:intvector { 10800, 0 }
:bin { "" }
- } //Z#398
+ } //Z#400
, /* Etc/GMT-4 */ :array {
:intvector { }
:intvector { 14400, 0 }
:bin { "" }
- } //Z#399
+ } //Z#401
, /* Etc/GMT-5 */ :array {
:intvector { }
:intvector { 18000, 0 }
:bin { "" }
- } //Z#400
+ } //Z#402
, /* Etc/GMT-6 */ :array {
:intvector { }
:intvector { 21600, 0 }
:bin { "" }
- } //Z#401
+ } //Z#403
, /* Etc/GMT-7 */ :array {
:intvector { }
:intvector { 25200, 0 }
:bin { "" }
- } //Z#402
+ } //Z#404
, /* Etc/GMT-8 */ :array {
:intvector { }
:intvector { 28800, 0 }
:bin { "" }
- } //Z#403
+ } //Z#405
, /* Etc/GMT-9 */ :array {
:intvector { }
:intvector { 32400, 0 }
:bin { "" }
- } //Z#404
-, /* Etc/GMT0 */ :int { 376 } //Z#405
-, /* Etc/Greenwich */ :int { 376 } //Z#406
+ } //Z#406
+, /* Etc/GMT0 */ :int { 378 } //Z#407
+, /* Etc/Greenwich */ :int { 378 } //Z#408
, /* Etc/UCT */ :array {
:intvector { }
:intvector { 0, 0 }
:bin { "" }
- :intvector { 407, 582 }
- } //Z#407
+ :intvector { 409, 584 }
+ } //Z#409
, /* Etc/UTC */ :array {
:intvector { }
:intvector { 0, 0 }
:bin { "" }
- :intvector { 408, 409, 411, 596, 597, 601 }
- } //Z#408
-, /* Etc/Universal */ :int { 408 } //Z#409
+ :intvector { 410, 411, 413, 598, 599, 603 }
+ } //Z#410
+, /* Etc/Universal */ :int { 410 } //Z#411
, /* Etc/Unknown */ :array {
:intvector { }
:intvector { 0, 0 }
:bin { "" }
- } //Z#410
-, /* Etc/Zulu */ :int { 408 } //Z#411
+ } //Z#412
+, /* Etc/Zulu */ :int { 410 } //Z#413
, /* Europe/Amsterdam */ :array {
:intvector { -2147483648, -1693700372, -1680484772, -1663453172, -1650147572, -1633213172, -1617488372, -1601158772, -1586038772, -1569709172, -1554589172, -1538259572, -1523139572, -1507501172, -1490566772, -1470176372, -1459117172, -1443997172, -1427667572, -1406672372, -1396217972, -1376950772, -1364768372, -1345414772, -1333318772, -1313792372, -1301264372, -1282256372, -1269814772, -1250720372, -1238365172, -1219184372, -1206915572, -1186957172, -1175465972, -1156025972, -1143411572, -1124489972, -1111961972, -1092953972, -1080512372, -1061331572, -1049062772, -1029190772, -1025745572, -1017613200, -998259600, -986163600, -966723600, -954109200, -935022000, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 220921200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 1172, 0, 1172, 3600, 1200, 0, 1200, 3600, 3600, 0, 3600, 3600 }
:bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000103020302030205040504050405040405040504050405040504050405040504050405040504050405040504050405040504050405040504" }
"EU"
:intvector { 3600, 1997 }
- } //Z#412
+ } //Z#414
, /* Europe/Andorra */ :array {
:intvector { -2147483648, -733881600, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 0, 0, 3600, 0, 3600, 3600 }
:bin { "0001020102010201020102010201020102010201020102010201" }
"EU"
:intvector { 3600, 1997 }
- } //Z#413
+ } //Z#415
, /* Europe/Athens */ :array {
:intvector { -2147483648, -1686101632, -1182996000, -1178161200, -906861600, -904878000, -857257200, -844477200, -828237600, -812422800, -552362400, -541652400, 166485600, 186184800, 198028800, 213753600, 228873600, 244080000, 260323200, 275446800, 291798000, 307407600, 323388000, 338936400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600, 5692, 0, 7200, 0, 7200, 3600 }
:bin { "0203040304010001000304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
"EU"
:intvector { 7200, 1997 }
- } //Z#414
-, /* Europe/Belfast */ :int { 435 } //Z#415
+ } //Z#416
+, /* Europe/Belfast */ :int { 437 } //Z#417
, /* Europe/Belgrade */ :array {
- :intvector { -2147483648, -905824800, -857257200, -844556400, -828226800, -812502000, -796777200, -777942000, -766623600, 407199600, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+ :intvector { -2147483648, -905824800, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -777942000, -766623600, 407199600, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
- :bin { "0001000100010001000001000100010001000100010001000100010001000100010001000100" }
+ :bin { "000100010001000001000001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- :intvector { 416, 434, 446, 452, 454, 467 }
- } //Z#416
+ :intvector { 418, 436, 448, 454, 456, 469 }
+ } //Z#418
, /* Europe/Berlin */ :array {
- :intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -776563200, -765936000, -761180400, -748479600, -733273200, -717634800, -714610800, -710380800, -701910000, -684975600, -670460400, -654130800, -639010800, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+ :intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -776563200, -765936000, -761180400, -757386000, -748479600, -733273200, -717631200, -714610800, -710380800, -701910000, -684975600, -670460400, -654130800, -639010800, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600, 3600, 7200 }
- :bin { "0001000100010001000100010001020100010001020100010001000001000100010001000100010001000100010001000100010001000100010001000100" }
+ :bin { "000100010001000100010001000102010000010001020100010001000001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#417
-, /* Europe/Bratislava */ :int { 447 } //Z#418
+ } //Z#419
+, /* Europe/Bratislava */ :int { 449 } //Z#420
, /* Europe/Brussels */ :array {
:intvector { -2147483648, -1740355200, -1693702800, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1613826000, -1604278800, -1585530000, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1473642000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301263200, -1284328800, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -934668000, -857257200, -844556400, -828226800, -812502000, -799293600, -798073200, -781052400, -766623600, -745455600, -733273200, 220921200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 0, 0, 0, 3600, 3600, 0, 3600, 3600 }
:bin { "0002030203020302000100010001000100010001000100010001000100010001000100010001000100010001000100010001000103020302030302030203020203020302030203020302030203020302030203020302030203020302030203020302030203020302" }
"EU"
:intvector { 3600, 1997 }
- } //Z#419
+ } //Z#421
, /* Europe/Bucharest */ :array {
:intvector { -2147483648, -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, 296604000, 307486800, 323816400, 338940000, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 662680800, 670370400, 686095200, 701820000, 717544800, 733269600, 748994400, 757375200, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 }
:intvector { 6264, 0, 7200, 0, 7200, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020101020102010201010201020102010201" }
"EU"
:intvector { 7200, 1998 }
- } //Z#420
+ } //Z#422
, /* Europe/Budapest */ :array {
- :intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1640998800, -1633212000, -1617577200, -1600466400, -1587250800, -1569708000, -1554332400, -906937200, -857257200, -844556400, -828226800, -812502000, -796777200, -778471200, -762487200, -749689200, -733359600, -717634800, -701910000, -686185200, -670460400, -654130800, -639010800, -621990000, -605660400, -492656400, -481168800, -461120400, -449632800, -428547600, -418269600, -397094400, -386809200, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+ :intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1640998800, -1633212000, -1617577200, -1600466400, -1587250800, -1569708000, -1554332400, -906937200, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -778471200, -762487200, -749689200, -733359600, -717634800, -701910000, -686185200, -670460400, -654130800, -639010800, -621990000, -605660400, -492656400, -481168800, -461120400, -449632800, -428547600, -418269600, -397094400, -386809200, 323827200, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
- :bin { "000100010000010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ :bin { "00010001000001000100010001000100010000010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#421
+ } //Z#423
, /* Europe/Chisinau */ :array {
:intvector { -2147483648, -1637114100, -1213148664, -1187056800, -1175479200, -1159754400, -1144029600, -1127700000, -1111975200, -1096250400, -1080525600, -1064800800, -1049076000, -1033351200, -1017626400, -1001901600, -986176800, -970452000, -954727200, -927165600, -898138800, -857257200, -844556400, -828226800, -812502000, -800157600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 641941200, 670377600, 686102400, 694216800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 }
:intvector { 3600, 0, 3600, 3600, 6264, 0, 6900, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
:bin { "03020405040504050405040504050405040504050100010001060706070607060706070607060706070607060604050404050405040504050405040504" }
"EU"
:intvector { 7200, 1998 }
- :intvector { 422, 459 }
- } //Z#422
+ :intvector { 424, 461 }
+ } //Z#424
, /* Europe/Copenhagen */ :array {
:intvector { -2147483648, -1692496800, -1680490800, -935110800, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -769388400, -747010800, -736383600, -715215600, -706748400, -683161200, -675298800, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "00010001000100010001000100010001000001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#423
+ } //Z#425
, /* Europe/Dublin */ :array {
:intvector { -2147483648, -1691962479, -1680471279, -1664143200, -1650146400, -1633903200, -1617487200, -1601848800, -1586037600, -1570399200, -1552168800, -1538344800, -1522533600, -1517011200, -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, 820454400, 828234000, 846378000 }
:intvector { -1521, 0, -1521, 3600, 0, 0, 0, 3600, 3600, 0 }
:bin { "00010203020302030203020302020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302030402030203020302030203020302030203020302030203020302030203020302030203020302030203020302030203020302020302" }
"EU"
:intvector { 0, 1997 }
- :intvector { 375, 424 }
- } //Z#424
+ :intvector { 377, 426 }
+ } //Z#426
, /* Europe/Gibraltar */ :array {
:intvector { -2147483648, -1691964000, -1680472800, -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, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -668037600, -654732000, -636588000, -622072800, -605743200, -590623200, -574293600, -558568800, -542239200, -527119200, -512604000, -496274400, -481154400, -464220000, -449704800, -432165600, -417650400, -401320800, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001020102010201020102010001000102010001000100010001000100010001000100010003040304030403040304030403040304030403040304030403040304030403" }
"EU"
:intvector { 3600, 1997 }
- } //Z#425
-, /* Europe/Guernsey */ :int { 435 } //Z#426
+ } //Z#427
+, /* Europe/Guernsey */ :int { 437 } //Z#428
, /* Europe/Helsinki */ :array {
:intvector { -2147483648, -1535938792, -875671200, -859863600, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 5992, 0, 7200, 0, 7200, 3600 }
:bin { "000102010201020102010201020102010201020102010201020102010201020102010201" }
"EU"
:intvector { 7200, 1997 }
- :intvector { 427, 439 }
- } //Z#427
-, /* Europe/Isle_of_Man */ :int { 435 } //Z#428
+ :intvector { 429, 441 }
+ } //Z#429
+, /* Europe/Isle_of_Man */ :int { 437 } //Z#430
, /* Europe/Istanbul */ :array {
:intvector { -2147483648, -1869875816, -1693706400, -1680490800, -1570413600, -1552186800, -1538359200, -1522551600, -1507514400, -1490583600, -1440208800, -1428030000, -1409709600, -1396494000, -931140000, -922762800, -917834400, -892436400, -875844000, -857358000, -781063200, -764737200, -744343200, -733806000, -716436000, -701924400, -684986400, -670474800, -654141600, -639025200, -621828000, -606970800, -590032800, -575434800, -235620000, -228279600, -177732000, -165726000, 10533600, 23835600, 41983200, 55285200, 74037600, 87339600, 107910000, 121219200, 133920000, 152676000, 165362400, 183502800, 202428000, 215557200, 228866400, 245797200, 260316000, 277246800, 308779200, 323827200, 340228800, 354672000, 371678400, 386121600, 403128000, 428446800, 433886400, 482792400, 496702800, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 670374000, 686098800, 701823600, 717548400, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800, 859676400, 877820400, 891126000, 909270000, 922575600, 941324400, 954025200, 972774000, 985474800, 1004223600, 1017529200, 1035673200, 1048978800, 1067122800, 1080428400, 1099177200, 1111878000, 1130626800, 1143327600, 1162076400, 1167602400, 1174784400, 1193533200 }
:intvector { 7016, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
:bin { "00010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102040304030403040304030201020102010201020102010201020102010201020102010201020102010201020102010201020102010201010201" }
"EU"
:intvector { 7200, 2008 }
- :intvector { 253, 429, 581 }
- } //Z#429
-, /* Europe/Jersey */ :int { 435 } //Z#430
+ :intvector { 255, 431, 583 }
+ } //Z#431
+, /* Europe/Jersey */ :int { 437 } //Z#432
, /* Europe/Kaliningrad */ :array {
:intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -778730400, -762663600, -757389600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 701816400, 717537600, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400 }
:intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
:bin { "00010001000100010001000100020302040504050405040504050405040504050405040504030203020302030203020302" }
"Russia"
:intvector { 7200, 1997 }
- } //Z#431
+ } //Z#433
, /* Europe/Kiev */ :array {
:intvector { -2147483648, -1441159324, -1247536800, -892522800, -857257200, -844556400, -828226800, -825382800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 646786800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 7324, 0, 10800, 0, 10800, 3600 }
:bin { "0402050100010005060506050605060506050605060506050605050203020302030203020302" }
"EU"
:intvector { 7200, 1997 }
- } //Z#432
+ } //Z#434
, /* Europe/Lisbon */ :array {
:intvector { -2147483648, -1830381808, -1689555600, -1677801600, -1667437200, -1647738000, -1635814800, -1616202000, -1604365200, -1584666000, -1572742800, -1553043600, -1541206800, -1521507600, -1442451600, -1426813200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1221440400, -1206925200, -1191200400, -1175475600, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942022800, -922669200, -906944400, -891133200, -877309200, -873684000, -864007200, -857955600, -845859600, -842839200, -831348000, -825901200, -814410000, -810784800, -799898400, -794451600, -782960400, -779335200, -768448800, -763002000, -749091600, -733366800, -717631200, -701906400, -686181600, -670456800, -654732000, -639007200, -591832800, -575503200, -559778400, -544053600, -528328800, -512604000, -496879200, -481154400, -465429600, -449704800, -433980000, -417650400, -401925600, -386200800, -370476000, -354751200, -339026400, -323301600, -307576800, -291852000, -276127200, -260402400, -244677600, -228348000, -212623200, -196898400, -181173600, -165448800, -149724000, -133999200, -118274400, 212544000, 228268800, 243993600, 260323200, 276048000, 291772800, 307501200, 323222400, 338950800, 354675600, 370400400, 386125200, 401850000, 417578400, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { -2192, 0, 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }
:bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010201020302010203020102030201020302010201020102010201020102010201020102010201020102010201020102010201020102010201040102010201020102010201020102010201020102010201020102010201020102040504050405040201" }
"EU"
:intvector { 0, 1997 }
- :intvector { 433, 563 }
- } //Z#433
-, /* Europe/Ljubljana */ :int { 416 } //Z#434
+ :intvector { 435, 565 }
+ } //Z#435
+, /* Europe/Ljubljana */ :int { 418 } //Z#436
, /* Europe/London */ :array {
:intvector { -2147483648, -1691964000, -1680472800, -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, -904518000, -896050800, -875487600, -864601200, -844038000, -832546800, -812588400, -798073200, -781052400, -772066800, -764805600, -748476000, -733356000, -719445600, -717030000, -706748400, -699487200, -687996000, -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, 820454400, 828234000, 846378000 }
:intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001020102010201020102010001000102010001000100010001000100010001000100010001000100010001000100010001000100010001000100010300010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100000100" }
"EU"
:intvector { 0, 1997 }
- :intvector { 415, 426, 428, 430, 435, 471, 472 }
- } //Z#435
+ :intvector { 417, 428, 430, 432, 437, 473, 474 }
+ } //Z#437
, /* Europe/Luxembourg */ :array {
:intvector { -2147483648, -2069713476, -1692496800, -1680483600, -1662343200, -1650157200, -1632006000, -1618700400, -1612659600, -1604278800, -1585519200, -1574038800, -1552258800, -1539997200, -1520550000, -1507510800, -1490572800, -1473642000, -1459119600, -1444006800, -1427673600, -1411866000, -1396224000, -1379293200, -1364774400, -1348448400, -1333324800, -1316394000, -1301270400, -1284339600, -1269813600, -1253484000, -1238364000, -1221429600, -1206914400, -1191189600, -1175464800, -1160344800, -1143410400, -1127685600, -1111960800, -1096840800, -1080511200, -1063576800, -1049061600, -1033336800, -1017612000, -1002492000, -986162400, -969228000, -950479200, -942012000, -935186400, -857257200, -844556400, -828226800, -812502000, -797986800, -781052400, -766623600, -745455600, -733273200, 220921200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 0, 0, 0, 3600, 1476, 0, 3600, 0, 3600, 3600 }
:bin { "02030403040304030001000100010001000100010001000100010001000100010001000100010001000100010001000100010001040304030403040304030304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
"EU"
:intvector { 3600, 1997 }
- } //Z#436
+ } //Z#438
, /* Europe/Madrid */ :array {
:intvector { -2147483648, -1661734800, -1648429200, -1631926800, -1616893200, -1601254800, -1585357200, -1442451600, -1427677200, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1029114000, -1017622800, -1002848400, -986173200, -969238800, -954118800, -940208400, -873079200, -862538400, -842839200, -828237600, -811389600, -796010400, -779940000, -765421200, -748490400, -733888800, -652327200, -639190800, 135122400, 150246000, 167176800, 181695600, 196812000, 212540400, 228866400, 243990000, 260402400, 276044400, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 0, 0, 0, 3600, 0, 7200, 3600, 0, 3600, 3600 }
:bin { "00010001000100010001000100010001000100010001000102010201020102010203040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403" }
"EU"
:intvector { 3600, 1997 }
- } //Z#437
+ } //Z#439
, /* Europe/Malta */ :array {
:intvector { -2147483648, -1690851600, -1680483600, -1664758800, -1649034000, -1635123600, -1616979600, -1604278800, -1585530000, -1571014800, -1555290000, -932432400, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71719200, -50547600, -40269600, -18493200, -8215200, 12956400, 23234400, 43801200, 54687600, 75855600, 86738400, 102380400, 118105200, 135730800, 148518000, 167187600, 180489600, 198637200, 211939200, 230086800, 243388800, 261536400, 274838400, 292986000, 306288000, 323312400, 338342400, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#438
-, /* Europe/Mariehamn */ :int { 427 } //Z#439
+ } //Z#440
+, /* Europe/Mariehamn */ :int { 429 } //Z#441
, /* Europe/Minsk */ :array {
:intvector { -2147483648, -1441158600, -1247536800, -899780400, -857257200, -844556400, -828226800, -812502000, -804650400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 670374000, 686102400, 701820000, 717544800, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400 }
:intvector { 3600, 0, 3600, 3600, 6600, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
:bin { "02030501000100010506050605060506050605060506050605060505040304030403040304030403" }
"Russia"
:intvector { 7200, 1997 }
- } //Z#440
+ } //Z#442
, /* Europe/Monaco */ :array {
:intvector { -2147483648, -1855958961, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -904438800, -891136800, -877827600, -857257200, -844556400, -828226800, -812502000, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 0, 0, 0, 3600, 0, 7200, 561, 0, 3600, 0, 3600, 3600 }
:bin { "03000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000102010201020102010204050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }
"EU"
:intvector { 3600, 1997 }
- } //Z#441
+ } //Z#443
, /* Europe/Moscow */ :array {
:intvector { -2147483648, -1688265000, -1656819048, -1641353448, -1627965048, -1618716648, -1596429048, -1593829848, -1589860800, -1542427200, -1539493200, -1525323600, -1522728000, -1491188400, -1247536800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 695779200, 701812800, 717534000, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800 }
:intvector { 7200, 0, 7200, 3600, 9000, 0, 9048, 0, 9048, 3600, 9048, 7200, 10800, 0, 10800, 3600, 10800, 7200 }
:bin { "020304030504050706070807060006070607060706070607060706070607060706070601000607060706070607060706" }
"Russia"
:intvector { 10800, 1997 }
- :intvector { 442, 599 }
- } //Z#442
-, /* Europe/Nicosia */ :int { 273 } //Z#443
+ :intvector { 444, 601 }
+ } //Z#444
+, /* Europe/Nicosia */ :int { 275 } //Z#445
, /* Europe/Oslo */ :array {
:intvector { -2147483648, -1691884800, -1680573600, -927511200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -765327600, -340844400, -324514800, -308790000, -293065200, -277340400, -261615600, -245890800, -230166000, -214441200, -198716400, -182991600, -166662000, -147913200, -135212400, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "000100010001000100010001000100010001000100010001000001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- :intvector { 220, 316, 444 }
- } //Z#444
+ :intvector { 222, 318, 446 }
+ } //Z#446
, /* Europe/Paris */ :array {
:intvector { -2147483648, -1855958901, -1689814800, -1680397200, -1665363600, -1648342800, -1635123600, -1616893200, -1604278800, -1585443600, -1574038800, -1552266000, -1539997200, -1520557200, -1507510800, -1490576400, -1470618000, -1459126800, -1444006800, -1427677200, -1411952400, -1396227600, -1379293200, -1364778000, -1348448400, -1333328400, -1316394000, -1301274000, -1284339600, -1269824400, -1253494800, -1238374800, -1221440400, -1206925200, -1191200400, -1175475600, -1160355600, -1143421200, -1127696400, -1111971600, -1096851600, -1080522000, -1063587600, -1049072400, -1033347600, -1017622800, -1002502800, -986173200, -969238800, -950490000, -942012000, -932436000, -857257200, -844556400, -828226800, -812502000, -800071200, -796266000, -781052400, -766623600, 196819200, 212540400, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 0, 0, 0, 3600, 0, 7200, 561, 0, 3600, 0, 3600, 3600 }
:bin { "030001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001050405040502010204050405040504050405040504050405040504050405040504050405040504050405040504050405040504" }
"EU"
:intvector { 3600, 1997 }
- :intvector { 370, 445 }
- } //Z#445
-, /* Europe/Podgorica */ :int { 416 } //Z#446
+ :intvector { 372, 447 }
+ } //Z#447
+, /* Europe/Podgorica */ :int { 418 } //Z#448
, /* Europe/Prague */ :array {
:intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -798073200, -780534000, -761180400, -746578800, -733359600, -716425200, -701910000, -684975600, -670460400, -654217200, -639010800, 283993200, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "000100010001000100010001000100010001000100010000010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- :intvector { 418, 447 }
- } //Z#447
+ :intvector { 420, 449 }
+ } //Z#449
, /* Europe/Riga */ :array {
:intvector { -2147483648, -1632008184, -1618702584, -1601681784, -1597275384, -1377308184, -928029600, -899521200, -857257200, -844556400, -828226800, -812502000, -796777200, -795834000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 843955200, 853797600, 859683600, 877827600, 891133200, 909277200, 922582800, 941331600, 951775200, 985482000, 1004230800 }
:intvector { 3600, 0, 3600, 3600, 5784, 0, 5784, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
:bin { "0203020302040601000100010006070607060706070607060706070607060504050405040504050405040504050404050405040504040504" }
"EU"
:intvector { 7200, 2002 }
- } //Z#448
+ } //Z#450
, /* Europe/Rome */ :array {
:intvector { -2147483648, -1690851600, -1680483600, -1664758800, -1649034000, -1635123600, -1616979600, -1604278800, -1585530000, -1571014800, -1555290000, -932432400, -857257200, -844556400, -828226800, -812502000, -804823200, -798080400, -781052400, -766717200, -750898800, -733359600, -719456400, -701917200, -689209200, -670460400, -114051600, -103168800, -81997200, -71719200, -50547600, -40269600, -18493200, -8215200, 12956400, 23234400, 43801200, 54687600, 75855600, 86738400, 107910000, 118188000, 138754800, 149637600, 170809200, 181090800, 202258800, 212540400, 233103600, 243990000, 265158000, 276044400, 296607600, 307494000, 315529200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "0001000100010001000100010001000101000100010001000100010001000100010001000100010001000100010001000100010001000001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- :intvector { 449, 451, 462 }
- } //Z#449
+ :intvector { 451, 453, 464 }
+ } //Z#451
, /* Europe/Samara */ :array {
:intvector { -2147483648, -1593825636, -1247540400, -1102305600, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 686102400, 687916800, 701809200, 717530400, 733269600, 748994400, 764719200, 780444000, 796168800, 811893600, 828223200, 846367200 }
:intvector { 7200, 3600, 10800, 0, 10800, 3600, 12036, 0, 14400, 0, 14400, 3600 }
:bin { "03010404050405040504050405040504050405040201020100010405040504050405040504" }
"Russia"
:intvector { 14400, 1997 }
- } //Z#450
-, /* Europe/San_Marino */ :int { 449 } //Z#451
-, /* Europe/Sarajevo */ :int { 416 } //Z#452
+ } //Z#452
+, /* Europe/San_Marino */ :int { 451 } //Z#453
+, /* Europe/Sarajevo */ :int { 418 } //Z#454
, /* Europe/Simferopol */ :array {
:intvector { -2147483648, -1441160160, -1247536800, -888894000, -857257200, -844556400, -828226800, -812502000, -811648800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 646786800, 701820000, 717541200, 733269600, 748990800, 764719200, 767739600, 780436800, 796165200, 811886400, 828219600, 828230400, 846374400, 852066000, 859683600, 877827600 }
:intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 8160, 0, 10800, 0, 10800, 3600 }
:bin { "0402050100010001050605060506050605060506050605060506050502030203020306050605060605050302" }
"EU"
:intvector { 7200, 1998 }
- } //Z#453
-, /* Europe/Skopje */ :int { 416 } //Z#454
+ } //Z#455
+, /* Europe/Skopje */ :int { 418 } //Z#456
, /* Europe/Sofia */ :array {
- :intvector { -2147483648, -857257200, -844556400, -828226800, -812502000, -796777200, -781048800, 291762000, 307576800, 323816400, 339026400, 355266000, 370393200, 386715600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 662680800, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 }
+ :intvector { -2147483648, -857257200, -844556400, -828226800, -812502000, -796777200, -788922000, -781048800, 291762000, 307576800, 323816400, 339026400, 355266000, 370393200, 386715600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 575424000, 591148800, 606873600, 622598400, 638323200, 654652800, 662680800, 670370400, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796168800, 811890000, 828223200, 846363600, 859683600, 877827600 }
:intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600 }
- :bin { "02000100010002030203020302030203020302030203020302030203020302020302030203020302030203020302" }
+ :bin { "0200010001000002030203020302030203020302030203020302030203020302020302030203020302030203020302" }
"EU"
:intvector { 7200, 1998 }
- } //Z#455
+ } //Z#457
, /* Europe/Stockholm */ :array {
:intvector { -2147483648, -1692496800, -1680483600, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "00010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#456
+ } //Z#458
, /* Europe/Tallinn */ :array {
:intvector { -2147483648, -1638322740, -1632006000, -1618700400, -1593824400, -1535938740, -927943200, -892954800, -857257200, -844556400, -828226800, -812502000, -797652000, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622598400, 638323200, 654652800, 670377600, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 891129600, 906411600, 909277200, 922582800, 941331600, 941407200, 1017536400, 1035680400 }
:intvector { 3600, 0, 3600, 3600, 5940, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
:bin { "02000100020305010001000105060506050605060506050605060506050403040304030403040304030403040304030404030403030403" }
"EU"
:intvector { 7200, 2003 }
- } //Z#457
+ } //Z#459
, /* Europe/Tirane */ :array {
:intvector { -2147483648, -1767230360, -932346000, -857257200, -844556400, -843519600, 136854000, 149896800, 168130800, 181432800, 199839600, 213141600, 231894000, 244591200, 263257200, 276040800, 294706800, 307490400, 326156400, 339458400, 357087600, 370389600, 389142000, 402444000, 419468400, 433807200, 449622000, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600, 4760, 0 }
:bin { "02000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#458
-, /* Europe/Tiraspol */ :int { 422 } //Z#459
+ } //Z#460
+, /* Europe/Tiraspol */ :int { 424 } //Z#461
, /* Europe/Uzhgorod */ :array {
:intvector { -2147483648, -938905200, -857257200, -844556400, -828226800, -812502000, -796874400, -794714400, -773456400, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 631141200, 646786800, 670384800, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
:bin { "00010001000101000405040504050405040504050405040504050404000203020302030203020302" }
"EU"
:intvector { 7200, 1997 }
- } //Z#460
+ } //Z#462
, /* Europe/Vaduz */ :array {
:intvector { -2147483648, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#461
-, /* Europe/Vatican */ :int { 449 } //Z#462
+ } //Z#463
+, /* Europe/Vatican */ :int { 451 } //Z#464
, /* Europe/Vienna */ :array {
:intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1577926800, -1569711600, -1555801200, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -780188400, -757386000, -748479600, -733359600, -717634800, -701910000, -684975600, -670460400, 323823600, 338940000, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "0001000100010000010001000100010001000001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#463
+ } //Z#465
, /* Europe/Vilnius */ :array {
:intvector { -2147483648, -1672536240, -1585100136, -1561251600, -1553565600, -928198800, -900126000, -857257200, -844556400, -828226800, -812502000, -802144800, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686102400, 701827200, 717552000, 733276800, 749001600, 764726400, 780451200, 796176000, 811900800, 828230400, 846374400, 859680000, 877824000, 883605600, 891133200, 909277200, 922582800, 941331600, 1041372000, 1048986000, 1067130000 }
:intvector { 3600, 0, 3600, 3600, 5040, 0, 5736, 0, 7200, 0, 7200, 3600, 10800, 0, 10800, 3600 }
:bin { "020300040006010001000106070607060706070607060706070607060706070605040504050405040504050405040401000104040504" }
"EU"
:intvector { 7200, 2004 }
- } //Z#464
+ } //Z#466
, /* Europe/Volgograd */ :array {
:intvector { -2147483648, -1577761060, -1411873200, -1247540400, -256881600, 354916800, 370724400, 386452800, 402260400, 417988800, 433796400, 449611200, 465343200, 481068000, 496792800, 512517600, 528242400, 543967200, 559692000, 575416800, 591141600, 606866400, 622594800, 638319600, 654649200, 670374000, 701820000, 717534000, 733273200, 748998000, 764722800, 780447600, 796172400, 811897200, 828226800, 846370800 }
:intvector { 10660, 0, 10800, 0, 10800, 3600, 14400, 0, 14400, 3600 }
:bin { "000101030304030403040304030403040304030403020102010302010201020102010201" }
"Russia"
:intvector { 10800, 1997 }
- } //Z#465
+ } //Z#467
, /* Europe/Warsaw */ :array {
:intvector { -2147483648, -1717032240, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -1600473600, -1587168000, -1501725600, -931734000, -857257200, -844556400, -828226800, -812502000, -796874400, -796608000, -778726800, -762660000, -748486800, -733273200, -715215600, -701910000, -684975600, -670460400, -654130800, -639010800, -397094400, -386812800, -371088000, -355363200, -334195200, -323308800, -307584000, -291859200, -271296000, -260409600, -239846400, -228960000, -208396800, -197510400, -176342400, -166060800, 220921200, 228873600, 243993600, 260323200, 276048000, 291772800, 307497600, 323827200, 338947200, 354672000, 370396800, 386121600, 401846400, 417571200, 433296000, 449020800, 465350400, 481075200, 496800000, 512524800, 528249600, 543974400, 559699200, 567990000, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600, 5040, 0, 7200, 0, 7200, 3600 }
:bin { "0200010001000103040300010001000101000100010001000100010001000100010001000100010001000100000100010001000100010001000100010001000100010000010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- :intvector { 466, 562 }
- } //Z#466
-, /* Europe/Zagreb */ :int { 416 } //Z#467
+ :intvector { 468, 564 }
+ } //Z#468
+, /* Europe/Zagreb */ :int { 418 } //Z#469
, /* Europe/Zaporozhye */ :array {
:intvector { -2147483648, -1441160400, -1247536800, -894769200, -857257200, -844556400, -828226800, -826419600, 354920400, 370728000, 386456400, 402264000, 417992400, 433800000, 449614800, 465346800, 481071600, 496796400, 512521200, 528246000, 543970800, 559695600, 575420400, 591145200, 606870000, 622594800, 638319600, 654649200, 670374000, 686091600, 701820000, 717541200, 733269600, 748990800, 764719200, 780440400, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600, 7200, 0, 7200, 3600, 8400, 0, 10800, 0, 10800, 3600 }
:bin { "04020501000100050605060506050605060506050605060506050605030203020302030203020302" }
"EU"
:intvector { 7200, 1997 }
- } //Z#468
+ } //Z#470
, /* Europe/Zurich */ :array {
:intvector { -2147483648, -920336400, -915242400, -904518000, -891223200, -873068400, -859773600, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
:bin { "000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 3600, 1997 }
- } //Z#469
+ } //Z#471
, /* Factory */ :array {
:intvector { }
:intvector { 0, 0 }
:bin { "" }
- } //Z#470
-, /* GB */ :int { 435 } //Z#471
-, /* GB-Eire */ :int { 435 } //Z#472
-, /* GMT */ :int { 376 } //Z#473
-, /* GMT+0 */ :int { 376 } //Z#474
-, /* GMT-0 */ :int { 376 } //Z#475
-, /* GMT0 */ :int { 376 } //Z#476
-, /* Greenwich */ :int { 376 } //Z#477
+ } //Z#472
+, /* GB */ :int { 437 } //Z#473
+, /* GB-Eire */ :int { 437 } //Z#474
+, /* GMT */ :int { 378 } //Z#475
+, /* GMT+0 */ :int { 378 } //Z#476
+, /* GMT-0 */ :int { 378 } //Z#477
+, /* GMT0 */ :int { 378 } //Z#478
+, /* Greenwich */ :int { 378 } //Z#479
, /* HST */ :array {
:intvector { }
:intvector { -36000, 0 }
:bin { "" }
- } //Z#478
-, /* Hongkong */ :int { 250 } //Z#479
-, /* IET */ :int { 126 } //Z#480
-, /* IST */ :int { 262 } //Z#481
-, /* Iceland */ :int { 318 } //Z#482
+ } //Z#480
+, /* Hongkong */ :int { 252 } //Z#481
+, /* IET */ :int { 127 } //Z#482
+, /* IST */ :int { 264 } //Z#483
+, /* Iceland */ :int { 320 } //Z#484
, /* Indian/Antananarivo */ :array {
:intvector { -2147483648, -1846293004, -499924800, -492062400 }
:intvector { 10800, 0, 10800, 3600, 11404, 0 }
:bin { "02000100" }
- } //Z#483
+ } //Z#485
, /* Indian/Chagos */ :array {
:intvector { -2147483648, -1988167780, 820436400 }
:intvector { 17380, 0, 18000, 0, 21600, 0 }
:bin { "000102" }
- } //Z#484
+ } //Z#486
, /* Indian/Christmas */ :array {
:intvector { -2147483648 }
:intvector { 25200, 0 }
:bin { "00" }
- } //Z#485
+ } //Z#487
, /* Indian/Cocos */ :array {
:intvector { -2147483648 }
:intvector { 23400, 0 }
:bin { "00" }
- } //Z#486
+ } //Z#488
, /* Indian/Comoro */ :array {
:intvector { -2147483648, -1846291984 }
:intvector { 10384, 0, 10800, 0 }
:bin { "0001" }
- } //Z#487
+ } //Z#489
, /* Indian/Kerguelen */ :array {
:intvector { -2147483648, -631152000 }
:intvector { 0, 0, 18000, 0 }
:bin { "0001" }
- } //Z#488
+ } //Z#490
, /* Indian/Mahe */ :array {
:intvector { -2147483648, -2006653308 }
:intvector { 13308, 0, 14400, 0 }
:bin { "0001" }
- } //Z#489
+ } //Z#491
, /* Indian/Maldives */ :array {
:intvector { -2147483648, -315636840 }
:intvector { 17640, 0, 18000, 0 }
:bin { "0001" }
- } //Z#490
+ } //Z#492
, /* Indian/Mauritius */ :array {
- :intvector { -2147483648, -1988164200 }
- :intvector { 13800, 0, 14400, 0 }
- :bin { "0001" }
- } //Z#491
+ :intvector { -2147483648, -1988164200, 403041600, 417034800, 1224972000, 1238277600, 1256421600 }
+ :intvector { 13800, 0, 14400, 0, 14400, 3600 }
+ :bin { "00010201020102" }
+ "Mauritius"
+ :intvector { 14400, 2010 }
+ } //Z#493
, /* Indian/Mayotte */ :array {
:intvector { -2147483648, -1846292456 }
:intvector { 10800, 0, 10856, 0 }
:bin { "0100" }
- } //Z#492
+ } //Z#494
, /* Indian/Reunion */ :array {
:intvector { -2147483648, -1848886912 }
:intvector { 13312, 0, 14400, 0 }
:bin { "0001" }
- } //Z#493
-, /* Iran */ :int { 296 } //Z#494
-, /* Israel */ :int { 256 } //Z#495
-, /* JST */ :int { 300 } //Z#496
-, /* Jamaica */ :int { 137 } //Z#497
-, /* Japan */ :int { 300 } //Z#498
-, /* Kwajalein */ :int { 539 } //Z#499
-, /* Libya */ :int { 55 } //Z#500
+ } //Z#495
+, /* Iran */ :int { 298 } //Z#496
+, /* Israel */ :int { 258 } //Z#497
+, /* JST */ :int { 302 } //Z#498
+, /* Jamaica */ :int { 138 } //Z#499
+, /* Japan */ :int { 302 } //Z#500
+, /* Kwajalein */ :int { 541 } //Z#501
+, /* Libya */ :int { 55 } //Z#502
, /* MET */ :array {
- :intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
+ :intvector { -2147483648, -1693706400, -1680483600, -1663455600, -1650150000, -1632006000, -1618700400, -938905200, -857257200, -844556400, -828226800, -812502000, -796777200, -781052400, -766623600, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 3600, 0, 3600, 3600 }
- :bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
+ :bin { "00010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"C-Eur"
:intvector { 3600, 1997 }
- } //Z#501
-, /* MIT */ :int { 522 } //Z#502
+ } //Z#503
+, /* MIT */ :int { 524 } //Z#504
, /* MST */ :array {
:intvector { }
:intvector { -25200, 0 }
:bin { "" }
- } //Z#503
+ } //Z#505
, /* MST7MDT */ :array {
:intvector { -2147483648, -1633273200, -1615132800, -1601823600, -1583683200, -880210800, -769395600, -765388800, -84380400, -68659200, -52930800, -37209600, -21481200, -5760000, 9968400, 25689600, 41418000, 57744000, 73472400, 89193600, 104922000, 120643200, 126694800, 152092800, 162378000, 183542400, 199270800, 215596800, 230720400, 247046400, 262774800, 278496000, 294224400, 309945600, 325674000, 341395200, 357123600, 372844800, 388573200, 404899200, 420022800, 436348800, 452077200, 467798400, 483526800, 499248000, 514976400, 530697600, 544611600, 562147200, 576061200, 594201600, 607510800, 625651200, 638960400, 657100800, 671014800, 688550400, 702464400, 720000000, 733914000, 752054400, 765363600, 783504000, 796813200, 814953600, 828867600, 846403200, 860317200, 877852800, 891766800, 909302400, 923216400, 941356800, 954666000, 972806400, 986115600, 1004256000, 1018170000, 1035705600, 1049619600, 1067155200, 1081069200, 1099209600, 1112518800, 1130659200, 1143968400, 1162108800, 1173603600, 1194163200 }
:intvector { -25200, 0, -25200, 3600 }
:bin { "000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -25200, 2008 }
- } //Z#504
-, /* Mexico/BajaNorte */ :int { 201 } //Z#505
-, /* Mexico/BajaSur */ :int { 152 } //Z#506
-, /* Mexico/General */ :int { 156 } //Z#507
-, /* Mideast/Riyadh87 */ :int { 284 } //Z#508
-, /* Mideast/Riyadh88 */ :int { 285 } //Z#509
-, /* Mideast/Riyadh89 */ :int { 286 } //Z#510
-, /* NET */ :int { 309 } //Z#511
-, /* NST */ :int { 523 } //Z#512
-, /* NZ */ :int { 523 } //Z#513
-, /* NZ-CHAT */ :int { 524 } //Z#514
-, /* Navajo */ :int { 105 } //Z#515
-, /* PLT */ :int { 259 } //Z#516
-, /* PNT */ :int { 173 } //Z#517
-, /* PRC */ :int { 291 } //Z#518
-, /* PRT */ :int { 178 } //Z#519
-, /* PST */ :int { 145 } //Z#520
+ } //Z#506
+, /* Mexico/BajaNorte */ :int { 203 } //Z#507
+, /* Mexico/BajaSur */ :int { 153 } //Z#508
+, /* Mexico/General */ :int { 157 } //Z#509
+, /* Mideast/Riyadh87 */ :int { 286 } //Z#510
+, /* Mideast/Riyadh88 */ :int { 287 } //Z#511
+, /* Mideast/Riyadh89 */ :int { 288 } //Z#512
+, /* NET */ :int { 311 } //Z#513
+, /* NST */ :int { 525 } //Z#514
+, /* NZ */ :int { 525 } //Z#515
+, /* NZ-CHAT */ :int { 526 } //Z#516
+, /* Navajo */ :int { 106 } //Z#517
+, /* PLT */ :int { 261 } //Z#518
+, /* PNT */ :int { 174 } //Z#519
+, /* PRC */ :int { 293 } //Z#520
+, /* PRT */ :int { 179 } //Z#521
+, /* PST */ :int { 146 } //Z#522
, /* PST8PDT */ :array {
:intvector { -2147483648, -1633269600, -1615129200, -1601820000, -1583679600, -880207200, -769395600, -765385200, -84376800, -68655600, -52927200, -37206000, -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, 452080800, 467802000, 483530400, 499251600, 514980000, 530701200, 544615200, 562150800, 576064800, 594205200, 607514400, 625654800, 638964000, 657104400, 671018400, 688554000, 702468000, 720003600, 733917600, 752058000, 765367200, 783507600, 796816800, 814957200, 828871200, 846406800, 860320800, 877856400, 891770400, 909306000, 923220000, 941360400, 954669600, 972810000, 986119200, 1004259600, 1018173600, 1035709200, 1049623200, 1067158800, 1081072800, 1099213200, 1112522400, 1130662800, 1143972000, 1162112400, 1173607200, 1194166800 }
:intvector { -28800, 0, -28800, 3600 }
:bin { "000100010001010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"US"
:intvector { -28800, 2008 }
- } //Z#521
+ } //Z#523
, /* Pacific/Apia */ :array {
:intvector { -2147483648, -1861878784, -631110600 }
:intvector { -41400, 0, -41216, 0, -39600, 0 }
:bin { "010002" }
- :intvector { 502, 522 }
- } //Z#522
+ :intvector { 504, 524 }
+ } //Z#524
, /* Pacific/Auckland */ :array {
:intvector { -2147483648, -1330335000, -1320057000, -1300699800, -1287396000, -1269250200, -1255946400, -1237800600, -1224496800, -1206351000, -1192442400, -1174901400, -1160992800, -1143451800, -1125914400, -1112607000, -1094464800, -1081157400, -1063015200, -1049707800, -1031565600, -1018258200, -1000116000, -986808600, -968061600, -955359000, -936612000, -923304600, -757425600, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 }
:intvector { 41400, 0, 41400, 1800, 41400, 3600, 43200, 0, 43200, 3600 }
:bin { "0002000100010001000100010001000100010001000100010001000103040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304" }
"NZ"
:intvector { 43200, 2009 }
- :intvector { 512, 513, 523 }
- } //Z#523
+ :intvector { 514, 515, 525 }
+ } //Z#525
, /* Pacific/Chatham */ :array {
:intvector { -2147483648, -410271228, 152632800, 162309600, 183477600, 194968800, 215532000, 226418400, 246981600, 257868000, 278431200, 289317600, 309880800, 320767200, 341330400, 352216800, 372780000, 384271200, 404834400, 415720800, 436284000, 447170400, 467733600, 478620000, 499183200, 510069600, 530632800, 541519200, 562082400, 573573600, 594136800, 605023200, 623772000, 637682400, 655221600, 669132000, 686671200, 700581600, 718120800, 732636000, 749570400, 764085600, 781020000, 795535200, 812469600, 826984800, 844524000, 858434400, 875973600, 889884000, 907423200, 921938400, 938872800, 953388000, 970322400, 984837600, 1002376800, 1016287200, 1033826400, 1047736800, 1065276000, 1079791200, 1096725600, 1111240800, 1128175200, 1142690400, 1159624800, 1174140000, 1191074400, 1207404000, 1222524000 }
:intvector { 44028, 0, 45900, 0, 45900, 3600 }
:bin { "0001020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102010201020102" }
"Chatham"
:intvector { 45900, 2009 }
- :intvector { 514, 524 }
- } //Z#524
+ :intvector { 516, 526 }
+ } //Z#526
, /* Pacific/Easter */ :array {
:intvector { -2147483648, -1178124152, -870552000, -865278000, -736376400, -36619200, -23922000, -3355200, 7527600, 24465600, 37767600, 55915200, 69217200, 87969600, 100666800, 118209600, 132116400, 150868800, 163566000, 182318400, 195620400, 213768000, 227070000, 245217600, 258519600, 277272000, 289969200, 308721600, 321418800, 340171200, 353473200, 371620800, 384922800, 403070400, 416372400, 434520000, 447822000, 466574400, 479271600, 498024000, 510721200, 529473600, 545194800, 560923200, 574225200, 591768000, 605674800, 624427200, 637729200, 653457600, 668574000, 687326400, 700628400, 718776000, 732078000, 750225600, 763527600, 781675200, 794977200, 813729600, 826426800, 845179200, 859690800, 876628800, 889930800, 906868800, 923194800, 939528000, 952830000, 971582400, 984279600, 1003032000, 1015729200, 1034481600, 1047178800, 1065931200, 1079233200, 1097380800, 1110682800, 1128830400, 1142132400, 1160884800, 1173582000, 1192334400, 1206846000, 1223784000, 1237086000, 1255233600 }
:intvector { -26248, 0, -25200, 0, -25200, 3600, -21600, 0, -21600, 3600 }
:bin { "00020102010201020102010201020102010201020102010201020102010201020304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304030403040304" }
"Chile"
:intvector { -21600, 2010 }
- :intvector { 367, 525 }
- } //Z#525
+ :intvector { 369, 527 }
+ } //Z#527
, /* Pacific/Efate */ :array {
:intvector { -2147483648, -1829387596, 433256400, 448977600, 467298000, 480427200, 496760400, 511876800, 528210000, 543931200, 559659600, 575380800, 591109200, 606830400, 622558800, 638280000, 654008400, 669729600, 686062800, 696340800, 719931600, 727790400 }
:intvector { 39600, 0, 39600, 3600, 40396, 0 }
:bin { "02000100010001000100010001000100010001000100" }
- } //Z#526
+ } //Z#528
, /* Pacific/Enderbury */ :array {
:intvector { -2147483648, 307627200, 788958000 }
:intvector { -43200, 0, -39600, 0, 46800, 0 }
:bin { "000102" }
- } //Z#527
+ } //Z#529
, /* Pacific/Fakaofo */ :array {
:intvector { -2147483648 }
:intvector { -36000, 0 }
:bin { "00" }
- } //Z#528
+ } //Z#530
, /* Pacific/Fiji */ :array {
:intvector { -2147483648, -1709985220, 909842400, 920124000, 941896800, 951573600 }
:intvector { 42820, 0, 43200, 0, 43200, 3600 }
:bin { "000102010201" }
- } //Z#529
+ } //Z#531
, /* Pacific/Funafuti */ :array {
:intvector { -2147483648 }
:intvector { 43200, 0 }
:bin { "00" }
- } //Z#530
+ } //Z#532
, /* Pacific/Galapagos */ :array {
:intvector { -2147483648, -1230746496, 504939600 }
:intvector { -21600, 0, -21504, 0, -18000, 0 }
:bin { "010200" }
- } //Z#531
+ } //Z#533
, /* Pacific/Gambier */ :array {
:intvector { -2147483648, -1806678012 }
:intvector { -32400, 0, -32388, 0 }
:bin { "0100" }
- } //Z#532
+ } //Z#534
, /* Pacific/Guadalcanal */ :array {
:intvector { -2147483648, -1806748788 }
:intvector { 38388, 0, 39600, 0 }
:bin { "0001" }
- :intvector { 533, 566 }
- } //Z#533
+ :intvector { 535, 568 }
+ } //Z#535
, /* Pacific/Guam */ :array {
:intvector { -2147483648, 977493600 }
:intvector { 36000, 0 }
:bin { "0000" }
- } //Z#534
+ } //Z#536
, /* Pacific/Honolulu */ :array {
:intvector { -2147483648, -1157283000, -1155472200, -880198200, -769395600, -765376200, -712150200 }
:intvector { -37800, 0, -37800, 3600, -36000, 0 }
:bin { "00010001010002" }
- :intvector { 535, 589 }
- } //Z#535
+ :intvector { 537, 591 }
+ } //Z#537
, /* Pacific/Johnston */ :array {
:intvector { }
:intvector { -36000, 0 }
:bin { "" }
- } //Z#536
+ } //Z#538
, /* Pacific/Kiritimati */ :array {
:intvector { -2147483648, 307622400, 788954400 }
:intvector { -38400, 0, -36000, 0, 50400, 0 }
:bin { "000102" }
- } //Z#537
+ } //Z#539
, /* Pacific/Kosrae */ :array {
:intvector { -2147483648, -7988400, 915105600 }
:intvector { 39600, 0, 43200, 0 }
:bin { "000100" }
- } //Z#538
+ } //Z#540
, /* Pacific/Kwajalein */ :array {
:intvector { -2147483648, -7988400, 745848000 }
:intvector { -43200, 0, 39600, 0, 43200, 0 }
:bin { "010002" }
- :intvector { 499, 539 }
- } //Z#539
+ :intvector { 501, 541 }
+ } //Z#541
, /* Pacific/Majuro */ :array {
:intvector { -2147483648, -7988400 }
:intvector { 39600, 0, 43200, 0 }
:bin { "0001" }
- } //Z#540
+ } //Z#542
, /* Pacific/Marquesas */ :array {
:intvector { -2147483648, -1806676920 }
:intvector { -34200, 0, -33480, 0 }
:bin { "0100" }
- } //Z#541
+ } //Z#543
, /* Pacific/Midway */ :array {
:intvector { -2147483648, -428504400, -420645600, -86878800, 439038000 }
:intvector { -39600, 0, -39600, 3600 }
:bin { "0001000000" }
- } //Z#542
+ } //Z#544
, /* Pacific/Nauru */ :array {
:intvector { -2147483648, -1545131260, -877347000, -800960400, 294323400 }
:intvector { 32400, 0, 40060, 0, 41400, 0, 43200, 0 }
:bin { "0102000203" }
- } //Z#543
+ } //Z#545
, /* Pacific/Niue */ :array {
:intvector { -2147483648, -599575200, 276089400 }
:intvector { -41400, 0, -40800, 0, -39600, 0 }
:bin { "010002" }
- } //Z#544
+ } //Z#546
, /* Pacific/Norfolk */ :array {
:intvector { -2147483648, -599656320 }
:intvector { 40320, 0, 41400, 0 }
:bin { "0001" }
- } //Z#545
+ } //Z#547
, /* Pacific/Noumea */ :array {
:intvector { -2147483648, -1829387148, 250002000, 257342400, 281451600, 288878400, 849366000, 857228400 }
:intvector { 39600, 0, 39600, 3600, 39948, 0 }
:bin { "0200010001000100" }
- } //Z#546
+ } //Z#548
, /* Pacific/Pago_Pago */ :array {
:intvector { -2147483648, -1861879032, -631110600, -86878800, 439038000 }
:intvector { -41400, 0, -40968, 0, -39600, 0 }
:bin { "0100020202" }
- :intvector { 547, 554, 595 }
- } //Z#547
+ :intvector { 549, 556, 597 }
+ } //Z#549
, /* Pacific/Palau */ :array {
:intvector { -2147483648 }
:intvector { 32400, 0 }
:bin { "00" }
- } //Z#548
+ } //Z#550
, /* Pacific/Pitcairn */ :array {
:intvector { -2147483648, 893665800 }
:intvector { -30600, 0, -28800, 0 }
:bin { "0001" }
- } //Z#549
+ } //Z#551
, /* Pacific/Ponape */ :array {
:intvector { -2147483648 }
:intvector { 39600, 0 }
:bin { "00" }
- } //Z#550
+ } //Z#552
, /* Pacific/Port_Moresby */ :array {
:intvector { -2147483648 }
:intvector { 36000, 0 }
:bin { "00" }
- } //Z#551
+ } //Z#553
, /* Pacific/Rarotonga */ :array {
:intvector { -2147483648, 279714600, 289387800, 309952800, 320837400, 341402400, 352287000, 372852000, 384341400, 404906400, 415791000, 436356000, 447240600, 467805600, 478690200, 499255200, 510139800, 530704800, 541589400, 562154400, 573643800, 594208800, 605093400, 625658400, 636543000, 657108000, 667992600 }
:intvector { -37800, 0, -36000, 0, -36000, 1800 }
:bin { "000201020102010201020102010201020102010201020102010201" }
- } //Z#552
+ } //Z#554
, /* Pacific/Saipan */ :array {
:intvector { -2147483648, -7981200, 977493600 }
:intvector { 32400, 0, 36000, 0 }
:bin { "000101" }
- } //Z#553
-, /* Pacific/Samoa */ :int { 547 } //Z#554
+ } //Z#555
+, /* Pacific/Samoa */ :int { 549 } //Z#556
, /* Pacific/Tahiti */ :array {
:intvector { -2147483648, -1806674504 }
:intvector { -36000, 0, -35896, 0 }
:bin { "0100" }
- } //Z#555
+ } //Z#557
, /* Pacific/Tarawa */ :array {
:intvector { -2147483648 }
:intvector { 43200, 0 }
:bin { "00" }
- } //Z#556
+ } //Z#558
, /* Pacific/Tongatapu */ :array {
:intvector { -2147483648, -915193200, 939214800, 953384400, 973342800, 980596800, 1004792400, 1012046400 }
:intvector { 44400, 0, 46800, 0, 46800, 3600 }
:bin { "0001020102010201" }
- } //Z#557
+ } //Z#559
, /* Pacific/Truk */ :array {
:intvector { -2147483648 }
:intvector { 36000, 0 }
:bin { "00" }
- :intvector { 558, 561 }
- } //Z#558
+ :intvector { 560, 563 }
+ } //Z#560
, /* Pacific/Wake */ :array {
:intvector { -2147483648 }
:intvector { 43200, 0 }
:bin { "00" }
- } //Z#559
+ } //Z#561
, /* Pacific/Wallis */ :array {
:intvector { -2147483648 }
:intvector { 43200, 0 }
:bin { "00" }
- } //Z#560
-, /* Pacific/Yap */ :int { 558 } //Z#561
-, /* Poland */ :int { 466 } //Z#562
-, /* Portugal */ :int { 433 } //Z#563
-, /* ROC */ :int { 293 } //Z#564
-, /* ROK */ :int { 290 } //Z#565
-, /* SST */ :int { 533 } //Z#566
-, /* Singapore */ :int { 292 } //Z#567
-, /* SystemV/AST4 */ :int { 384 } //Z#568
-, /* SystemV/AST4ADT */ :int { 123 } //Z#569
-, /* SystemV/CST6 */ :int { 386 } //Z#570
-, /* SystemV/CST6CDT */ :int { 95 } //Z#571
-, /* SystemV/EST5 */ :int { 385 } //Z#572
-, /* SystemV/EST5EDT */ :int { 164 } //Z#573
-, /* SystemV/HST10 */ :int { 379 } //Z#574
-, /* SystemV/MST7 */ :int { 387 } //Z#575
-, /* SystemV/MST7MDT */ :int { 105 } //Z#576
-, /* SystemV/PST8 */ :int { 388 } //Z#577
-, /* SystemV/PST8PDT */ :int { 145 } //Z#578
-, /* SystemV/YST9 */ :int { 389 } //Z#579
-, /* SystemV/YST9YDT */ :int { 59 } //Z#580
-, /* Turkey */ :int { 429 } //Z#581
-, /* UCT */ :int { 407 } //Z#582
-, /* US/Alaska */ :int { 59 } //Z#583
-, /* US/Aleutian */ :int { 58 } //Z#584
-, /* US/Arizona */ :int { 173 } //Z#585
-, /* US/Central */ :int { 95 } //Z#586
-, /* US/East-Indiana */ :int { 126 } //Z#587
-, /* US/Eastern */ :int { 164 } //Z#588
-, /* US/Hawaii */ :int { 535 } //Z#589
-, /* US/Indiana-Starke */ :int { 127 } //Z#590
-, /* US/Michigan */ :int { 106 } //Z#591
-, /* US/Mountain */ :int { 105 } //Z#592
-, /* US/Pacific */ :int { 145 } //Z#593
-, /* US/Pacific-New */ :int { 145 } //Z#594
-, /* US/Samoa */ :int { 547 } //Z#595
-, /* UTC */ :int { 408 } //Z#596
-, /* Universal */ :int { 408 } //Z#597
-, /* VST */ :int { 249 } //Z#598
-, /* W-SU */ :int { 442 } //Z#599
+ } //Z#562
+, /* Pacific/Yap */ :int { 560 } //Z#563
+, /* Poland */ :int { 468 } //Z#564
+, /* Portugal */ :int { 435 } //Z#565
+, /* ROC */ :int { 295 } //Z#566
+, /* ROK */ :int { 292 } //Z#567
+, /* SST */ :int { 535 } //Z#568
+, /* Singapore */ :int { 294 } //Z#569
+, /* SystemV/AST4 */ :int { 386 } //Z#570
+, /* SystemV/AST4ADT */ :int { 124 } //Z#571
+, /* SystemV/CST6 */ :int { 388 } //Z#572
+, /* SystemV/CST6CDT */ :int { 96 } //Z#573
+, /* SystemV/EST5 */ :int { 387 } //Z#574
+, /* SystemV/EST5EDT */ :int { 165 } //Z#575
+, /* SystemV/HST10 */ :int { 381 } //Z#576
+, /* SystemV/MST7 */ :int { 389 } //Z#577
+, /* SystemV/MST7MDT */ :int { 106 } //Z#578
+, /* SystemV/PST8 */ :int { 390 } //Z#579
+, /* SystemV/PST8PDT */ :int { 146 } //Z#580
+, /* SystemV/YST9 */ :int { 391 } //Z#581
+, /* SystemV/YST9YDT */ :int { 59 } //Z#582
+, /* Turkey */ :int { 431 } //Z#583
+, /* UCT */ :int { 409 } //Z#584
+, /* US/Alaska */ :int { 59 } //Z#585
+, /* US/Aleutian */ :int { 58 } //Z#586
+, /* US/Arizona */ :int { 174 } //Z#587
+, /* US/Central */ :int { 96 } //Z#588
+, /* US/East-Indiana */ :int { 127 } //Z#589
+, /* US/Eastern */ :int { 165 } //Z#590
+, /* US/Hawaii */ :int { 537 } //Z#591
+, /* US/Indiana-Starke */ :int { 128 } //Z#592
+, /* US/Michigan */ :int { 107 } //Z#593
+, /* US/Mountain */ :int { 106 } //Z#594
+, /* US/Pacific */ :int { 146 } //Z#595
+, /* US/Pacific-New */ :int { 146 } //Z#596
+, /* US/Samoa */ :int { 549 } //Z#597
+, /* UTC */ :int { 410 } //Z#598
+, /* Universal */ :int { 410 } //Z#599
+, /* VST */ :int { 251 } //Z#600
+, /* W-SU */ :int { 444 } //Z#601
, /* WET */ :array {
:intvector { -2147483648, 228877200, 243997200, 260326800, 276051600, 291776400, 307501200, 323830800, 338950800, 354675600, 370400400, 386125200, 401850000, 417574800, 433299600, 449024400, 465354000, 481078800, 496803600, 512528400, 528253200, 543978000, 559702800, 575427600, 591152400, 606877200, 622602000, 638326800, 654656400, 670381200, 686106000, 701830800, 717555600, 733280400, 749005200, 764730000, 780454800, 796179600, 811904400, 828234000, 846378000 }
:intvector { 0, 0, 0, 3600 }
:bin { "0001000100010001000100010001000100010001000100010001000100010001000100010001000100" }
"EU"
:intvector { 0, 1997 }
- } //Z#600
-, /* Zulu */ :int { 408 } //Z#601
+ } //Z#602
+, /* Zulu */ :int { 410 } //Z#603
}
Names {
"ACT","AET","AGT","ART","AST","Africa/Abidjan","Africa/Accra" // 6
@@ -2792,159 +2790,159 @@
,"America/Argentina/ComodRivadavia","America/Argentina/Cordoba" // 66
,"America/Argentina/Jujuy","America/Argentina/La_Rioja" // 68
,"America/Argentina/Mendoza","America/Argentina/Rio_Gallegos" // 70
- ,"America/Argentina/San_Juan","America/Argentina/San_Luis" // 72
- ,"America/Argentina/Tucuman","America/Argentina/Ushuaia" // 74
- ,"America/Aruba","America/Asuncion","America/Atikokan" // 77
- ,"America/Atka","America/Bahia","America/Barbados" // 80
- ,"America/Belem","America/Belize","America/Blanc-Sablon" // 83
- ,"America/Boa_Vista","America/Bogota","America/Boise" // 86
- ,"America/Buenos_Aires","America/Cambridge_Bay","America/Campo_Grande" // 89
- ,"America/Cancun","America/Caracas","America/Catamarca" // 92
- ,"America/Cayenne","America/Cayman","America/Chicago" // 95
- ,"America/Chihuahua","America/Coral_Harbour","America/Cordoba" // 98
- ,"America/Costa_Rica","America/Cuiaba","America/Curacao" // 101
- ,"America/Danmarkshavn","America/Dawson","America/Dawson_Creek" // 104
- ,"America/Denver","America/Detroit","America/Dominica" // 107
- ,"America/Edmonton","America/Eirunepe","America/El_Salvador" // 110
- ,"America/Ensenada","America/Fort_Wayne","America/Fortaleza" // 113
- ,"America/Glace_Bay","America/Godthab","America/Goose_Bay" // 116
- ,"America/Grand_Turk","America/Grenada","America/Guadeloupe" // 119
- ,"America/Guatemala","America/Guayaquil","America/Guyana" // 122
- ,"America/Halifax","America/Havana","America/Hermosillo" // 125
- ,"America/Indiana/Indianapolis","America/Indiana/Knox" // 127
- ,"America/Indiana/Marengo","America/Indiana/Petersburg" // 129
- ,"America/Indiana/Tell_City","America/Indiana/Vevay" // 131
- ,"America/Indiana/Vincennes","America/Indiana/Winamac" // 133
- ,"America/Indianapolis","America/Inuvik","America/Iqaluit" // 136
- ,"America/Jamaica","America/Jujuy","America/Juneau" // 139
- ,"America/Kentucky/Louisville","America/Kentucky/Monticello" // 141
- ,"America/Knox_IN","America/La_Paz","America/Lima" // 144
- ,"America/Los_Angeles","America/Louisville","America/Maceio" // 147
- ,"America/Managua","America/Manaus","America/Marigot" // 150
- ,"America/Martinique","America/Mazatlan","America/Mendoza" // 153
- ,"America/Menominee","America/Merida","America/Mexico_City" // 156
- ,"America/Miquelon","America/Moncton","America/Monterrey" // 159
- ,"America/Montevideo","America/Montreal","America/Montserrat" // 162
- ,"America/Nassau","America/New_York","America/Nipigon" // 165
- ,"America/Nome","America/Noronha","America/North_Dakota/Center" // 168
- ,"America/North_Dakota/New_Salem","America/Panama" // 170
- ,"America/Pangnirtung","America/Paramaribo","America/Phoenix" // 173
- ,"America/Port-au-Prince","America/Port_of_Spain","America/Porto_Acre" // 176
- ,"America/Porto_Velho","America/Puerto_Rico","America/Rainy_River" // 179
- ,"America/Rankin_Inlet","America/Recife","America/Regina" // 182
- ,"America/Resolute","America/Rio_Branco","America/Rosario" // 185
- ,"America/Santiago","America/Santo_Domingo","America/Sao_Paulo" // 188
- ,"America/Scoresbysund","America/Shiprock","America/St_Barthelemy" // 191
- ,"America/St_Johns","America/St_Kitts","America/St_Lucia" // 194
- ,"America/St_Thomas","America/St_Vincent","America/Swift_Current" // 197
- ,"America/Tegucigalpa","America/Thule","America/Thunder_Bay" // 200
- ,"America/Tijuana","America/Toronto","America/Tortola" // 203
- ,"America/Vancouver","America/Virgin","America/Whitehorse" // 206
- ,"America/Winnipeg","America/Yakutat","America/Yellowknife" // 209
- ,"Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville" // 212
- ,"Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer" // 215
- ,"Antarctica/Rothera","Antarctica/South_Pole","Antarctica/Syowa" // 218
- ,"Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden" // 221
- ,"Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau" // 225
- ,"Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad","Asia/Baghdad" // 229
- ,"Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Beirut" // 233
- ,"Asia/Bishkek","Asia/Brunei","Asia/Calcutta","Asia/Choibalsan" // 237
- ,"Asia/Chongqing","Asia/Chungking","Asia/Colombo","Asia/Dacca" // 241
- ,"Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai" // 245
- ,"Asia/Dushanbe","Asia/Gaza","Asia/Harbin","Asia/Ho_Chi_Minh" // 249
- ,"Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Istanbul" // 253
- ,"Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul" // 257
- ,"Asia/Kamchatka","Asia/Karachi","Asia/Kashgar","Asia/Katmandu" // 261
- ,"Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur" // 264
- ,"Asia/Kuching","Asia/Kuwait","Asia/Macao","Asia/Macau" // 268
- ,"Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat" // 272
- ,"Asia/Nicosia","Asia/Novosibirsk","Asia/Omsk","Asia/Oral" // 276
- ,"Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang" // 279
- ,"Asia/Qatar","Asia/Qyzylorda","Asia/Rangoon","Asia/Riyadh" // 283
- ,"Asia/Riyadh87","Asia/Riyadh88","Asia/Riyadh89","Asia/Saigon" // 287
- ,"Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai" // 291
- ,"Asia/Singapore","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi" // 295
- ,"Asia/Tehran","Asia/Tel_Aviv","Asia/Thimbu","Asia/Thimphu" // 299
- ,"Asia/Tokyo","Asia/Ujung_Pandang","Asia/Ulaanbaatar" // 302
- ,"Asia/Ulan_Bator","Asia/Urumqi","Asia/Vientiane","Asia/Vladivostok" // 306
- ,"Asia/Yakutsk","Asia/Yekaterinburg","Asia/Yerevan" // 309
- ,"Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary" // 312
- ,"Atlantic/Cape_Verde","Atlantic/Faeroe","Atlantic/Faroe" // 315
- ,"Atlantic/Jan_Mayen","Atlantic/Madeira","Atlantic/Reykjavik" // 318
- ,"Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley" // 321
- ,"Australia/ACT","Australia/Adelaide","Australia/Brisbane" // 324
- ,"Australia/Broken_Hill","Australia/Canberra","Australia/Currie" // 327
- ,"Australia/Darwin","Australia/Eucla","Australia/Hobart" // 330
- ,"Australia/LHI","Australia/Lindeman","Australia/Lord_Howe" // 333
- ,"Australia/Melbourne","Australia/NSW","Australia/North" // 336
- ,"Australia/Perth","Australia/Queensland","Australia/South" // 339
- ,"Australia/Sydney","Australia/Tasmania","Australia/Victoria" // 342
- ,"Australia/West","Australia/Yancowinna","BET","BST" // 346
- ,"Brazil/Acre","Brazil/DeNoronha","Brazil/East","Brazil/West" // 350
- ,"CAT","CET","CNT","CST","CST6CDT","CTT","Canada/Atlantic" // 357
- ,"Canada/Central","Canada/East-Saskatchewan","Canada/Eastern" // 360
- ,"Canada/Mountain","Canada/Newfoundland","Canada/Pacific" // 363
- ,"Canada/Saskatchewan","Canada/Yukon","Chile/Continental" // 366
- ,"Chile/EasterIsland","Cuba","EAT","ECT","EET","EST" // 372
- ,"EST5EDT","Egypt","Eire","Etc/GMT","Etc/GMT+0","Etc/GMT+1" // 378
- ,"Etc/GMT+10","Etc/GMT+11","Etc/GMT+12","Etc/GMT+2" // 382
- ,"Etc/GMT+3","Etc/GMT+4","Etc/GMT+5","Etc/GMT+6","Etc/GMT+7" // 387
- ,"Etc/GMT+8","Etc/GMT+9","Etc/GMT-0","Etc/GMT-1","Etc/GMT-10" // 392
- ,"Etc/GMT-11","Etc/GMT-12","Etc/GMT-13","Etc/GMT-14" // 396
- ,"Etc/GMT-2","Etc/GMT-3","Etc/GMT-4","Etc/GMT-5","Etc/GMT-6" // 401
- ,"Etc/GMT-7","Etc/GMT-8","Etc/GMT-9","Etc/GMT0","Etc/Greenwich" // 406
- ,"Etc/UCT","Etc/UTC","Etc/Universal","Etc/Unknown" // 410
- ,"Etc/Zulu","Europe/Amsterdam","Europe/Andorra","Europe/Athens" // 414
- ,"Europe/Belfast","Europe/Belgrade","Europe/Berlin" // 417
- ,"Europe/Bratislava","Europe/Brussels","Europe/Bucharest" // 420
- ,"Europe/Budapest","Europe/Chisinau","Europe/Copenhagen" // 423
- ,"Europe/Dublin","Europe/Gibraltar","Europe/Guernsey" // 426
- ,"Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul" // 429
- ,"Europe/Jersey","Europe/Kaliningrad","Europe/Kiev" // 432
- ,"Europe/Lisbon","Europe/Ljubljana","Europe/London" // 435
- ,"Europe/Luxembourg","Europe/Madrid","Europe/Malta" // 438
- ,"Europe/Mariehamn","Europe/Minsk","Europe/Monaco" // 441
- ,"Europe/Moscow","Europe/Nicosia","Europe/Oslo","Europe/Paris" // 445
- ,"Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome" // 449
- ,"Europe/Samara","Europe/San_Marino","Europe/Sarajevo" // 452
- ,"Europe/Simferopol","Europe/Skopje","Europe/Sofia" // 455
- ,"Europe/Stockholm","Europe/Tallinn","Europe/Tirane" // 458
- ,"Europe/Tiraspol","Europe/Uzhgorod","Europe/Vaduz" // 461
- ,"Europe/Vatican","Europe/Vienna","Europe/Vilnius" // 464
- ,"Europe/Volgograd","Europe/Warsaw","Europe/Zagreb" // 467
- ,"Europe/Zaporozhye","Europe/Zurich","Factory","GB" // 471
- ,"GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich" // 477
- ,"HST","Hongkong","IET","IST","Iceland","Indian/Antananarivo" // 483
- ,"Indian/Chagos","Indian/Christmas","Indian/Cocos" // 486
- ,"Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 490
- ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 493
- ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 499
- ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 505
- ,"Mexico/BajaSur","Mexico/General","Mideast/Riyadh87" // 508
- ,"Mideast/Riyadh88","Mideast/Riyadh89","NET","NST" // 512
- ,"NZ","NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST" // 520
- ,"PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Chatham" // 524
- ,"Pacific/Easter","Pacific/Efate","Pacific/Enderbury" // 527
- ,"Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti" // 530
- ,"Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal" // 533
- ,"Pacific/Guam","Pacific/Honolulu","Pacific/Johnston" // 536
- ,"Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein" // 539
- ,"Pacific/Majuro","Pacific/Marquesas","Pacific/Midway" // 542
- ,"Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 546
- ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 549
- ,"Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga" // 552
- ,"Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti" // 555
- ,"Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk" // 558
- ,"Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland" // 562
- ,"Portugal","ROC","ROK","SST","Singapore","SystemV/AST4" // 568
- ,"SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT" // 571
- ,"SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7" // 575
- ,"SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT" // 578
- ,"SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","US/Alaska" // 583
- ,"US/Aleutian","US/Arizona","US/Central","US/East-Indiana" // 587
- ,"US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan" // 591
- ,"US/Mountain","US/Pacific","US/Pacific-New","US/Samoa" // 595
- ,"UTC","Universal","VST","W-SU","WET","Zulu" // 601
+ ,"America/Argentina/Salta","America/Argentina/San_Juan" // 72
+ ,"America/Argentina/San_Luis","America/Argentina/Tucuman" // 74
+ ,"America/Argentina/Ushuaia","America/Aruba","America/Asuncion" // 77
+ ,"America/Atikokan","America/Atka","America/Bahia" // 80
+ ,"America/Barbados","America/Belem","America/Belize" // 83
+ ,"America/Blanc-Sablon","America/Boa_Vista","America/Bogota" // 86
+ ,"America/Boise","America/Buenos_Aires","America/Cambridge_Bay" // 89
+ ,"America/Campo_Grande","America/Cancun","America/Caracas" // 92
+ ,"America/Catamarca","America/Cayenne","America/Cayman" // 95
+ ,"America/Chicago","America/Chihuahua","America/Coral_Harbour" // 98
+ ,"America/Cordoba","America/Costa_Rica","America/Cuiaba" // 101
+ ,"America/Curacao","America/Danmarkshavn","America/Dawson" // 104
+ ,"America/Dawson_Creek","America/Denver","America/Detroit" // 107
+ ,"America/Dominica","America/Edmonton","America/Eirunepe" // 110
+ ,"America/El_Salvador","America/Ensenada","America/Fort_Wayne" // 113
+ ,"America/Fortaleza","America/Glace_Bay","America/Godthab" // 116
+ ,"America/Goose_Bay","America/Grand_Turk","America/Grenada" // 119
+ ,"America/Guadeloupe","America/Guatemala","America/Guayaquil" // 122
+ ,"America/Guyana","America/Halifax","America/Havana" // 125
+ ,"America/Hermosillo","America/Indiana/Indianapolis" // 127
+ ,"America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg" // 130
+ ,"America/Indiana/Tell_City","America/Indiana/Vevay" // 132
+ ,"America/Indiana/Vincennes","America/Indiana/Winamac" // 134
+ ,"America/Indianapolis","America/Inuvik","America/Iqaluit" // 137
+ ,"America/Jamaica","America/Jujuy","America/Juneau" // 140
+ ,"America/Kentucky/Louisville","America/Kentucky/Monticello" // 142
+ ,"America/Knox_IN","America/La_Paz","America/Lima" // 145
+ ,"America/Los_Angeles","America/Louisville","America/Maceio" // 148
+ ,"America/Managua","America/Manaus","America/Marigot" // 151
+ ,"America/Martinique","America/Mazatlan","America/Mendoza" // 154
+ ,"America/Menominee","America/Merida","America/Mexico_City" // 157
+ ,"America/Miquelon","America/Moncton","America/Monterrey" // 160
+ ,"America/Montevideo","America/Montreal","America/Montserrat" // 163
+ ,"America/Nassau","America/New_York","America/Nipigon" // 166
+ ,"America/Nome","America/Noronha","America/North_Dakota/Center" // 169
+ ,"America/North_Dakota/New_Salem","America/Panama" // 171
+ ,"America/Pangnirtung","America/Paramaribo","America/Phoenix" // 174
+ ,"America/Port-au-Prince","America/Port_of_Spain","America/Porto_Acre" // 177
+ ,"America/Porto_Velho","America/Puerto_Rico","America/Rainy_River" // 180
+ ,"America/Rankin_Inlet","America/Recife","America/Regina" // 183
+ ,"America/Resolute","America/Rio_Branco","America/Rosario" // 186
+ ,"America/Santarem","America/Santiago","America/Santo_Domingo" // 189
+ ,"America/Sao_Paulo","America/Scoresbysund","America/Shiprock" // 192
+ ,"America/St_Barthelemy","America/St_Johns","America/St_Kitts" // 195
+ ,"America/St_Lucia","America/St_Thomas","America/St_Vincent" // 198
+ ,"America/Swift_Current","America/Tegucigalpa","America/Thule" // 201
+ ,"America/Thunder_Bay","America/Tijuana","America/Toronto" // 204
+ ,"America/Tortola","America/Vancouver","America/Virgin" // 207
+ ,"America/Whitehorse","America/Winnipeg","America/Yakutat" // 210
+ ,"America/Yellowknife","Antarctica/Casey","Antarctica/Davis" // 213
+ ,"Antarctica/DumontDUrville","Antarctica/Mawson","Antarctica/McMurdo" // 216
+ ,"Antarctica/Palmer","Antarctica/Rothera","Antarctica/South_Pole" // 219
+ ,"Antarctica/Syowa","Antarctica/Vostok","Arctic/Longyearbyen" // 222
+ ,"Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr" // 226
+ ,"Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Ashkhabad" // 230
+ ,"Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok" // 234
+ ,"Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Calcutta" // 238
+ ,"Asia/Choibalsan","Asia/Chongqing","Asia/Chungking" // 241
+ ,"Asia/Colombo","Asia/Dacca","Asia/Damascus","Asia/Dhaka" // 245
+ ,"Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Gaza" // 249
+ ,"Asia/Harbin","Asia/Ho_Chi_Minh","Asia/Hong_Kong" // 252
+ ,"Asia/Hovd","Asia/Irkutsk","Asia/Istanbul","Asia/Jakarta" // 256
+ ,"Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka" // 260
+ ,"Asia/Karachi","Asia/Kashgar","Asia/Katmandu","Asia/Kolkata" // 264
+ ,"Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching" // 267
+ ,"Asia/Kuwait","Asia/Macao","Asia/Macau","Asia/Magadan" // 271
+ ,"Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia" // 275
+ ,"Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh" // 279
+ ,"Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qyzylorda" // 283
+ ,"Asia/Rangoon","Asia/Riyadh","Asia/Riyadh87","Asia/Riyadh88" // 287
+ ,"Asia/Riyadh89","Asia/Saigon","Asia/Sakhalin","Asia/Samarkand" // 291
+ ,"Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Taipei" // 295
+ ,"Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Tel_Aviv" // 299
+ ,"Asia/Thimbu","Asia/Thimphu","Asia/Tokyo","Asia/Ujung_Pandang" // 303
+ ,"Asia/Ulaanbaatar","Asia/Ulan_Bator","Asia/Urumqi" // 306
+ ,"Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk" // 309
+ ,"Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores" // 312
+ ,"Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde" // 315
+ ,"Atlantic/Faeroe","Atlantic/Faroe","Atlantic/Jan_Mayen" // 318
+ ,"Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia" // 321
+ ,"Atlantic/St_Helena","Atlantic/Stanley","Australia/ACT" // 324
+ ,"Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill" // 327
+ ,"Australia/Canberra","Australia/Currie","Australia/Darwin" // 330
+ ,"Australia/Eucla","Australia/Hobart","Australia/LHI" // 333
+ ,"Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne" // 336
+ ,"Australia/NSW","Australia/North","Australia/Perth" // 339
+ ,"Australia/Queensland","Australia/South","Australia/Sydney" // 342
+ ,"Australia/Tasmania","Australia/Victoria","Australia/West" // 345
+ ,"Australia/Yancowinna","BET","BST","Brazil/Acre","Brazil/DeNoronha" // 350
+ ,"Brazil/East","Brazil/West","CAT","CET","CNT","CST" // 356
+ ,"CST6CDT","CTT","Canada/Atlantic","Canada/Central" // 360
+ ,"Canada/East-Saskatchewan","Canada/Eastern","Canada/Mountain" // 363
+ ,"Canada/Newfoundland","Canada/Pacific","Canada/Saskatchewan" // 366
+ ,"Canada/Yukon","Chile/Continental","Chile/EasterIsland" // 369
+ ,"Cuba","EAT","ECT","EET","EST","EST5EDT","Egypt","Eire" // 377
+ ,"Etc/GMT","Etc/GMT+0","Etc/GMT+1","Etc/GMT+10","Etc/GMT+11" // 382
+ ,"Etc/GMT+12","Etc/GMT+2","Etc/GMT+3","Etc/GMT+4","Etc/GMT+5" // 387
+ ,"Etc/GMT+6","Etc/GMT+7","Etc/GMT+8","Etc/GMT+9","Etc/GMT-0" // 392
+ ,"Etc/GMT-1","Etc/GMT-10","Etc/GMT-11","Etc/GMT-12" // 396
+ ,"Etc/GMT-13","Etc/GMT-14","Etc/GMT-2","Etc/GMT-3" // 400
+ ,"Etc/GMT-4","Etc/GMT-5","Etc/GMT-6","Etc/GMT-7","Etc/GMT-8" // 405
+ ,"Etc/GMT-9","Etc/GMT0","Etc/Greenwich","Etc/UCT","Etc/UTC" // 410
+ ,"Etc/Universal","Etc/Unknown","Etc/Zulu","Europe/Amsterdam" // 414
+ ,"Europe/Andorra","Europe/Athens","Europe/Belfast" // 417
+ ,"Europe/Belgrade","Europe/Berlin","Europe/Bratislava" // 420
+ ,"Europe/Brussels","Europe/Bucharest","Europe/Budapest" // 423
+ ,"Europe/Chisinau","Europe/Copenhagen","Europe/Dublin" // 426
+ ,"Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki" // 429
+ ,"Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey" // 432
+ ,"Europe/Kaliningrad","Europe/Kiev","Europe/Lisbon" // 435
+ ,"Europe/Ljubljana","Europe/London","Europe/Luxembourg" // 438
+ ,"Europe/Madrid","Europe/Malta","Europe/Mariehamn" // 441
+ ,"Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Nicosia" // 445
+ ,"Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague" // 449
+ ,"Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino" // 453
+ ,"Europe/Sarajevo","Europe/Simferopol","Europe/Skopje" // 456
+ ,"Europe/Sofia","Europe/Stockholm","Europe/Tallinn" // 459
+ ,"Europe/Tirane","Europe/Tiraspol","Europe/Uzhgorod" // 462
+ ,"Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius" // 466
+ ,"Europe/Volgograd","Europe/Warsaw","Europe/Zagreb" // 469
+ ,"Europe/Zaporozhye","Europe/Zurich","Factory","GB" // 473
+ ,"GB-Eire","GMT","GMT+0","GMT-0","GMT0","Greenwich" // 479
+ ,"HST","Hongkong","IET","IST","Iceland","Indian/Antananarivo" // 485
+ ,"Indian/Chagos","Indian/Christmas","Indian/Cocos" // 488
+ ,"Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives" // 492
+ ,"Indian/Mauritius","Indian/Mayotte","Indian/Reunion" // 495
+ ,"Iran","Israel","JST","Jamaica","Japan","Kwajalein" // 501
+ ,"Libya","MET","MIT","MST","MST7MDT","Mexico/BajaNorte" // 507
+ ,"Mexico/BajaSur","Mexico/General","Mideast/Riyadh87" // 510
+ ,"Mideast/Riyadh88","Mideast/Riyadh89","NET","NST" // 514
+ ,"NZ","NZ-CHAT","Navajo","PLT","PNT","PRC","PRT","PST" // 522
+ ,"PST8PDT","Pacific/Apia","Pacific/Auckland","Pacific/Chatham" // 526
+ ,"Pacific/Easter","Pacific/Efate","Pacific/Enderbury" // 529
+ ,"Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti" // 532
+ ,"Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal" // 535
+ ,"Pacific/Guam","Pacific/Honolulu","Pacific/Johnston" // 538
+ ,"Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein" // 541
+ ,"Pacific/Majuro","Pacific/Marquesas","Pacific/Midway" // 544
+ ,"Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea" // 548
+ ,"Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn" // 551
+ ,"Pacific/Ponape","Pacific/Port_Moresby","Pacific/Rarotonga" // 554
+ ,"Pacific/Saipan","Pacific/Samoa","Pacific/Tahiti" // 557
+ ,"Pacific/Tarawa","Pacific/Tongatapu","Pacific/Truk" // 560
+ ,"Pacific/Wake","Pacific/Wallis","Pacific/Yap","Poland" // 564
+ ,"Portugal","ROC","ROK","SST","Singapore","SystemV/AST4" // 570
+ ,"SystemV/AST4ADT","SystemV/CST6","SystemV/CST6CDT" // 573
+ ,"SystemV/EST5","SystemV/EST5EDT","SystemV/HST10","SystemV/MST7" // 577
+ ,"SystemV/MST7MDT","SystemV/PST8","SystemV/PST8PDT" // 580
+ ,"SystemV/YST9","SystemV/YST9YDT","Turkey","UCT","US/Alaska" // 585
+ ,"US/Aleutian","US/Arizona","US/Central","US/East-Indiana" // 589
+ ,"US/Eastern","US/Hawaii","US/Indiana-Starke","US/Michigan" // 593
+ ,"US/Mountain","US/Pacific","US/Pacific-New","US/Samoa" // 597
+ ,"UTC","Universal","VST","W-SU","WET","Zulu" // 603
}
Rules {
AN:intvector {
@@ -2960,13 +2958,13 @@
9, 1, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600
} //_#3
Arg:intvector {
- 9, 1, -1, 0, 0, 2, 15, -1, 0, 0, 3600
+ 9, 15, -1, 0, 0, 2, 15, -1, 0, 0, 3600
} //_#4
Azer:intvector {
2, -31, -1, 14400, 0, 9, -31, -1, 18000, 0, 3600
} //_#5
Brazil:intvector {
- 9, 8, -1, 0, 0, 1, 15, -1, 0, 0, 3600
+ 9, 15, -1, 0, 0, 1, 15, -1, 0, 0, 3600
} //_#6
C-Eur:intvector {
2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600
@@ -3007,297 +3005,300 @@
Lebanon:intvector {
2, -31, -1, 0, 0, 9, -31, -1, 0, 0, 3600
} //_#19
+ Mauritius:intvector {
+ 9, -31, -1, 7200, 1, 2, -31, -1, 7200, 1, 3600
+ } //_#20
Mexico:intvector {
3, 1, -1, 7200, 0, 9, -31, -1, 7200, 0, 3600
- } //_#20
+ } //_#21
NZ:intvector {
8, -30, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600
- } //_#21
+ } //_#22
NZAQ:intvector {
8, -30, -1, 7200, 1, 3, 1, -1, 7200, 1, 3600
- } //_#22
+ } //_#23
Namibia:intvector {
8, 1, -1, 7200, 0, 3, 1, -1, 7200, 0, 3600
- } //_#23
+ } //_#24
Palestine:intvector {
- 3, 1, 0, 0, 0, 8, 8, -5, 7200, 0, 3600
- } //_#24
+ 3, 1, 0, 0, 0, 7, -31, -5, 7200, 0, 3600
+ } //_#25
Para:intvector {
9, 15, -1, 0, 0, 2, 8, -1, 0, 0, 3600
- } //_#25
+ } //_#26
Russia:intvector {
2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600
- } //_#26
+ } //_#27
RussiaAsia:intvector {
2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600
- } //_#27
+ } //_#28
StJohns:intvector {
2, 8, -1, 60, 0, 10, 1, -1, 60, 0, 3600
- } //_#28
+ } //_#29
Syria:intvector {
- 3, 1, -6, 0, 0, 9, 1, 0, 0, 0, 3600
- } //_#29
+ 3, 1, -6, 0, 0, 10, 1, 0, 0, 0, 3600
+ } //_#30
TC:intvector {
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
- } //_#30
+ } //_#31
Thule:intvector {
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
- } //_#31
+ } //_#32
Tunisia:intvector {
2, -31, -1, 7200, 1, 9, -31, -1, 7200, 1, 3600
- } //_#32
+ } //_#33
US:intvector {
2, 8, -1, 7200, 0, 10, 1, -1, 7200, 0, 3600
- } //_#33
+ } //_#34
Uruguay:intvector {
9, 1, -1, 7200, 0, 2, 8, -1, 7200, 0, 3600
- } //_#34
+ } //_#35
}
Regions {
- Default:intvector { 284, 285, 286, 352, 355, 371, 372, 373, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 470, 473, 474, 475, 476, 477, 478, 501, 503, 504, 508, 509, 510, 521, 568, 570, 572, 574, 575, 577, 579, 582, 596, 597, 600, 601 } //R#0
- AD:intvector { 413 } //R#1
- AE:intvector { 245 } //R#2
- AF:intvector { 257 } //R#3
+ Default:intvector { 286, 287, 288, 354, 357, 373, 374, 375, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 472, 475, 476, 477, 478, 479, 480, 503, 505, 506, 510, 511, 512, 523, 570, 572, 574, 576, 577, 579, 581, 584, 598, 599, 602, 603 } //R#0
+ AD:intvector { 415 } //R#1
+ AE:intvector { 247 } //R#2
+ AF:intvector { 259 } //R#3
AG:intvector { 61 } //R#4
AI:intvector { 60 } //R#5
- AL:intvector { 458 } //R#6
- AM:intvector { 309, 511 } //R#7
- AN:intvector { 101 } //R#8
+ AL:intvector { 460 } //R#6
+ AM:intvector { 311, 513 } //R#7
+ AN:intvector { 102 } //R#8
AO:intvector { 38 } //R#9
- AQ:intvector { 210, 211, 212, 213, 214, 215, 216, 217, 218, 219 } //R#10
- AR:intvector { 2, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 87, 92, 98, 138, 153, 185 } //R#11
- AS:intvector { 547, 554, 595 } //R#12
- AT:intvector { 463 } //R#13
- AU:intvector { 0, 1, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344 } //R#14
- AW:intvector { 75 } //R#15
- AX:intvector { 439 } //R#16
- AZ:intvector { 231 } //R#17
- BA:intvector { 452 } //R#18
- BB:intvector { 80 } //R#19
- BD:intvector { 241, 243, 346 } //R#20
- BE:intvector { 419 } //R#21
+ AQ:intvector { 212, 213, 214, 215, 216, 217, 218, 219, 220, 221 } //R#10
+ AR:intvector { 2, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 88, 93, 99, 139, 154, 186 } //R#11
+ AS:intvector { 549, 556, 597 } //R#12
+ AT:intvector { 465 } //R#13
+ AU:intvector { 0, 1, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346 } //R#14
+ AW:intvector { 76 } //R#15
+ AX:intvector { 441 } //R#16
+ AZ:intvector { 233 } //R#17
+ BA:intvector { 454 } //R#18
+ BB:intvector { 81 } //R#19
+ BD:intvector { 243, 245, 348 } //R#20
+ BE:intvector { 421 } //R#21
BF:intvector { 51 } //R#22
- BG:intvector { 455 } //R#23
- BH:intvector { 230 } //R#24
+ BG:intvector { 457 } //R#23
+ BH:intvector { 232 } //R#24
BI:intvector { 17 } //R#25
BJ:intvector { 52 } //R#26
- BL:intvector { 191 } //R#27
- BM:intvector { 311 } //R#28
- BN:intvector { 235 } //R#29
- BO:intvector { 143 } //R#30
- BR:intvector { 62, 79, 81, 84, 89, 100, 109, 113, 147, 149, 167, 176, 177, 181, 184, 188, 345, 347, 348, 349, 350 } //R#31
- BS:intvector { 163 } //R#32
- BT:intvector { 298, 299 } //R#33
+ BL:intvector { 193 } //R#27
+ BM:intvector { 313 } //R#28
+ BN:intvector { 237 } //R#29
+ BO:intvector { 144 } //R#30
+ BR:intvector { 62, 80, 82, 85, 90, 101, 110, 114, 148, 150, 168, 177, 178, 182, 185, 187, 190, 347, 349, 350, 351, 352 } //R#31
+ BS:intvector { 164 } //R#32
+ BT:intvector { 300, 301 } //R#33
BW:intvector { 28 } //R#34
- BY:intvector { 440 } //R#35
- BZ:intvector { 82 } //R#36
- CA:intvector { 77, 83, 88, 97, 103, 104, 108, 114, 116, 123, 135, 136, 158, 161, 165, 171, 179, 180, 182, 183, 192, 197, 200, 202, 204, 206, 207, 209, 353, 357, 358, 359, 360, 361, 362, 363, 364, 365, 569 } //R#37
- CC:intvector { 486 } //R#38
+ BY:intvector { 442 } //R#35
+ BZ:intvector { 83 } //R#36
+ CA:intvector { 78, 84, 89, 98, 104, 105, 109, 115, 117, 124, 136, 137, 159, 162, 166, 172, 180, 181, 183, 184, 194, 199, 202, 204, 206, 208, 209, 211, 355, 359, 360, 361, 362, 363, 364, 365, 366, 367, 571 } //R#37
+ CC:intvector { 488 } //R#38
CD:intvector { 34, 39 } //R#39
CF:intvector { 12 } //R#40
CG:intvector { 16 } //R#41
- CH:intvector { 469 } //R#42
+ CH:intvector { 471 } //R#42
CI:intvector { 5 } //R#43
- CK:intvector { 552 } //R#44
- CL:intvector { 186, 366, 367, 525 } //R#45
+ CK:intvector { 554 } //R#44
+ CL:intvector { 188, 368, 369, 527 } //R#45
CM:intvector { 25 } //R#46
- CN:intvector { 238, 239, 248, 260, 291, 304, 356, 518 } //R#47
- CO:intvector { 85 } //R#48
- CR:intvector { 99 } //R#49
- CU:intvector { 124, 368 } //R#50
- CV:intvector { 313 } //R#51
- CX:intvector { 485 } //R#52
- CY:intvector { 273, 443 } //R#53
- CZ:intvector { 447 } //R#54
- DE:intvector { 417 } //R#55
+ CN:intvector { 240, 241, 250, 262, 293, 306, 358, 520 } //R#47
+ CO:intvector { 86 } //R#48
+ CR:intvector { 100 } //R#49
+ CU:intvector { 125, 370 } //R#50
+ CV:intvector { 315 } //R#51
+ CX:intvector { 487 } //R#52
+ CY:intvector { 275, 445 } //R#53
+ CZ:intvector { 449 } //R#54
+ DE:intvector { 419 } //R#55
DJ:intvector { 24 } //R#56
- DK:intvector { 423 } //R#57
- DM:intvector { 107 } //R#58
- DO:intvector { 187 } //R#59
+ DK:intvector { 425 } //R#57
+ DM:intvector { 108 } //R#58
+ DO:intvector { 189 } //R#59
DZ:intvector { 8 } //R#60
- EC:intvector { 121, 531 } //R#61
- EE:intvector { 457 } //R#62
- EG:intvector { 3, 18, 374 } //R#63
+ EC:intvector { 122, 533 } //R#61
+ EE:intvector { 459 } //R#62
+ EG:intvector { 3, 18, 376 } //R#63
EH:intvector { 26 } //R#64
ER:intvector { 9, 10 } //R#65
- ES:intvector { 20, 312, 437 } //R#66
- ET:intvector { 7, 369 } //R#67
- FI:intvector { 427 } //R#68
- FJ:intvector { 529 } //R#69
- FK:intvector { 321 } //R#70
- FM:intvector { 538, 550, 558, 561 } //R#71
- FO:intvector { 314, 315 } //R#72
- FR:intvector { 370, 445 } //R#73
+ ES:intvector { 20, 314, 439 } //R#66
+ ET:intvector { 7, 371 } //R#67
+ FI:intvector { 429 } //R#68
+ FJ:intvector { 531 } //R#69
+ FK:intvector { 323 } //R#70
+ FM:intvector { 540, 552, 560, 563 } //R#71
+ FO:intvector { 316, 317 } //R#72
+ FR:intvector { 372, 447 } //R#73
GA:intvector { 36 } //R#74
- GB:intvector { 415, 435, 471, 472 } //R#75
- GD:intvector { 118 } //R#76
- GE:intvector { 295 } //R#77
- GF:intvector { 93 } //R#78
- GG:intvector { 426 } //R#79
+ GB:intvector { 417, 437, 473, 474 } //R#75
+ GD:intvector { 119 } //R#76
+ GE:intvector { 297 } //R#77
+ GF:intvector { 94 } //R#78
+ GG:intvector { 428 } //R#79
GH:intvector { 6 } //R#80
- GI:intvector { 425 } //R#81
- GL:intvector { 102, 115, 189, 199 } //R#82
+ GI:intvector { 427 } //R#81
+ GL:intvector { 103, 116, 191, 201 } //R#82
GM:intvector { 13 } //R#83
GN:intvector { 21 } //R#84
- GP:intvector { 119 } //R#85
+ GP:intvector { 120 } //R#85
GQ:intvector { 41 } //R#86
- GR:intvector { 414 } //R#87
- GS:intvector { 319 } //R#88
- GT:intvector { 120 } //R#89
- GU:intvector { 534 } //R#90
+ GR:intvector { 416 } //R#87
+ GS:intvector { 321 } //R#88
+ GT:intvector { 121 } //R#89
+ GU:intvector { 536 } //R#90
GW:intvector { 14 } //R#91
- GY:intvector { 122 } //R#92
- HK:intvector { 250, 479 } //R#93
- HN:intvector { 198 } //R#94
- HR:intvector { 467 } //R#95
- HT:intvector { 174 } //R#96
- HU:intvector { 421 } //R#97
- ID:intvector { 254, 255, 270, 278, 301 } //R#98
- IE:intvector { 375, 424 } //R#99
- IL:intvector { 256, 297, 495 } //R#100
- IM:intvector { 428 } //R#101
- IN:intvector { 236, 262, 481 } //R#102
- IO:intvector { 484 } //R#103
- IQ:intvector { 229 } //R#104
- IR:intvector { 296, 494 } //R#105
- IS:intvector { 318, 482 } //R#106
- IT:intvector { 449 } //R#107
- JE:intvector { 430 } //R#108
- JM:intvector { 137, 497 } //R#109
- JO:intvector { 223 } //R#110
- JP:intvector { 300, 496, 498 } //R#111
+ GY:intvector { 123 } //R#92
+ HK:intvector { 252, 481 } //R#93
+ HN:intvector { 200 } //R#94
+ HR:intvector { 469 } //R#95
+ HT:intvector { 175 } //R#96
+ HU:intvector { 423 } //R#97
+ ID:intvector { 256, 257, 272, 280, 303 } //R#98
+ IE:intvector { 377, 426 } //R#99
+ IL:intvector { 258, 299, 497 } //R#100
+ IM:intvector { 430 } //R#101
+ IN:intvector { 238, 264, 483 } //R#102
+ IO:intvector { 486 } //R#103
+ IQ:intvector { 231 } //R#104
+ IR:intvector { 298, 496 } //R#105
+ IS:intvector { 320, 484 } //R#106
+ IT:intvector { 451 } //R#107
+ JE:intvector { 432 } //R#108
+ JM:intvector { 138, 499 } //R#109
+ JO:intvector { 225 } //R#110
+ JP:intvector { 302, 498, 500 } //R#111
KE:intvector { 47 } //R#112
- KG:intvector { 234 } //R#113
- KH:intvector { 277 } //R#114
- KI:intvector { 527, 537, 556 } //R#115
- KM:intvector { 487 } //R#116
- KN:intvector { 193 } //R#117
- KP:intvector { 279 } //R#118
- KR:intvector { 290, 565 } //R#119
- KW:intvector { 266 } //R#120
- KY:intvector { 94 } //R#121
- KZ:intvector { 222, 225, 226, 276, 281 } //R#122
- LA:intvector { 305 } //R#123
- LB:intvector { 233 } //R#124
- LC:intvector { 194 } //R#125
- LI:intvector { 461 } //R#126
- LK:intvector { 240 } //R#127
+ KG:intvector { 236 } //R#113
+ KH:intvector { 279 } //R#114
+ KI:intvector { 529, 539, 558 } //R#115
+ KM:intvector { 489 } //R#116
+ KN:intvector { 195 } //R#117
+ KP:intvector { 281 } //R#118
+ KR:intvector { 292, 567 } //R#119
+ KW:intvector { 268 } //R#120
+ KY:intvector { 95 } //R#121
+ KZ:intvector { 224, 227, 228, 278, 283 } //R#122
+ LA:intvector { 307 } //R#123
+ LB:intvector { 235 } //R#124
+ LC:intvector { 196 } //R#125
+ LI:intvector { 463 } //R#126
+ LK:intvector { 242 } //R#127
LR:intvector { 46 } //R#128
LS:intvector { 43 } //R#129
- LT:intvector { 464 } //R#130
- LU:intvector { 436 } //R#131
- LV:intvector { 448 } //R#132
- LY:intvector { 55, 500 } //R#133
+ LT:intvector { 466 } //R#130
+ LU:intvector { 438 } //R#131
+ LV:intvector { 450 } //R#132
+ LY:intvector { 55, 502 } //R#133
MA:intvector { 19 } //R#134
- MC:intvector { 441 } //R#135
- MD:intvector { 422, 459 } //R#136
- ME:intvector { 446 } //R#137
- MF:intvector { 150 } //R#138
- MG:intvector { 483 } //R#139
- MH:intvector { 499, 539, 540 } //R#140
- MK:intvector { 454 } //R#141
+ MC:intvector { 443 } //R#135
+ MD:intvector { 424, 461 } //R#136
+ ME:intvector { 448 } //R#137
+ MF:intvector { 151 } //R#138
+ MG:intvector { 485 } //R#139
+ MH:intvector { 501, 541, 542 } //R#140
+ MK:intvector { 456 } //R#141
ML:intvector { 11, 54 } //R#142
- MM:intvector { 282 } //R#143
- MN:intvector { 237, 251, 302, 303 } //R#144
- MO:intvector { 267, 268 } //R#145
- MP:intvector { 553 } //R#146
- MQ:intvector { 151 } //R#147
+ MM:intvector { 284 } //R#143
+ MN:intvector { 239, 253, 304, 305 } //R#144
+ MO:intvector { 269, 270 } //R#145
+ MP:intvector { 555 } //R#146
+ MQ:intvector { 152 } //R#147
MR:intvector { 50 } //R#148
- MS:intvector { 162 } //R#149
- MT:intvector { 438 } //R#150
- MU:intvector { 491 } //R#151
- MV:intvector { 490 } //R#152
+ MS:intvector { 163 } //R#149
+ MT:intvector { 440 } //R#150
+ MU:intvector { 493 } //R#151
+ MV:intvector { 492 } //R#152
MW:intvector { 15 } //R#153
- MX:intvector { 90, 96, 111, 125, 152, 155, 156, 159, 201, 505, 506, 507 } //R#154
- MY:intvector { 264, 265 } //R#155
+ MX:intvector { 91, 97, 112, 126, 153, 156, 157, 160, 203, 507, 508, 509 } //R#154
+ MY:intvector { 266, 267 } //R#155
MZ:intvector { 42 } //R#156
NA:intvector { 57 } //R#157
- NC:intvector { 546 } //R#158
+ NC:intvector { 548 } //R#158
NE:intvector { 49 } //R#159
- NF:intvector { 545 } //R#160
+ NF:intvector { 547 } //R#160
NG:intvector { 35 } //R#161
- NI:intvector { 148 } //R#162
- NL:intvector { 412 } //R#163
- NO:intvector { 316, 444 } //R#164
- NP:intvector { 261 } //R#165
- NR:intvector { 543 } //R#166
- NU:intvector { 544 } //R#167
- NZ:intvector { 512, 513, 514, 523, 524 } //R#168
- OM:intvector { 272 } //R#169
- PA:intvector { 170 } //R#170
- PE:intvector { 144 } //R#171
- PF:intvector { 532, 541, 555 } //R#172
- PG:intvector { 551 } //R#173
- PH:intvector { 271 } //R#174
- PK:intvector { 259, 516 } //R#175
- PL:intvector { 466, 562 } //R#176
- PM:intvector { 157 } //R#177
- PN:intvector { 549 } //R#178
- PR:intvector { 178, 519 } //R#179
- PS:intvector { 247 } //R#180
- PT:intvector { 310, 317, 433, 563 } //R#181
- PW:intvector { 548 } //R#182
- PY:intvector { 76 } //R#183
- QA:intvector { 280 } //R#184
- RE:intvector { 493 } //R#185
- RO:intvector { 420 } //R#186
- RS:intvector { 416 } //R#187
- RU:intvector { 224, 252, 258, 263, 269, 274, 275, 288, 306, 307, 308, 431, 442, 450, 465, 599 } //R#188
+ NI:intvector { 149 } //R#162
+ NL:intvector { 414 } //R#163
+ NO:intvector { 318, 446 } //R#164
+ NP:intvector { 263 } //R#165
+ NR:intvector { 545 } //R#166
+ NU:intvector { 546 } //R#167
+ NZ:intvector { 514, 515, 516, 525, 526 } //R#168
+ OM:intvector { 274 } //R#169
+ PA:intvector { 171 } //R#170
+ PE:intvector { 145 } //R#171
+ PF:intvector { 534, 543, 557 } //R#172
+ PG:intvector { 553 } //R#173
+ PH:intvector { 273 } //R#174
+ PK:intvector { 261, 518 } //R#175
+ PL:intvector { 468, 564 } //R#176
+ PM:intvector { 158 } //R#177
+ PN:intvector { 551 } //R#178
+ PR:intvector { 179, 521 } //R#179
+ PS:intvector { 249 } //R#180
+ PT:intvector { 312, 319, 435, 565 } //R#181
+ PW:intvector { 550 } //R#182
+ PY:intvector { 77 } //R#183
+ QA:intvector { 282 } //R#184
+ RE:intvector { 495 } //R#185
+ RO:intvector { 422 } //R#186
+ RS:intvector { 418 } //R#187
+ RU:intvector { 226, 254, 260, 265, 271, 276, 277, 290, 308, 309, 310, 433, 444, 452, 467, 601 } //R#188
RW:intvector { 33 } //R#189
- SA:intvector { 283 } //R#190
- SB:intvector { 533, 566 } //R#191
- SC:intvector { 489 } //R#192
+ SA:intvector { 285 } //R#190
+ SB:intvector { 535, 568 } //R#191
+ SC:intvector { 491 } //R#192
SD:intvector { 32 } //R#193
- SE:intvector { 456 } //R#194
- SG:intvector { 292, 567 } //R#195
- SH:intvector { 320 } //R#196
- SI:intvector { 434 } //R#197
- SJ:intvector { 220 } //R#198
- SK:intvector { 418 } //R#199
+ SE:intvector { 458 } //R#194
+ SG:intvector { 294, 569 } //R#195
+ SH:intvector { 322 } //R#196
+ SI:intvector { 436 } //R#197
+ SJ:intvector { 222 } //R#198
+ SK:intvector { 420 } //R#199
SL:intvector { 27 } //R#200
- SM:intvector { 451 } //R#201
+ SM:intvector { 453 } //R#201
SN:intvector { 22 } //R#202
SO:intvector { 45 } //R#203
- SR:intvector { 172 } //R#204
+ SR:intvector { 173 } //R#204
ST:intvector { 53 } //R#205
- SV:intvector { 110 } //R#206
- SY:intvector { 242 } //R#207
+ SV:intvector { 111 } //R#206
+ SY:intvector { 244 } //R#207
SZ:intvector { 44 } //R#208
- TC:intvector { 117 } //R#209
+ TC:intvector { 118 } //R#209
TD:intvector { 48 } //R#210
- TF:intvector { 488 } //R#211
+ TF:intvector { 490 } //R#211
TG:intvector { 37 } //R#212
- TH:intvector { 232 } //R#213
- TJ:intvector { 246 } //R#214
- TK:intvector { 528 } //R#215
- TL:intvector { 244 } //R#216
- TM:intvector { 227, 228 } //R#217
+ TH:intvector { 234 } //R#213
+ TJ:intvector { 248 } //R#214
+ TK:intvector { 530 } //R#215
+ TL:intvector { 246 } //R#216
+ TM:intvector { 229, 230 } //R#217
TN:intvector { 56 } //R#218
- TO:intvector { 557 } //R#219
- TR:intvector { 253, 429, 581 } //R#220
- TT:intvector { 175 } //R#221
- TV:intvector { 530 } //R#222
- TW:intvector { 293, 564 } //R#223
+ TO:intvector { 559 } //R#219
+ TR:intvector { 255, 431, 583 } //R#220
+ TT:intvector { 176 } //R#221
+ TV:intvector { 532 } //R#222
+ TW:intvector { 295, 566 } //R#223
TZ:intvector { 23 } //R#224
- UA:intvector { 432, 453, 460, 468 } //R#225
+ UA:intvector { 434, 455, 462, 470 } //R#225
UG:intvector { 31 } //R#226
- UM:intvector { 536, 542, 559 } //R#227
- US:intvector { 4, 58, 59, 78, 86, 95, 105, 106, 112, 126, 127, 128, 129, 130, 131, 132, 133, 134, 139, 140, 141, 142, 145, 146, 154, 164, 166, 168, 169, 173, 190, 208, 354, 480, 515, 517, 520, 535, 571, 573, 576, 578, 580, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594 } //R#228
- UY:intvector { 160 } //R#229
- UZ:intvector { 289, 294 } //R#230
- VA:intvector { 462 } //R#231
- VC:intvector { 196 } //R#232
- VE:intvector { 91 } //R#233
- VG:intvector { 203 } //R#234
- VI:intvector { 195, 205 } //R#235
- VN:intvector { 249, 287, 598 } //R#236
- VU:intvector { 526 } //R#237
- WF:intvector { 560 } //R#238
- WS:intvector { 502, 522 } //R#239
- YE:intvector { 221 } //R#240
- YT:intvector { 492 } //R#241
+ UM:intvector { 538, 544, 561 } //R#227
+ US:intvector { 4, 58, 59, 79, 87, 96, 106, 107, 113, 127, 128, 129, 130, 131, 132, 133, 134, 135, 140, 141, 142, 143, 146, 147, 155, 165, 167, 169, 170, 174, 192, 210, 356, 482, 517, 519, 522, 537, 573, 575, 578, 580, 582, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596 } //R#228
+ UY:intvector { 161 } //R#229
+ UZ:intvector { 291, 296 } //R#230
+ VA:intvector { 464 } //R#231
+ VC:intvector { 198 } //R#232
+ VE:intvector { 92 } //R#233
+ VG:intvector { 205 } //R#234
+ VI:intvector { 197, 207 } //R#235
+ VN:intvector { 251, 289, 600 } //R#236
+ VU:intvector { 528 } //R#237
+ WF:intvector { 562 } //R#238
+ WS:intvector { 504, 524 } //R#239
+ YE:intvector { 223 } //R#240
+ YT:intvector { 494 } //R#241
ZA:intvector { 30 } //R#242
ZM:intvector { 40 } //R#243
- ZW:intvector { 29, 351 } //R#244
+ ZW:intvector { 29, 353 } //R#244
}
}
Modified: trunk/source/data/translit/root.txt
===================================================================
--- trunk/source/data/translit/root.txt 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/data/translit/root.txt 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
// ***************************************************************************
// *
-// * Copyright (C) 2004-2007, International Business Machines
+// * Copyright (C) 2004-2008, International Business Machines
// * Corporation; Unicode, Inc.; and others. All Rights Reserved.
// *
// ***************************************************************************
Modified: trunk/source/i18n/Makefile.in
===================================================================
--- trunk/source/i18n/Makefile.in 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/Makefile.in 2009-02-07 10:08:34 UTC (rev 162)
@@ -80,7 +80,7 @@
ulocdata.o measfmt.o currfmt.o curramt.o currunit.o measure.o utmscale.o \
csdetect.o csmatch.o csr2022.o csrecog.o csrmbcs.o csrsbcs.o csrucode.o csrutf8.o inputext.o \
windtfmt.o winnmfmt.o basictz.o dtrule.o rbtz.o tzrule.o tztrans.o vtzone.o \
-zonemeta.o zstrfmt.o plurrule.o plurfmt.o dtitvfmt.o dtitvinf.o
+zonemeta.o zstrfmt.o plurrule.o plurfmt.o dtitvfmt.o dtitvinf.o colldata.o bmsearch.o bms.o
## Header files to install
HEADERS = $(srcdir)/unicode/*.h
Added: trunk/source/i18n/bms.cpp
===================================================================
--- trunk/source/i18n/bms.cpp (rev 0)
+++ trunk/source/i18n/bms.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -0,0 +1,145 @@
+/*
+ * Copyright (C) 2008-2009, International Business Machines Corporation and Others.
+ * All rights reserved.
+ */
+
+#include "unicode/utypes.h"
+#include "cmemory.h"
+#include "unicode/bms.h"
+#include "unicode/unistr.h"
+#include "unicode/colldata.h"
+#include "unicode/bmsearch.h"
+
+//#define USE_SAFE_CASTS
+#ifdef USE_SAFE_CASTS
+#define STATIC_CAST(type,value) static_cast<type>(value)
+#define CONST_CAST(type,value) const_cast<type>(value)
+#else
+#define STATIC_CAST(type,value) (type) (value)
+#define CONST_CAST(type,value) (type) (value)
+#endif
+
+U_CAPI UCD * U_EXPORT2
+ucd_open(UCollator *coll, UErrorCode *status)
+{
+ return STATIC_CAST(UCD *, CollData::open(coll, *status));
+}
+
+U_CAPI void U_EXPORT2
+ucd_close(UCD *ucd)
+{
+ CollData *data = STATIC_CAST(CollData *, ucd);
+
+ CollData::close(data);
+}
+
+U_CAPI UCollator * U_EXPORT2
+ucd_getCollator(UCD *ucd)
+{
+ CollData *data = STATIC_CAST(CollData *, ucd);
+
+ return data->getCollator();
+}
+
+U_CAPI void U_EXPORT2
+ucd_freeCache()
+{
+ CollData::freeCollDataCache();
+}
+
+U_CAPI void U_EXPORT2
+ucd_flushCache()
+{
+ CollData::flushCollDataCache();
+}
+
+struct BMS
+{
+ BoyerMooreSearch *bms;
+ const UnicodeString *targetString;
+};
+
+U_CAPI BMS * U_EXPORT2
+bms_open(UCD *ucd,
+ const UChar *pattern, int32_t patternLength,
+ const UChar *target, int32_t targetLength,
+ UErrorCode *status)
+{
+ BMS *bms = STATIC_CAST(BMS *, uprv_malloc(sizeof(BMS)));
+
+ if (bms == NULL) {
+ *status = U_MEMORY_ALLOCATION_ERROR;
+ return NULL;
+ }
+
+ CollData *data = (CollData *) ucd;
+ UnicodeString patternString(pattern, patternLength);
+
+ if (target != NULL) {
+ bms->targetString = new UnicodeString(target, targetLength);
+
+ if (bms->targetString == NULL) {
+ bms->bms = NULL;
+ *status = U_MEMORY_ALLOCATION_ERROR;
+ return bms;
+ }
+ } else {
+ bms->targetString = NULL;
+ }
+
+ bms->bms = new BoyerMooreSearch(data, patternString, bms->targetString, *status);
+
+ if (bms->bms == NULL) {
+ *status = U_MEMORY_ALLOCATION_ERROR;
+ }
+
+ return bms;
+}
+
+U_CAPI void U_EXPORT2
+bms_close(BMS *bms)
+{
+ delete bms->bms;
+
+ delete bms->targetString;
+
+ uprv_free(bms);
+}
+
+U_CAPI UBool U_EXPORT2
+bms_empty(BMS *bms)
+{
+ return bms->bms->empty();
+}
+
+U_CAPI UCD * U_EXPORT2
+bms_getData(BMS *bms)
+{
+ return STATIC_CAST(UCD *, bms->bms->getData());
+}
+
+U_CAPI UBool U_EXPORT2
+bms_search(BMS *bms, int32_t offset, int32_t *start, int32_t *end)
+{
+ return bms->bms->search(offset, *start, *end);
+}
+
+U_CAPI void U_EXPORT2
+bms_setTargetString(BMS *bms, const UChar *target, int32_t targetLength, UErrorCode *status)
+{
+ if (U_FAILURE(*status)) {
+ return;
+ }
+
+ if (bms->targetString != NULL) {
+ delete bms->targetString;
+ }
+
+ if (target != NULL) {
+ bms->targetString = new UnicodeString(target, targetLength);
+ } else {
+ bms->targetString = NULL;
+ }
+
+ bms->bms->setTargetString(bms->targetString, *status);
+}
Added: trunk/source/i18n/bmsearch.cpp
===================================================================
--- trunk/source/i18n/bmsearch.cpp (rev 0)
+++ trunk/source/i18n/bmsearch.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -0,0 +1,864 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines *
+ * Corporation and others. All Rights Reserved. *
+ ******************************************************************************
+ */
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_COLLATION
+
+#include "unicode/unistr.h"
+#include "unicode/putil.h"
+#include "unicode/usearch.h"
+
+#include "cmemory.h"
+#include "unicode/coll.h"
+#include "unicode/tblcoll.h"
+#include "unicode/coleitr.h"
+#include "unicode/ucoleitr.h"
+
+#include "unicode/regex.h" // TODO: make conditional on regexp being built.
+
+#include "unicode/uniset.h"
+#include "unicode/uset.h"
+#include "unicode/ustring.h"
+#include "hash.h"
+#include "uhash.h"
+#include "ucol_imp.h"
+#include "unormimp.h"
+
+#include "unicode/colldata.h"
+#include "unicode/bmsearch.h"
+
+U_NAMESPACE_BEGIN
+
+#define ARRAY_SIZE(array) (sizeof(array)/sizeof(array[0]))
+#define NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type))
+#define DELETE_ARRAY(array) uprv_free((void *) (array))
+
+
+struct CEI
+{
+ uint32_t order;
+ int32_t lowOffset;
+ int32_t highOffset;
+};
+
+class Target : public UMemory
+{
+public:
+ Target(UCollator *theCollator, const UnicodeString *target, int32_t patternLength, UErrorCode &status);
+ ~Target();
+
+ void setTargetString(const UnicodeString *target);
+
+ const CEI *nextCE(int32_t offset);
+ const CEI *prevCE(int32_t offset);
+
+ int32_t stringLength();
+ UChar charAt(int32_t offset);
+
+ UBool isBreakBoundary(int32_t offset);
+ int32_t nextBreakBoundary(int32_t offset);
+ int32_t nextSafeBoundary(int32_t offset);
+
+ UBool isIdentical(UnicodeString &pattern, int32_t start, int32_t end);
+
+ void setOffset(int32_t offset);
+ void setLast(int32_t last);
+ int32_t getOffset();
+
+private:
+ CEI *ceb;
+ int32_t bufferSize;
+ int32_t bufferMin;
+ int32_t bufferMax;
+
+ uint32_t strengthMask;
+ UCollationStrength strength;
+ uint32_t variableTop;
+ UBool toShift;
+ UCollator *coll;
+
+ const UnicodeString *targetString;
+ const UChar *targetBuffer;
+ int32_t targetLength;
+
+ UCollationElements *elements;
+ UBreakIterator *charBreakIterator;
+};
+
+Target::Target(UCollator *theCollator, const UnicodeString *target, int32_t patternLength, UErrorCode &status)
+ : bufferSize(0), bufferMin(0), bufferMax(0),
+ strengthMask(0), strength(UCOL_PRIMARY), variableTop(0), toShift(FALSE), coll(theCollator),
+ targetString(NULL), targetBuffer(NULL), targetLength(0), elements(NULL), charBreakIterator(NULL)
+{
+ strength = ucol_getStrength(coll);
+ toShift = ucol_getAttribute(coll, UCOL_ALTERNATE_HANDLING, &status) == UCOL_SHIFTED;
+ variableTop = ucol_getVariableTop(coll, &status);
+
+ // find the largest expansion
+ uint8_t maxExpansion = 0;
+ for (const uint8_t *expansion = coll->expansionCESize; *expansion != 0; expansion += 1) {
+ if (*expansion > maxExpansion) {
+ maxExpansion = *expansion;
+ }
+ }
+
+ // room for an extra character on each end, plus 4 for safety
+ bufferSize = patternLength + (2 * maxExpansion) + 4;
+
+ ceb = NEW_ARRAY(CEI, bufferSize);
+
+ if (ceb == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ if (target != NULL) {
+ setTargetString(target);
+ }
+
+ switch (strength)
+ {
+ default:
+ strengthMask |= UCOL_TERTIARYORDERMASK;
+ /* fall through */
+
+ case UCOL_SECONDARY:
+ strengthMask |= UCOL_SECONDARYORDERMASK;
+ /* fall through */
+
+ case UCOL_PRIMARY:
+ strengthMask |= UCOL_PRIMARYORDERMASK;
+ }
+}
+
+Target::~Target()
+{
+ ubrk_close(charBreakIterator);
+ ucol_closeElements(elements);
+
+ DELETE_ARRAY(ceb);
+}
+
+void Target::setTargetString(const UnicodeString *target)
+{
+ if (charBreakIterator != NULL) {
+ ubrk_close(charBreakIterator);
+ ucol_closeElements(elements);
+ }
+
+ targetString = target;
+
+ if (targetString != NULL) {
+ UErrorCode status = U_ZERO_ERROR;
+
+ targetBuffer = targetString->getBuffer();
+ targetLength = targetString->length();
+
+ elements = ucol_openElements(coll, target->getBuffer(), target->length(), &status);
+ ucol_forceHanImplicit(elements, &status);
+
+ charBreakIterator = ubrk_open(UBRK_CHARACTER, ucol_getLocale(coll, ULOC_VALID_LOCALE, &status),
+ targetBuffer, targetLength, &status);
+ } else {
+ targetBuffer = NULL;
+ targetLength = 0;
+ }
+}
+
+const CEI *Target::nextCE(int32_t offset)
+{
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t low = -1, high = -1;
+ uint32_t order;
+ UBool cont = FALSE;
+
+ if (offset >= bufferMin && offset < bufferMax) {
+ return &ceb[offset];
+ }
+
+ if (bufferMax >= bufferSize || offset != bufferMax) {
+ return NULL;
+ }
+
+ do {
+ low = ucol_getOffset(elements);
+ order = ucol_next(elements, &status);
+ high = ucol_getOffset(elements);
+
+ if (order == UCOL_NULLORDER) {
+ //high = low = -1;
+ break;
+ }
+
+ cont = isContinuation(order);
+ order &= strengthMask;
+
+ if (toShift && variableTop > order && (order & UCOL_PRIMARYORDERMASK) != 0) {
+ if (strength >= UCOL_QUATERNARY) {
+ order &= UCOL_PRIMARYORDERMASK;
+ } else {
+ order = UCOL_IGNORABLE;
+ }
+ }
+ } while (order == UCOL_IGNORABLE);
+
+ if (cont) {
+ order |= UCOL_CONTINUATION_MARKER;
+ }
+
+ ceb[offset].order = order;
+ ceb[offset].lowOffset = low;
+ ceb[offset].highOffset = high;
+
+ bufferMax += 1;
+
+ return &ceb[offset];
+}
+
+const CEI *Target::prevCE(int32_t offset)
+{
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t low = -1, high = -1;
+ uint32_t order;
+ UBool cont = FALSE;
+
+ if (offset >= bufferMin && offset < bufferMax) {
+ return &ceb[offset];
+ }
+
+ if (bufferMax >= bufferSize || offset != bufferMax) {
+ return NULL;
+ }
+
+ do {
+ high = ucol_getOffset(elements);
+ order = ucol_previous(elements, &status);
+ low = ucol_getOffset(elements);
+
+ if (order == UCOL_NULLORDER) {
+ break;
+ }
+
+ cont = isContinuation(order);
+ order &= strengthMask;
+
+ if (toShift && variableTop > order && (order & UCOL_PRIMARYORDERMASK) != 0) {
+ if (strength >= UCOL_QUATERNARY) {
+ order &= UCOL_PRIMARYORDERMASK;
+ } else {
+ order = UCOL_IGNORABLE;
+ }
+ }
+ } while (order == UCOL_IGNORABLE);
+
+ bufferMax += 1;
+
+ if (cont) {
+ order |= UCOL_CONTINUATION_MARKER;
+ }
+
+ ceb[offset].order = order;
+ ceb[offset].lowOffset = low;
+ ceb[offset].highOffset = high;
+
+ return &ceb[offset];
+}
+
+int32_t Target::stringLength()
+{
+ if (targetString != NULL) {
+ return targetLength;
+ }
+
+ return 0;
+}
+
+UChar Target::charAt(int32_t offset)
+{
+ if (targetString != NULL) {
+ return targetBuffer[offset];
+ }
+
+ return 0x0000;
+}
+
+void Target::setOffset(int32_t offset)
+{
+ UErrorCode status = U_ZERO_ERROR;
+
+ bufferMin = 0;
+ bufferMax = 0;
+
+ ucol_setOffset(elements, offset, &status);
+}
+
+void Target::setLast(int32_t last)
+{
+ UErrorCode status = U_ZERO_ERROR;
+
+ bufferMin = 0;
+ bufferMax = 1;
+
+ ceb[0].order = UCOL_NULLORDER;
+ ceb[0].lowOffset = last;
+ ceb[0].highOffset = last;
+
+ ucol_setOffset(elements, last, &status);
+}
+
+int32_t Target::getOffset()
+{
+ return ucol_getOffset(elements);
+}
+
+UBool Target::isBreakBoundary(int32_t offset)
+{
+ return ubrk_isBoundary(charBreakIterator, offset);
+}
+
+int32_t Target::nextBreakBoundary(int32_t offset)
+{
+ return ubrk_following(charBreakIterator, offset);
+}
+
+int32_t Target::nextSafeBoundary(int32_t offset)
+{
+ while (offset < targetLength) {
+ //UChar ch = charAt(offset);
+ UChar ch = targetBuffer[offset];
+
+ if (U_IS_LEAD(ch) || ! ucol_unsafeCP(ch, coll)) {
+ return offset;
+ }
+
+ offset += 1;
+ }
+
+ return targetLength;
+}
+
+UBool Target::isIdentical(UnicodeString &pattern, int32_t start, int32_t end)
+{
+ if (strength < UCOL_IDENTICAL) {
+ return TRUE;
+ }
+
+ UChar t2[32], p2[32];
+ const UChar *pBuffer = pattern.getBuffer();
+ int32_t pLength = pattern.length();
+ int32_t length = end - start;
+
+ UErrorCode status = U_ZERO_ERROR, status2 = U_ZERO_ERROR;
+
+ int32_t decomplength = unorm_decompose(t2, ARRAY_SIZE(t2),
+ targetBuffer + start, length,
+ FALSE, 0, &status);
+
+ // use separate status2 in case of buffer overflow
+ if (decomplength != unorm_decompose(p2, ARRAY_SIZE(p2),
+ pBuffer, pLength,
+ FALSE, 0, &status2)) {
+ return FALSE; // lengths are different
+ }
+
+ // compare contents
+ UChar *text, *pat;
+
+ if(U_SUCCESS(status)) {
+ text = t2;
+ pat = p2;
+ } else if(status == U_BUFFER_OVERFLOW_ERROR) {
+ status = U_ZERO_ERROR;
+
+ // allocate one buffer for both decompositions
+ text = NEW_ARRAY(UChar, decomplength * 2);
+
+ // Check for allocation failure.
+ if (text == NULL) {
+ return FALSE;
+ }
+
+ pat = text + decomplength;
+
+ unorm_decompose(text, decomplength, targetBuffer + start,
+ length, FALSE, 0, &status);
+
+ unorm_decompose(pat, decomplength, pBuffer,
+ pLength, FALSE, 0, &status);
+ } else {
+ // NFD failed, make sure that u_memcmp() does not overrun t2 & p2
+ // and that we don't uprv_free() an undefined text pointer
+ text = pat = t2;
+ decomplength = 0;
+ }
+
+ UBool result = (UBool)(u_memcmp(pat, text, decomplength) == 0);
+
+ if(text != t2) {
+ DELETE_ARRAY(text);
+ }
+
+ // return FALSE if NFD failed
+ return U_SUCCESS(status) && result;
+}
+
+#define HASH_TABLE_SIZE 257
+
+class BadCharacterTable : public UMemory
+{
+public:
+ BadCharacterTable(CEList &patternCEs, CollData *data, UErrorCode &status);
+ ~BadCharacterTable();
+
+ int32_t operator[](uint32_t ce) const;
+ int32_t getMaxSkip() const;
+ int32_t minLengthInChars(int32_t index);
+
+private:
+ static int32_t hash(uint32_t ce);
+
+ int32_t maxSkip;
+ int32_t badCharacterTable[HASH_TABLE_SIZE];
+
+ int32_t *minLengthCache;
+};
+
+BadCharacterTable::BadCharacterTable(CEList &patternCEs, CollData *data, UErrorCode &status)
+ : minLengthCache(NULL)
+{
+ int32_t plen = patternCEs.size();
+
+ // **** need a better way to deal with this ****
+ if (U_FAILURE(status) || plen == 0) {
+ return;
+ }
+
+ int32_t *history = NEW_ARRAY(int32_t, plen);
+
+ if (history == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ for (int32_t i = 0; i < plen; i += 1) {
+ history[i] = -1;
+ }
+
+ minLengthCache = NEW_ARRAY(int32_t, plen + 1);
+
+ if (minLengthCache == NULL) {
+ DELETE_ARRAY(history);
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ maxSkip = minLengthCache[0] = data->minLengthInChars(&patternCEs, 0, history);
+
+ for(int32_t j = 0; j < HASH_TABLE_SIZE; j += 1) {
+ badCharacterTable[j] = maxSkip;
+ }
+
+ for(int32_t p = 1; p < plen; p += 1) {
+ minLengthCache[p] = data->minLengthInChars(&patternCEs, p, history);
+
+ // Make sure this entry is not bigger than the previous one.
+ // Otherwise, we might skip too far in some cases.
+ if (minLengthCache[p] < 0 || minLengthCache[p] > minLengthCache[p - 1]) {
+ minLengthCache[p] = minLengthCache[p - 1];
+ }
+ }
+
+ minLengthCache[plen] = 0;
+
+ for(int32_t p = 0; p < plen - 1; p += 1) {
+ badCharacterTable[hash(patternCEs[p])] = minLengthCache[p + 1];
+ }
+
+ DELETE_ARRAY(history);
+}
+
+BadCharacterTable::~BadCharacterTable()
+{
+ DELETE_ARRAY(minLengthCache);
+}
+
+int32_t BadCharacterTable::operator[](uint32_t ce) const
+{
+ return badCharacterTable[hash(ce)];
+}
+
+int32_t BadCharacterTable::getMaxSkip() const
+{
+ return maxSkip;
+}
+
+int32_t BadCharacterTable::minLengthInChars(int32_t index)
+{
+ return minLengthCache[index];
+}
+
+int32_t BadCharacterTable::hash(uint32_t ce)
+{
+ return UCOL_PRIMARYORDER(ce) % HASH_TABLE_SIZE;
+}
+
+class GoodSuffixTable : public UMemory
+{
+public:
+ GoodSuffixTable(CEList &patternCEs, BadCharacterTable &badCharacterTable, UErrorCode &status);
+ ~GoodSuffixTable();
+
+ int32_t operator[](int32_t offset) const;
+
+private:
+ int32_t *goodSuffixTable;
+};
+
+GoodSuffixTable::GoodSuffixTable(CEList &patternCEs, BadCharacterTable &badCharacterTable, UErrorCode &status)
+ : goodSuffixTable(NULL)
+{
+ int32_t patlen = patternCEs.size();
+
+ // **** need a better way to deal with this ****
+ if (U_FAILURE(status) || patlen <= 0) {
+ return;
+ }
+
+ int32_t *suff = NEW_ARRAY(int32_t, patlen);
+ int32_t start = patlen - 1, end = - 1;
+ int32_t maxSkip = badCharacterTable.getMaxSkip();
+
+ if (suff == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ // initialze suff
+ suff[patlen - 1] = patlen;
+
+ for (int32_t i = patlen - 2; i >= 0; i -= 1) {
+ // (i > start) means we're inside the last suffix match we found
+ // ((patlen - 1) - end) is how far the end of that match is from end of pattern
+ // (i - start) is how far we are from start of that match
+ // (i + (patlen - 1) - end) is index of same character at end of pattern
+ // so if any suffix match at that character doesn't extend beyond the last match,
+ // it's the suffix for this character as well
+ if (i > start && suff[i + patlen - 1 - end] < i - start) {
+ suff[i] = suff[i + patlen - 1 - end];
+ } else {
+ start = end = i;
+
+ int32_t s = patlen;
+
+ while (start >= 0 && patternCEs[start] == patternCEs[--s]) {
+ start -= 1;
+ }
+
+ suff[i] = end - start;
+ }
+ }
+
+ // now build goodSuffixTable
+ goodSuffixTable = NEW_ARRAY(int32_t, patlen);
+
+ if (goodSuffixTable == NULL) {
+ DELETE_ARRAY(suff);
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+
+ // initialize entries to minLengthInChars of the pattern
+ for (int32_t i = 0; i < patlen; i += 1) {
+ goodSuffixTable[i] = maxSkip;
+ }
+
+ int32_t prefix = 0;
+
+ for (int32_t i = patlen - /*1*/ 2; i >= 0; i -= 1) {
+ if (suff[i] == i + 1) {
+ // this matching suffix is a prefix of the pattern
+ int32_t prefixSkip = badCharacterTable.minLengthInChars(i + 1);
+
+ // for any mis-match before this suffix, we should skip
+ // so that the front of the pattern (i.e. the prefix)
+ // lines up with the front of the suffix.
+ // (patlen - 1 - i) is the start of the suffix
+ while (prefix < patlen - 1 - i) {
+ // value of maxSkip means never set...
+ if (goodSuffixTable[prefix] == maxSkip) {
+ goodSuffixTable[prefix] = prefixSkip;
+ }
+
+ prefix += 1;
+ }
+ }
+ }
+
+ for (int32_t i = 0; i < patlen - 1; i += 1) {
+ goodSuffixTable[patlen - 1 - suff[i]] = badCharacterTable.minLengthInChars(i + 1);
+ }
+
+ DELETE_ARRAY(suff);
+}
+
+GoodSuffixTable::~GoodSuffixTable()
+{
+ DELETE_ARRAY(goodSuffixTable);
+}
+
+int32_t GoodSuffixTable::operator[](int32_t offset) const
+{
+ return goodSuffixTable[offset];
+}
+
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(BoyerMooreSearch)
+
+
+UBool BoyerMooreSearch::empty()
+{
+ return patCEs->size() <= 0;
+}
+
+CollData *BoyerMooreSearch::getData()
+{
+ return data;
+}
+
+CEList *BoyerMooreSearch::getPatternCEs()
+{
+ return patCEs;
+}
+
+BadCharacterTable *BoyerMooreSearch::getBadCharacterTable()
+{
+ return badCharacterTable;
+}
+
+GoodSuffixTable *BoyerMooreSearch::getGoodSuffixTable()
+{
+ return goodSuffixTable;
+}
+
+BoyerMooreSearch::BoyerMooreSearch(CollData *theData, const UnicodeString &patternString, const UnicodeString *targetString,
+ UErrorCode &status)
+ : data(theData), patCEs(NULL), badCharacterTable(NULL), goodSuffixTable(NULL), pattern(patternString), target(NULL)
+{
+
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ UCollator *collator = data->getCollator();
+
+ patCEs = new CEList(collator, patternString, status);
+
+ if (patCEs == NULL || U_FAILURE(status)) {
+ return;
+ }
+
+ badCharacterTable = new BadCharacterTable(*patCEs, data, status);
+
+ if (badCharacterTable == NULL || U_FAILURE(status)) {
+ return;
+ }
+
+ goodSuffixTable = new GoodSuffixTable(*patCEs, *badCharacterTable, status);
+
+ if (targetString != NULL) {
+ target = new Target(collator, targetString, patCEs->size(), status);
+ }
+}
+
+BoyerMooreSearch::~BoyerMooreSearch()
+{
+ delete target;
+ delete goodSuffixTable;
+ delete badCharacterTable;
+ delete patCEs;
+}
+
+void BoyerMooreSearch::setTargetString(const UnicodeString *targetString, UErrorCode &status)
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ if (target == NULL) {
+ target = new Target(data->getCollator(), targetString, patCEs->size(), status);
+ } else {
+ target->setTargetString(targetString);
+ }
+}
+
+// **** main flow of this code from Laura Werner's "Unicode Text Searching in Java" paper. ****
+/*
+ * TODO:
+ * * deal with trailing (and leading?) ignorables.
+ * * Adding BoyerMooreSearch object slowed it down. How can we speed it up?
+ */
+UBool BoyerMooreSearch::search(int32_t offset, int32_t &start, int32_t &end)
+{
+ UCollator *coll = data->getCollator();
+ int32_t plen = patCEs->size();
+ int32_t tlen = target->stringLength();
+ int32_t maxSkip = badCharacterTable->getMaxSkip();
+ int32_t tOffset = offset + maxSkip;
+
+ if (plen <= 0) {
+ // Searching for a zero length pattern always fails.
+ start = end = -1;
+ return FALSE;
+ }
+
+ while (tOffset <= tlen) {
+ int32_t pIndex = plen - 1;
+ int32_t tIndex = 0;
+ int32_t lIndex = 0;
+
+ if (tOffset < tlen) {
+ // **** we really want to skip ahead enough to ****
+ // **** be sure we get at least 1 non-ignorable ****
+ // **** CE after the end of the pattern. ****
+ int32_t next = target->nextSafeBoundary(tOffset + 1);
+
+ target->setOffset(next);
+
+ for (lIndex = 0; ; lIndex += 1) {
+ const CEI *cei = target->prevCE(lIndex);
+ int32_t low = cei->lowOffset;
+ int32_t high = cei->highOffset;
+
+ if (high == 0 || (low < high && low <= tOffset)) {
+ if (low < tOffset) {
+ while (lIndex >= 0 && target->prevCE(lIndex)->highOffset == high) {
+ lIndex -= 1;
+ }
+
+ if (high > tOffset) {
+ tOffset = high;
+ }
+ }
+
+ break;
+ }
+ }
+ } else {
+ target->setLast(tOffset);
+ lIndex = 0;
+ }
+
+ tIndex = ++lIndex;
+
+ // Iterate backward until we hit the beginning of the pattern
+ while (pIndex >= 0) {
+ uint32_t pce = (*patCEs)[pIndex];
+ const CEI *tcei = target->prevCE(tIndex++);
+
+
+ if (tcei->order != pce) {
+ // There is a mismatch at this position. Decide how far
+ // over to shift the pattern, then try again.
+
+ int32_t gsOffset = tOffset + (*goodSuffixTable)[pIndex];
+#ifdef EXTRA_CAUTIOUS
+ int32_t old = tOffset;
+#endif
+
+ tOffset += (*badCharacterTable)[tcei->order] - badCharacterTable->minLengthInChars(pIndex + 1);
+
+ if (gsOffset > tOffset) {
+ tOffset = gsOffset;
+ }
+
+#ifdef EXTRA_CAUTIOUS
+ // Make sure we don't skip backwards...
+ if (tOffset <= old) {
+ tOffset = old + 1;
+ }
+#endif
+
+ break;
+ }
+
+ pIndex -= 1;
+ }
+
+ if (pIndex < 0) {
+ // We made it back to the beginning of the pattern,
+ // which means we matched it all. Return the location.
+ const CEI firstCEI = *target->prevCE(tIndex - 1);
+ const CEI lastCEI = *target->prevCE(lIndex);
+ int32_t mStart = firstCEI.lowOffset;
+ int32_t minLimit = lastCEI.lowOffset;
+ int32_t maxLimit = lastCEI.highOffset;
+ int32_t mLimit;
+ UBool found = TRUE;
+
+ target->setOffset(/*tOffset*/maxLimit);
+
+ const CEI nextCEI = *target->nextCE(0);
+
+ if (nextCEI.lowOffset > maxLimit) {
+ maxLimit = nextCEI.lowOffset;
+ }
+
+ if (nextCEI.lowOffset == nextCEI.highOffset && nextCEI.order != UCOL_NULLORDER) {
+ found = FALSE;
+ }
+
+ if (! target->isBreakBoundary(mStart)) {
+ found = FALSE;
+ }
+
+ if (firstCEI.lowOffset == firstCEI.highOffset) {
+ found = FALSE;
+ }
+
+ mLimit = maxLimit;
+ if (minLimit < maxLimit) {
+ int32_t nbb = target->nextBreakBoundary(minLimit);
+
+ if (nbb >= lastCEI.highOffset) {
+ mLimit = nbb;
+ }
+ }
+
+ if (mLimit > maxLimit) {
+ found = FALSE;
+ }
+
+ if (! target->isBreakBoundary(mLimit)) {
+ found = FALSE;
+ }
+
+ if (! target->isIdentical(pattern, mStart, mLimit)) {
+ found = FALSE;
+ }
+
+ if (found) {
+ start = mStart;
+ end = mLimit;
+
+ return TRUE;
+ }
+
+ tOffset += (*goodSuffixTable)[0]; // really? Maybe += 1 or += maxSkip?
+ }
+ // Otherwise, we're here because of a mismatch, so keep going....
+ }
+
+ // no match
+ start = -1;
+ end = -1;
+ return FALSE;
+}
+
+U_NAMESPACE_END
+
+#endif // #if !UCONFIG_NO_COLLATION
Added: trunk/source/i18n/colldata.cpp
===================================================================
--- trunk/source/i18n/colldata.cpp (rev 0)
+++ trunk/source/i18n/colldata.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -0,0 +1,1104 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines *
+ * Corporation and others. All Rights Reserved. *
+ ******************************************************************************
+ */
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_COLLATION
+
+#include "unicode/unistr.h"
+#include "unicode/putil.h"
+#include "unicode/usearch.h"
+
+#include "cmemory.h"
+#include "unicode/coll.h"
+#include "unicode/tblcoll.h"
+#include "unicode/coleitr.h"
+#include "unicode/ucoleitr.h"
+
+#include "unicode/regex.h" // TODO: make conditional on regexp being built.
+
+#include "unicode/uniset.h"
+#include "unicode/uset.h"
+#include "unicode/ustring.h"
+#include "hash.h"
+#include "uhash.h"
+#include "ucln_in.h"
+#include "ucol_imp.h"
+#include "umutex.h"
+
+#include "unicode/colldata.h"
+
+U_NAMESPACE_BEGIN
+
+#define ARRAY_SIZE(array) (sizeof(array)/sizeof(array[0]))
+#define NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type))
+#define DELETE_ARRAY(array) uprv_free((void *) (array))
+#define ARRAY_COPY(dst, src, count) uprv_memcpy((void *) (dst), (void *) (src), (count) * sizeof (src)[0])
+
+static inline USet *uset_openEmpty()
+{
+ return uset_open(1, 0);
+}
+
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CEList)
+
+#ifdef INSTRUMENT_CELIST
+int32_t CEList::_active = 0;
+int32_t CEList::_histogram[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+#endif
+
+CEList::CEList(UCollator *coll, const UnicodeString &string, UErrorCode &status)
+ : ces(NULL), listMax(CELIST_BUFFER_SIZE), listSize(0)
+{
+ UCollationElements *elems = ucol_openElements(coll, string.getBuffer(), string.length(), &status);
+ UCollationStrength strength = ucol_getStrength(coll);
+ UBool toShift = ucol_getAttribute(coll, UCOL_ALTERNATE_HANDLING, &status) == UCOL_SHIFTED;
+ uint32_t variableTop = ucol_getVariableTop(coll, &status);
+ uint32_t strengthMask = 0;
+ int32_t order;
+
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ // **** only set flag if string has Han(gul) ****
+ ucol_forceHanImplicit(elems, &status);
+
+ switch (strength)
+ {
+ default:
+ strengthMask |= UCOL_TERTIARYORDERMASK;
+ /* fall through */
+
+ case UCOL_SECONDARY:
+ strengthMask |= UCOL_SECONDARYORDERMASK;
+ /* fall through */
+
+ case UCOL_PRIMARY:
+ strengthMask |= UCOL_PRIMARYORDERMASK;
+ }
+
+#ifdef INSTRUMENT_CELIST
+ _active += 1;
+ _histogram[0] += 1;
+#endif
+
+ ces = ceBuffer;
+
+ while ((order = ucol_next(elems, &status)) != UCOL_NULLORDER) {
+ UBool cont = isContinuation(order);
+
+ order &= strengthMask;
+
+ if (toShift && variableTop > order && (order & UCOL_PRIMARYORDERMASK) != 0) {
+ if (strength >= UCOL_QUATERNARY) {
+ order &= UCOL_PRIMARYORDERMASK;
+ } else {
+ order = UCOL_IGNORABLE;
+ }
+ }
+
+ if (order == UCOL_IGNORABLE) {
+ continue;
+ }
+
+ if (cont) {
+ order |= UCOL_CONTINUATION_MARKER;
+ }
+
+ add(order, status);
+ }
+
+ ucol_closeElements(elems);
+}
+
+CEList::~CEList()
+{
+#ifdef INSTRUMENT_CELIST
+ _active -= 1;
+#endif
+
+ if (ces != ceBuffer) {
+ DELETE_ARRAY(ces);
+ }
+}
+
+void CEList::add(uint32_t ce, UErrorCode &status)
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ if (listSize >= listMax) {
+ int32_t newMax = listMax + CELIST_BUFFER_SIZE;
+
+#ifdef INSTRUMENT_CELIST
+ _histogram[listSize / CELIST_BUFFER_SIZE] += 1;
+#endif
+
+ uint32_t *newCEs = NEW_ARRAY(uint32_t, newMax);
+
+ if (newCEs == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ uprv_memcpy(newCEs, ces, listSize * sizeof(uint32_t));
+
+ if (ces != ceBuffer) {
+ DELETE_ARRAY(ces);
+ }
+
+ ces = newCEs;
+ listMax = newMax;
+ }
+
+ ces[listSize++] = ce;
+}
+
+uint32_t CEList::get(int32_t index) const
+{
+ if (index >= 0 && index < listSize) {
+ return ces[index];
+ }
+
+ return UCOL_NULLORDER;
+}
+
+uint32_t &CEList::operator[](int32_t index) const
+{
+ return ces[index];
+}
+
+UBool CEList::matchesAt(int32_t offset, const CEList *other) const
+{
+ if (other == NULL || listSize - offset < other->size()) {
+ return FALSE;
+ }
+
+ for (int32_t i = offset, j = 0; j < other->size(); i += 1, j += 1) {
+ if (ces[i] != (*other)[j]) {
+ return FALSE;
+ }
+ }
+
+ return TRUE;
+}
+
+int32_t CEList::size() const
+{
+ return listSize;
+}
+
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(StringList)
+
+#ifdef INSTRUMENT_STRING_LIST
+int32_t StringList::_lists = 0;
+int32_t StringList::_strings = 0;
+int32_t StringList::_histogram[101] = {0};
+#endif
+
+StringList::StringList(UErrorCode &status)
+ : strings(NULL), listMax(STRING_LIST_BUFFER_SIZE), listSize(0)
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ strings = new UnicodeString [listMax];
+
+ if (strings == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+#ifdef INSTRUMENT_STRING_LIST
+ _lists += 1;
+ _histogram[0] += 1;
+#endif
+}
+
+StringList::~StringList()
+{
+ delete[] strings;
+}
+
+void StringList::add(const UnicodeString *string, UErrorCode &status)
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+#ifdef INSTRUMENT_STRING_LIST
+ _strings += 1;
+#endif
+
+ if (listSize >= listMax) {
+ int32_t newMax = listMax + STRING_LIST_BUFFER_SIZE;
+
+ UnicodeString *newStrings = new UnicodeString[newMax];
+
+ uprv_memcpy(newStrings, strings, listSize * sizeof(UnicodeString));
+
+#ifdef INSTRUMENT_STRING_LIST
+ int32_t _h = listSize / STRING_LIST_BUFFER_SIZE;
+
+ if (_h > 100) {
+ _h = 100;
+ }
+
+ _histogram[_h] += 1;
+#endif
+
+ delete[] strings;
+ strings = newStrings;
+ listMax = newMax;
+ }
+
+ // The ctor initialized all the strings in
+ // the array to empty strings, so this
+ // is the same as copying the source string.
+ strings[listSize++].append(*string);
+}
+
+void StringList::add(const UChar *chars, int32_t count, UErrorCode &status)
+{
+ const UnicodeString string(chars, count);
+
+ add(&string, status);
+}
+
+const UnicodeString *StringList::get(int32_t index) const
+{
+ if (index >= 0 && index < listSize) {
+ return &strings[index];
+ }
+
+ return NULL;
+}
+
+int32_t StringList::size() const
+{
+ return listSize;
+}
+
+
+U_CFUNC void deleteStringList(void *obj);
+
+class CEToStringsMap : public UMemory
+{
+public:
+
+ CEToStringsMap(UErrorCode &status);
+ ~CEToStringsMap();
+
+ void put(uint32_t ce, UnicodeString *string, UErrorCode &status);
+ StringList *getStringList(uint32_t ce) const;
+
+private:
+
+ void putStringList(uint32_t ce, StringList *stringList, UErrorCode &status);
+ UHashtable *map;
+};
+
+CEToStringsMap::CEToStringsMap(UErrorCode &status)
+ : map(NULL)
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ map = uhash_open(uhash_hashLong, uhash_compareLong,
+ uhash_compareCaselessUnicodeString,
+ &status);
+
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ uhash_setValueDeleter(map, deleteStringList);
+}
+
+CEToStringsMap::~CEToStringsMap()
+{
+ uhash_close(map);
+}
+
+void CEToStringsMap::put(uint32_t ce, UnicodeString *string, UErrorCode &status)
+{
+ StringList *strings = getStringList(ce);
+
+ if (strings == NULL) {
+ strings = new StringList(status);
+
+ if (strings == NULL || U_FAILURE(status)) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return;
+ }
+
+ putStringList(ce, strings, status);
+ }
+
+ strings->add(string, status);
+}
+
+StringList *CEToStringsMap::getStringList(uint32_t ce) const
+{
+ return (StringList *) uhash_iget(map, ce);
+}
+
+void CEToStringsMap::putStringList(uint32_t ce, StringList *stringList, UErrorCode &status)
+{
+ uhash_iput(map, ce, (void *) stringList, &status);
+}
+
+U_CFUNC void deleteStringList(void *obj)
+{
+ StringList *strings = (StringList *) obj;
+
+ delete strings;
+}
+
+U_CFUNC void deleteCEList(void *obj);
+U_CFUNC void deleteUnicodeStringKey(void *obj);
+
+class StringToCEsMap : public UMemory
+{
+public:
+ StringToCEsMap(UErrorCode &status);
+ ~StringToCEsMap();
+
+ void put(const UnicodeString *string, const CEList *ces, UErrorCode &status);
+ const CEList *get(const UnicodeString *string);
+ void free(const CEList *list);
+
+private:
+
+
+ UHashtable *map;
+};
+
+StringToCEsMap::StringToCEsMap(UErrorCode &status)
+ : map(NULL)
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ map = uhash_open(uhash_hashUnicodeString,
+ uhash_compareUnicodeString,
+ uhash_compareLong,
+ &status);
+
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ uhash_setValueDeleter(map, deleteCEList);
+ uhash_setKeyDeleter(map, deleteUnicodeStringKey);
+}
+
+StringToCEsMap::~StringToCEsMap()
+{
+ uhash_close(map);
+}
+
+void StringToCEsMap::put(const UnicodeString *string, const CEList *ces, UErrorCode &status)
+{
+ uhash_put(map, (void *) string, (void *) ces, &status);
+}
+
+const CEList *StringToCEsMap::get(const UnicodeString *string)
+{
+ return (const CEList *) uhash_get(map, string);
+}
+
+U_CFUNC void deleteCEList(void *obj)
+{
+ CEList *list = (CEList *) obj;
+
+ delete list;
+}
+
+U_CFUNC void deleteUnicodeStringKey(void *obj)
+{
+ UnicodeString *key = (UnicodeString *) obj;
+
+ delete key;
+}
+
+class CollDataCacheEntry : public UMemory
+{
+public:
+ CollDataCacheEntry(CollData *theData);
+ ~CollDataCacheEntry();
+
+ CollData *data;
+ int32_t refCount;
+};
+
+CollDataCacheEntry::CollDataCacheEntry(CollData *theData)
+ : data(theData), refCount(1)
+{
+ // nothing else to do
+}
+
+CollDataCacheEntry::~CollDataCacheEntry()
+{
+ // check refCount?
+ delete data;
+}
+
+class CollDataCache : public UMemory
+{
+public:
+ CollDataCache(UErrorCode &status);
+ ~CollDataCache();
+
+ CollData *get(UCollator *collator, UErrorCode &status);
+ void unref(CollData *collData);
+
+ void flush();
+
+private:
+ static char *getKey(UCollator *collator, char *keyBuffer, int32_t *charBufferLength);
+ static void deleteKey(char *key);
+
+ UMTX lock;
+ UHashtable *cache;
+};
+
+U_CFUNC void deleteChars(void *obj)
+{
+ char *chars = (char *) obj;
+
+ // All the key strings are owned by the
+ // CollData objects and don't need to
+ // be freed here.
+ //DELETE_ARRAY(chars);
+}
+
+U_CFUNC void deleteCollDataCacheEntry(void *obj)
+{
+ CollDataCacheEntry *entry = (CollDataCacheEntry *) obj;
+
+ delete entry;
+}
+
+CollDataCache::CollDataCache(UErrorCode &status)
+ : lock(0), cache(NULL)
+{
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ umtx_init(&lock);
+
+ cache = uhash_open(uhash_hashChars, uhash_compareChars, uhash_compareLong, &status);
+
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ uhash_setValueDeleter(cache, deleteCollDataCacheEntry);
+ uhash_setKeyDeleter(cache, deleteChars);
+}
+
+CollDataCache::~CollDataCache()
+{
+ umtx_lock(&lock);
+ uhash_close(cache);
+ cache = NULL;
+ umtx_unlock(&lock);
+
+ umtx_destroy(&lock);
+}
+
+CollData *CollDataCache::get(UCollator *collator, UErrorCode &status)
+{
+ char keyBuffer[KEY_BUFFER_SIZE];
+ int32_t keyLength = KEY_BUFFER_SIZE;
+ char *key = getKey(collator, keyBuffer, &keyLength);
+ CollData *result = NULL, *newData = NULL;
+ CollDataCacheEntry *entry = NULL, *newEntry = NULL;
+
+ umtx_lock(&lock);
+ entry = (CollDataCacheEntry *) uhash_get(cache, key);
+
+ if (entry == NULL) {
+ umtx_unlock(&lock);
+
+ newData = new CollData(collator, key, keyLength, status);
+ newEntry = new CollDataCacheEntry(newData);
+
+ if (U_FAILURE(status) || newData == NULL || newEntry == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ return NULL;
+ }
+
+ umtx_lock(&lock);
+ entry = (CollDataCacheEntry *) uhash_get(cache, key);
+
+ if (entry == NULL) {
+ uhash_put(cache, newData->key, newEntry, &status);
+ umtx_unlock(&lock);
+
+ if (U_FAILURE(status)) {
+ delete newEntry;
+ delete newData;
+
+ return NULL;
+ }
+
+ return newData;
+ }
+ }
+
+ result = entry->data;
+ entry->refCount += 1;
+ umtx_unlock(&lock);
+
+ if (key != keyBuffer) {
+ deleteKey(key);
+ }
+
+ if (newEntry != NULL) {
+ delete newEntry;
+ delete newData;
+ }
+
+ return result;
+}
+
+void CollDataCache::unref(CollData *collData)
+{
+ CollDataCacheEntry *entry = NULL;
+
+ umtx_lock(&lock);
+ entry = (CollDataCacheEntry *) uhash_get(cache, collData->key);
+
+ if (entry != NULL) {
+ entry->refCount -= 1;
+ }
+ umtx_unlock(&lock);
+}
+
+char *CollDataCache::getKey(UCollator *collator, char *keyBuffer, int32_t *keyBufferLength)
+{
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t len = ucol_getShortDefinitionString(collator, NULL, keyBuffer, *keyBufferLength, &status);
+
+ if (len >= *keyBufferLength) {
+ *keyBufferLength = (len + 2) & ~1; // round to even length, leaving room for terminating null
+ keyBuffer = NEW_ARRAY(char, *keyBufferLength);
+ status = U_ZERO_ERROR;
+
+ len = ucol_getShortDefinitionString(collator, NULL, keyBuffer, *keyBufferLength, &status);
+ }
+
+ keyBuffer[len] = '\0';
+
+ return keyBuffer;
+}
+
+void CollDataCache::flush()
+{
+ const UHashElement *element;
+ int32_t pos = -1;
+
+ umtx_lock(&lock);
+ while ((element = uhash_nextElement(cache, &pos)) != NULL) {
+ CollDataCacheEntry *entry = (CollDataCacheEntry *) element->value.pointer;
+
+ if (entry->refCount <= 0) {
+ uhash_removeElement(cache, element);
+ }
+ }
+ umtx_unlock(&lock);
+}
+
+void CollDataCache::deleteKey(char *key)
+{
+ DELETE_ARRAY(key);
+}
+
+U_CDECL_BEGIN
+static UBool coll_data_cleanup(void) {
+ CollData::freeCollDataCache();
+ return TRUE;
+}
+U_CDECL_END
+
+UOBJECT_DEFINE_RTTI_IMPLEMENTATION(CollData)
+
+CollData::CollData()
+{
+ // nothing
+}
+
+#define CLONE_COLLATOR
+
+//#define CACHE_CELISTS
+CollData::CollData(UCollator *collator, char *cacheKey, int32_t cacheKeyLength, UErrorCode &status)
+ : coll(NULL), charsToCEList(NULL), ceToCharsStartingWith(NULL), key(NULL)
+{
+ // [:c:] == [[:cn:][:cc:][:co:][:cf:][:cs:]]
+ // i.e. other, control, private use, format, surrogate
+ U_STRING_DECL(test_pattern, "[[:assigned:]-[:c:]]", 20);
+ U_STRING_INIT(test_pattern, "[[:assigned:]-[:c:]]", 20);
+ USet *charsToTest = uset_openPattern(test_pattern, 20, &status);
+
+ // Han ext. A, Han, Jamo, Hangul, Han Ext. B
+ // i.e. all the characers we handle implicitly
+ U_STRING_DECL(remove_pattern, "[[\\u3400-\\u9FFF][\\u1100-\\u11F9][\\uAC00-\\uD7AF][\\U00020000-\\U0002A6DF]]", 70);
+ U_STRING_INIT(remove_pattern, "[[\\u3400-\\u9FFF][\\u1100-\\u11F9][\\uAC00-\\uD7AF][\\U00020000-\\U0002A6DF]]", 70);
+ USet *charsToRemove = uset_openPattern(remove_pattern, 70, &status);
+
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ USet *expansions = uset_openEmpty();
+ USet *contractions = uset_openEmpty();
+ int32_t itemCount;
+
+#ifdef CACHE_CELISTS
+ charsToCEList = new StringToCEsMap(status);
+
+ if (U_FAILURE(status)) {
+ goto bail;
+ }
+#else
+ charsToCEList = NULL;
+#endif
+
+ ceToCharsStartingWith = new CEToStringsMap(status);
+
+ if (U_FAILURE(status)) {
+ goto bail;
+ }
+
+ if (cacheKeyLength > KEY_BUFFER_SIZE) {
+ key = NEW_ARRAY(char, cacheKeyLength);
+
+ if (key == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ goto bail;
+ }
+ } else {
+ key = keyBuffer;
+ }
+
+ ARRAY_COPY(key, cacheKey, cacheKeyLength);
+
+#ifdef CLONE_COLLATOR
+ coll = ucol_safeClone(collator, NULL, NULL, &status);
+
+ if (U_FAILURE(status)) {
+ goto bail;
+ }
+#else
+ coll = collator;
+#endif
+
+ ucol_getContractionsAndExpansions(coll, contractions, expansions, FALSE, &status);
+
+ uset_addAll(charsToTest, contractions);
+ uset_addAll(charsToTest, expansions);
+ uset_removeAll(charsToTest, charsToRemove);
+
+ itemCount = uset_getItemCount(charsToTest);
+ for(int32_t item = 0; item < itemCount; item += 1) {
+ UChar32 start = 0, end = 0;
+ UChar buffer[16];
+ int32_t len = uset_getItem(charsToTest, item, &start, &end,
+ buffer, 16, &status);
+
+ if (len == 0) {
+ for (UChar32 ch = start; ch <= end; ch += 1) {
+ UnicodeString *st = new UnicodeString(ch);
+
+ if (st == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ break;
+ }
+
+ CEList *ceList = new CEList(coll, *st, status);
+
+ ceToCharsStartingWith->put(ceList->get(0), st, status);
+
+#ifdef CACHE_CELISTS
+ charsToCEList->put(st, ceList, status);
+#else
+ delete ceList;
+ delete st;
+#endif
+ }
+ } else if (len > 0) {
+ UnicodeString *st = new UnicodeString(buffer, len);
+
+ if (st == NULL) {
+ status = U_MEMORY_ALLOCATION_ERROR;
+ break;
+ }
+
+ CEList *ceList = new CEList(coll, *st, status);
+
+ ceToCharsStartingWith->put(ceList->get(0), st, status);
+
+#ifdef CACHE_CELISTS
+ charsToCEList->put(st, ceList, status);
+#else
+ delete ceList;
+ delete st;
+#endif
+ } else {
+ // shouldn't happen...
+ }
+
+ if (U_FAILURE(status)) {
+ break;
+ }
+ }
+
+bail:
+ uset_close(contractions);
+ uset_close(expansions);
+ uset_close(charsToRemove);
+ uset_close(charsToTest);
+
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ UChar hanRanges[] = {UCOL_FIRST_HAN, UCOL_LAST_HAN, UCOL_FIRST_HAN_COMPAT, UCOL_LAST_HAN_COMPAT, UCOL_FIRST_HAN_A, UCOL_LAST_HAN_A,
+ UCOL_FIRST_HAN_B_LEAD, UCOL_FIRST_HAN_B_TRAIL, UCOL_LAST_HAN_B_LEAD, UCOL_LAST_HAN_B_TRAIL};
+ UChar jamoRanges[] = {UCOL_FIRST_L_JAMO, UCOL_FIRST_V_JAMO, UCOL_FIRST_T_JAMO, UCOL_LAST_T_JAMO};
+ UnicodeString hanString(hanRanges, ARRAY_SIZE(hanRanges));
+ UnicodeString jamoString(jamoRanges, ARRAY_SIZE(jamoRanges));
+ CEList hanList(coll, hanString, status);
+ CEList jamoList(coll, jamoString, status);
+ int32_t j = 0;
+
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ for (int32_t c = 0; c < jamoList.size(); c += 1) {
+ uint32_t jce = jamoList[c];
+
+ if (! isContinuation(jce)) {
+ jamoLimits[j++] = jce;
+ }
+ }
+
+ jamoLimits[3] += (1 << UCOL_PRIMARYORDERSHIFT);
+
+ minHan = 0xFFFFFFFF;
+ maxHan = 0;
+
+ for(int32_t h = 0; h < hanList.size(); h += 2) {
+ uint32_t han = (uint32_t) hanList[h];
+
+ if (han < minHan) {
+ minHan = han;
+ }
+
+ if (han > maxHan) {
+ maxHan = han;
+ }
+ }
+
+ maxHan += (1 << UCOL_PRIMARYORDERSHIFT);
+}
+
+CollData::~CollData()
+{
+#ifdef CLONE_COLLATOR
+ ucol_close(coll);
+#endif
+
+ if (key != keyBuffer) {
+ DELETE_ARRAY(key);
+ }
+
+ delete ceToCharsStartingWith;
+
+#ifdef CACHE_CELISTS
+ delete charsToCEList;
+#endif
+}
+
+UCollator *CollData::getCollator() const
+{
+ return coll;
+}
+
+const StringList *CollData::getStringList(int32_t ce) const
+{
+ return ceToCharsStartingWith->getStringList(ce);
+}
+
+const CEList *CollData::getCEList(const UnicodeString *string) const
+{
+#ifdef CACHE_CELISTS
+ return charsToCEList->get(string);
+#else
+ UErrorCode status = U_ZERO_ERROR;
+ const CEList *list = new CEList(coll, *string, status);
+
+ if (U_FAILURE(status)) {
+ delete list;
+ list = NULL;
+ }
+
+ return list;
+#endif
+}
+
+void CollData::freeCEList(const CEList *list)
+{
+#ifndef CACHE_CELISTS
+ delete list;
+#endif
+}
+
+int32_t CollData::minLengthInChars(const CEList *ceList, int32_t offset, int32_t *history) const
+{
+ // find out shortest string for the longest sequence of ces.
+ // this can probably be folded with the minLengthCache...
+
+ if (history[offset] >= 0) {
+ return history[offset];
+ }
+
+ uint32_t ce = ceList->get(offset);
+ int32_t maxOffset = ceList->size();
+ int32_t shortestLength = INT32_MAX;
+ const StringList *strings = ceToCharsStartingWith->getStringList(ce);
+
+ if (strings != NULL) {
+ int32_t stringCount = strings->size();
+
+ for (int32_t s = 0; s < stringCount; s += 1) {
+ const UnicodeString *string = strings->get(s);
+#ifdef CACHE_CELISTS
+ const CEList *ceList2 = charsToCEList->get(string);
+#else
+ UErrorCode status = U_ZERO_ERROR;
+ const CEList *ceList2 = new CEList(coll, *string, status);
+
+ if (U_FAILURE(status)) {
+ delete ceList2;
+ ceList2 = NULL;
+ }
+#endif
+
+ if (ceList->matchesAt(offset, ceList2)) {
+ int32_t clength = ceList2->size();
+ int32_t slength = string->length();
+ int32_t roffset = offset + clength;
+ int32_t rlength = 0;
+
+ if (roffset < maxOffset) {
+ rlength = minLengthInChars(ceList, roffset, history);
+
+ if (rlength <= 0) {
+ // ignore any dead ends
+ continue;
+ }
+ }
+
+ if (shortestLength > slength + rlength) {
+ shortestLength = slength + rlength;
+ }
+ }
+
+#ifndef CACHE_CELISTS
+ delete ceList2;
+#endif
+ }
+ }
+
+ if (shortestLength == INT32_MAX) {
+ // No matching strings at this offset. See if
+ // the CE is in a range we can handle manually.
+ if (ce >= minHan && ce < maxHan) {
+ // all han have implicit orders which
+ // generate two CEs.
+ int32_t roffset = offset + 2;
+ int32_t rlength = 0;
+
+ //history[roffset++] = -1;
+ //history[roffset++] = 1;
+
+ if (roffset < maxOffset) {
+ rlength = minLengthInChars(ceList, roffset, history);
+ }
+
+ if (rlength < 0) {
+ return -1;
+ }
+
+ shortestLength = 1 + rlength;
+ goto have_shortest;
+ } else if (ce >= jamoLimits[0] && ce < jamoLimits[3]) {
+ int32_t roffset = offset;
+ int32_t rlength = 0;
+
+ // **** this loop may not handle archaic Hangul correctly ****
+ for (int32_t j = 0; roffset < maxOffset && j < 4; j += 1, roffset += 1) {
+ uint32_t jce = ceList->get(roffset);
+
+ // Some Jamo have 24-bit primary order; skip the
+ // 2nd CE. This should always be OK because if
+ // we're still in the loop all we've seen are
+ // a series of Jamo in LVT order.
+ if (isContinuation(jce)) {
+ continue;
+ }
+
+ if (j >= 3 || jce < jamoLimits[j] || jce >= jamoLimits[j + 1]) {
+ break;
+ }
+ }
+
+ if (roffset == offset) {
+ // we started with a non-L Jamo...
+ // just say it comes from a single character
+ roffset += 1;
+
+ // See if the single Jamo has a 24-bit order.
+ if (roffset < maxOffset && isContinuation(ceList->get(roffset))) {
+ roffset += 1;
+ }
+ }
+
+ if (roffset < maxOffset) {
+ rlength = minLengthInChars(ceList, roffset, history);
+ }
+
+ if (rlength < 0) {
+ return -1;
+ }
+
+ shortestLength = 1 + rlength;
+ goto have_shortest;
+ }
+
+ // Can't handle it manually either. Just move on.
+ return -1;
+ }
+
+have_shortest:
+ history[offset] = shortestLength;
+
+ return shortestLength;
+}
+
+int32_t CollData::minLengthInChars(const CEList *ceList, int32_t offset) const
+{
+ int32_t clength = ceList->size();
+ int32_t *history = NEW_ARRAY(int32_t, clength);
+
+ for (int32_t i = 0; i < clength; i += 1) {
+ history[i] = -1;
+ }
+
+ int32_t minLength = minLengthInChars(ceList, offset, history);
+
+ DELETE_ARRAY(history);
+
+ return minLength;
+}
+
+CollData *CollData::open(UCollator *collator, UErrorCode &status)
+{
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
+
+ CollDataCache *cache = getCollDataCache();
+
+ return cache->get(collator, status);
+}
+
+void CollData::close(CollData *collData)
+{
+ CollDataCache *cache = getCollDataCache();
+
+ cache->unref(collData);
+}
+
+CollDataCache *CollData::collDataCache = NULL;
+
+CollDataCache *CollData::getCollDataCache()
+{
+ UErrorCode status = U_ZERO_ERROR;
+ CollDataCache *cache = NULL;
+
+ UMTX_CHECK(NULL, collDataCache, cache);
+
+ if (cache == NULL) {
+ cache = new CollDataCache(status);
+
+ if (U_FAILURE(status)) {
+ delete cache;
+ return NULL;
+ }
+
+ umtx_lock(NULL);
+ if (collDataCache == NULL) {
+ collDataCache = cache;
+
+ ucln_i18n_registerCleanup(UCLN_I18N_COLL_DATA, coll_data_cleanup);
+ }
+ umtx_unlock(NULL);
+
+ if (collDataCache != cache) {
+ delete cache;
+ }
+ }
+
+ return collDataCache;
+}
+
+void CollData::freeCollDataCache()
+{
+ CollDataCache *cache = NULL;
+
+ UMTX_CHECK(NULL, collDataCache, cache);
+
+ if (cache != NULL) {
+ umtx_lock(NULL);
+ if (collDataCache != NULL) {
+ collDataCache = NULL;
+ } else {
+ cache = NULL;
+ }
+ umtx_unlock(NULL);
+
+ delete cache;
+ }
+}
+
+void CollData::flushCollDataCache()
+{
+ CollDataCache *cache = NULL;
+
+ UMTX_CHECK(NULL, collDataCache, cache);
+
+ // **** this will fail if the another ****
+ // **** thread deletes the cache here ****
+ if (cache != NULL) {
+ cache->flush();
+ }
+}
+
+U_NAMESPACE_END
+
+#endif // #if !UCONFIG_NO_COLLATION
Modified: trunk/source/i18n/i18n.vcproj
===================================================================
--- trunk/source/i18n/i18n.vcproj 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/i18n.vcproj 2009-02-07 10:08:34 UTC (rev 162)
@@ -213,6 +213,58 @@
Name="collation"
>
<File
+ RelativePath=".\bms.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\unicode\bms.h"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="copy "$(InputPath)" ..\..\include\unicode"
+ Outputs="..\..\include\unicode\$(InputFileName)"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="copy "$(InputPath)" ..\..\include\unicode"
+ Outputs="..\..\include\unicode\$(InputFileName)"
+ />
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath=".\bmsearch.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\unicode\bmsearch.h"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="copy "$(InputPath)" ..\..\include\unicode
"
+ Outputs="..\..\include\unicode\$(InputFileName)"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="copy "$(InputPath)" ..\..\include\unicode
"
+ Outputs="..\..\include\unicode\$(InputFileName)"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath=".\bocsu.c"
>
</File>
@@ -273,6 +325,32 @@
</FileConfiguration>
</File>
<File
+ RelativePath=".\colldata.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\unicode\colldata.h"
+ >
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="copy "$(InputPath)" ..\..\include\unicode
"
+ Outputs="..\..\include\unicode\$(InputFileName)"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCustomBuildTool"
+ CommandLine="copy "$(InputPath)" ..\..\include\unicode
"
+ Outputs="..\..\include\unicode\$(InputFileName)"
+ />
+ </FileConfiguration>
+ </File>
+ <File
RelativePath=".\search.cpp"
>
</File>
Modified: trunk/source/i18n/timezone.cpp
===================================================================
--- trunk/source/i18n/timezone.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/timezone.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -1235,6 +1235,8 @@
return result.remove();
}
format.adoptTimeZone(tz);
+ } else {
+ format.setTimeZone(*this);
}
} else {
// The display name for standard time was requested, but currently in DST
Modified: trunk/source/i18n/ucln_in.h
===================================================================
--- trunk/source/i18n/ucln_in.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/ucln_in.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -45,6 +45,7 @@
UCLN_I18N_UCOL_RES,
UCLN_I18N_UCOL_BLD,
UCLN_I18N_CSDET,
+ UCLN_I18N_COLL_DATA,
UCLN_I18N_COUNT /* This must be last */
} ECleanupI18NType;
Modified: trunk/source/i18n/ucol.cpp
===================================================================
--- trunk/source/i18n/ucol.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/ucol.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
/*
*******************************************************************************
-* Copyright (C) 1996-2008, International Business Machines
+* Copyright (C) 1996-2009, International Business Machines
* Corporation and others. All Rights Reserved.
*******************************************************************************
* file name: ucol.cpp
@@ -126,7 +126,6 @@
IInit_collIterate(collator, sourceString, sourceLen, s);
}
-
/**
* Backup the state of the collIterate struct data
* @param data collIterate to backup
@@ -1518,10 +1517,30 @@
}
else
{
- order = UTRIE_GET32_FROM_LEAD(&coll->mapping, ch);
+ // Always use UCA for Han, Hangul
+ // (Han extension A is before main Han block)
+ // **** Han compatibility chars ?? ****
+ if ((collationSource->flags & UCOL_FORCE_HAN_IMPLICIT) != 0 &&
+ (ch >= UCOL_FIRST_HAN_A && ch <= UCOL_LAST_HANGUL)) {
+ if (ch > UCOL_LAST_HAN && ch < UCOL_FIRST_HANGUL) {
+ // between the two target ranges; do normal lookup
+ // **** this range is YI, Modifier tone letters, ****
+ // **** Latin-D, Syloti Nagari, Phagas-pa. ****
+ // **** Latin-D might be tailored, so we need to ****
+ // **** do the normal lookup for these guys. ****
+ order = UTRIE_GET32_FROM_LEAD(&coll->mapping, ch);
+ } else {
+ // in one of the target ranges; use UCA
+ order = UCOL_NOT_FOUND;
+ }
+ } else {
+ order = UTRIE_GET32_FROM_LEAD(&coll->mapping, ch);
+ }
+
if(order > UCOL_NOT_FOUND) { /* if a CE is special */
order = ucol_prv_getSpecialCE(coll, ch, order, collationSource, status); /* and try to get the special CE */
}
+
if(order == UCOL_NOT_FOUND && coll->UCA) { /* We couldn't find a good CE in the tailoring */
/* if we got here, the codepoint MUST be over 0xFF - so we look directly in the trie */
order = UTRIE_GET32_FROM_LEAD(&coll->UCA->mapping, ch);
@@ -1981,7 +2000,27 @@
result = coll->latinOneMapping[ch];
}
else {
- result = UTRIE_GET32_FROM_LEAD(&coll->mapping, ch);
+ // Always use UCA for [3400..9FFF], [AC00..D7AF]
+ // **** [FA0E..FA2F] ?? ****
+ if ((data->flags & UCOL_FORCE_HAN_IMPLICIT) != 0 &&
+ (ch >= 0x3400 && ch <= 0xD7AF)) {
+#if 1
+ if (ch > 0x9FFF && ch < 0xAC00) {
+ // between the two target ranges; do normal lookup
+ // **** this range is YI, Modifier tone letters, ****
+ // **** Latin-D, Syloti Nagari, Phagas-pa. It's ****
+ // **** unlikely that these are tailored so it's ****
+ // **** probably OK to use UCA for them too. ****
+ result = UTRIE_GET32_FROM_LEAD(&coll->mapping, ch);
+ } else {
+ result = UCOL_NOT_FOUND;
+ }
+#else
+ result = UCOL_NOT_FOUND;
+#endif
+ } else {
+ result = UTRIE_GET32_FROM_LEAD(&coll->mapping, ch);
+ }
}
if (result > UCOL_NOT_FOUND) {
result = ucol_prv_getSpecialPrevCE(coll, ch, result, data, status);
@@ -3587,38 +3626,12 @@
int32_t offsetBias;
-#if 0
- if (source->offsetReturn != NULL) {
- source->offsetStore = source->offsetReturn - noChars;
- }
-
// **** doesn't work if using iterator ****
if (source->flags & UCOL_ITER_INNORMBUF) {
- if (source->fcdPosition == NULL) {
- offsetBias = 0;
- } else {
- offsetBias = (int32_t)(source->fcdPosition - source->string);
- }
- } else {
- offsetBias = (int32_t)(source->pos - source->string);
- }
-
-#else
- // **** doesn't work if using iterator ****
- if (source->flags & UCOL_ITER_INNORMBUF) {
-#if 1
offsetBias = -1;
-#else
- if (source->fcdPosition == NULL) {
- offsetBias = 0;
- } else {
- offsetBias = (int32_t)(source->fcdPosition - source->string);
- }
-#endif
} else {
offsetBias = (int32_t)(source->pos - source->string);
}
-#endif
/* a new collIterate is used to simplify things, since using the current
collIterate will mean that the forward and backwards iteration will
@@ -3626,9 +3639,9 @@
collIterate temp;
int32_t rawOffset;
- //IInit_collIterate(coll, UCharOffset, -1, &temp);
IInit_collIterate(coll, UCharOffset, noChars, &temp);
temp.flags &= ~UCOL_ITER_NORM;
+ temp.flags |= source->flags & UCOL_FORCE_HAN_IMPLICIT;
rawOffset = temp.pos - temp.string; // should always be zero?
CE = ucol_IGetNextCE(coll, &temp, status);
@@ -3721,7 +3734,12 @@
}
}
- rawOffset = temp.pos - temp.string;
+ if ((temp.flags & UCOL_ITER_INNORMBUF) != 0) {
+ rawOffset = temp.fcdPosition - temp.string;
+ } else {
+ rawOffset = temp.pos - temp.string;
+ }
+
CE = ucol_IGetNextCE(coll, &temp, status);
}
@@ -4178,29 +4196,6 @@
}
case IMPLICIT_TAG: /* everything that is not defined otherwise */
-#if 0
- if (source->offsetBuffer == NULL) {
- source->offsetBufferSize = UCOL_EXPAND_CE_BUFFER_SIZE;
- source->offsetBuffer = (int32_t *) uprv_malloc(sizeof(int32_t) * UCOL_EXPAND_CE_BUFFER_SIZE);
- source->offsetStore = source->offsetBuffer;
- }
-
- // **** doesn't work if using iterator ****
- if (source->flags & UCOL_ITER_INNORMBUF) {
- source->offsetRepeatCount = 1;
- } else {
- int32_t firstOffset = (int32_t)(source->pos - source->string);
-
- *(source->offsetStore++) = firstOffset;
- *(source->offsetStore++) = firstOffset + 1;
-
- source->offsetReturn = source->offsetStore - 1;
- if (source->offsetReturn == source->offsetBuffer) {
- source->offsetStore = source->offsetBuffer;
- }
- }
-#endif
-
return getPrevImplicit(ch, source);
// TODO: Remove CJK implicits as they are handled by the getImplicitPrimary function
Modified: trunk/source/i18n/ucol_imp.h
===================================================================
--- trunk/source/i18n/ucol_imp.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/ucol_imp.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,7 +1,7 @@
/*
*******************************************************************************
*
-* Copyright (C) 1998-2008, International Business Machines
+* Copyright (C) 1998-2009, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
@@ -260,6 +260,8 @@
/* by index */
#define UCOL_USE_ITERATOR 64
+#define UCOL_FORCE_HAN_IMPLICIT 128
+
#define NFC_ZERO_CC_BLOCK_LIMIT_ 0x300
typedef struct collIterate {
@@ -390,8 +392,31 @@
(((uint32_t)(ch) - 0x1161) <= (0x1175 - 0x1161)) || \
(((uint32_t)(ch) - 0x11A8) <= (0x11C2 - 0x11A8)))
+/* Han character ranges */
+#define UCOL_FIRST_HAN 0x4E00
+#define UCOL_LAST_HAN 0x9FFF
+#define UCOL_FIRST_HAN_A 0x3400
+#define UCOL_LAST_HAN_A 0x4DBF
+#define UCOL_FIRST_HAN_COMPAT 0xFAE0
+#define UCOL_LAST_HAN_COMPAT 0xFA2F
+/* Han extension B is in plane 2 */
+#define UCOL_FIRST_HAN_B_LEAD 0xD840
+#define UCOL_FIRST_HAN_B_TRAIL 0xDC00
+#define UCOL_LAST_HAN_B_LEAD 0xD869
+#define UCOL_LAST_HAN_B_TRAIL 0xDEDF
+/* Hangul range */
+#define UCOL_FIRST_HANGUL 0xAC00
+#define UCOL_LAST_HANGUL 0xD7AF
+
+/* Jamo ranges */
+#define UCOL_FIRST_L_JAMO 0x1100
+#define UCOL_FIRST_V_JAMO 0x1161
+#define UCOL_FIRST_T_JAMO 0x11A8
+#define UCOL_LAST_T_JAMO 0x11F9
+
+
#if 0
/* initializes collIterate structure */
/* made as macro to speed up things */
Modified: trunk/source/i18n/ucol_sit.cpp
===================================================================
--- trunk/source/i18n/ucol_sit.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/ucol_sit.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -578,15 +578,15 @@
if(elementSize) {
// we should probably canonicalize here...
elementSize = uloc_getLanguage(locBuff, tempbuff, internalBufferSize, status);
- appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, capacity, languageArg);
+ appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, /*capacity*/internalBufferSize, languageArg);
elementSize = uloc_getCountry(locBuff, tempbuff, internalBufferSize, status);
- appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, capacity, regionArg);
+ appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, /*capacity*/internalBufferSize, regionArg);
elementSize = uloc_getScript(locBuff, tempbuff, internalBufferSize, status);
- appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, capacity, scriptArg);
+ appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, /*capacity*/internalBufferSize, scriptArg);
elementSize = uloc_getVariant(locBuff, tempbuff, internalBufferSize, status);
- appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, capacity, variantArg);
+ appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, /*capacity*/internalBufferSize, variantArg);
elementSize = uloc_getKeywordValue(locBuff, "collation", tempbuff, internalBufferSize, status);
- appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, capacity, keywordArg);
+ appendShortStringElement(tempbuff, elementSize, buffer, &resultSize, /*capacity*/internalBufferSize, keywordArg);
}
int32_t i = 0;
@@ -597,7 +597,7 @@
if(attribute != UCOL_DEFAULT) {
char letter = ucol_sit_attributeValueToLetter(attribute, status);
appendShortStringElement(&letter, 1,
- buffer, &resultSize, capacity, options[i].optionStart);
+ buffer, &resultSize, /*capacity*/internalBufferSize, options[i].optionStart);
}
}
}
Modified: trunk/source/i18n/ucoleitr.cpp
===================================================================
--- trunk/source/i18n/ucoleitr.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/ucoleitr.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
/*
******************************************************************************
-* Copyright (C) 2001-2008, International Business Machines
+* Copyright (C) 2001-2009, International Business Machines
* Corporation and others. All Rights Reserved.
******************************************************************************
*
@@ -263,7 +263,14 @@
primary = ucol_primaryOrder(ce);
}
- // Continuation?
+ // **** This should probably handle continuations too. ****
+ // **** That means that we need 24 bits for the primary ****
+ // **** instead of the 16 that we're currently using. ****
+ // **** So we can lay out the 64 bits as: 24.12.12.16. ****
+ // **** Another complication with continuations is that ****
+ // **** the *second* CE is marked as a continuation, so ****
+ // **** we always have to peek ahead to know how long ****
+ // **** the primary is... ****
if (elems->pce->toShift && (elems->pce->variableTop > ce && primary != 0)
|| (elems->pce->isShifted && primary == 0)) {
@@ -285,7 +292,6 @@
elems->pce->isShifted = FALSE;
}
-
return primary << 48 | secondary << 32 | tertiary << 16 | quaternary;
}
@@ -332,6 +338,7 @@
return result;
}
+
U_CAPI void U_EXPORT2
ucol_closeElements(UCollationElements *elems)
{
@@ -375,7 +382,7 @@
ci->endp = ci->string + u_strlen(ci->string);
}
ci->CEpos = ci->toReturn = ci->CEs;
- ci->flags = UCOL_ITER_HASLEN;
+ ci->flags = (ci->flags & UCOL_FORCE_HAN_IMPLICIT) | UCOL_ITER_HASLEN;
if (ci->coll->normalizationMode == UCOL_ON) {
ci->flags |= UCOL_ITER_NORM;
}
@@ -391,6 +398,21 @@
ci->offsetRepeatCount = ci->offsetRepeatValue = 0;
}
+U_CAPI void U_EXPORT2
+ucol_forceHanImplicit(UCollationElements *elems, UErrorCode *status)
+{
+ if (U_FAILURE(*status)) {
+ return;
+ }
+
+ if (elems == NULL) {
+ *status = U_ILLEGAL_ARGUMENT_ERROR;
+ return;
+ }
+
+ elems->iteratordata_.flags |= UCOL_FORCE_HAN_IMPLICIT;
+}
+
U_CAPI int32_t U_EXPORT2
ucol_next(UCollationElements *elems,
UErrorCode *status)
Modified: trunk/source/i18n/unicode/basictz.h
===================================================================
--- trunk/source/i18n/unicode/basictz.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/basictz.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -29,13 +29,13 @@
* <code>BasicTimeZone</code> is an abstract class extending <code>TimeZone</code>.
* This class provides some additional methods to access time zone transitions and rules.
* All ICU <code>TimeZone</code> concrete subclasses extend this class.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
class U_I18N_API BasicTimeZone: public TimeZone {
public:
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual ~BasicTimeZone();
@@ -45,7 +45,7 @@
* @param inclusive Whether the base time is inclusive or not.
* @param result Receives the first transition after the base time.
* @return TRUE if the transition is found.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/ = 0;
@@ -55,7 +55,7 @@
* @param inclusive Whether the base time is inclusive or not.
* @param result Receives the most recent transition before the base time.
* @return TRUE if the transition is found.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/ = 0;
@@ -77,7 +77,7 @@
* @param ec Output param to filled in with a success or an error.
* @return true if the other time zone has the equivalent transitions in the
* time range.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool hasEquivalentTransitions(/*const*/ BasicTimeZone& tz, UDate start, UDate end,
UBool ignoreDstAmount, UErrorCode& ec) /*const*/;
@@ -88,7 +88,7 @@
* <code>InitialTimeZoneRule</code>. The return value range is 0 or any positive value.
* @param status Receives error status code.
* @return The number of <code>TimeZoneRule</code>s representing time transitions.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t countTransitionRules(UErrorCode& status) /*const*/ = 0;
@@ -106,7 +106,7 @@
* the timezone transition rules. On output, actual number of
* rules filled in the array will be set.
* @param status Receives error status code.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) /*const*/ = 0;
@@ -135,7 +135,7 @@
* transitions. When this time zone does not observer daylight saving times
* around the specified date, NULL is set.
* @param status Receives error status code.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void getSimpleRulesNear(UDate date, InitialTimeZoneRule*& initial,
AnnualTimeZoneRule*& std, AnnualTimeZoneRule*& dst, UErrorCode& status) /*const*/;
@@ -172,21 +172,21 @@
/**
* Default constructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
BasicTimeZone();
/**
* Construct a timezone with a given ID.
* @param id a system time zone ID
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
BasicTimeZone(const UnicodeString &id);
/**
* Copy constructor.
* @param source the object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
BasicTimeZone(const BasicTimeZone& source);
Added: trunk/source/i18n/unicode/bms.h
===================================================================
--- trunk/source/i18n/unicode/bms.h (rev 0)
+++ trunk/source/i18n/unicode/bms.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -0,0 +1,265 @@
+/*
+ * Copyright (C) 1996-2009, International Business Machines Corporation and Others.
+ * All rights reserved.
+ */
+
+/**
+ * \file
+ * \brief C API: Boyer-Moore StringSearch prototype.
+ * \internal
+ */
+
+#ifndef _BMS_H
+#define _BMS_H
+
+#include "unicode/utypes.h"
+#include "unicode/ucol.h"
+
+/**
+ * A <code>UCD</code> object holds the Collator-specific data needed to
+ * compute the length of the shortest string that can
+ * generate a partcular list of CEs.
+ *
+ * <code>UCD</code> objects are quite expensive to compute. Because
+ * of this, they are cached. When you call <code>ucd_open</code> it
+ * returns a reference counted cached object. When you call <code>ucd_close</code>
+ * the reference count on the object is decremented but the object is not deleted.
+ *
+ * If you do not need to reuse any unreferenced objects in the cache, you can call
+ * <code>ucd_flushCCache</code>. If you no longer need any <code>UCD</code>
+ * objects, you can call <code>ucd_freeCache</code>
+ */
+typedef void UCD;
+
+/**
+ * Open a <code>UCD</code> object.
+ *
+ * @param collator - the collator
+ * @param status - will be set if any errors occur.
+ *
+ * @return the <code>UCD</code> object. You must call
+ * <code>ucd_close</code> when you are done using the object.
+ *
+ * Note: if on return status is set to an error, the only safe
+ * thing to do with the returned object is to call <code>ucd_close</code>.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI UCD * U_EXPORT2
+ucd_open(UCollator *coll, UErrorCode *status);
+
+/**
+ * Release a <code>UCD</code> object.
+ *
+ * @param ucd - the object
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI void U_EXPORT2
+ucd_close(UCD *ucd);
+
+/**
+ * Get the <code>UCollator</code> object used to create a <code>UCD</code> object.
+ * The <code>UCollator</code> object returned may not be the exact
+ * object that was used to create this object, but it will have the
+ * same behavior.
+ *
+ * @param ucd - the <code>UCD</code> object
+ *
+ * @return the <code>UCollator</code> used to create the given
+ * <code>UCD</code> object.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI UCollator * U_EXPORT2
+ucd_getCollator(UCD *ucd);
+
+/**
+ * <code>UCD</code> objects are expensive to compute, and so
+ * may be cached. This routine will free the cached objects and delete
+ * the cache.
+ *
+ * WARNING: Don't call this until you are have called <code>close</code>
+ * for each <code>UCD</code> object that you have used. also,
+ * DO NOT call this if another thread may be calling <code>ucd_flushCache</code>
+ * at the same time.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI void U_EXPORT2
+ucd_freeCache();
+
+/**
+ * <code>UCD</code> objects are expensive to compute, and so
+ * may be cached. This routine will remove any unused <code>UCD</code>
+ * objects from the cache.
+ *
+ * @internal 4.0.1 technology preview
+ */
+U_CAPI void U_EXPORT2
+ucd_flushCache();
+
+/**
+ * BMS
+ *
+ * This object holds the information needed to do a Collation sensitive Boyer-Moore search. It encapulates
+ * the pattern, the "bad character" and "good suffix" tables, the Collator-based data needed to compute them,
+ * and a reference to the text being searched.
+ *
+ * To do a search, you fist need to get a <code>UCD</code> object by calling <code>ucd_open</code>.
+ * Then you construct a <code>BMS</code> object from the <code>UCD</code> object, the pattern
+ * string and the target string. Then you call the <code>search</code> method. Here's a code sample:
+ *
+ * <pre>
+ * void boyerMooreExample(UCollator *collator, UChar *pattern, int32_t patternLen, UChar *target, int32_t targetLength)
+ * {
+ * UErrorCode status = U_ZERO_ERROR;
+ * int32_t offset = 0, start = -1, end = -1;
+ * UCD *ucd = NULL);
+ * BMS *bms = NULL;
+ *
+ * ucd = ucd_open(collator, &status);
+ * if (U_FAILURE(status)) {
+ * // could not create a UCD object
+ * return;
+ * }
+ *
+ * BMS *bms = bms_open(ucd, pattern, patternLength, target, targetlength, &status);
+ * if (U_FAILURE(status)) {
+ * // could not create a BMS object
+ * ucd_close(ucd);
+ * return;
+ * }
+ *
+ *
+ * // Find all matches
+ * while (bms_search(bms, offset, &start, &end)) {
+ * // process the match between start and end
+ * ...
+ *
+ * // advance past the match
+ * offset = end;
+ * }
+ *
+ * // at this point, if offset == 0, there were no matches
+ * if (offset == 0) {
+ * // handle the case of no matches
+ * }
+ *
+ * bms_close(bms);
+ * ucd_close(ucd);
+ *
+ * // UCD objects are cached, so the call to
+ * // ucd_close doesn't delete the object.
+ * // Call this if you don't need the object any more.
+ * ucd_flushCache();
+ * }
+ * </pre>
+ *
+ * NOTE: This is a technology preview. The final version of this API may not bear any resenblence to this API.
+ *
+ * Knows linitations:
+ * 1) Backwards searching has not been implemented.
+ *
+ * 2) For Han and Hangul characters, this code ignores any Collation tailorings. In general,
+ * this isn't a problem, but in Korean locals, at strength 1, Hangul characters are tailored
+ * to be equal to Han characters with the same pronounciation. Because this code ignroes
+ * tailorings, searching for a Hangul character will not find a Han character and visa-versa.
+ *
+ * 3) In some cases, searching for a pattern that needs to be normalized and ends
+ * in a discontiguous contraction may fail. The only known cases of this are with
+ * the Tibetan script. For example searching for the pattern
+ * "\u0F7F\u0F80\u0F81\u0F82\u0F83\u0F84\u0F85" will fail. (This case is artificial. We've
+ * been unable to find a pratical, real-world example of this failure.)
+ *
+ * NOTE: This is a technology preview. The final version of this API may not bear any resenblence to this API.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+struct BMS;
+typedef struct BMS BMS;
+
+/**
+ * Construct a <code>MBS</code> object.
+ *
+ * @param ucd - A <code>UCD</code> object holding the Collator-sensitive data
+ * @param pattern - the string for which to search
+ * @param latternLength - the length of the string for which to search
+ * @param target - the string in which to search
+ * @param targetLength - the length of the string in which to search
+ * @param status - will be set if any errors occur.
+ *
+ * @return the <code>BMS</code> object.
+ *
+ * Note: if on return status is set to an error, the only safe
+ * thing to do with the returned object is to call
+ * <code>bms_close</code>.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI BMS * U_EXPORT2
+bms_open(UCD *ucd,
+ const UChar *pattern, int32_t patternLength,
+ const UChar *target, int32_t targetLength,
+ UErrorCode *status);
+
+/**
+ * Close a <code>BMS</code> object and release all the
+ * storage associated with it.
+ *
+ * @param bms - the <code>BMS</code> object to close.
+ */
+U_CAPI void U_EXPORT2
+bms_close(BMS *bms);
+
+/**
+ * Test the pattern to see if it generates any CEs.
+ *
+ * @return <code>TRUE</code> if the pattern string did not generate any CEs
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI UBool U_EXPORT2
+bms_empty(BMS *bms);
+
+/**
+ * Get the <code>UCD</code> object used to create
+ * a given <code>BMS</code> object.
+ *
+ * @param bms - the <code>BMS</code> object
+ *
+ * @return - the <code>UCD</code> object used to create
+ * the given <code>BMS</code> object.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI UCD * U_EXPORT2
+bms_getData(BMS *bms);
+
+/**
+ * Search for the pattern string in the target string.
+ *
+ * @param offset - the offset in the target string at which to begin the search
+ * @param start - will be set to the starting offset of the match, or -1 if there's no match
+ * @param end - will be set to the ending offset of the match, or -1 if there's no match
+ *
+ * @return <code>TRUE</code> if the match succeeds, <code>FALSE</code> otherwise.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI UBool U_EXPORT2
+bms_search(BMS *bms, int32_t offset, int32_t *start, int32_t *end);
+
+/**
+ * Set the target string for the match.
+ *
+ * @param target - the new target string
+ * @param targetLength - the length of the new target string
+ * @param status - will be set if any errors occur.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+U_CAPI void U_EXPORT2
+bms_setTargetString(BMS *bms, const UChar *target, int32_t targetLength, UErrorCode *status);
+
+#endif /* _BMS_H */
Added: trunk/source/i18n/unicode/bmsearch.h
===================================================================
--- trunk/source/i18n/unicode/bmsearch.h (rev 0)
+++ trunk/source/i18n/unicode/bmsearch.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -0,0 +1,221 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines *
+ * Corporation and others. All Rights Reserved. *
+ ******************************************************************************
+ */
+
+/**
+ * \file
+ * \brief C++ API: Boyer-Moore StringSearch technology preview
+ * \internal ICU 4.0.1 technology preview
+ */
+
+#ifndef B_M_SEARCH_H
+#define B_M_SEARCH_H
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_COLLATION
+
+#include "unicode/uobject.h"
+#include "unicode/ucol.h"
+
+#include "unicode/colldata.h"
+
+U_NAMESPACE_BEGIN
+
+class BadCharacterTable;
+class GoodSuffixTable;
+class Target;
+
+/**
+ * BoyerMooreSearch
+ *
+ * This object holds the information needed to do a Collation sensitive Boyer-Moore search. It encapulates
+ * the pattern, the "bad character" and "good suffix" tables, the Collator-based data needed to compute them,
+ * and a reference to the text being searched.
+ *
+ * To do a search, you fist need to get a <code>CollData</code> object by calling <code>CollData::open</code>.
+ * Then you construct a <code>BoyerMooreSearch</code> object from the <code>CollData</code> object, the pattern
+ * string and the target string. Then you call the <code>search</code> method. Here's a code sample:
+ *
+ * <pre>
+ * void boyerMooreExample(UCollator *collator, UnicodeString *pattern, UnicodeString *target)
+ * {
+ * UErrorCode status = U_ZERO_ERROR;
+ * CollData *collData = CollData::open(collator, status);
+ *
+ * if (U_FAILURE(status)) {
+ * // could not create a CollData object
+ * return;
+ * }
+ *
+ * BoyerMooreSearch *search = new BoyerMooreSearch(collData, *patternString, target, status);
+ *
+ * if (U_FAILURE(status)) {
+ * // could not create a BoyerMooreSearch object
+ * CollData::close(collData);
+ * return;
+ * }
+ *
+ * int32_t offset = 0, start = -1, end = -1;
+ *
+ * // Find all matches
+ * while (search->search(offset, start, end)) {
+ * // process the match between start and end
+ * ...
+ * // advance past the match
+ * offset = end;
+ * }
+ *
+ * // at this point, if offset == 0, there were no matches
+ * if (offset == 0) {
+ * // handle the case of no matches
+ * }
+ *
+ * delete search;
+ * CollData::close(collData);
+ *
+ * // CollData objects are cached, so the call to
+ * // CollData::close doesn't delete the object.
+ * // Call this if you don't need the object any more.
+ * CollData::flushCollDataCache();
+ * }
+ * </pre>
+ *
+ * NOTE: This is a technology preview. The final version of this API may not bear any resenblence to this API.
+ *
+ * Knows linitations:
+ * 1) Backwards searching has not been implemented.
+ *
+ * 2) For Han and Hangul characters, this code ignores any Collation tailorings. In general,
+ * this isn't a problem, but in Korean locals, at strength 1, Hangul characters are tailored
+ * to be equal to Han characters with the same pronounciation. Because this code ignroes
+ * tailorings, searching for a Hangul character will not find a Han character and visa-versa.
+ *
+ * 3) In some cases, searching for a pattern that needs to be normalized and ends
+ * in a discontiguous contraction may fail. The only known cases of this are with
+ * the Tibetan script. For example searching for the pattern
+ * "\u0F7F\u0F80\u0F81\u0F82\u0F83\u0F84\u0F85" will fail. (This case is artificial. We've
+ * been unable to find a pratical, real-world example of this failure.)
+ *
+ * @internal ICU 4.0.1 technology preview
+ *
+ * @see CollData
+ */
+class U_I18N_API BoyerMooreSearch : public UObject
+{
+public:
+ /**
+ * Construct a <code>BoyerMooreSearch</code> object.
+ *
+ * @param theData - A <code>CollData</code> object holding the Collator-sensitive data
+ * @param patternString - the string for which to search
+ * @param targetString - the string in which to search or <code>NULL</code> if youu will
+ * set it later by calling <code>setTargetString</code>.
+ * @param status - will be set if any errors occur.
+ *
+ * Note: if on return, status is set to an error code,
+ * the only safe thing to do with this object is to call
+ * the destructor.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ BoyerMooreSearch(CollData *theData, const UnicodeString &patternString, const UnicodeString *targetString, UErrorCode &status);
+
+ /**
+ * The desstructor
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ ~BoyerMooreSearch();
+
+ /**
+ * Test the pattern to see if it generates any CEs.
+ *
+ * @return <code>TRUE</code> if the pattern string did not generate any CEs
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ UBool empty();
+
+ /**
+ * Search for the pattern string in the target string.
+ *
+ * @param offset - the offset in the target string at which to begin the search
+ * @param start - will be set to the starting offset of the match, or -1 if there's no match
+ * @param end - will be set to the ending offset of the match, or -1 if there's no match
+ *
+ * @return <code>TRUE</code> if the match succeeds, <code>FALSE</code> otherwise.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ UBool search(int32_t offset, int32_t &start, int32_t &end);
+
+ /**
+ * Set the target string for the match.
+ *
+ * @param targetString - the new target string
+ * @param status - will be set if any errors occur.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ void setTargetString(const UnicodeString *targetString, UErrorCode &status);
+
+ // **** no longer need these? ****
+ /**
+ * Return the <code>CollData</code> object used for searching
+ *
+ * @return the <code>CollData</code> object used for searching
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ CollData *getData();
+
+ /**
+ * Return the CEs generated by the pattern string.
+ *
+ * @return a <code>CEList</code> object holding the CEs generated by the pattern string.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ CEList *getPatternCEs();
+
+ /**
+ * Return the <code>BadCharacterTable</code> object computed for the pattern string.
+ *
+ * @return the <code>BadCharacterTable</code> object.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ BadCharacterTable *getBadCharacterTable();
+
+ /**
+ * Return the <code>GoodSuffixTable</code> object computed for the pattern string.
+ *
+ * @return the <code>GoodSuffixTable</code> object computed for the pattern string.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ GoodSuffixTable *getGoodSuffixTable();
+
+ /*
+ * UObject glue...
+ */
+ virtual UClassID getDynamicClassID() const;
+ static UClassID getStaticClassID();
+
+private:
+ CollData *data;
+ CEList *patCEs;
+ BadCharacterTable *badCharacterTable;
+ GoodSuffixTable *goodSuffixTable;
+ UnicodeString pattern;
+ Target *target;
+};
+
+U_NAMESPACE_END
+
+#endif // #if !UCONFIG_NO_COLLATION
+#endif // #ifndef B_M_SEARCH_H
Added: trunk/source/i18n/unicode/colldata.h
===================================================================
--- trunk/source/i18n/unicode/colldata.h (rev 0)
+++ trunk/source/i18n/unicode/colldata.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -0,0 +1,430 @@
+/*
+ ******************************************************************************
+ * Copyright (C) 1996-2009, International Business Machines *
+ * Corporation and others. All Rights Reserved. *
+ ******************************************************************************
+ */
+
+/**
+ * \file
+ * \brief C++ API: Collation data used to compute minLengthInChars.
+ * \internal
+ */
+
+#ifndef COLL_DATA_H
+#define COLL_DATA_H
+
+#include "unicode/utypes.h"
+
+#if !UCONFIG_NO_COLLATION
+
+#include "unicode/uobject.h"
+#include "unicode/ucol.h"
+
+U_NAMESPACE_BEGIN
+
+/*
+ * The size of the internal buffer for the Collator's short description string.
+ */
+#define KEY_BUFFER_SIZE 64
+
+ /*
+ * The size of the internal CE buffer in a <code>CEList</code> object
+ */
+#define CELIST_BUFFER_SIZE 4
+
+/*
+ * Define this to enable the <code>CEList</code> objects to collect
+ * statistics.
+ */
+//#define INSTRUMENT_CELIST
+
+ /*
+ * The size of the initial list in a <code>StringList</code> object.
+ */
+#define STRING_LIST_BUFFER_SIZE 16
+
+/*
+ * Define this to enable the <code>StringList</code> objects to
+ * collect statistics.
+ */
+//#define INSTRUMENT_STRING_LIST
+
+ /**
+ * CEList
+ *
+ * This object holds a list of CEs generated from a particular
+ * <code>UnicodeString</code>
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+class U_I18N_API CEList : public UObject
+{
+public:
+ /**
+ * Construct a <code>CEList</code> object.
+ *
+ * @param coll - the Collator used to collect the CEs.
+ * @param string - the string for which to collect the CEs.
+ * @param status - will be set if any errors occur.
+ *
+ * Note: if on return, status is set to an error code,
+ * the only safe thing to do with this object is to call
+ * the destructor.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ CEList(UCollator *coll, const UnicodeString &string, UErrorCode &status);
+
+ /**
+ * The destructor.
+ */
+ ~CEList();
+
+ /**
+ * Return the number of CEs in the list.
+ *
+ * @return the number of CEs in the list.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ int32_t size() const;
+
+ /**
+ * Get a particular CE from the list.
+ *
+ * @param index - the index of the CE to return
+ *
+ * @return the CE, or <code>0</code> if <code>index</code> is out of range
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ uint32_t get(int32_t index) const;
+
+ /**
+ * Check if the CEs in another <code>CEList</code> match the
+ * suffix of this list starting at a give offset.
+ *
+ * @param offsset - the offset of the suffix
+ * @param other - the other <code>CEList</code>
+ *
+ * @return <code>TRUE</code> if the CEs match, <code>FALSE</code> otherwise.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ UBool matchesAt(int32_t offset, const CEList *other) const;
+
+ /**
+ * The index operator.
+ *
+ * @param index - the index
+ *
+ * @return a reference to the given CE in the list
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ uint32_t &operator[](int32_t index) const;
+
+ /*
+ * UObject glue...
+ */
+ virtual UClassID getDynamicClassID() const;
+ static UClassID getStaticClassID();
+
+private:
+ void add(uint32_t ce, UErrorCode &status);
+
+ uint32_t ceBuffer[CELIST_BUFFER_SIZE];
+ uint32_t *ces;
+ int32_t listMax;
+ int32_t listSize;
+
+#ifdef INSTRUMENT_CELIST
+ static int32_t _active;
+ static int32_t _histogram[10];
+#endif
+};
+
+/**
+ * StringList
+ *
+ * This object holds a list of <code>UnicodeString</code> objects.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+class U_I18N_API StringList : public UObject
+{
+public:
+ /**
+ * Construct an empty <code>StringList</code>
+ *
+ * @param status - will be set if any errors occur.
+ *
+ * Note: if on return, status is set to an error code,
+ * the only safe thing to do with this object is to call
+ * the destructor.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ StringList(UErrorCode &status);
+
+ /**
+ * The destructor.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ ~StringList();
+
+ /**
+ * Add a string to the list.
+ *
+ * @param string - the string to add
+ * @param status - will be set if any errors occur.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ void add(const UnicodeString *string, UErrorCode &status);
+
+ /**
+ * Add an array of Unicode code points to the list.
+ *
+ * @param chars - the address of the array of code points
+ * @param count - the number of code points in the array
+ * @param status - will be set if any errors occur.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ void add(const UChar *chars, int32_t count, UErrorCode &status);
+
+ /**
+ * Get a particular string from the list.
+ *
+ * @param index - the index of the string
+ *
+ * @return a pointer to the <code>UnicodeString</code> or <code>NULL</code>
+ * if <code>index</code> is out of bounds.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ const UnicodeString *get(int32_t index) const;
+
+ /**
+ * Get the number of stings in the list.
+ *
+ * @return the number of strings in the list.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ int32_t size() const;
+
+ /*
+ * the UObject glue...
+ */
+ virtual UClassID getDynamicClassID() const;
+ static UClassID getStaticClassID();
+
+private:
+ UnicodeString *strings;
+ int32_t listMax;
+ int32_t listSize;
+
+#ifdef INSTRUMENT_STRING_LIST
+ static int32_t _lists;
+ static int32_t _strings;
+ static int32_t _histogram[101];
+#endif
+};
+
+/*
+ * Forward references to internal classes.
+ */
+class StringToCEsMap;
+class CEToStringsMap;
+class CollDataCache;
+
+/**
+ * CollData
+ *
+ * This class holds the Collator-specific data needed to
+ * compute the length of the shortest string that can
+ * generate a partcular list of CEs.
+ *
+ * <code>CollData</code> objects are quite expensive to compute. Because
+ * of this, they are cached. When you call <code>CollData::open</code> it
+ * returns a reference counted cached object. When you call <code>CollData::close</code>
+ * the reference count on the object is decremented but the object is not deleted.
+ *
+ * If you do not need to reuse any unreferenced objects in the cache, you can call
+ * <code>CollData::flushCollDataCache</code>. If you no longer need any <code>CollData</code>
+ * objects, you can call <code>CollData::freeCollDataCache</code>
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+class U_I18N_API CollData : public UObject
+{
+public:
+ /**
+ * Construct a <code>CollData</code> object.
+ *
+ * @param collator - the collator
+ * @param status - will be set if any errors occur.
+ *
+ * @return the <code>CollData</code> object. You must call
+ * <code>close</code> when you are done using the object.
+ *
+ * Note: if on return, status is set to an error code,
+ * the only safe thing to do with this object is to call
+ * <code>CollData::close</code>.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ static CollData *open(UCollator *collator, UErrorCode &status);
+
+ /**
+ * Release a <code>CollData</code> object.
+ *
+ * @param collData - the object
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ static void close(CollData *collData);
+
+ /**
+ * Get the <code>UCollator</code> object used to create this object.
+ * The object returned may not be the exact object that was used to
+ * create this object, but it will have the same behavior.
+ */
+ UCollator *getCollator() const;
+
+ /**
+ * Get a list of all the strings which generate a list
+ * of CEs starting with a given CE.
+ *
+ * @param ce - the CE
+ *
+ * return a <code>StringList</code> object containing all
+ * the stirngs, or <code>NULL</code> if there are
+ * no such strings.
+ *
+ * @internal ICU 4.0.1 technology preview.
+ */
+ const StringList *getStringList(int32_t ce) const;
+
+ /**
+ * Get a list of the CEs generated by a partcular stirng.
+ *
+ * @param string - the string
+ *
+ * @return a <code>CEList</code> object containt the CEs. You
+ * must call <code>freeCEList</code> when you are finished
+ * using the <code>CEList</code>/
+ *
+ * @internal ICU 4.0.1 technology preview.
+ */
+ const CEList *getCEList(const UnicodeString *string) const;
+
+ /**
+ * Release a <code>CEList</code> returned by <code>getCEList</code>.
+ *
+ * @param list - the <CEList> to free.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ void freeCEList(const CEList *list);
+
+ /**
+ * Return the length of the shortest string that will generate
+ * the given list of CEs.
+ *
+ * @param ces - the CEs
+ * @param offset - the offset of the first CE in the list to use.
+ *
+ * @return the length of the shortest string.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ int32_t minLengthInChars(const CEList *ces, int32_t offset) const;
+
+
+ /**
+ * Return the length of the shortest string that will generate
+ * the given list of CEs.
+ *
+ * Note: the algorithm used to do this computation is recursive. To
+ * limit the amount of recursion, a "history" list is used to record
+ * the best answer starting at a particular offset in the list of CEs.
+ * If the same offset is visited again during the recursion, the answer
+ * in the history list is used.
+ *
+ * @param ces - the CEs
+ * @param offset - the offset of the first CE in the list to use.
+ * param history - the history list. Must be at least as long as
+ * the number of cEs in the <code>CEList</code>
+ *
+ * @return the length of the shortest string.
+ *
+ * @internal ICU 4.0.1 technology preview
+ */
+ int32_t minLengthInChars(const CEList *ces, int32_t offset, int32_t *history) const;
+
+ /*
+ * UObject glue...
+ */
+ virtual UClassID getDynamicClassID() const;
+ static UClassID getStaticClassID();
+
+ /**
+ * <code>CollData</code> objects are expensive to compute, and so
+ * may be cached. This routine will free the cached objects and delete
+ * the cache.
+ *
+ * WARNING: Don't call this until you are have called <code>close</code>
+ * for each <code>CollData</code> object that you have used. also,
+ * DO NOT call this if another thread may be calling <code>flushCollDataCache</code>
+ * at the same time.
+ *
+ * @internal 4.0.1 technology preview
+ */
+ static void freeCollDataCache();
+
+ /**
+ * <code>CollData</code> objects are expensive to compute, and so
+ * may be cached. This routine will remove any unused <code>CollData</code>
+ * objects from the cache.
+ *
+ * @internal 4.0.1 technology preview
+ */
+ static void flushCollDataCache();
+
+private:
+ friend class CollDataCache;
+ friend class CollDataCacheEntry;
+
+ CollData(UCollator *collator, char *cacheKey, int32_t cachekeyLength, UErrorCode &status);
+ ~CollData();
+
+ CollData();
+
+ static char *getCollatorKey(UCollator *collator, char *buffer, int32_t bufferLength);
+
+ static CollDataCache *getCollDataCache();
+
+ UCollator *coll;
+ StringToCEsMap *charsToCEList;
+ CEToStringsMap *ceToCharsStartingWith;
+
+ char keyBuffer[KEY_BUFFER_SIZE];
+ char *key;
+
+ static CollDataCache *collDataCache;
+
+ uint32_t minHan;
+ uint32_t maxHan;
+
+ uint32_t jamoLimits[4];
+};
+
+U_NAMESPACE_END
+
+#endif // #if !UCONFIG_NO_COLLATION
+#endif // #ifndef COLL_DATA_H
Modified: trunk/source/i18n/unicode/dtitvinf.h
===================================================================
--- trunk/source/i18n/unicode/dtitvinf.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/dtitvinf.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -209,7 +209,7 @@
* Clone this object polymorphically.
* The caller owns the result and should delete it when done.
* @return a copy of the object
- * @draft ICU4.0
+ * @draft ICU 4.0
*/
virtual DateIntervalInfo* clone(void) const;
Modified: trunk/source/i18n/unicode/dtptngen.h
===================================================================
--- trunk/source/i18n/unicode/dtptngen.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/dtptngen.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -43,7 +43,7 @@
* <p><i>Issue: may be useful to also have a function that returns the list of
* fields in a pattern, in order, since we have that internally.
* That would be useful for getting the UI order of field elements.</i>
- * @stable ICU 4.0
+ * @stable ICU 3.8
**/
class U_I18N_API DateTimePatternGenerator : public UObject {
public:
@@ -51,7 +51,7 @@
* Construct a flexible generator according to default locale.
* @param status Output param set to success/failure code on exit,
* which must not indicate a failure before the function call.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static DateTimePatternGenerator* U_EXPORT2 createInstance(UErrorCode& status);
@@ -60,7 +60,7 @@
* @param uLocale
* @param status Output param set to success/failure code on exit,
* which must not indicate a failure before the function call.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static DateTimePatternGenerator* U_EXPORT2 createInstance(const Locale& uLocale, UErrorCode& status);
@@ -68,20 +68,20 @@
* Create an empty generator, to be constructed with addPattern(...) etc.
* @param status Output param set to success/failure code on exit,
* which must not indicate a failure before the function call.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static DateTimePatternGenerator* U_EXPORT2 createEmptyInstance(UErrorCode& status);
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual ~DateTimePatternGenerator();
/**
* Clone DateTimePatternGenerator object. Clients are responsible for
* deleting the DateTimePatternGenerator object cloned.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimePatternGenerator* clone() const;
@@ -90,7 +90,7 @@
*
* @param other the DateTimePatternGenerator object to be compared with.
* @return true if other is semantically equal to this.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool operator==(const DateTimePatternGenerator& other) const;
@@ -99,7 +99,7 @@
*
* @param other the DateTimePatternGenerator object to be compared with.
* @return true if other is semantically unequal to this.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool operator!=(const DateTimePatternGenerator& other) const;
@@ -111,7 +111,7 @@
* @param status Output param set to success/failure code on exit,
* which must not indicate a failure before the function call.
* @return skeleton such as "MMMdd"
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UnicodeString getSkeleton(const UnicodeString& pattern, UErrorCode& status);
@@ -126,7 +126,7 @@
* @param status Output param set to success/failure code on exit,
* which must not indicate a failure before the function call.
* @return base skeleton, such as "Md"
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UnicodeString getBaseSkeleton(const UnicodeString& pattern, UErrorCode& status);
@@ -148,7 +148,7 @@
* which must not indicate a failure before the function call.
* @return conflicting status. The value could be UDATPG_NO_CONFLICT,
* UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UDateTimePatternConflict addPattern(const UnicodeString& pattern,
UBool override,
@@ -171,7 +171,7 @@
*
* @param field such as UDATPG_ERA_FIELD.
* @param value pattern, such as "{0}, {1}"
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setAppendItemFormat(UDateTimePatternField field, const UnicodeString& value);
@@ -181,7 +181,7 @@
*
* @param field such as UDATPG_ERA_FIELD.
* @return append pattern for field
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
const UnicodeString& getAppendItemFormat(UDateTimePatternField field) const;
@@ -194,7 +194,7 @@
*
* @param field such as UDATPG_ERA_FIELD.
* @param value name of the field
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setAppendItemName(UDateTimePatternField field, const UnicodeString& value);
@@ -204,7 +204,7 @@
*
* @param field such as UDATPG_ERA_FIELD.
* @return name for field
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
const UnicodeString& getAppendItemName(UDateTimePatternField field) const;
@@ -225,14 +225,14 @@
* @param dateTimeFormat
* message format pattern, here {0} will be replaced by the date
* pattern and {1} will be replaced by the time pattern.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setDateTimeFormat(const UnicodeString& dateTimeFormat);
/**
* Getter corresponding to setDateTimeFormat.
* @return DateTimeFormat.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
const UnicodeString& getDateTimeFormat() const;
@@ -247,7 +247,7 @@
* which must not indicate a failure before the function call.
* @return bestPattern
* The best pattern found from the given skeleton.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UnicodeString getBestPattern(const UnicodeString& skeleton, UErrorCode& status);
@@ -266,7 +266,7 @@
* @param status Output param set to success/failure code on exit,
* which must not indicate a failure before the function call.
* @return pattern adjusted to match the skeleton fields widths and subtypes.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UnicodeString replaceFieldTypes(const UnicodeString& pattern,
const UnicodeString& skeleton,
@@ -281,7 +281,7 @@
* which must not indicate a failure before the function call.
* @return StringEnumeration with the skeletons.
* The caller must delete the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
StringEnumeration* getSkeletons(UErrorCode& status) const;
@@ -289,7 +289,7 @@
* Get the pattern corresponding to a given skeleton.
* @param skeleton
* @return pattern corresponding to a given skeleton.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
const UnicodeString& getPatternForSkeleton(const UnicodeString& skeleton) const;
@@ -300,7 +300,7 @@
* which must not indicate a failure before the function call.
* @return a StringEnumeration with the base skeletons.
* The caller must delete the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
StringEnumeration* getBaseSkeletons(UErrorCode& status) const;
@@ -327,55 +327,55 @@
* "H:mm:ss,SSSS"
*
* @param decimal
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setDecimal(const UnicodeString& decimal);
/**
* Getter corresponding to setDecimal.
* @return UnicodeString corresponding to the decimal point
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
const UnicodeString& getDecimal() const;
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UClassID getDynamicClassID() const;
/**
* ICU "poor man's RTTI", returns a UClassID for this class.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static UClassID U_EXPORT2 getStaticClassID(void);
private:
/**
* Constructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimePatternGenerator(UErrorCode & status);
/**
* Constructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimePatternGenerator(const Locale& locale, UErrorCode & status);
/**
* Copy constructor.
* @param other DateTimePatternGenerator to copy
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimePatternGenerator(const DateTimePatternGenerator& other);
/**
* Default assignment operator.
* @param other DateTimePatternGenerator to copy
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimePatternGenerator& operator=(const DateTimePatternGenerator& other);
Modified: trunk/source/i18n/unicode/dtrule.h
===================================================================
--- trunk/source/i18n/unicode/dtrule.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/dtrule.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -24,14 +24,14 @@
* a rule specified by month, day of month, day of week and
* time in the day.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
class U_I18N_API DateTimeRule : public UObject {
public:
/**
* Date rule type constants.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
enum DateRuleType {
DOM = 0, /**< The exact day of month,
@@ -46,7 +46,7 @@
/**
* Time rule type constants.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
enum TimeRuleType {
WALL_TIME = 0, /**< The local wall clock time */
@@ -64,7 +64,7 @@
* @param millisInDay The milliseconds in the rule date.
* @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
* or <code>UTC_TIME</code>.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimeRule(int32_t month, int32_t dayOfMonth,
int32_t millisInDay, TimeRuleType timeType);
@@ -82,7 +82,7 @@
* @param millisInDay The milliseconds in the rule date.
* @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
* or <code>UTC_TIME</code>.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimeRule(int32_t month, int32_t weekInMonth, int32_t dayOfWeek,
int32_t millisInDay, TimeRuleType timeType);
@@ -100,7 +100,7 @@
* @param millisInDay The milliseconds in the rule date.
* @param timeType The time type, <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
* or <code>UTC_TIME</code>.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimeRule(int32_t month, int32_t dayOfMonth, int32_t dayOfWeek, UBool after,
int32_t millisInDay, TimeRuleType timeType);
@@ -108,13 +108,13 @@
/**
* Copy constructor.
* @param source The DateTimeRule object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimeRule(const DateTimeRule& source);
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
~DateTimeRule();
@@ -122,14 +122,14 @@
* Clone this DateTimeRule object polymorphically. The caller owns the result and
* should delete it when done.
* @return A copy of the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimeRule* clone(void) const;
/**
* Assignment operator.
* @param right The object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimeRule& operator=(const DateTimeRule& right);
@@ -138,7 +138,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given DateTimeRule objects are semantically equal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool operator==(const DateTimeRule& that) const;
@@ -147,14 +147,14 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given DateTimeRule objects are semantically unequal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool operator!=(const DateTimeRule& that) const;
/**
* Gets the date rule type, such as <code>DOM</code>
* @return The date rule type.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateRuleType getDateRuleType(void) const;
@@ -162,14 +162,14 @@
* Gets the time rule type
* @return The time rule type, either <code>WALL_TIME</code> or <code>STANDARD_TIME</code>
* or <code>UTC_TIME</code>.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeRuleType getTimeRuleType(void) const;
/**
* Gets the rule month.
* @return The rule month.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getRuleMonth(void) const;
@@ -177,7 +177,7 @@
* Gets the rule day of month. When the date rule type
* is <code>DOW</code>, the value is always 0.
* @return The rule day of month
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getRuleDayOfMonth(void) const;
@@ -185,7 +185,7 @@
* Gets the rule day of week. When the date rule type
* is <code>DOM</code>, the value is always 0.
* @return The rule day of week.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getRuleDayOfWeek(void) const;
@@ -194,14 +194,14 @@
* in the month. When the date rule type is not <code>DOW</code>,
* the value is always 0.
* @return The rule day of week ordinal number in the month.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getRuleWeekInMonth(void) const;
/**
* Gets the rule time in the rule day.
* @return The time in the rule day in milliseconds.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getRuleMillisInDay(void) const;
@@ -224,7 +224,7 @@
* . erived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static UClassID U_EXPORT2 getStaticClassID(void);
@@ -237,7 +237,7 @@
* @return The class ID for this object. All objects of a
* given class have the same class ID. Objects of
* other classes have different class IDs.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UClassID getDynamicClassID(void) const;
};
Modified: trunk/source/i18n/unicode/rbtz.h
===================================================================
--- trunk/source/i18n/unicode/rbtz.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/rbtz.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -40,27 +40,27 @@
* delete it.
* @param id The time zone ID.
* @param initialRule The initial time zone rule.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
RuleBasedTimeZone(const UnicodeString& id, InitialTimeZoneRule* initialRule);
/**
* Copy constructor.
* @param source The RuleBasedTimeZone object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
RuleBasedTimeZone(const RuleBasedTimeZone& source);
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual ~RuleBasedTimeZone();
/**
* Assignment operator.
* @param right The object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
RuleBasedTimeZone& operator=(const RuleBasedTimeZone& right);
@@ -70,7 +70,7 @@
* @param that The object to be compared with.
* @return true if the given <code>TimeZone</code> objects are
*semantically equal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator==(const TimeZone& that) const;
@@ -80,7 +80,7 @@
* @param that The object to be compared with.
* @return true if the given <code>TimeZone</code> objects are
* semantically unequal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator!=(const TimeZone& that) const;
@@ -97,7 +97,7 @@
* zone functions.
* @param rule The <code>TimeZoneRule</code>.
* @param status Output param to filled in with a success or an error.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void addTransitionRule(TimeZoneRule* rule, UErrorCode& status);
@@ -108,7 +108,7 @@
* builds internal structure for making the object ready to support
* time zone APIs such as getOffset(), getNextTransition() and others.
* @param status Output param to filled in with a success or an error.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void complete(UErrorCode& status);
@@ -117,7 +117,7 @@
* the TimeZone object cloned.
*
* @return A new copy of this TimeZone object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual TimeZone* clone(void) const;
@@ -143,7 +143,7 @@
* @param millis The reference date's milliseconds in day, local standard time
* @param status Output param to filled in with a success or an error.
* @return The offset in milliseconds to add to GMT to get local time.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
@@ -165,7 +165,7 @@
* @param monthLength The length of the given month in days.
* @param status Output param to filled in with a success or an error.
* @return The offset in milliseconds to add to GMT to get local time.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
uint8_t dayOfWeek, int32_t millis,
@@ -191,7 +191,7 @@
* effect, this value is zero; otherwise it is a positive value,
* typically one hour.
* @param ec input-output error code
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
int32_t& dstOffset, UErrorCode& ec) const;
@@ -201,7 +201,7 @@
* to GMT to get local time, before taking daylight savings time into account).
*
* @param offsetMillis The new raw GMT offset for this time zone.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void setRawOffset(int32_t offsetMillis);
@@ -210,7 +210,7 @@
* to GMT to get local time, before taking daylight savings time into account).
*
* @return The TimeZone's raw GMT offset.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t getRawOffset(void) const;
@@ -218,7 +218,7 @@
* Queries if this time zone uses daylight savings time.
* @return true if this time zone uses daylight savings time,
* false, otherwise.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool useDaylightTime(void) const;
@@ -243,7 +243,7 @@
* @param other the <code>TimeZone</code> object to be compared with
* @return true if the given zone is the same as this one,
* with the possible exception of the ID
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool hasSameRules(const TimeZone& other) const;
@@ -253,7 +253,7 @@
* @param inclusive Whether the base time is inclusive or not.
* @param result Receives the first transition after the base time.
* @return TRUE if the transition is found.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
@@ -263,7 +263,7 @@
* @param inclusive Whether the base time is inclusive or not.
* @param result Receives the most recent transition before the base time.
* @return TRUE if the transition is found.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
@@ -273,7 +273,7 @@
* <code>InitialTimeZoneRule</code>. The return value range is 0 or any positive value.
* @param status Receives error status code.
* @return The number of <code>TimeZoneRule</code>s representing time transitions.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t countTransitionRules(UErrorCode& status) /*const*/;
@@ -291,7 +291,7 @@
* the timezone transition rules. On output, actual number of
* rules filled in the array will be set.
* @param status Receives error status code.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) /*const*/;
@@ -334,7 +334,7 @@
* . erived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static UClassID U_EXPORT2 getStaticClassID(void);
@@ -347,7 +347,7 @@
* @return The class ID for this object. All objects of a
* given class have the same class ID. Objects of
* other classes have different class IDs.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UClassID getDynamicClassID(void) const;
};
Modified: trunk/source/i18n/unicode/simpletz.h
===================================================================
--- trunk/source/i18n/unicode/simpletz.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/simpletz.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -707,7 +707,7 @@
* @param inclusive Whether the base time is inclusive or not.
* @param result Receives the first transition after the base time.
* @return TRUE if the transition is found.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
@@ -717,7 +717,7 @@
* @param inclusive Whether the base time is inclusive or not.
* @param result Receives the most recent transition before the base time.
* @return TRUE if the transition is found.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
@@ -727,7 +727,7 @@
* <code>InitialTimeZoneRule</code>. The return value range is 0 or any positive value.
* @param status Receives error status code.
* @return The number of <code>TimeZoneRule</code>s representing time transitions.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t countTransitionRules(UErrorCode& status) /*const*/;
@@ -745,7 +745,7 @@
* the timezone transition rules. On output, actual number of
* rules filled in the array will be set.
* @param status Receives error status code.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) /*const*/;
Modified: trunk/source/i18n/unicode/timezone.h
===================================================================
--- trunk/source/i18n/unicode/timezone.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/timezone.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -329,7 +329,7 @@
* Returns the timezone data version currently used by ICU.
* @param status Output param to filled in with a success or an error.
* @return the version string, such as "2007f"
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static const char* U_EXPORT2 getTZDataVersion(UErrorCode& status);
Modified: trunk/source/i18n/unicode/tzrule.h
===================================================================
--- trunk/source/i18n/unicode/tzrule.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/tzrule.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -27,13 +27,13 @@
* <code>TimeZoneRule</code> has a set of time zone attributes, such as zone name,
* raw offset (UTC offset for standard time) and daylight saving time offset.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
class U_I18N_API TimeZoneRule : public UObject {
public:
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual ~TimeZoneRule();
@@ -41,7 +41,7 @@
* Clone this TimeZoneRule object polymorphically. The caller owns the result and
* should delete it when done.
* @return A copy of the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual TimeZoneRule* clone(void) const = 0;
@@ -50,7 +50,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given <code>TimeZoneRule</code> objects are semantically equal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator==(const TimeZoneRule& that) const;
@@ -59,7 +59,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given <code>TimeZoneRule</code> objects are semantically unequal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator!=(const TimeZoneRule& that) const;
@@ -67,14 +67,14 @@
* Fills in "name" with the name of this time zone.
* @param name Receives the name of this time zone.
* @return A reference to "name"
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UnicodeString& getName(UnicodeString& name) const;
/**
* Gets the standard time offset.
* @return The standard time offset from UTC in milliseconds.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getRawOffset(void) const;
@@ -82,7 +82,7 @@
* Gets the amount of daylight saving delta time from the standard time.
* @return The amount of daylight saving offset used by this rule
* in milliseconds.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getDSTSavings(void) const;
@@ -92,7 +92,7 @@
* returns true.
* @param other The <code>TimeZoneRule</code> object to be compared with.
* @return true if the other <code>TimeZoneRule</code> is the same as this one.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool isEquivalentTo(const TimeZoneRule& other) const;
@@ -105,7 +105,7 @@
* @param result Receives the very first time when this rule takes effect.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const = 0;
@@ -118,7 +118,7 @@
* @param result Receives the final time when this rule takes effect.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const = 0;
@@ -134,7 +134,7 @@
* the specified base time.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
UBool inclusive, UDate& result) const = 0;
@@ -151,7 +151,7 @@
* the specified base time.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
UBool inclusive, UDate& result) const = 0;
@@ -165,21 +165,21 @@
* @param rawOffset The UTC offset of its standard time in milliseconds.
* @param dstSavings The amount of daylight saving offset adjustment in milliseconds.
* If this ia a rule for standard time, the value of this argument is 0.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings);
/**
* Copy constructor.
* @param source The TimeZoneRule object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeZoneRule(const TimeZoneRule& source);
/**
* Assignment operator.
* @param right The object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeZoneRule& operator=(const TimeZoneRule& right);
@@ -193,7 +193,7 @@
* <code>InitialTimeZoneRule</code> represents a time zone rule
* representing a time zone effective from the beginning and
* has no actual start times.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
class U_I18N_API InitialTimeZoneRule : public TimeZoneRule {
public:
@@ -204,20 +204,20 @@
* @param rawOffset The UTC offset of its standard time in milliseconds.
* @param dstSavings The amount of daylight saving offset adjustment in milliseconds.
* If this ia a rule for standard time, the value of this argument is 0.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
InitialTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings);
/**
* Copy constructor.
* @param source The InitialTimeZoneRule object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
InitialTimeZoneRule(const InitialTimeZoneRule& source);
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual ~InitialTimeZoneRule();
@@ -225,14 +225,14 @@
* Clone this InitialTimeZoneRule object polymorphically. The caller owns the result and
* should delete it when done.
* @return A copy of the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual InitialTimeZoneRule* clone(void) const;
/**
* Assignment operator.
* @param right The object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
InitialTimeZoneRule& operator=(const InitialTimeZoneRule& right);
@@ -241,7 +241,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given <code>TimeZoneRule</code> objects are semantically equal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator==(const TimeZoneRule& that) const;
@@ -250,7 +250,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given <code>TimeZoneRule</code> objects are semantically unequal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator!=(const TimeZoneRule& that) const;
@@ -264,7 +264,7 @@
* @param result Receives the start time in the year.
* @return true if this rule takes effect in the year and the result is set to
* "result".
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
@@ -274,7 +274,7 @@
* returns true.
* @param that The <code>TimeZoneRule</code> object to be compared with.
* @return true if the other <code>TimeZoneRule</code> is equivalent to this one.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool isEquivalentTo(const TimeZoneRule& that) const;
@@ -287,7 +287,7 @@
* @param result Receives the very first time when this rule takes effect.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
@@ -300,7 +300,7 @@
* @param result Receives the final time when this rule takes effect.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
@@ -316,7 +316,7 @@
* the specified base time.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
UBool inclusive, UDate& result) const;
@@ -333,7 +333,7 @@
* the specified base time.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
UBool inclusive, UDate& result) const;
@@ -348,7 +348,7 @@
* . erived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static UClassID U_EXPORT2 getStaticClassID(void);
@@ -361,7 +361,7 @@
* @return The class ID for this object. All objects of a
* given class have the same class ID. Objects of
* other classes have different class IDs.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UClassID getDynamicClassID(void) const;
};
@@ -371,7 +371,7 @@
* rule which takes effect annually. The calenday system used for the rule is
* is based on Gregorian calendar
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
class U_I18N_API AnnualTimeZoneRule : public TimeZoneRule {
public:
@@ -395,7 +395,7 @@
* @param startYear The first year when this rule takes effect.
* @param endYear The last year when this rule takes effect. If this
* rule is effective forever in future, specify MAX_YEAR.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
const DateTimeRule& dateTimeRule, int32_t startYear, int32_t endYear);
@@ -414,7 +414,7 @@
* @param startYear The first year when this rule takes effect.
* @param endYear The last year when this rule takes effect. If this
* rule is effective forever in future, specify MAX_YEAR.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
AnnualTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
DateTimeRule* dateTimeRule, int32_t startYear, int32_t endYear);
@@ -422,13 +422,13 @@
/**
* Copy constructor.
* @param source The AnnualTimeZoneRule object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
AnnualTimeZoneRule(const AnnualTimeZoneRule& source);
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual ~AnnualTimeZoneRule();
@@ -436,14 +436,14 @@
* Clone this AnnualTimeZoneRule object polymorphically. The caller owns the result and
* should delete it when done.
* @return A copy of the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual AnnualTimeZoneRule* clone(void) const;
/**
* Assignment operator.
* @param right The object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
AnnualTimeZoneRule& operator=(const AnnualTimeZoneRule& right);
@@ -452,7 +452,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given <code>TimeZoneRule</code> objects are semantically equal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator==(const TimeZoneRule& that) const;
@@ -461,7 +461,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given <code>TimeZoneRule</code> objects are semantically unequal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator!=(const TimeZoneRule& that) const;
@@ -469,7 +469,7 @@
* Gets the start date/time rule used by this rule.
* @return The <code>AnnualDateTimeRule</code> which represents the start date/time
* rule used by this time zone rule.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
const DateTimeRule* getRule(void) const;
@@ -477,7 +477,7 @@
* Gets the first year when this rule takes effect.
* @return The start year of this rule. The year is in Gregorian calendar
* with 0 == 1 BCE, -1 == 2 BCE, etc.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getStartYear(void) const;
@@ -485,7 +485,7 @@
* Gets the end year when this rule takes effect.
* @return The end year of this rule (inclusive). The year is in Gregorian calendar
* with 0 == 1 BCE, -1 == 2 BCE, etc.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t getEndYear(void) const;
@@ -499,7 +499,7 @@
* @param result Receives the start time in the year.
* @return true if this rule takes effect in the year and the result is set to
* "result".
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool getStartInYear(int32_t year, int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
@@ -509,7 +509,7 @@
* returns true.
* @param that The <code>TimeZoneRule</code> object to be compared with.
* @return true if the other <code>TimeZoneRule</code> is equivalent to this one.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool isEquivalentTo(const TimeZoneRule& that) const;
@@ -522,7 +522,7 @@
* @param result Receives the very first time when this rule takes effect.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
@@ -535,7 +535,7 @@
* @param result Receives the final time when this rule takes effect.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
@@ -551,7 +551,7 @@
* the specified base time.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
UBool inclusive, UDate& result) const;
@@ -568,7 +568,7 @@
* the specified base time.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
UBool inclusive, UDate& result) const;
@@ -589,7 +589,7 @@
* . erived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static UClassID U_EXPORT2 getStaticClassID(void);
@@ -602,7 +602,7 @@
* @return The class ID for this object. All objects of a
* given class have the same class ID. Objects of
* other classes have different class IDs.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UClassID getDynamicClassID(void) const;
};
@@ -611,7 +611,7 @@
* <code>TimeArrayTimeZoneRule</code> represents a time zone rule whose start times are
* defined by an array of milliseconds since the standard base time.
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
class U_I18N_API TimeArrayTimeZoneRule : public TimeZoneRule {
public:
@@ -630,7 +630,7 @@
* @param timeRuleType The time type of the start times, which is one of
* <code>DataTimeRule::WALL_TIME</code>, <code>STANDARD_TIME</code>
* and <code>UTC_TIME</code>.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeArrayTimeZoneRule(const UnicodeString& name, int32_t rawOffset, int32_t dstSavings,
const UDate* startTimes, int32_t numStartTimes, DateTimeRule::TimeRuleType timeRuleType);
@@ -638,13 +638,13 @@
/**
* Copy constructor.
* @param source The TimeArrayTimeZoneRule object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeArrayTimeZoneRule(const TimeArrayTimeZoneRule& source);
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual ~TimeArrayTimeZoneRule();
@@ -652,14 +652,14 @@
* Clone this TimeArrayTimeZoneRule object polymorphically. The caller owns the result and
* should delete it when done.
* @return A copy of the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual TimeArrayTimeZoneRule* clone(void) const;
/**
* Assignment operator.
* @param right The object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeArrayTimeZoneRule& operator=(const TimeArrayTimeZoneRule& right);
@@ -668,7 +668,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given <code>TimeZoneRule</code> objects are semantically equal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator==(const TimeZoneRule& that) const;
@@ -677,7 +677,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given <code>TimeZoneRule</code> objects are semantically unequal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator!=(const TimeZoneRule& that) const;
@@ -687,7 +687,7 @@
* or <code>UTC_TIME</code>.
*
* @return The time type used of the start times used by this rule.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
DateTimeRule::TimeRuleType getTimeType(void) const;
@@ -698,14 +698,14 @@
* @return true if the index is within the valid range and
* and the result is set. When false, the output
* parameger "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool getStartTimeAt(int32_t index, UDate& result) const;
/**
* Returns the number of start times stored in this rule
* @return The number of start times.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
int32_t countStartTimes(void) const;
@@ -715,7 +715,7 @@
* returns true.
* @param that The <code>TimeZoneRule</code> object to be compared with.
* @return true if the other <code>TimeZoneRule</code> is equivalent to this one.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool isEquivalentTo(const TimeZoneRule& that) const;
@@ -728,7 +728,7 @@
* @param result Receives the very first time when this rule takes effect.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getFirstStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
@@ -741,7 +741,7 @@
* @param result Receives the final time when this rule takes effect.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getFinalStart(int32_t prevRawOffset, int32_t prevDSTSavings, UDate& result) const;
@@ -757,7 +757,7 @@
* the specified base time.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getNextStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
UBool inclusive, UDate& result) const;
@@ -774,7 +774,7 @@
* the specified base time.
* @return true if the start time is available. When false is returned, output parameter
* "result" is unchanged.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getPreviousStart(UDate base, int32_t prevRawOffset, int32_t prevDSTSavings,
UBool inclusive, UDate& result) const;
@@ -800,7 +800,7 @@
* . erived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static UClassID U_EXPORT2 getStaticClassID(void);
@@ -813,7 +813,7 @@
* @return The class ID for this object. All objects of a
* given class have the same class ID. Objects of
* other classes have different class IDs.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UClassID getDynamicClassID(void) const;
};
Modified: trunk/source/i18n/unicode/tztrans.h
===================================================================
--- trunk/source/i18n/unicode/tztrans.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/tztrans.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -26,7 +26,7 @@
/**
* <code>TimeZoneTransition</code> is a class representing a time zone transition.
* An instance has a time of transition and rules for both before and after the transition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
class U_I18N_API TimeZoneTransition : public UObject {
public:
@@ -37,26 +37,26 @@
* @param time The time of transition in milliseconds since the base time.
* @param from The time zone rule used before the transition.
* @param to The time zone rule used after the transition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeZoneTransition(UDate time, const TimeZoneRule& from, const TimeZoneRule& to);
/**
* Constructs an empty <code>TimeZoneTransition</code>
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeZoneTransition();
/**
* Copy constructor.
* @param source The TimeZoneTransition object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeZoneTransition(const TimeZoneTransition& source);
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
~TimeZoneTransition();
@@ -64,14 +64,14 @@
* Clone this TimeZoneTransition object polymorphically. The caller owns the result and
* should delete it when done.
* @return A copy of the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeZoneTransition* clone(void) const;
/**
* Assignment operator.
* @param right The object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
TimeZoneTransition& operator=(const TimeZoneTransition& right);
@@ -80,7 +80,7 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given TimeZoneTransition objects are semantically equal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool operator==(const TimeZoneTransition& that) const;
@@ -89,28 +89,28 @@
* of different subclasses are considered unequal.
* @param that The object to be compared with.
* @return true if the given TimeZoneTransition objects are semantically unequal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool operator!=(const TimeZoneTransition& that) const;
/**
* Returns the time of transition in milliseconds.
* @return The time of the transition in milliseconds since the 1970 Jan 1 epoch time.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UDate getTime(void) const;
/**
* Sets the time of transition in milliseconds.
* @param time The time of the transition in milliseconds since the 1970 Jan 1 epoch time.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setTime(UDate time);
/**
* Returns the rule used before the transition.
* @return The time zone rule used after the transition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
const TimeZoneRule* getFrom(void) const;
@@ -118,7 +118,7 @@
* Sets the rule used before the transition. The caller remains
* responsible for deleting the <code>TimeZoneRule</code> object.
* @param from The time zone rule used before the transition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setFrom(const TimeZoneRule& from);
@@ -126,7 +126,7 @@
* Adopts the rule used before the transition. The caller must
* not delete the <code>TimeZoneRule</code> object passed in.
* @param from The time zone rule used before the transition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void adoptFrom(TimeZoneRule* from);
@@ -134,7 +134,7 @@
* Sets the rule used after the transition. The caller remains
* responsible for deleting the <code>TimeZoneRule</code> object.
* @param to The time zone rule used after the transition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setTo(const TimeZoneRule& to);
@@ -142,14 +142,14 @@
* Adopts the rule used after the transition. The caller must
* not delete the <code>TimeZoneRule</code> object passed in.
* @param to The time zone rule used after the transition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void adoptTo(TimeZoneRule* to);
/**
* Returns the rule used after the transition.
* @return The time zone rule used after the transition.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
const TimeZoneRule* getTo(void) const;
@@ -168,7 +168,7 @@
* . erived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static UClassID U_EXPORT2 getStaticClassID(void);
@@ -181,7 +181,7 @@
* @return The class ID for this object. All objects of a
* given class have the same class ID. Objects of
* other classes have different class IDs.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UClassID getDynamicClassID(void) const;
};
Modified: trunk/source/i18n/unicode/ucal.h
===================================================================
--- trunk/source/i18n/unicode/ucal.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/ucal.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -1097,7 +1097,7 @@
* Returns the timezone data version currently used by ICU.
* @param status error code for the operation
* @return the version string, such as "2007f"
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT const char * U_EXPORT2
ucal_getTZDataVersion(UErrorCode* status);
Modified: trunk/source/i18n/unicode/ucoleitr.h
===================================================================
--- trunk/source/i18n/unicode/ucoleitr.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/ucoleitr.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -121,6 +121,7 @@
int32_t textLength,
UErrorCode *status);
+
/**
* get a hash code for a key... Not very useful!
* @param key the given key.
@@ -153,6 +154,20 @@
ucol_reset(UCollationElements *elems);
/**
+ * Set the collation elements to use implicit ordering for Han
+ * even if they've been tailored. This will also force Hangul
+ * syllables to be ordered by decomposing them to their component
+ * Jamo.
+ *
+ * @param elems The UCollationElements containing the text.
+ * @param status A pointer to a UErrorCode to reveive any errors.
+ *
+ * @internal
+ */
+U_INTERNAL void U_EXPORT2
+ucol_forceHanImplicit(UCollationElements *elems, UErrorCode *status);
+
+/**
* Get the ordering priority of the next collation element in the text.
* A single character may contain more than one collation element.
* @param elems The UCollationElements containing the text.
Modified: trunk/source/i18n/unicode/udatpg.h
===================================================================
--- trunk/source/i18n/unicode/udatpg.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/udatpg.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -39,7 +39,7 @@
/**
* Opaque type for a date/time pattern generator object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
typedef void *UDateTimePatternGenerator;
@@ -49,57 +49,57 @@
* Field number constants for udatpg_getAppendItemFormats() and similar functions.
* These constants are separate from UDateFormatField despite semantic overlap
* because some fields are merged for the date/time pattern generator.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
typedef enum UDateTimePatternField {
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_ERA_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_YEAR_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_QUARTER_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_MONTH_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_WEEK_OF_YEAR_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_WEEK_OF_MONTH_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_WEEKDAY_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_DAY_OF_YEAR_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_DAY_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_DAYPERIOD_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_HOUR_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_MINUTE_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_SECOND_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_FRACTIONAL_SECOND_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_ZONE_FIELD,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_FIELD_COUNT
} UDateTimePatternField;
/**
* Status return values from udatpg_addPattern().
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
typedef enum UDateTimePatternConflict {
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_NO_CONFLICT,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_BASE_CONFLICT,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_CONFLICT,
- /** @stable ICU 4.0 */
+ /** @stable ICU 3.8 */
UDATPG_CONFLICT_COUNT
} UDateTimePatternConflict;
@@ -111,7 +111,7 @@
* @param pErrorCode a pointer to the UErrorCode which must not indicate a
* failure before the function call.
* @return a pointer to UDateTimePatternGenerator.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT UDateTimePatternGenerator * U_EXPORT2
udatpg_open(const char *locale, UErrorCode *pErrorCode);
@@ -121,7 +121,7 @@
* @param pErrorCode a pointer to the UErrorCode which must not indicate a
* failure before the function call.
* @return a pointer to UDateTimePatternGenerator.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT UDateTimePatternGenerator * U_EXPORT2
udatpg_openEmpty(UErrorCode *pErrorCode);
@@ -129,7 +129,7 @@
/**
* Close a generator.
* @param dtpg a pointer to UDateTimePatternGenerator.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT void U_EXPORT2
udatpg_close(UDateTimePatternGenerator *dtpg);
@@ -140,7 +140,7 @@
* @param pErrorCode a pointer to the UErrorCode which must not indicate a
* failure before the function call.
* @return a pointer to a new UDateTimePatternGenerator.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT UDateTimePatternGenerator * U_EXPORT2
udatpg_clone(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
@@ -166,7 +166,7 @@
* @param pErrorCode a pointer to the UErrorCode which must not indicate a
* failure before the function call.
* @return the length of bestPattern.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT int32_t U_EXPORT2
udatpg_getBestPattern(UDateTimePatternGenerator *dtpg,
@@ -192,7 +192,7 @@
* @param pErrorCode a pointer to the UErrorCode which must not indicate a
* failure before the function call.
* @return the length of skeleton.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT int32_t U_EXPORT2
udatpg_getSkeleton(UDateTimePatternGenerator *dtpg,
@@ -221,7 +221,7 @@
* @param pErrorCode a pointer to the UErrorCode which must not indicate a
* failure before the function call.
* @return the length of baseSkeleton.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT int32_t U_EXPORT2
udatpg_getBaseSkeleton(UDateTimePatternGenerator *dtpg,
@@ -251,7 +251,7 @@
* failure before the function call.
* @return conflicting status. The value could be UDATPG_NO_CONFLICT,
* UDATPG_BASE_CONFLICT or UDATPG_CONFLICT.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT UDateTimePatternConflict U_EXPORT2
udatpg_addPattern(UDateTimePatternGenerator *dtpg,
@@ -278,7 +278,7 @@
* @param field UDateTimePatternField, such as UDATPG_ERA_FIELD
* @param value pattern, such as "{0}, {1}"
* @param length the length of value.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT void U_EXPORT2
udatpg_setAppendItemFormat(UDateTimePatternGenerator *dtpg,
@@ -293,7 +293,7 @@
* @param field UDateTimePatternField, such as UDATPG_ERA_FIELD
* @param pLength A pointer that will receive the length of appendItemFormat.
* @return appendItemFormat for field.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT const UChar * U_EXPORT2
udatpg_getAppendItemFormat(const UDateTimePatternGenerator *dtpg,
@@ -311,7 +311,7 @@
* @param field UDateTimePatternField
* @param value name for the field.
* @param length the length of value.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT void U_EXPORT2
udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg,
@@ -326,7 +326,7 @@
* @param field UDateTimePatternField, such as UDATPG_ERA_FIELD
* @param pLength A pointer that will receive the length of the name for field.
* @return name for field
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT const UChar * U_EXPORT2
udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg,
@@ -352,7 +352,7 @@
* message format pattern, here {0} will be replaced by the date
* pattern and {1} will be replaced by the time pattern.
* @param length the length of dtFormat.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT void U_EXPORT2
udatpg_setDateTimeFormat(const UDateTimePatternGenerator *dtpg,
@@ -363,7 +363,7 @@
* @param dtpg a pointer to UDateTimePatternGenerator.
* @param pLength A pointer that will receive the length of the format
* @return dateTimeFormat.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT const UChar * U_EXPORT2
udatpg_getDateTimeFormat(const UDateTimePatternGenerator *dtpg,
@@ -380,7 +380,7 @@
* @param dtpg a pointer to UDateTimePatternGenerator.
* @param decimal
* @param length the length of decimal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT void U_EXPORT2
udatpg_setDecimal(UDateTimePatternGenerator *dtpg,
@@ -392,7 +392,7 @@
* @param dtpg a pointer to UDateTimePatternGenerator.
* @param pLength A pointer that will receive the length of the decimal string.
* @return corresponding to the decimal point.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT const UChar * U_EXPORT2
udatpg_getDecimal(const UDateTimePatternGenerator *dtpg,
@@ -421,7 +421,7 @@
* @param pErrorCode a pointer to the UErrorCode which must not indicate a
* failure before the function call.
* @return the length of dest.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT int32_t U_EXPORT2
udatpg_replaceFieldTypes(UDateTimePatternGenerator *dtpg,
@@ -439,7 +439,7 @@
* failure before the function call
* @return a UEnumeration list of all the skeletons
* The caller must close the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT UEnumeration * U_EXPORT2
udatpg_openSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
@@ -452,7 +452,7 @@
* failure before the function call.
* @return a UEnumeration list of all the base skeletons
* The caller must close the object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT UEnumeration * U_EXPORT2
udatpg_openBaseSkeletons(const UDateTimePatternGenerator *dtpg, UErrorCode *pErrorCode);
@@ -465,7 +465,7 @@
* @param skeletonLength pointer to the length of skeleton.
* @param pLength pointer to the length of return pattern.
* @return pattern corresponding to a given skeleton.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
U_DRAFT const UChar * U_EXPORT2
udatpg_getPatternForSkeleton(const UDateTimePatternGenerator *dtpg,
Modified: trunk/source/i18n/unicode/utmscale.h
===================================================================
--- trunk/source/i18n/unicode/utmscale.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/utmscale.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -277,7 +277,7 @@
* Similar to Unix time (linear value from 1970) and struct timeval
* (microseconds resolution).
*
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UDTS_UNIX_MICROSECONDS_TIME,
Modified: trunk/source/i18n/unicode/vtzone.h
===================================================================
--- trunk/source/i18n/unicode/vtzone.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/unicode/vtzone.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -34,27 +34,27 @@
* Note: The consumer of this class reading or writing VTIMEZONE data is responsible to
* decode or encode Non-ASCII text. Methods reading/writing VTIMEZONE data in this class
* do nothing with MIME encoding.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
class U_I18N_API VTimeZone : public BasicTimeZone {
public:
/**
* Copy constructor.
* @param source The <code>VTimeZone</code> object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
VTimeZone(const VTimeZone& source);
/**
* Destructor.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual ~VTimeZone();
/**
* Assignment operator.
* @param right The object to be copied.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
VTimeZone& operator=(const VTimeZone& right);
@@ -64,7 +64,7 @@
* @param that The object to be compared with.
* @return true if the given <code>TimeZone</code> objects are
*semantically equal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator==(const TimeZone& that) const;
@@ -74,7 +74,7 @@
* @param that The object to be compared with.
* @return true if the given <code>TimeZone</code> objects are
* semantically unequal.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool operator!=(const TimeZone& that) const;
@@ -83,7 +83,7 @@
* @param ID The time zone ID, such as America/New_York
* @return A <code>VTimeZone</code> object initialized by the time zone ID,
* or NULL when the ID is unknown.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static VTimeZone* createVTimeZoneByID(const UnicodeString& ID);
@@ -94,7 +94,7 @@
* @param status Output param to filled in with a success or an error.
* @return A <code>VTimeZone</code> initialized by the VTIMEZONE data or
* NULL if failed to load the rule from the VTIMEZONE data.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static VTimeZone* createVTimeZone(const UnicodeString& vtzdata, UErrorCode& status);
@@ -104,14 +104,14 @@
* in the data. Otherwise, the initial value is not set.
* @param url Receives the RFC2445 TZURL property value.
* @return TRUE if TZURL attribute is available and value is set.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool getTZURL(UnicodeString& url) const;
/**
* Sets the RFC2445 TZURL property value.
* @param url The TZURL property value.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setTZURL(const UnicodeString& url);
@@ -121,14 +121,14 @@
* value in the data. Otherwise, the initial value is not set.
* @param lastModified Receives the last modified date.
* @return TRUE if lastModified attribute is available and value is set.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
UBool getLastModified(UDate& lastModified) const;
/**
* Sets the RFC2445 LAST-MODIFIED property value.
* @param lastModified The LAST-MODIFIED date.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void setLastModified(UDate lastModified);
@@ -136,7 +136,7 @@
* Writes RFC2445 VTIMEZONE data for this time zone
* @param result Output param to filled in with the VTIMEZONE data.
* @param status Output param to filled in with a success or an error.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void write(UnicodeString& result, UErrorCode& status) const;
@@ -146,7 +146,7 @@
* @param start The start date.
* @param result Output param to filled in with the VTIMEZONE data.
* @param status Output param to filled in with a success or an error.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void write(UDate start, UnicodeString& result, UErrorCode& status) /*const*/;
@@ -161,7 +161,7 @@
* @param time The date used for rule extraction.
* @param result Output param to filled in with the VTIMEZONE data.
* @param status Output param to filled in with a success or an error.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
void writeSimple(UDate time, UnicodeString& result, UErrorCode& status) /*const*/;
@@ -169,7 +169,7 @@
* Clones TimeZone objects polymorphically. Clients are responsible for deleting
* the TimeZone object cloned.
* @return A new copy of this TimeZone object.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual TimeZone* clone(void) const;
@@ -195,7 +195,7 @@
* @param millis The reference date's milliseconds in day, local standard time
* @param status Output param to filled in with a success or an error.
* @return The offset in milliseconds to add to GMT to get local time.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const;
@@ -217,7 +217,7 @@
* @param monthLength The length of the given month in days.
* @param status Output param to filled in with a success or an error.
* @return The offset in milliseconds to add to GMT to get local time.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
uint8_t dayOfWeek, int32_t millis,
@@ -243,7 +243,7 @@
* effect, this value is zero; otherwise it is a positive value,
* typically one hour.
* @param ec input-output error code
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
int32_t& dstOffset, UErrorCode& ec) const;
@@ -253,7 +253,7 @@
* to GMT to get local time, before taking daylight savings time into account).
*
* @param offsetMillis The new raw GMT offset for this time zone.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void setRawOffset(int32_t offsetMillis);
@@ -262,7 +262,7 @@
* to GMT to get local time, before taking daylight savings time into account).
*
* @return The TimeZone's raw GMT offset.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t getRawOffset(void) const;
@@ -270,7 +270,7 @@
* Queries if this time zone uses daylight savings time.
* @return true if this time zone uses daylight savings time,
* false, otherwise.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool useDaylightTime(void) const;
@@ -295,7 +295,7 @@
* @param other the <code>TimeZone</code> object to be compared with
* @return true if the given zone is the same as this one,
* with the possible exception of the ID
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool hasSameRules(const TimeZone& other) const;
@@ -305,7 +305,7 @@
* @param inclusive Whether the base time is inclusive or not.
* @param result Receives the first transition after the base time.
* @return TRUE if the transition is found.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getNextTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
@@ -315,7 +315,7 @@
* @param inclusive Whether the base time is inclusive or not.
* @param result Receives the most recent transition before the base time.
* @return TRUE if the transition is found.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UBool getPreviousTransition(UDate base, UBool inclusive, TimeZoneTransition& result) /*const*/;
@@ -325,7 +325,7 @@
* <code>InitialTimeZoneRule</code>. The return value range is 0 or any positive value.
* @param status Receives error status code.
* @return The number of <code>TimeZoneRule</code>s representing time transitions.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual int32_t countTransitionRules(UErrorCode& status) /*const*/;
@@ -343,7 +343,7 @@
* the timezone transition rules. On output, actual number of
* rules filled in the array will be set.
* @param status Receives error status code.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual void getTimeZoneRules(const InitialTimeZoneRule*& initial,
const TimeZoneRule* trsrules[], int32_t& trscount, UErrorCode& status) /*const*/;
@@ -417,7 +417,7 @@
* . erived::getStaticClassID()) ...
* </pre>
* @return The class ID for all objects of this class.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
static UClassID U_EXPORT2 getStaticClassID(void);
@@ -430,7 +430,7 @@
* @return The class ID for this object. All objects of a
* given class have the same class ID. Objects of
* other classes have different class IDs.
- * @stable ICU 4.0
+ * @stable ICU 3.8
*/
virtual UClassID getDynamicClassID(void) const;
};
Modified: trunk/source/i18n/usearch.cpp
===================================================================
--- trunk/source/i18n/usearch.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/i18n/usearch.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
/*
**********************************************************************
-* Copyright (C) 2001-2008 IBM and others. All rights reserved.
+* Copyright (C) 2001-2009 IBM and others. All rights reserved.
**********************************************************************
* Date Name Description
* 07/02/2001 synwee Creation.
@@ -1073,7 +1073,6 @@
return offset < 0 || offset > textlength;
}
-#if BOYER_MOORE
/**
* Checks for identical match
* @param strsrch string search data
@@ -1135,6 +1134,7 @@
return U_SUCCESS(status) && result;
}
+#if BOYER_MOORE
/**
* Checks to see if the match is repeated
* @param strsrch string search data
@@ -3407,12 +3407,20 @@
UBool shift;
uint32_t varTop;
+ // **** hack to deal w/ how processed CEs encode quaternary ****
+ UCollationStrength newStrength = ucol_getStrength(strsrch->collator);
+ if ((strsrch->strength < UCOL_QUATERNARY && newStrength >= UCOL_QUATERNARY) ||
+ (strsrch->strength >= UCOL_QUATERNARY && newStrength < UCOL_QUATERNARY)) {
+ sameCollAttribute = FALSE;
+ }
+
strsrch->strength = ucol_getStrength(strsrch->collator);
ceMask = getMask(strsrch->strength);
if (strsrch->ceMask != ceMask) {
strsrch->ceMask = ceMask;
sameCollAttribute = FALSE;
}
+
// if status is a failure, ucol_getAttribute returns UCOL_DEFAULT
shift = ucol_getAttribute(strsrch->collator, UCOL_ALTERNATE_HANDLING,
&status) == UCOL_SHIFTED;
@@ -3789,7 +3797,7 @@
found = TRUE;
// Inner loop checks for a match beginning at each
// position from the outer loop.
- for (patIx=0; patIx<strsrch->pattern.CELength; patIx++) {
+ for (patIx=0; patIx<strsrch->pattern.PCELength; patIx++) {
int64_t patCE = strsrch->pattern.PCE[patIx];
targetCEI = ceb.get(targetIx+patIx);
// Compare CE from target string with CE from the pattern.
@@ -3818,8 +3826,8 @@
// an acceptable character range.
//
const CEI *firstCEI = ceb.get(targetIx);
- const CEI *lastCEI = ceb.get(targetIx + strsrch->pattern.CELength - 1);
- const CEI *nextCEI = ceb.get(targetIx + strsrch->pattern.CELength);
+ const CEI *lastCEI = ceb.get(targetIx + strsrch->pattern.PCELength - 1);
+ const CEI *nextCEI = ceb.get(targetIx + strsrch->pattern.PCELength);
// targetCEI = ceb.get(targetIx+strsrch->pattern.CELength);
// maxLimit = targetCEI->lowIndex;
@@ -3887,6 +3895,10 @@
found = FALSE;
}
+ if (! checkIdentical(strsrch, mStart, mLimit)) {
+ found = FALSE;
+ }
+
if (found) {
break;
}
@@ -4006,10 +4018,10 @@
found = TRUE;
// Inner loop checks for a match beginning at each
// position from the outer loop.
- for (patIx = strsrch->pattern.CELength - 1; patIx >= 0; patIx -= 1) {
+ for (patIx = strsrch->pattern.PCELength - 1; patIx >= 0; patIx -= 1) {
int64_t patCE = strsrch->pattern.PCE[patIx];
- targetCEI = ceb.getPrevious(targetIx + strsrch->pattern.CELength - 1 - patIx);
+ targetCEI = ceb.getPrevious(targetIx + strsrch->pattern.PCELength - 1 - patIx);
// Compare CE from target string with CE from the pattern.
// Note that the target CE will be UCOL_NULLORDER if we reach the end of input,
// which will fail the compare, below.
@@ -4035,7 +4047,7 @@
// There still is a chance of match failure if the CE range not correspond to
// an acceptable character range.
//
- const CEI *firstCEI = ceb.getPrevious(targetIx + strsrch->pattern.CELength - 1);
+ const CEI *firstCEI = ceb.getPrevious(targetIx + strsrch->pattern.PCELength - 1);
const CEI *lastCEI = ceb.getPrevious(targetIx);
const CEI *nextCEI = targetIx > 0? ceb.getPrevious(targetIx - 1) : NULL;
@@ -4102,6 +4114,10 @@
found = FALSE;
}
+ if (! checkIdentical(strsrch, mStart, mLimit)) {
+ found = FALSE;
+ }
+
if (found) {
break;
}
Modified: trunk/source/layout/LEScripts.h
===================================================================
--- trunk/source/layout/LEScripts.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/layout/LEScripts.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -150,7 +150,7 @@
zxxxScriptCode = 102,
zzzzScriptCode = 103,
- /** New script codes from ISO 15924 @stable ICU 4.0 */
+ /** New script codes from ISO 15924 @stable ICU 3.8 */
cariScriptCode = 104,
jpanScriptCode = 105,
lanaScriptCode = 106,
Modified: trunk/source/test/cintltst/callcoll.c
===================================================================
--- trunk/source/test/cintltst/callcoll.c 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/cintltst/callcoll.c 2009-02-07 10:08:34 UTC (rev 162)
@@ -515,7 +515,7 @@
}
if (o != orders[index].order) {
- log_err("Mismatched order at index %d: 0x%0:8X vs. 0x%0:8X\n", index,
+ log_err("Mismatched order at index %d: 0x%8.8X vs. 0x%8.8X\n", index,
orders[index].order, o);
goto bail;
}
Modified: trunk/source/test/cintltst/nccbtst.c
===================================================================
--- trunk/source/test/cintltst/nccbtst.c 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/cintltst/nccbtst.c 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
/********************************************************************
* COPYRIGHT:
- * Copyright (c) 1997-2007, International Business Machines Corporation and
+ * Copyright (c) 1997-2008, International Business Machines Corporation and
* others. All Rights Reserved.
********************************************************************/
/*
@@ -2530,13 +2530,13 @@
static const uint8_t text943[] = {
- 0x82, 0xa9, 0x82, 0x20, /*0xc8,*/ 0x61, 0x8a, 0xbf, 0x8e, 0x9a };
- static const UChar toUnicode943sub[] = { 0x304b, 0xfffd, /*0xff88,*/ 0x0061, 0x6f22, 0x5b57};
- static const UChar toUnicode943skip[]= { 0x304b, /*0xff88,*/ 0x0061, 0x6f22, 0x5b57};
+ 0x82, 0xa9, 0x82, 0x20, 0x61, 0x8a, 0xbf, 0x8e, 0x9a };
+ static const UChar toUnicode943sub[] = { 0x304b, 0x1a, 0x20, 0x0061, 0x6f22, 0x5b57 };
+ static const UChar toUnicode943skip[]= { 0x304b, 0x20, 0x0061, 0x6f22, 0x5b57 };
static const UChar toUnicode943stop[]= { 0x304b};
- static const int32_t fromIBM943Offssub[] = {0, 2, 4, 5, 7};
- static const int32_t fromIBM943Offsskip[] = { 0, 4, 5, 7};
+ static const int32_t fromIBM943Offssub[] = { 0, 2, 3, 4, 5, 7 };
+ static const int32_t fromIBM943Offsskip[] = { 0, 3, 4, 5, 7 };
static const int32_t fromIBM943Offsstop[] = { 0};
gInBufferSize = inputsize;
@@ -2570,9 +2570,9 @@
{
static const uint8_t sampleText[] = {
0x82, 0xa9, 0x61, 0x62, 0x63 , 0x82,
- 0xff, /*0x82, 0xa9,*/ 0x32, 0x33};
- static const UChar toUnicode943sub[] = {0x304b, 0x0061, 0x0062, 0x0063, 0xfffd,/*0x304b,*/ 0x0032, 0x0033};
- static const int32_t fromIBM943Offssub[] = {0, 2, 3, 4, 5, 7, 8};
+ 0xff, 0x32, 0x33};
+ static const UChar toUnicode943sub[] = { 0x304b, 0x0061, 0x0062, 0x0063, 0x1a, 0x1a, 0x0032, 0x0033 };
+ static const int32_t fromIBM943Offssub[] = { 0, 2, 3, 4, 5, 6, 7, 8 };
/*checking illegal value for ibm-943 with substitute*/
gInBufferSize = inputsize;
gOutBufferSize = outputsize;
Modified: trunk/source/test/cintltst/nucnvtst.c
===================================================================
--- trunk/source/test/cintltst/nucnvtst.c 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/cintltst/nucnvtst.c 2009-02-07 10:08:34 UTC (rev 162)
@@ -2608,7 +2608,7 @@
TestNextUCharError(cnv, source, source, U_INDEX_OUTOFBOUNDS_ERROR, "sourceLimit <= source");
/*Test for the condition where there is an invalid character*/
{
- static const uint8_t source2[]={0xa1, 0x01};
+ static const uint8_t source2[]={0xa1, 0x80};
TestNextUCharError(cnv, (const char*)source2, (const char*)source2+sizeof(source2), U_ZERO_ERROR, "an invalid character");
}
/*Test for the condition where we have a truncated char*/
@@ -3901,11 +3901,11 @@
TestISO_2022_KR() {
/* test input */
static const uint16_t in[]={
- 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F66,0x9F67,0x9F6A,0x000A,0x000D
- ,0x9F6C,0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC02,0xAC04
+ 0x9F4B,0x9F4E,0x9F52,0x9F5F,0x9F61,0x9F67,0x9F6A,0x000A,0x000D
+ ,0x9F6C,0x9F77,0x9F8D,0x9F90,0x9F95,0x9F9C,0xAC00,0xAC01,0xAC04
,0xAC07,0xAC08,0xAC09,0x0025,0x0026,0x0027,0x000A,0x000D,0x0028,0x0029
,0x002A,0x002B,0x002C,0x002D,0x002E,0x53C3,0x53C8,0x53C9,0x53CA,0x53CB
- ,0x53CD,0x53D4,0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53DF,0x53E1,0x53E2
+ ,0x53CD,0x53D4,0x53D6,0x53D7,0x53DB,0x000A,0x000D,0x53E1,0x53E2
,0x53E3,0x53E4,0x000A,0x000D};
const UChar* uSource;
const UChar* uSourceLimit;
Modified: trunk/source/test/cintltst/usrchtst.c
===================================================================
--- trunk/source/test/cintltst/usrchtst.c 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/cintltst/usrchtst.c 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,5 +1,5 @@
/********************************************************************
- * Copyright (c) 2001-2008 International Business Machines
+ * Copyright (c) 2001-2009 International Business Machines
* Corporation and others. All Rights Reserved.
********************************************************************
* File usrchtst.c
@@ -2261,6 +2261,64 @@
}
}
+#define TEST_ASSERT(x) \
+ {if ((x)==FALSE) {log_err("%s:%d: FAIL: test assertion failure \"%s\"\n", __FILE__, __LINE__, #x);\
+ }}
+
+static void TestStrengthIdentical(void)
+{
+ UCollator *coll;
+ UErrorCode ec = U_ZERO_ERROR;
+ UStringSearch *search;
+
+ UChar pattern[] = {0x05E9, 0x0591, 0x05E9};
+ UChar text[] = {0x05E9, 0x0592, 0x05E9};
+ int32_t pLen = sizeof (pattern) / sizeof(pattern[0]);
+ int32_t tLen = sizeof(text) / sizeof (text[0]);
+ int32_t expectedPos = 0;
+ int32_t expectedLen = 3;
+
+ int32_t pos;
+ int32_t len;
+
+ /* create a US-English collator */
+ coll = ucol_open ("en_US", &ec);
+
+ /* make sure we didn't fail. */
+ TEST_ASSERT (U_SUCCESS (ec));
+
+ ucol_setStrength( coll, UCOL_TERTIARY);
+
+ /* open a search looking for 0 */
+ search = usearch_openFromCollator (pattern, pLen, text, tLen, coll, NULL, &ec);
+ TEST_ASSERT (U_SUCCESS (ec));
+
+ pos = usearch_first(search, &ec);
+ len = usearch_getMatchedLength(search);
+
+ if(pos != expectedPos) {
+ log_err("Expected search result: %d; Got instead: %d\n", expectedPos, pos);
+ }
+
+ if(len != expectedLen) {
+ log_err("Expected search result length: %d; Got instead: %d\n", expectedLen, len);
+ }
+
+ /* Now try it at strength == UCOL_IDENTICAL */
+ ucol_setStrength(coll, UCOL_IDENTICAL);
+ usearch_reset(search);
+
+ pos = usearch_first(search, &ec);
+ len = usearch_getMatchedLength(search);
+
+ if(pos != -1) {
+ log_err("Expected failure for strentgh = UCOL_IDENTICAL: got %d instead.\n", pos);
+ }
+
+ usearch_close(search);
+ ucol_close(coll);
+}
+
void addSearchTest(TestNode** root)
{
addTest(root, &TestStart, "tscoll/usrchtst/TestStart");
@@ -2313,6 +2371,7 @@
addTest(root, &TestNumeric, "tscoll/usrchtst/TestNumeric");
addTest(root, &TestDiacriticMatch, "tscoll/usrchtst/TestDiacriticMatch");
addTest(root, &TestForwardBackward, "tscoll/usrchtst/TestForwardBackward");
+ addTest(root, &TestStrengthIdentical, "tscoll/usrchtst/TestStrengthIdentical");
}
#endif /* #if !UCONFIG_NO_COLLATION */
Modified: trunk/source/test/intltest/ssearch.cpp
===================================================================
--- trunk/source/test/intltest/ssearch.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/intltest/ssearch.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
/*
**********************************************************************
- * Copyright (C) 2005-2008, International Business Machines
+ * Copyright (C) 2005-2009, International Business Machines
* Corporation and others. All Rights Reserved.
**********************************************************************
*/
@@ -32,7 +32,12 @@
#include "intltest.h"
#include "ssearch.h"
+#include "unicode/colldata.h"
+#include "unicode/bmsearch.h"
+#include "unicode/bms.h"
+
#include "xmlparser.h"
+#include "ucbuf.h"
#include <stdlib.h>
#include <string.h>
@@ -51,6 +56,8 @@
__FILE__, __LINE__, testId, u_errorName(errcode));}}
#define ARRAY_SIZE(array) (sizeof array / sizeof array[0])
+#define NEW_ARRAY(type, count) (type *) uprv_malloc((count) * sizeof(type))
+#define DELETE_ARRAY(array) uprv_free((void *) (array))
//---------------------------------------------------------------------------
//
@@ -81,6 +88,34 @@
case 2: name = "monkeyTest";
if (exec) monkeyTest(params);
break;
+
+ case 3: name = "bmMonkeyTest";
+ if (exec) bmMonkeyTest(params);
+ break;
+
+ case 4: name = "boyerMooreTest";
+ if (exec) boyerMooreTest();
+ break;
+
+ case 5: name = "goodSuffixTest";
+ if (exec) goodSuffixTest();
+ break;
+
+ case 6: name = "searchTime";
+ if (exec) searchTime();
+ break;
+
+ case 7: name = "bmsTest";
+ if (exec) bmsTest();
+ break;
+
+ case 8: name = "bmSearchTest";
+ if (exec) bmSearchTest();
+ break;
+
+ case 9: name = "udhrTest";
+ if (exec) udhrTest();
+ break;
#endif
default: name = "";
break; //needed to end loop
@@ -181,6 +216,16 @@
normalize = UCOL_ON;
}
+ //
+ // Get the alternate_handling flag. Default is UCOL_NON_IGNORABLE.
+ //
+ UColAttributeValue alternateHandling = UCOL_NON_IGNORABLE;
+ const UnicodeString *alt = testCase->getAttribute("alternate_handling");
+ TEST_ASSERT (alt == NULL || *alt == "SHIFTED" || *alt == "NON_IGNORABLE");
+ if (alt != NULL && *alt == "SHIFTED") {
+ alternateHandling = UCOL_SHIFTED;
+ }
+
const UnicodeString defLocale("en");
char clocale[100];
const UnicodeString *locale = testCase->getAttribute("locale");
@@ -196,7 +241,7 @@
int32_t expectedMatchStart = -1;
int32_t expectedMatchLimit = -1;
const UXMLElement *n;
- int nodeCount = 0;
+ int32_t nodeCount = 0;
n = testCase->getChildElement("pattern");
TEST_ASSERT(n != NULL);
@@ -237,13 +282,14 @@
// Check that there weren't extra things in the XML
TEST_ASSERT(nodeCount == testCase->countChildren());
- // Open a collotor and StringSearch based on the parameters
+ // Open a collator and StringSearch based on the parameters
// obtained from the XML.
//
status = U_ZERO_ERROR;
UCollator *collator = ucol_open(clocale, &status);
ucol_setStrength(collator, collatorStrength);
ucol_setAttribute(collator, UCOL_NORMALIZATION_MODE, normalize, &status);
+ ucol_setAttribute(collator, UCOL_ALTERNATE_HANDLING, alternateHandling, &status);
UStringSearch *uss = usearch_openFromCollator(pattern.getBuffer(), pattern.length(),
target.getBuffer(), target.length(),
collator,
@@ -315,6 +361,323 @@
#endif
}
+struct UdhrTestCase
+{
+ char *locale;
+ char *file;
+};
+
+void SSearchTest::udhrTest()
+{
+ UErrorCode status = U_ZERO_ERROR;
+ char path[PATH_BUFFER_SIZE];
+ const char *udhrPath = getPath(path, "udhr");
+
+ if (udhrPath == NULL) {
+ // couldn't get path: error message already output...
+ return;
+ }
+
+ UdhrTestCase testCases[] = {
+ {"en", "udhr_eng.txt"},
+ {"de", "udhr_deu_1996.txt"},
+ {"fr", "udhr_fra.txt"},
+ {"ru", "udhr_rus.txt"},
+ {"th", "udhr_tha.txt"},
+ {"ja", "udhr_jpn.txt"},
+ {"ko", "udhr_kor.txt"},
+ {"zh", "udhr_cmn_hans.txt"},
+ {"zh_Hant", "udhr_cmn_hant.txt"}
+ };
+
+ int32_t testCount = ARRAY_SIZE(testCases);
+
+ for (int32_t t = 0; t < testCount; t += 1) {
+ int32_t len = 0;
+ char *resolvedFileName = NULL;
+ const char *encoding = NULL;
+ UCHARBUF *ucharBuf = NULL;
+
+ ucbuf_resolveFileName(udhrPath, testCases[t].file, NULL, &len, &status);
+ resolvedFileName = NEW_ARRAY(char, len);
+
+ if(resolvedFileName == NULL){
+ continue;
+ }
+
+ if(status == U_BUFFER_OVERFLOW_ERROR){
+ status = U_ZERO_ERROR;
+ }
+
+ ucbuf_resolveFileName(udhrPath, testCases[t].file, resolvedFileName, &len, &status);
+ ucharBuf = ucbuf_open(resolvedFileName, &encoding, TRUE, FALSE, &status);
+
+ DELETE_ARRAY(resolvedFileName);
+
+ if(U_FAILURE(status)){
+ infoln("Could not open the input file %s. Test skipped\n", testCases[t].file);
+ continue;
+ }
+
+ int32_t targetLen = 0;
+ const UChar *target = ucbuf_getBuffer(ucharBuf, &targetLen, &status);
+
+ /* The first line of the file contains the pattern */
+ int32_t start = 0, end = 0, plen = 0;
+
+ for(end = start; ; end += 1) {
+ UChar ch = target[end];
+
+ if (ch == 0x000A || ch == 0x000D || ch == 0x2028) {
+ break;
+ }
+ }
+
+ plen = end - start;
+
+ UChar *pattern = NEW_ARRAY(UChar, plen);
+ for (int32_t i = 0; i < plen; i += 1) {
+ pattern[i] = target[start++];
+ }
+
+ int32_t offset = 0;
+ UCollator *coll = ucol_open(testCases[t].locale, &status);
+ UCD *ucd = NULL;
+ BMS *bms = NULL;
+
+ if (U_FAILURE(status)) {
+ errln("Could not open collator for %s", testCases[t].locale);
+ goto delete_collator;
+ }
+
+ ucd = ucd_open(coll, &status);
+
+ if (U_FAILURE(status)) {
+ errln("Could not open CollData object for %s", testCases[t].locale);
+ goto delete_ucd;
+ }
+
+ bms = bms_open(ucd, pattern, plen, target, targetLen, &status);
+
+ if (U_FAILURE(status)) {
+ errln("Could not open search object for %s", testCases[t].locale);
+ goto delete_bms;
+ }
+
+ start = end = -1;
+ while (bms_search(bms, offset, &start, &end)) {
+ offset = end;
+ }
+
+ if (offset == 0) {
+ errln("Could not find pattern - locale: %s, file: %s ", testCases[t].locale, testCases[t].file);
+ }
+
+delete_bms:
+ bms_close(bms);
+
+delete_ucd:
+ ucd_close(ucd);
+
+delete_collator:
+ ucol_close(coll);
+
+ DELETE_ARRAY(pattern);
+ ucbuf_close(ucharBuf);
+ }
+
+ ucd_flushCache();
+}
+
+void SSearchTest::bmSearchTest()
+{
+#if !UCONFIG_NO_REGULAR_EXPRESSIONS
+ UErrorCode status = U_ZERO_ERROR;
+ char path[PATH_BUFFER_SIZE];
+ const char *testFilePath = getPath(path, "ssearch.xml");
+
+ if (testFilePath == NULL) {
+ return; /* Couldn't get path: error message already output. */
+ }
+
+ UXMLParser *parser = UXMLParser::createParser(status);
+ TEST_ASSERT_SUCCESS(status);
+ UXMLElement *root = parser->parseFile(testFilePath, status);
+ TEST_ASSERT_SUCCESS(status);
+ if (U_FAILURE(status)) {
+ return;
+ }
+
+ const UnicodeString *debugTestCase = root->getAttribute("debug");
+ if (debugTestCase != NULL) {
+// setenv("USEARCH_DEBUG", "1", 1);
+ }
+
+
+ const UXMLElement *testCase;
+ int32_t tc = 0;
+
+ while((testCase = root->nextChildElement(tc)) != NULL) {
+
+ if (testCase->getTagName().compare("test-case") != 0) {
+ errln("ssearch, unrecognized XML Element in test file");
+ continue;
+ }
+ const UnicodeString *id = testCase->getAttribute("id");
+ *testId = 0;
+ if (id != NULL) {
+ id->extract(0, id->length(), testId, sizeof(testId), US_INV);
+ }
+
+ // If debugging test case has been specified and this is not it, skip to next.
+ if (id!=NULL && debugTestCase!=NULL && *id != *debugTestCase) {
+ continue;
+ }
+ //
+ // Get the requested collation strength.
+ // Default is tertiary if the XML attribute is missing from the test case.
+ //
+ const UnicodeString *strength = testCase->getAttribute("strength");
+ UColAttributeValue collatorStrength;
+ if (strength==NULL) { collatorStrength = UCOL_TERTIARY;}
+ else if (*strength=="PRIMARY") { collatorStrength = UCOL_PRIMARY;}
+ else if (*strength=="SECONDARY") { collatorStrength = UCOL_SECONDARY;}
+ else if (*strength=="TERTIARY") { collatorStrength = UCOL_TERTIARY;}
+ else if (*strength=="QUATERNARY") { collatorStrength = UCOL_QUATERNARY;}
+ else if (*strength=="IDENTICAL") { collatorStrength = UCOL_IDENTICAL;}
+ else {
+ // Bogus value supplied for strength. Shouldn't happen, even from
+ // typos, if the XML source has been validated.
+ // This assert is a little deceiving in that strength can be
+ // any of the allowed values, not just TERTIARY, but it will
+ // do the job of getting the error output.
+ TEST_ASSERT(*strength=="TERTIARY")
+ }
+
+ //
+ // Get the collator normalization flag. Default is UCOL_OFF.
+ //
+ UColAttributeValue normalize = UCOL_OFF;
+ const UnicodeString *norm = testCase->getAttribute("norm");
+ TEST_ASSERT (norm==NULL || *norm=="ON" || *norm=="OFF");
+ if (norm!=NULL && *norm=="ON") {
+ normalize = UCOL_ON;
+ }
+
+ //
+ // Get the alternate_handling flag. Default is UCOL_NON_IGNORABLE.
+ //
+ UColAttributeValue alternateHandling = UCOL_NON_IGNORABLE;
+ const UnicodeString *alt = testCase->getAttribute("alternate_handling");
+ TEST_ASSERT (alt == NULL || *alt == "SHIFTED" || *alt == "NON_IGNORABLE");
+ if (alt != NULL && *alt == "SHIFTED") {
+ alternateHandling = UCOL_SHIFTED;
+ }
+
+ const UnicodeString defLocale("en");
+ char clocale[100];
+ const UnicodeString *locale = testCase->getAttribute("locale");
+ if (locale == NULL || locale->length()==0) {
+ locale = &defLocale;
+ };
+ locale->extract(0, locale->length(), clocale, sizeof(clocale), NULL);
+
+
+ UnicodeString text;
+ UnicodeString target;
+ UnicodeString pattern;
+ int32_t expectedMatchStart = -1;
+ int32_t expectedMatchLimit = -1;
+ const UXMLElement *n;
+ int32_t nodeCount = 0;
+
+ n = testCase->getChildElement("pattern");
+ TEST_ASSERT(n != NULL);
+ if (n==NULL) {
+ continue;
+ }
+ text = n->getText(FALSE);
+ text = text.unescape();
+ pattern.append(text);
+ nodeCount++;
+
+ n = testCase->getChildElement("pre");
+ if (n!=NULL) {
+ text = n->getText(FALSE);
+ text = text.unescape();
+ target.append(text);
+ nodeCount++;
+ }
+
+ n = testCase->getChildElement("m");
+ if (n!=NULL) {
+ expectedMatchStart = target.length();
+ text = n->getText(FALSE);
+ text = text.unescape();
+ target.append(text);
+ expectedMatchLimit = target.length();
+ nodeCount++;
+ }
+
+ n = testCase->getChildElement("post");
+ if (n!=NULL) {
+ text = n->getText(FALSE);
+ text = text.unescape();
+ target.append(text);
+ nodeCount++;
+ }
+
+ // Check that there weren't extra things in the XML
+ TEST_ASSERT(nodeCount == testCase->countChildren());
+
+ // Open a collator and StringSearch based on the parameters
+ // obtained from the XML.
+ //
+ status = U_ZERO_ERROR;
+ UCollator *collator = ucol_open(clocale, &status);
+ ucol_setStrength(collator, collatorStrength);
+ ucol_setAttribute(collator, UCOL_NORMALIZATION_MODE, normalize, &status);
+ ucol_setAttribute(collator, UCOL_ALTERNATE_HANDLING, alternateHandling, &status);
+ UCD *ucd = ucd_open(collator, &status);
+ BMS *bms = bms_open(ucd, pattern.getBuffer(), pattern.length(), target.getBuffer(), target.length(), &status);
+
+ TEST_ASSERT_SUCCESS(status);
+ if (U_FAILURE(status)) {
+ bms_close(bms);
+ ucd_close(ucd);
+ ucol_close(collator);
+ continue;
+ }
+
+ int32_t foundStart = 0;
+ int32_t foundLimit = 0;
+ UBool foundMatch;
+
+ //
+ // Do the search, check the match result against the expected results.
+ //
+ foundMatch = bms_search(bms, 0, &foundStart, &foundLimit);
+ //TEST_ASSERT_SUCCESS(status);
+ if (foundMatch && expectedMatchStart < 0 ||
+ foundStart != expectedMatchStart ||
+ foundLimit != expectedMatchLimit) {
+ TEST_ASSERT(FALSE); // ouput generic error position
+ infoln("Found, expected match start = %d, %d \n"
+ "Found, expected match limit = %d, %d",
+ foundStart, expectedMatchStart, foundLimit, expectedMatchLimit);
+ }
+
+ bms_close(bms);
+ ucd_close(ucd);
+ ucol_close(collator);
+ }
+
+ ucd_flushCache();
+ delete root;
+ delete parser;
+#endif
+}
+
struct Order
{
int32_t order;
@@ -549,6 +912,10 @@
void SSearchTest::offsetTest()
{
const char *test[] = {
+ // The sequence \u0FB3\u0F71\u0F71\u0F80 contains a discontiguous
+ // contraction (\u0FB3\u0F71\u0F80) logically followed by \u0F71.
+ "\\u1E33\\u0FB3\\u0F71\\u0F71\\u0F80\\uD835\\uDF6C\\u01B0",
+
"\\ua191\\u16ef\\u2036\\u017a",
#if 0
@@ -673,430 +1040,531 @@
delete col;
}
-class CEList
+static UnicodeString &escape(const UnicodeString &string, UnicodeString &buffer)
{
-public:
- CEList(UCollator *coll, const UnicodeString &string);
- ~CEList();
+ for(int32_t i = 0; i < string.length(); i += 1) {
+ UChar32 ch = string.char32At(i);
- int32_t size() const;
- int32_t get(int32_t index) const;
- UBool matchesAt(int32_t offset, const CEList *other) const;
+ if (ch >= 0x0020 && ch <= 0x007F) {
+ if (ch == 0x005C) {
+ buffer.append("\\\\");
+ } else {
+ buffer.append(ch);
+ }
+ } else {
+ char cbuffer[12];
-private:
- void add(int32_t ce);
+ if (ch <= 0xFFFFL) {
+ sprintf(cbuffer, "\\u%4.4X", ch);
+ } else {
+ sprintf(cbuffer, "\\U%8.8X", ch);
+ }
- int32_t *ces;
- int32_t listMax;
- int32_t listSize;
-};
+ buffer.append(cbuffer);
+ }
-CEList::CEList(UCollator *coll, const UnicodeString &string)
- : ces(NULL), listMax(8), listSize(0)
-{
- UErrorCode status = U_ZERO_ERROR;
- UCollationElements *elems = ucol_openElements(coll, string.getBuffer(), string.length(), &status);
- uint32_t strengthMask = 0;
- int32_t order;
-
-#if 0
- switch (ucol_getStrength(coll))
- {
- default:
- strengthMask |= UCOL_TERTIARYORDERMASK;
- /* fall through */
-
- case UCOL_SECONDARY:
- strengthMask |= UCOL_SECONDARYORDERMASK;
- /* fall through */
-
- case UCOL_PRIMARY:
- strengthMask |= UCOL_PRIMARYORDERMASK;
- }
-#else
- strengthMask = UCOL_PRIMARYORDERMASK;
-#endif
-
- ces = new int32_t[listMax];
-
- while ((order = ucol_next(elems, &status)) != UCOL_NULLORDER) {
- order &= strengthMask;
-
- if (order == UCOL_IGNORABLE) {
- continue;
+ if (ch >= 0x10000L) {
+ i += 1;
}
-
- add(order);
}
- ucol_closeElements(elems);
+ return buffer;
}
+static USet *uset_openEmpty();
+#if 1
-CEList::~CEList()
+struct PCE
{
- delete[] ces;
-}
+ uint64_t ce;
+ int32_t lowOffset;
+ int32_t highOffset;
+};
-void CEList::add(int32_t ce)
+class PCEList
{
- if (listSize >= listMax) {
- listMax *= 2;
+public:
+ PCEList(UCollator *coll, const UnicodeString &string);
+ ~PCEList();
- int32_t *newCEs = new int32_t[listMax];
+ int32_t size() const;
- uprv_memcpy(newCEs, ces, listSize * sizeof(int32_t));
- delete[] ces;
- ces = newCEs;
- }
+ const PCE *get(int32_t index) const;
- ces[listSize++] = ce;
-}
+ int32_t getLowOffset(int32_t index) const;
+ int32_t getHighOffset(int32_t index) const;
+ uint64_t getOrder(int32_t index) const;
-int32_t CEList::get(int32_t index) const
-{
- if (index >= 0 && index < listSize) {
- return ces[index];
- }
+ UBool matchesAt(int32_t offset, const PCEList &other) const;
- return -1;
-}
+ uint64_t operator[](int32_t index) const;
-UBool CEList::matchesAt(int32_t offset, const CEList *other) const
-{
- if (listSize - offset < other->size()) {
- return FALSE;
- }
+private:
+ void add(uint64_t ce, int32_t low, int32_t high);
- for (int32_t i = offset, j = 0; j < other->size(); i += 1, j += 1) {
- if (ces[i] != other->get(j)) {
- return FALSE;
- }
- }
+ PCE *list;
+ int32_t listMax;
+ int32_t listSize;
+};
- return TRUE;
-}
-
-int32_t CEList::size() const
+PCEList::PCEList(UCollator *coll, const UnicodeString &string)
{
- return listSize;
-}
+ UErrorCode status = U_ZERO_ERROR;
+ UCollationElements *elems = ucol_openElements(coll, string.getBuffer(), string.length(), &status);
+ uint64_t order;
+ int32_t low, high;
-class StringList
-{
-public:
- StringList();
- ~StringList();
+ list = new PCE[listMax];
- void add(const UnicodeString *string);
- void add(const UChar *chars, int32_t count);
- const UnicodeString *get(int32_t index) const;
- int32_t size() const;
+ ucol_setOffset(elems, 0, &status);
-private:
- UnicodeString *strings;
- int32_t listMax;
- int32_t listSize;
-};
+ do {
+ order = ucol_nextProcessed(elems, &low, &high, &status);
+ add(order, low, high);
+ } while (order != UCOL_PROCESSED_NULLORDER);
-StringList::StringList()
- : strings(NULL), listMax(16), listSize(0)
-{
- strings = new UnicodeString [listMax];
+ ucol_closeElements(elems);
}
-StringList::~StringList()
+PCEList::~PCEList()
{
- delete[] strings;
+ delete[] list;
}
-void StringList::add(const UnicodeString *string)
+void PCEList::add(uint64_t order, int32_t low, int32_t high)
{
if (listSize >= listMax) {
listMax *= 2;
- UnicodeString *newStrings = new UnicodeString[listMax];
+ PCE *newList = new PCE[listMax];
- uprv_memcpy(newStrings, strings, listSize * sizeof(UnicodeString));
-
- delete[] strings;
- strings = newStrings;
+ uprv_memcpy(newList, list, listSize * sizeof(Order));
+ delete[] list;
+ list = newList;
}
- // The ctor initialized all the strings in
- // the array to empty strings, so this
- // is the same as copying the source string.
- strings[listSize++].append(*string);
-}
+ list[listSize].ce = order;
+ list[listSize].lowOffset = low;
+ list[listSize].highOffset = high;
-void StringList::add(const UChar *chars, int32_t count)
-{
- const UnicodeString string(chars, count);
-
- add(&string);
+ listSize += 1;
}
-const UnicodeString *StringList::get(int32_t index) const
+const PCE *PCEList::get(int32_t index) const
{
- if (index >= 0 && index < listSize) {
- return &strings[index];
+ if (index >= listSize) {
+ return NULL;
}
- return NULL;
+ return &list[index];
}
-int32_t StringList::size() const
+int32_t PCEList::getLowOffset(int32_t index) const
{
- return listSize;
-}
+ const PCE *pce = get(index);
-class CEToStringsMap
-{
-public:
+ if (pce != NULL) {
+ return pce->lowOffset;
+ }
- CEToStringsMap();
- ~CEToStringsMap();
+ return -1;
+}
- void put(int32_t ce, UnicodeString *string);
- StringList *getStringList(int32_t ce) const;
-
-private:
-
- static void deleteStringList(void *obj);
- void putStringList(int32_t ce, StringList *stringList);
- UHashtable *map;
-};
-
-CEToStringsMap::CEToStringsMap()
+int32_t PCEList::getHighOffset(int32_t index) const
{
- UErrorCode status = U_ZERO_ERROR;
+ const PCE *pce = get(index);
- map = uhash_open(uhash_hashLong, uhash_compareLong,
- uhash_compareCaselessUnicodeString,
- &status);
+ if (pce != NULL) {
+ return pce->highOffset;
+ }
- uhash_setValueDeleter(map, deleteStringList);
+ return -1;
}
-CEToStringsMap::~CEToStringsMap()
+uint64_t PCEList::getOrder(int32_t index) const
{
- uhash_close(map);
-}
+ const PCE *pce = get(index);
-void CEToStringsMap::put(int32_t ce, UnicodeString *string)
-{
- StringList *strings = getStringList(ce);
-
- if (strings == NULL) {
- strings = new StringList();
- putStringList(ce, strings);
+ if (pce != NULL) {
+ return pce->ce;
}
- strings->add(string);
+ return UCOL_PROCESSED_NULLORDER;
}
-StringList *CEToStringsMap::getStringList(int32_t ce) const
+int32_t PCEList::size() const
{
- return (StringList *) uhash_iget(map, ce);
+ return listSize;
}
-void CEToStringsMap::putStringList(int32_t ce, StringList *stringList)
+UBool PCEList::matchesAt(int32_t offset, const PCEList &other) const
{
- UErrorCode status = U_ZERO_ERROR;
+ // NOTE: sizes include the NULLORDER, which we don't want to compare.
+ int32_t otherSize = other.size() - 1;
- uhash_iput(map, ce, (void *) stringList, &status);
-}
+ if (listSize - 1 - offset < otherSize) {
+ return FALSE;
+ }
-void CEToStringsMap::deleteStringList(void *obj)
-{
- StringList *strings = (StringList *) obj;
+ for (int32_t i = offset, j = 0; j < otherSize; i += 1, j += 1) {
+ if (getOrder(i) != other.getOrder(j)) {
+ return FALSE;
+ }
+ }
- delete strings;
+ return TRUE;
}
-class StringToCEsMap
+uint64_t PCEList::operator[](int32_t index) const
{
-public:
- StringToCEsMap();
- ~StringToCEsMap();
+ return getOrder(index);
+}
- void put(const UnicodeString *string, const CEList *ces);
- const CEList *get(const UnicodeString *string);
-
-private:
-
- static void deleteCEList(void *obj);
- static void deleteUnicodeStringKey(void *obj);
-
- UHashtable *map;
-};
-
-StringToCEsMap::StringToCEsMap()
+void SSearchTest::boyerMooreTest()
{
UErrorCode status = U_ZERO_ERROR;
+ UCollator *coll = ucol_openFromShortString("S1", FALSE, NULL, &status);
+ CollData *data = NULL;
+ UnicodeString lp = "fuss";
+ UnicodeString sp = "fu\\u00DF";
+ BoyerMooreSearch *longPattern = NULL;
+ BoyerMooreSearch *shortPattern = NULL;
+ UnicodeString targets[] = {"fu\\u00DF", "fu\\u00DFball", "1fu\\u00DFball", "12fu\\u00DFball", "123fu\\u00DFball", "1234fu\\u00DFball",
+ "ffu\\u00DF", "fufu\\u00DF", "fusfu\\u00DF",
+ "fuss", "ffuss", "fufuss", "fusfuss", "1fuss", "12fuss", "123fuss", "1234fuss", "fu\\u00DF", "1fu\\u00DF", "12fu\\u00DF", "123fu\\u00DF", "1234fu\\u00DF"};
+ int32_t start = -1, end = -1;
- map = uhash_open(uhash_hashCaselessUnicodeString,
- uhash_compareCaselessUnicodeString,
- uhash_compareLong,
- &status);
+ coll = ucol_openFromShortString("S1", FALSE, NULL, &status);
+ if (U_FAILURE(status)) {
+ errln("Could not open collator.");
+ return;
+ }
- uhash_setValueDeleter(map, deleteCEList);
- uhash_setKeyDeleter(map, deleteUnicodeStringKey);
-}
+ data = CollData::open(coll, status);
+ if (U_FAILURE(status)) {
+ errln("Could not open CollData object.");
+ goto close_data;
+ }
-StringToCEsMap::~StringToCEsMap()
-{
- uhash_close(map);
-}
-void StringToCEsMap::put(const UnicodeString *string, const CEList *ces)
-{
- UErrorCode status = U_ZERO_ERROR;
+ longPattern = new BoyerMooreSearch(data, lp.unescape(), NULL, status);
+ shortPattern = new BoyerMooreSearch(data, sp.unescape(), NULL, status);
+ if (U_FAILURE(status)) {
+ errln("Could not create pattern objects.");
+ goto close_patterns;
+ }
- uhash_put(map, (void *) string, (void *) ces, &status);
-}
+ for (int32_t t = 0; t < (sizeof(targets)/sizeof(targets[0])); t += 1) {
+ UnicodeString target = targets[t].unescape();
+
+ longPattern->setTargetString(&target, status);
+ if (longPattern->search(0, start, end)) {
+ logln("Test %d: found long pattern at [%d, %d].", t, start, end);
+ } else {
+ errln("Test %d: did not find long pattern.", t);
+ }
-const CEList *StringToCEsMap::get(const UnicodeString *string)
-{
- return (const CEList *) uhash_get(map, string);
-}
+ shortPattern->setTargetString(&target, status);
+ if (shortPattern->search(0, start, end)) {
+ logln("Test %d: found short pattern at [%d, %d].", t, start, end);
+ } else {
+ errln("Test %d: did not find short pattern.", t);
+ }
+ }
-void StringToCEsMap::deleteCEList(void *obj)
-{
- CEList *list = (CEList *) obj;
+close_patterns:
+ delete shortPattern;
+ delete longPattern;
- delete list;
+close_data:
+ CollData::close(data);
+ ucol_close(coll);
}
-void StringToCEsMap::deleteUnicodeStringKey(void *obj)
+void SSearchTest::bmsTest()
{
- UnicodeString *key = (UnicodeString *) obj;
-
- delete key;
-}
-
-static void buildData(UCollator *coll, USet *charsToTest, StringToCEsMap *charsToCEList, CEToStringsMap *ceToCharsStartingWith)
-{
- int32_t itemCount = uset_getItemCount(charsToTest);
UErrorCode status = U_ZERO_ERROR;
+ UCollator *coll = NULL;
+ UCD *data = NULL;
+ UnicodeString lp = "fuss";
+ UnicodeString lpu = lp.unescape();
+ UnicodeString sp = "fu\\u00DF";
+ UnicodeString spu = sp.unescape();
+ BMS *longPattern = NULL;
+ BMS *shortPattern = NULL;
+ UnicodeString targets[] = {"fu\\u00DF", "fu\\u00DFball", "1fu\\u00DFball", "12fu\\u00DFball", "123fu\\u00DFball", "1234fu\\u00DFball",
+ "ffu\\u00DF", "fufu\\u00DF", "fusfu\\u00DF",
+ "fuss", "ffuss", "fufuss", "fusfuss", "1fuss", "12fuss", "123fuss", "1234fuss", "fu\\u00DF", "1fu\\u00DF", "12fu\\u00DF", "123fu\\u00DF", "1234fu\\u00DF"};
+ int32_t start = -1, end = -1;
- for(int32_t item = 0; item < itemCount; item += 1) {
- UChar32 start = 0, end = 0;
- UChar buffer[16];
- int32_t len = uset_getItem(charsToTest, item, &start, &end,
- buffer, 16, &status);
+ coll = ucol_openFromShortString("S1", FALSE, NULL, &status);
+ if (U_FAILURE(status)) {
+ errln("Could not open collator.");
+ return;
+ }
- if (len == 0) {
- for (UChar32 ch = start; ch <= end; ch += 1) {
- UnicodeString *st = new UnicodeString(ch);
- CEList *ceList = new CEList(coll, *st);
+ data = ucd_open(coll, &status);
+ if (U_FAILURE(status)) {
+ errln("Could not open CollData object.");
+ goto close_data;
+ }
- charsToCEList->put(st, ceList);
- ceToCharsStartingWith->put(ceList->get(0), st);
- }
- } else if (len > 0) {
- UnicodeString *st = new UnicodeString(buffer, len);
- CEList *ceList = new CEList(coll, *st);
+ longPattern = bms_open(data, lpu.getBuffer(), lpu.length(), NULL, 0, &status);
+ shortPattern = bms_open(data, spu.getBuffer(), spu.length(), NULL, 0, &status);
+ if (U_FAILURE(status)) {
+ errln("Couldn't open pattern objects.");
+ goto close_patterns;
+ }
- charsToCEList->put(st, ceList);
- ceToCharsStartingWith->put(ceList->get(0), st);
+ for (int32_t t = 0; t < (sizeof(targets)/sizeof(targets[0])); t += 1) {
+ UnicodeString target = targets[t].unescape();
+
+ bms_setTargetString(longPattern, target.getBuffer(), target.length(), &status);
+ if (bms_search(longPattern, 0, &start, &end)) {
+ logln("Test %d: found long pattern at [%d, %d].", t, start, end);
} else {
- // shouldn't happen...
+ errln("Test %d: did not find long pattern.", t);
}
+
+ bms_setTargetString(shortPattern, target.getBuffer(), target.length(), &status);
+ if (bms_search(shortPattern, 0, &start, &end)) {
+ logln("Test %d: found short pattern at [%d, %d].", t, start, end);
+ } else {
+ errln("Test %d: did not find short pattern.", t);
+ }
}
+
+close_patterns:
+ bms_close(shortPattern);
+ bms_close(longPattern);
+
+close_data:
+ ucd_close(data);
+ ucol_close(coll);
}
-static UnicodeString &escape(const UnicodeString &string, UnicodeString &buffer)
+void SSearchTest::goodSuffixTest()
{
- for(int32_t i = 0; i < string.length(); i += 1) {
- UChar32 ch = string.char32At(i);
+ UErrorCode status = U_ZERO_ERROR;
+ UCollator *coll = NULL;
+ CollData *data = NULL;
+ UnicodeString pat = /*"gcagagag"*/ "fxeld";
+ UnicodeString target = /*"gcatcgcagagagtatacagtacg"*/ "cloveldfxeld";
+ BoyerMooreSearch *pattern = NULL;
+ int32_t start = -1, end = -1;
- if (ch >= 0x0020 && ch <= 0x007F) {
- if (ch == 0x005C) {
- buffer.append("\\\\");
- } else {
- buffer.append(ch);
- }
- } else {
- char cbuffer[12];
+ coll = ucol_open(NULL, &status);
+ if (U_FAILURE(status)) {
+ errln("Couldn't open collator.");
+ return;
+ }
- if (ch <= 0xFFFFL) {
- sprintf(cbuffer, "\\u%4.4X", ch);
- } else {
- sprintf(cbuffer, "\\U%8.8X", ch);
- }
+ data = CollData::open(coll, status);
+ if (U_FAILURE(status)) {
+ errln("Couldn't open CollData object.");
+ goto close_data;
+ }
- buffer.append(cbuffer);
- }
+ pattern = new BoyerMooreSearch(data, pat, &target, status);
+ if (U_FAILURE(status)) {
+ errln("Couldn't open pattern object.");
+ goto close_pattern;
+ }
- if (ch >= 0x10000L) {
- i += 1;
- }
+ if (pattern->search(0, start, end)) {
+ logln("Found pattern at [%d, %d].", start, end);
+ } else {
+ errln("Did not find pattern.");
}
- return buffer;
+close_pattern:
+ delete pattern;
+
+close_data:
+ CollData::close(data);
+ ucol_close(coll);
}
-static int32_t minLengthInChars(const CEList *ceList, int32_t offset, StringToCEsMap *charsToCEList, CEToStringsMap *ceToCharsStartingWith,
- UnicodeString &debug)
-{
- // find out shortest string for the longest sequence of ces.
- // needs to be refined to use dynamic programming, but will be roughly right
- int32_t totalStringLength = 0;
-
- while (offset < ceList->size()) {
- int32_t ce = ceList->get(offset);
- int32_t bestLength = INT32_MIN;
- const UnicodeString *bestString = NULL;
- int32_t bestCeLength = 0;
- const StringList *strings = ceToCharsStartingWith->getStringList(ce);
- int32_t stringCount = strings->size();
-
- for (int32_t s = 0; s < stringCount; s += 1) {
- const UnicodeString *string = strings->get(s);
- const CEList *ceList2 = charsToCEList->get(string);
+//
+// searchTime() A quick and dirty performance test for string search.
+// Probably doesn't really belong as part of intltest, but it
+// does check that the search succeeds, and gets the right result,
+// so it serves as a functionality test also.
+//
+// To run as a perf test, up the loop count, select by commenting
+// and uncommenting in the code the operation to be measured,
+// rebuild, and measure the running time of this test alone.
+//
+// time LD_LIBRARY_PATH=whatever ./intltest collate/SSearchTest/searchTime
+//
+void SSearchTest::searchTime() {
+ static const char *longishText =
+"Whylom, as olde stories tellen us,\n"
+"Ther was a duk that highte Theseus:\n"
+"Of Athenes he was lord and governour,\n"
+"And in his tyme swich a conquerour,\n"
+"That gretter was ther noon under the sonne.\n"
+"Ful many a riche contree hadde he wonne;\n"
+"What with his wisdom and his chivalrye,\n"
+"He conquered al the regne of Femenye,\n"
+"That whylom was y-cleped Scithia;\n"
+"And weddede the quene Ipolita,\n"
+"And broghte hir hoom with him in his contree\n"
+"With muchel glorie and greet solempnitee,\n"
+"And eek hir yonge suster Emelye.\n"
+"And thus with victorie and with melodye\n"
+"Lete I this noble duk to Athenes ryde,\n"
+"And al his hoost, in armes, him bisyde.\n"
+"And certes, if it nere to long to here,\n"
+"I wolde han told yow fully the manere,\n"
+"How wonnen was the regne of Femenye\n"
+"By Theseus, and by his chivalrye;\n"
+"And of the grete bataille for the nones\n"
+"Bitwixen Athen's and Amazones;\n"
+"And how asseged was Ipolita,\n"
+"The faire hardy quene of Scithia;\n"
+"And of the feste that was at hir weddinge,\n"
+"And of the tempest at hir hoom-cominge;\n"
+"But al that thing I moot as now forbere.\n"
+"I have, God woot, a large feeld to ere,\n"
+"And wayke been the oxen in my plough.\n"
+"The remenant of the tale is long y-nough.\n"
+"I wol nat letten eek noon of this route;\n"
+"Lat every felawe telle his tale aboute,\n"
+"And lat see now who shal the soper winne;\n"
+"And ther I lefte, I wol ageyn biginne.\n"
+"This duk, of whom I make mencioun,\n"
+"When he was come almost unto the toun,\n"
+"In al his wele and in his moste pryde,\n"
+"He was war, as he caste his eye asyde,\n"
+"Wher that ther kneled in the hye weye\n"
+"A companye of ladies, tweye and tweye,\n"
+"Ech after other, clad in clothes blake; \n"
+"But swich a cry and swich a wo they make,\n"
+"That in this world nis creature livinge,\n"
+"That herde swich another weymentinge;\n"
+"And of this cry they nolde never stenten,\n"
+"Til they the reynes of his brydel henten.\n"
+"'What folk ben ye, that at myn hoomcominge\n"
+"Perturben so my feste with cryinge'?\n"
+"Quod Theseus, 'have ye so greet envye\n"
+"Of myn honour, that thus compleyne and crye? \n"
+"Or who hath yow misboden, or offended?\n"
+"And telleth me if it may been amended;\n"
+"And why that ye ben clothed thus in blak'?\n"
+"The eldest lady of hem alle spak,\n"
+"When she hadde swowned with a deedly chere,\n"
+"That it was routhe for to seen and here,\n"
+"And seyde: 'Lord, to whom Fortune hath yiven\n"
+"Victorie, and as a conquerour to liven,\n"
+"Noght greveth us your glorie and your honour;\n"
+"But we biseken mercy and socour.\n"
+"Have mercy on our wo and our distresse.\n"
+"Som drope of pitee, thurgh thy gentilesse,\n"
+"Up-on us wrecched wommen lat thou falle.\n"
+"For certes, lord, ther nis noon of us alle,\n"
+"That she nath been a duchesse or a quene;\n"
+"Now be we caitifs, as it is wel sene:\n"
+"Thanked be Fortune, and hir false wheel,\n"
+"That noon estat assureth to be weel.\n"
+"And certes, lord, t'abyden your presence,\n"
+"Here in the temple of the goddesse Clemence\n"
+"We han ben waytinge al this fourtenight;\n"
+"Now help us, lord, sith it is in thy might.\n"
+"I wrecche, which that wepe and waille thus,\n"
+"Was whylom wyf to king Capaneus,\n"
+"That starf at Thebes, cursed be that day!\n"
+"And alle we, that been in this array,\n"
+"And maken al this lamentacioun,\n"
+"We losten alle our housbondes at that toun,\n"
+"Whyl that the sege ther-aboute lay.\n"
+"And yet now th'olde Creon, weylaway!\n"
+"The lord is now of Thebes the citee, \n"
+"Fulfild of ire and of iniquitee,\n"
+"He, for despyt, and for his tirannye,\n"
+"To do the dede bodyes vileinye,\n"
+"Of alle our lordes, whiche that ben slawe,\n"
+"Hath alle the bodyes on an heep y-drawe,\n"
+"And wol nat suffren hem, by noon assent,\n"
+"Neither to been y-buried nor y-brent,\n"
+"But maketh houndes ete hem in despyt. zet'\n";
- if (ceList->matchesAt(offset, ceList2)) {
- int32_t length = ceList2->size() - string->length();
+#define TEST_BOYER_MOORE 1
+const char *cPattern = "maketh houndes ete hem";
+//const char *cPattern = "Whylom";
+//const char *cPattern = "zet";
+ const char *testId = "searchTime()"; // for error macros.
+ UnicodeString target = longishText;
+ UErrorCode status = U_ZERO_ERROR;
- if (bestLength < length) {
- bestLength = length;
- bestCeLength = ceList2->size();
- bestString = string;
- }
- }
- }
-
- totalStringLength += bestString->length();
- escape(*bestString, debug).append("/");
- offset += bestCeLength;
- }
- debug.append((UChar)0x0000);
- return totalStringLength;
-}
+ UCollator *collator = ucol_open("en", &status);
+ CollData *data = CollData::open(collator, status);
+ TEST_ASSERT_SUCCESS(status);
+ //ucol_setStrength(collator, collatorStrength);
+ //ucol_setAttribute(collator, UCOL_NORMALIZATION_MODE, normalize, &status);
+ UnicodeString uPattern = cPattern;
+#ifndef TEST_BOYER_MOORE
+ UStringSearch *uss = usearch_openFromCollator(uPattern.getBuffer(), uPattern.length(),
+ target.getBuffer(), target.length(),
+ collator,
+ NULL, // the break iterator
+ &status);
+ TEST_ASSERT_SUCCESS(status);
+#else
+ BoyerMooreSearch bms(data, uPattern, &target, status);
+ TEST_ASSERT_SUCCESS(status);
+#endif
+
+// int32_t foundStart;
+// int32_t foundEnd;
+ UBool found;
+
+ // Find the match position usgin strstr
+ const char *pm = strstr(longishText, cPattern);
+ TEST_ASSERT_M(pm!=NULL, "No pattern match with strstr");
+ int32_t refMatchPos = (int32_t)(pm - longishText);
+ int32_t icuMatchPos;
+ int32_t icuMatchEnd;
+#ifndef TEST_BOYER_MOORE
+ usearch_search(uss, 0, &icuMatchPos, &icuMatchEnd, &status);
+ TEST_ASSERT_SUCCESS(status);
+#else
+ found = bms.search(0, icuMatchPos, icuMatchEnd);
+#endif
+ TEST_ASSERT_M(refMatchPos == icuMatchPos, "strstr and icu give different match positions.");
-static void minLengthTest(UCollator *coll, StringToCEsMap *charsToCEList, CEToStringsMap *ceToCharsStartingWith)
-{
- UnicodeString examples[] = {"fuss", "fiss", "affliss", "VII"};
- UnicodeString debug;
- int32_t nExamples = sizeof(examples) / sizeof(examples[0]);
+ int32_t i;
+ int32_t j=0;
- for (int32_t s = 0; s < nExamples; s += 1) {
- CEList *ceList = new CEList(coll, examples[s]);
+ // Try loopcounts around 100000 to some millions, depending on the operation,
+ // to get runtimes of at least several seconds.
+ for (i=0; i<10000; i++) {
+#ifndef TEST_BOYER_MOORE
+ found = usearch_search(uss, 0, &icuMatchPos, &icuMatchEnd, &status);
+#else
+ found = bms.search(0, icuMatchPos, icuMatchEnd);
+#endif
+ //TEST_ASSERT_SUCCESS(status);
+ //TEST_ASSERT(found);
- //infoln("%S:", examples[s].getTerminatedBuffer());
+ // usearch_setOffset(uss, 0, &status);
+ // icuMatchPos = usearch_next(uss, &status);
- for(int32_t i = 0; i < examples[s].length(); i += 1) {
- debug.remove();
+ // The i+j stuff is to confuse the optimizer and get it to actually leave the
+ // call to strstr in place.
+ //pm = strstr(longishText+j, cPattern);
+ //j = (j + i)%5;
+ }
- int32_t minLength = minLengthInChars(ceList, i, charsToCEList, ceToCharsStartingWith, debug);
- //infoln("\t%d\t%S", minLength, debug.getTerminatedBuffer());
- }
-
- //infoln();
- delete ceList;
- }
+ printf("%d\n", pm-longishText, j);
+#ifndef TEST_BOYER_MOORE
+ usearch_close(uss);
+#else
+ CollData::close(data);
+#endif
+ ucol_close(collator);
}
+#endif
//----------------------------------------------------------------------------------------
//
@@ -1171,7 +1639,7 @@
class StringSetMonkey : public Monkey
{
public:
- StringSetMonkey(const USet *theSet, UCollator *theCollator, StringToCEsMap *theCharsToCEList, CEToStringsMap *theCeToCharsStartingWith);
+ StringSetMonkey(const USet *theSet, UCollator *theCollator, CollData *theCollData);
~StringSetMonkey();
void append(UnicodeString &testCase, UnicodeString &alternate);
@@ -1180,13 +1648,12 @@
UnicodeString &generateAlternative(const UnicodeString &testCase, UnicodeString &alternate);
const USet *set;
- UCollator *coll;
- StringToCEsMap *charsToCEList;
- CEToStringsMap *ceToCharsStartingWith;
+ UCollator *coll;
+ CollData *collData;
};
-StringSetMonkey::StringSetMonkey(const USet *theSet, UCollator *theCollator, StringToCEsMap *theCharsToCEList, CEToStringsMap *theCeToCharsStartingWith)
-: Monkey(), set(theSet), coll(theCollator), charsToCEList(theCharsToCEList), ceToCharsStartingWith(theCeToCharsStartingWith)
+StringSetMonkey::StringSetMonkey(const USet *theSet, UCollator *theCollator, CollData *theCollData)
+: Monkey(), set(theSet), coll(theCollator), collData(theCollData)
{
// ook.
}
@@ -1228,7 +1695,8 @@
{
// find out shortest string for the longest sequence of ces.
// needs to be refined to use dynamic programming, but will be roughly right
- CEList ceList(coll, testCase);
+ UErrorCode status = U_ZERO_ERROR;
+ CEList ceList(coll, testCase, status);
UnicodeString alt;
int32_t offset = 0;
@@ -1238,7 +1706,7 @@
while (offset < ceList.size()) {
int32_t ce = ceList.get(offset);
- const StringList *strings = ceToCharsStartingWith->getStringList(ce);
+ const StringList *strings = collData->getStringList(ce);
if (strings == NULL) {
return alternate.append(testCase);
@@ -1248,8 +1716,9 @@
int32_t tries = 0;
// find random string that generates the same CEList
- const CEList *ceList2;
- const UnicodeString *string;
+ const CEList *ceList2 = NULL;
+ const UnicodeString *string = NULL;
+ UBool matches = FALSE;
do {
int32_t s = m_rand() % stringCount;
@@ -1260,14 +1729,20 @@
}
string = strings->get(s);
- ceList2 = charsToCEList->get(string);
- } while (! ceList.matchesAt(offset, ceList2));
+ ceList2 = collData->getCEList(string);
+ matches = ceList.matchesAt(offset, ceList2);
+ if (! matches) {
+ collData->freeCEList((CEList *) ceList2);
+ }
+ } while (! matches);
+
alt.append(*string);
offset += ceList2->size();
+ collData->freeCEList(ceList2);
}
- const CEList altCEs(coll, alt);
+ const CEList altCEs(coll, alt, status);
if (ceList.matchesAt(0, &altCEs)) {
return alternate.append(alt);
@@ -1279,6 +1754,7 @@
static void generateTestCase(UCollator *coll, Monkey *monkeys[], int32_t monkeyCount, UnicodeString &testCase, UnicodeString &alternate)
{
int32_t pieces = (m_rand() % 4) + 1;
+ UErrorCode status = U_ZERO_ERROR;
UBool matches;
do {
@@ -1292,8 +1768,8 @@
monkeys[monkey]->append(testCase, alternate);
}
- const CEList ceTest(coll, testCase);
- const CEList ceAlt(coll, alternate);
+ const CEList ceTest(coll, testCase, status);
+ const CEList ceAlt(coll, alternate, status);
matches = ceTest.matchesAt(0, &ceAlt);
} while (! matches);
@@ -1388,7 +1864,8 @@
target.getBuffer(), target.length(), &status);
if (patternSize == 0) {
- matchStart = matchEnd = 0;
+ // Searching for an empty pattern always fails
+ matchStart = matchEnd = -1;
return FALSE;
}
@@ -1509,14 +1986,9 @@
// **** TODO: find *all* matches, not just first one ****
simpleSearch(coll, testCase, 0, pattern, expectedStart, expectedEnd);
-#if 0
usearch_search(uss, 0, &actualStart, &actualEnd, &status);
-#else
- actualStart = usearch_next(uss, &status);
- actualEnd = actualStart + usearch_getMatchedLength(uss);
-#endif
- if (actualStart != expectedStart || actualEnd != expectedEnd) {
+ if (expectedStart >= 0 && (actualStart != expectedStart || actualEnd != expectedEnd)) {
errln("Search for <pattern> in <%s> failed: expected [%d, %d], got [%d, %d]\n"
" strength=%s seed=%d",
name, expectedStart, expectedEnd, actualStart, actualEnd, strength, seed);
@@ -1531,15 +2003,9 @@
usearch_setPattern(uss, altPattern.getBuffer(), altPattern.length(), &status);
-#if 0
usearch_search(uss, 0, &actualStart, &actualEnd, &status);
-#else
- usearch_reset(uss);
- actualStart = usearch_next(uss, &status);
- actualEnd = actualStart + usearch_getMatchedLength(uss);
-#endif
- if (actualStart != expectedStart || actualEnd != expectedEnd) {
+ if (expectedStart >= 0 && (actualStart != expectedStart || actualEnd != expectedEnd)) {
errln("Search for <alt_pattern> in <%s> failed: expected [%d, %d], got [%d, %d]\n"
" strength=%s seed=%d",
name, expectedStart, expectedEnd, actualStart, actualEnd, strength, seed);
@@ -1553,39 +2019,79 @@
return notFoundCount;
}
+
+int32_t SSearchTest::bmMonkeyTestCase(UCollator *coll, const UnicodeString &testCase, const UnicodeString &pattern, const UnicodeString &altPattern,
+ BoyerMooreSearch *bms, BoyerMooreSearch *abms,
+ const char *name, const char *strength, uint32_t seed)
+{
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t actualStart = -1, actualEnd = -1;
+ //int32_t expectedStart = prefix.length(), expectedEnd = prefix.length() + altPattern.length();
+ int32_t expectedStart = -1, expectedEnd = -1;
+ int32_t notFoundCount = 0;
+
+ // **** TODO: find *all* matches, not just first one ****
+ simpleSearch(coll, testCase, 0, pattern, expectedStart, expectedEnd);
+
+ bms->setTargetString(&testCase, status);
+ bms->search(0, actualStart, actualEnd);
+
+ if (expectedStart >= 0 && (actualStart != expectedStart || actualEnd != expectedEnd)) {
+ errln("Boyer-Moore Search for <pattern> in <%s> failed: expected [%d, %d], got [%d, %d]\n"
+ " strength=%s seed=%d",
+ name, expectedStart, expectedEnd, actualStart, actualEnd, strength, seed);
+ }
+
+ if (expectedStart == -1 && actualStart == -1) {
+ notFoundCount += 1;
+ }
+
+ // **** TODO: find *all* matches, not just first one ****
+ simpleSearch(coll, testCase, 0, altPattern, expectedStart, expectedEnd);
+
+ abms->setTargetString(&testCase, status);
+ abms->search(0, actualStart, actualEnd);
+
+ if (expectedStart >= 0 && (actualStart != expectedStart || actualEnd != expectedEnd)) {
+ errln("Boyer-Moore Search for <alt_pattern> in <%s> failed: expected [%d, %d], got [%d, %d]\n"
+ " strength=%s seed=%d",
+ name, expectedStart, expectedEnd, actualStart, actualEnd, strength, seed);
+ }
+
+ if (expectedStart == -1 && actualStart == -1) {
+ notFoundCount += 1;
+ }
+
+
+ return notFoundCount;
+}
#endif
void SSearchTest::monkeyTest(char *params)
{
// ook!
UErrorCode status = U_ZERO_ERROR;
- U_STRING_DECL(test_pattern, "[[:assigned:]-[:ideographic:]-[:hangul:]-[:c:]]", 47);
- U_STRING_INIT(test_pattern, "[[:assigned:]-[:ideographic:]-[:hangul:]-[:c:]]", 47);
- UCollator *coll = ucol_open(NULL, &status);
+ //UCollator *coll = ucol_open(NULL, &status);
+ UCollator *coll = ucol_openFromShortString("S1", FALSE, NULL, &status);
+
if (U_FAILURE(status)) {
errln("Failed to create collator in MonkeyTest!");
return;
}
- USet *charsToTest = uset_openPattern(test_pattern, 47, &status);
+
+ CollData *monkeyData = CollData::open(coll, status);
+
USet *expansions = uset_openEmpty();
USet *contractions = uset_openEmpty();
- StringToCEsMap *charsToCEList = new StringToCEsMap();
- CEToStringsMap *ceToCharsStartingWith = new CEToStringsMap();
ucol_getContractionsAndExpansions(coll, contractions, expansions, FALSE, &status);
- uset_addAll(charsToTest, contractions);
- uset_addAll(charsToTest, expansions);
-
- // TODO: set strength to UCOL_PRIMARY, change CEList to use strength?
- buildData(coll, charsToTest, charsToCEList, ceToCharsStartingWith);
-
U_STRING_DECL(letter_pattern, "[[:letter:]-[:ideographic:]-[:hangul:]]", 39);
U_STRING_INIT(letter_pattern, "[[:letter:]-[:ideographic:]-[:hangul:]]", 39);
USet *letters = uset_openPattern(letter_pattern, 39, &status);
SetMonkey letterMonkey(letters);
- StringSetMonkey contractionMonkey(contractions, coll, charsToCEList, ceToCharsStartingWith);
- StringSetMonkey expansionMonkey(expansions, coll, charsToCEList, ceToCharsStartingWith);
+ StringSetMonkey contractionMonkey(contractions, coll, monkeyData);
+ StringSetMonkey expansionMonkey(expansions, coll, monkeyData);
UnicodeString testCase;
UnicodeString alternate;
UnicodeString pattern, altPattern;
@@ -1610,7 +2116,7 @@
int32_t strengthCount = sizeof(strengths) / sizeof(strengths[0]);
int32_t loopCount = quick? 1000 : 10000;
int32_t firstStrength = 0;
- int32_t lastStrength = strengthCount - 1;
+ int32_t lastStrength = strengthCount - 1; //*/ 0;
if (params != NULL) {
#if !UCONFIG_NO_REGULAR_EXPRESSIONS
@@ -1651,11 +2157,12 @@
for(int32_t s = firstStrength; s <= lastStrength; s += 1) {
int32_t notFoundCount = 0;
+ logln("Setting strength to %s.", strengthNames[s]);
ucol_setStrength(coll, strengths[s]);
// TODO: try alternate prefix and suffix too?
// TODO: alterntaes are only equal at primary strength. Is this OK?
- for(int32_t t = 0; t < 10000; t += 1) {
+ for(int32_t t = 0; t < loopCount; t += 1) {
uint32_t seed = m_seed;
int32_t nmc = 0;
@@ -1686,16 +2193,166 @@
notFoundCount += monkeyTestCase(coll, testCase, pattern, altPattern, "pattern + suffix", strengthNames[s], seed);
}
+ logln("For strength %s the not found count is %d.", strengthNames[s], notFoundCount);
+ }
+
+ uset_close(contractions);
+ uset_close(expansions);
+ uset_close(letters);
+
+ CollData::close(monkeyData);
+
+ ucol_close(coll);
+}
+
+void SSearchTest::bmMonkeyTest(char *params)
+{
+ // ook!
+ UErrorCode status = U_ZERO_ERROR;
+ UCollator *coll = ucol_openFromShortString("S1", FALSE, NULL, &status);
+
+ if (U_FAILURE(status)) {
+ errln("Failed to create collator in MonkeyTest!");
+ return;
+ }
+
+ CollData *monkeyData = CollData::open(coll, status);
+
+ USet *expansions = uset_openEmpty();
+ USet *contractions = uset_openEmpty();
+
+ ucol_getContractionsAndExpansions(coll, contractions, expansions, FALSE, &status);
+
+ U_STRING_DECL(letter_pattern, "[[:letter:]-[:ideographic:]-[:hangul:]]", 39);
+ U_STRING_INIT(letter_pattern, "[[:letter:]-[:ideographic:]-[:hangul:]]", 39);
+ USet *letters = uset_openPattern(letter_pattern, 39, &status);
+ SetMonkey letterMonkey(letters);
+ StringSetMonkey contractionMonkey(contractions, coll, monkeyData);
+ StringSetMonkey expansionMonkey(expansions, coll, monkeyData);
+ UnicodeString testCase;
+ UnicodeString alternate;
+ UnicodeString pattern, altPattern;
+ UnicodeString prefix, altPrefix;
+ UnicodeString suffix, altSuffix;
+
+ Monkey *monkeys[] = {
+ &letterMonkey,
+ &contractionMonkey,
+ &expansionMonkey,
+ &contractionMonkey,
+ &expansionMonkey,
+ &contractionMonkey,
+ &expansionMonkey,
+ &contractionMonkey,
+ &expansionMonkey};
+ int32_t monkeyCount = sizeof(monkeys) / sizeof(monkeys[0]);
+ int32_t nonMatchCount = 0;
+
+ UCollationStrength strengths[] = {UCOL_PRIMARY, UCOL_SECONDARY, UCOL_TERTIARY};
+ const char *strengthNames[] = {"primary", "secondary", "tertiary"};
+ int32_t strengthCount = sizeof(strengths) / sizeof(strengths[0]);
+ int32_t loopCount = quick? 1000 : 10000;
+ int32_t firstStrength = 0;
+ int32_t lastStrength = strengthCount - 1; //*/ 0;
+
+ if (params != NULL) {
+#if !UCONFIG_NO_REGULAR_EXPRESSIONS
+ UnicodeString p(params);
+
+ loopCount = getIntParam("loop", p, loopCount);
+ m_seed = getIntParam("seed", p, m_seed);
+
+ RegexMatcher m(" *strength *= *(primary|secondary|tertiary) *", p, 0, status);
+ if (m.find()) {
+ UnicodeString breakType = m.group(1, status);
+
+ for (int32_t s = 0; s < strengthCount; s += 1) {
+ if (breakType == strengthNames[s]) {
+ firstStrength = lastStrength = s;
+ break;
+ }
+ }
+
+ m.reset();
+ p = m.replaceFirst("", status);
+ }
+
+ if (RegexMatcher("\\S", p, 0, status).find()) {
+ // Each option is stripped out of the option string as it is processed.
+ // All options have been checked. The option string should have been completely emptied..
+ char buf[100];
+ p.extract(buf, sizeof(buf), NULL, status);
+ buf[sizeof(buf)-1] = 0;
+ errln("Unrecognized or extra parameter: %s\n", buf);
+ return;
+ }
+#else
+ infoln("SSearchTest built with UCONFIG_NO_REGULAR_EXPRESSIONS: ignoring parameters.");
+#endif
+ }
+
+ for(int32_t s = firstStrength; s <= lastStrength; s += 1) {
+ int32_t notFoundCount = 0;
+
+ logln("Setting strength to %s.", strengthNames[s]);
+ ucol_setStrength(coll, strengths[s]);
+
+ CollData *data = CollData::open(coll, status);
+
+ // TODO: try alternate prefix and suffix too?
+ // TODO: alterntaes are only equal at primary strength. Is this OK?
+ for(int32_t t = 0; t < loopCount; t += 1) {
+ uint32_t seed = m_seed;
+ int32_t nmc = 0;
+
+ generateTestCase(coll, monkeys, monkeyCount, pattern, altPattern);
+ generateTestCase(coll, monkeys, monkeyCount, prefix, altPrefix);
+ generateTestCase(coll, monkeys, monkeyCount, suffix, altSuffix);
+
+ BoyerMooreSearch pat(data, pattern, NULL, status);
+ BoyerMooreSearch alt(data, altPattern, NULL, status);
+
+ // **** need a better way to deal with this ****
+#if 0
+ if (pat.empty() ||
+ alt.empty()) {
+ continue;
+ }
+#endif
+
+ // pattern
+ notFoundCount += bmMonkeyTestCase(coll, pattern, pattern, altPattern, &pat, &alt, "pattern", strengthNames[s], seed);
+
+ testCase.remove();
+ testCase.append(prefix);
+ testCase.append(/*alt*/pattern);
+
+ // prefix + pattern
+ notFoundCount += bmMonkeyTestCase(coll, testCase, pattern, altPattern, &pat, &alt, "prefix + pattern", strengthNames[s], seed);
+
+ testCase.append(suffix);
+
+ // prefix + pattern + suffix
+ notFoundCount += bmMonkeyTestCase(coll, testCase, pattern, altPattern, &pat, &alt, "prefix + pattern + suffix", strengthNames[s], seed);
+
+ testCase.remove();
+ testCase.append(pattern);
+ testCase.append(suffix);
+
+ // pattern + suffix
+ notFoundCount += bmMonkeyTestCase(coll, testCase, pattern, altPattern, &pat, &alt, "pattern + suffix", strengthNames[s], seed);
+ }
+
+ CollData::close(data);
+
logln("For strength %s the not found count is %d.", strengthNames[s], notFoundCount);
}
- delete ceToCharsStartingWith;
- delete charsToCEList;
-
uset_close(contractions);
uset_close(expansions);
- uset_close(charsToTest);
uset_close(letters);
+
+ CollData::close(monkeyData);
ucol_close(coll);
}
Modified: trunk/source/test/intltest/ssearch.h
===================================================================
--- trunk/source/test/intltest/ssearch.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/intltest/ssearch.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -11,6 +11,7 @@
#include "unicode/utypes.h"
#include "unicode/unistr.h"
#include "unicode/ucol.h"
+#include "unicode/bmsearch.h"
#include "intltest.h"
@@ -34,10 +35,24 @@
virtual void offsetTest();
virtual void monkeyTest(char *params);
+ virtual void bmMonkeyTest(char *params);
+ virtual void boyerMooreTest();
+ virtual void goodSuffixTest();
+ virtual void searchTime();
+
+ virtual void bmsTest();
+ virtual void bmSearchTest();
+
+ virtual void udhrTest();
+
private:
virtual const char *getPath(char buffer[2048], const char *filename);
virtual int32_t monkeyTestCase(UCollator *coll, const UnicodeString &testCase, const UnicodeString &pattern, const UnicodeString &altPattern,
const char *name, const char *strength, uint32_t seed);
+
+ virtual int32_t bmMonkeyTestCase(UCollator *coll, const UnicodeString &testCase, const UnicodeString &pattern, const UnicodeString &altPattern,
+ BoyerMooreSearch *bms, BoyerMooreSearch *abms,
+ const char *name, const char *strength, uint32_t seed);
#endif
};
Modified: trunk/source/test/intltest/transrt.cpp
===================================================================
--- trunk/source/test/intltest/transrt.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/intltest/transrt.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -83,7 +83,7 @@
// Time bomb - allows temporary behavior that expires at a given
// release
//--------------------------------------------------------------------
-static const UVersionInfo ICU_39 = {4,0,0,1};
+static const UVersionInfo ICU_39 = {4,0,1,1};
//--------------------------------------------------------------------
Modified: trunk/source/test/intltest/tztest.cpp
===================================================================
--- trunk/source/test/intltest/tztest.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/intltest/tztest.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
/***********************************************************************
* COPYRIGHT:
- * Copyright (c) 1997-2008, International Business Machines Corporation
+ * Copyright (c) 1997-2009, International Business Machines Corporation
* and others. All Rights Reserved.
***********************************************************************/
@@ -579,6 +579,42 @@
*/
void TimeZoneTest::TestShortZoneIDs()
{
+ // TODO: This test case is tzdata sensitive.
+ // We should actually put the data version in this test code
+ // at build time. For now, we just hardcode the version string
+ // and display warning instead of error if non-reference tzdata
+ // version is used.
+ const char *REFERENCE_DATA_VERSION = "2008i";
+
+ UErrorCode status = U_ZERO_ERROR;
+ UBool isNonReferenceTzdataVersion = FALSE;
+ const char *tzdataVer = TimeZone::getTZDataVersion(status);
+ if (failure(status, "getTZDataVersion")) return;
+ if (uprv_strcmp(tzdataVer, REFERENCE_DATA_VERSION) != 0) {
+ // Note: We want to display a warning message here if
+ // REFERENCE_DATA_VERSION is out of date - so we
+ // do not forget to update the value before GA.
+ isNonReferenceTzdataVersion = TRUE;
+ logln(UnicodeString("Warning: Active tzdata version (") + tzdataVer +
+ ") does not match the reference tzdata version ("
+ + REFERENCE_DATA_VERSION + ") for this test case data.");
+ }
+
+ // Note: useDaylightTime returns true if DST is observed
+ // in the time zone in the current calendar year. The test
+ // data is valid for the date after the reference year below.
+ // If system clock is before the year, some test cases may fail.
+ const int32_t REFERENCE_YEAR = 2009;
+ GregorianCalendar cal(*TimeZone::getGMT(), status);
+ if (failure(status, "GregorianCalendar")) return;
+ cal.set(REFERENCE_YEAR, UCAL_JANUARY, 2); // day 2 in GMT
+
+ UBool isDateBeforeReferenceYear = ucal_getNow() < cal.getTime(status);
+ if (failure(status, "Calendar::getTime")) return;
+ if (isDateBeforeReferenceYear) {
+ logln("Warning: Past time is set to the system clock. Some test cases may not return expected results.");
+ }
+
int32_t i;
// Create a small struct to hold the array
struct
@@ -602,18 +638,16 @@
{"CNT", -210, TRUE},
{"AGT", -180, TRUE}, // updated by tzdata2007k
{"BET", -180, TRUE},
- // "CAT", -60, FALSE, // Wrong:
- // As of bug 4130885, fix CAT (Central Africa)
- {"CAT", 120, FALSE}, // Africa/Harare
{"GMT", 0, FALSE},
{"UTC", 0, FALSE}, // ** srl: seems broken in C++
{"ECT", 60, TRUE},
+ {"MET", 60, TRUE}, // updated 12/3/99 aliu
{"ART", 120, TRUE},
{"EET", 120, TRUE},
+ {"CAT", 120, FALSE}, // Africa/Harare
{"EAT", 180, FALSE},
- {"MET", 60, TRUE}, // updated 12/3/99 aliu
{"NET", 240, TRUE}, // updated 12/3/99 aliu
- {"PLT", 300, TRUE}, // updated by 2008c
+ {"PLT", 300, FALSE}, // updated by 2008c - no DST after 2008
{"IST", 330, FALSE},
{"BST", 360, FALSE},
{"VST", 420, FALSE},
@@ -622,8 +656,6 @@
{"ACT", 570, FALSE}, // updated Aug 2003 aliu
{"AET", 600, TRUE},
{"SST", 660, FALSE},
- // "NST", 720, FALSE,
- // As of bug 4130885, fix NST (New Zealand)
{"NST", 720, TRUE}, // Pacific/Auckland
// From icuzones:
@@ -646,7 +678,6 @@
{"",0,FALSE}
};
-
for(i=0;kReferenceList[i].id[0];i++) {
UnicodeString itsID(kReferenceList[i].id);
UBool ok = TRUE;
@@ -660,19 +691,32 @@
// Check daylight usage.
UBool usesDaylight = tz->useDaylightTime();
if (usesDaylight != kReferenceList[i].daylight) {
- errln("FAIL: Time Zone " + itsID + " use daylight is " +
- (usesDaylight?"TRUE":"FALSE") +
- " but it should be " +
- ((kReferenceList[i].daylight)?"TRUE":"FALSE"));
+ if (isNonReferenceTzdataVersion || isDateBeforeReferenceYear) {
+ logln("Warning: Time Zone " + itsID + " use daylight is " +
+ (usesDaylight?"TRUE":"FALSE") +
+ " but it should be " +
+ ((kReferenceList[i].daylight)?"TRUE":"FALSE"));
+ } else {
+ errln("FAIL: Time Zone " + itsID + " use daylight is " +
+ (usesDaylight?"TRUE":"FALSE") +
+ " but it should be " +
+ ((kReferenceList[i].daylight)?"TRUE":"FALSE"));
+ }
ok = FALSE;
}
// Check offset
int32_t offsetInMinutes = tz->getRawOffset()/60000;
if (offsetInMinutes != kReferenceList[i].offset) {
- errln("FAIL: Time Zone " + itsID + " raw offset is " +
- offsetInMinutes +
- " but it should be " + kReferenceList[i].offset);
+ if (isNonReferenceTzdataVersion || isDateBeforeReferenceYear) {
+ logln("FAIL: Time Zone " + itsID + " raw offset is " +
+ offsetInMinutes +
+ " but it should be " + kReferenceList[i].offset);
+ } else {
+ errln("FAIL: Time Zone " + itsID + " raw offset is " +
+ offsetInMinutes +
+ " but it should be " + kReferenceList[i].offset);
+ }
ok = FALSE;
}
Modified: trunk/source/test/perf/strsrchperf/strsrchperf.cpp
===================================================================
--- trunk/source/test/perf/strsrchperf/strsrchperf.cpp 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/perf/strsrchperf/strsrchperf.cpp 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
/********************************************************************
* COPYRIGHT:
- * Copyright (C) 2008 IBM, Inc. All Rights Reserved.
+ * Copyright (C) 2008-2009 IBM, Inc. All Rights Reserved.
*
********************************************************************/
/**
@@ -14,7 +14,13 @@
StringSearchPerformanceTest::StringSearchPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status)
:UPerfTest(argc,argv,status){
int32_t start, end;
+
+#ifdef TEST_BOYER_MOORE_SEARCH
+ bms = NULL;
+#else
srch = NULL;
+#endif
+
pttrn = NULL;
if(status== U_ILLEGAL_ARGUMENT_ERROR || line_mode){
fprintf(stderr,gUsageString, "strsrchperf");
@@ -22,7 +28,8 @@
}
/* Get the Text */
src = getBuffer(srcLen, status);
-
+
+#if 0
/* Get a word to find. Do this by selecting a random word with a word breakiterator. */
UBreakIterator* brk = ubrk_open(UBRK_WORD, locale, src, srcLen, &status);
if(U_FAILURE(status)){
@@ -38,9 +45,38 @@
}
pttrn = temp; /* store word in pttrn */
ubrk_close(brk);
+#else
+ /* The first line of the file contains the pattern */
+ start = 0;
+
+ for(end = start; ; end += 1) {
+ UChar ch = src[end];
+
+ if (ch == 0x000A || ch == 0x000D || ch == 0x2028) {
+ break;
+ }
+ }
+
+ pttrnLen = end - start;
+ UChar* temp = (UChar*)malloc(sizeof(UChar)*(pttrnLen));
+ for (int i = 0; i < pttrnLen; i++) {
+ temp[i] = src[start++];
+ }
+ pttrn = temp; /* store word in pttrn */
+#endif
+#ifdef TEST_BOYER_MOORE_SEARCH
+ UnicodeString patternString(pttrn, pttrnLen);
+ UCollator *coll = ucol_open(locale, &status);
+ CollData *data = CollData::open(coll, status);
+
+ targetString = new UnicodeString(src, srcLen);
+ bms = new BoyerMooreSearch(data, patternString, targetString, status);
+#else
/* Create the StringSearch object to be use in performance test. */
srch = usearch_open(pttrn, pttrnLen, src, srcLen, locale, NULL, &status);
+#endif
+
if(U_FAILURE(status)){
fprintf(stderr, "FAILED to create UPerfTest object. Error: %s\n", u_errorName(status));
return;
@@ -49,12 +85,23 @@
}
StringSearchPerformanceTest::~StringSearchPerformanceTest() {
+ CollData *data = bms->getData();
+ UCollator *coll = data->getCollator();
+
+ delete bms;
+ delete targetString;
+ CollData::close(data);
+ ucol_close(coll);
+
if (pttrn != NULL) {
free(pttrn);
}
+
+#ifndef TEST_BOYER_MOORE_SEARCH
if (srch != NULL) {
usearch_close(srch);
}
+#endif
}
UPerfFunction* StringSearchPerformanceTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char *par) {
@@ -70,12 +117,20 @@
}
UPerfFunction* StringSearchPerformanceTest::Test_ICU_Forward_Search(){
+#ifdef TEST_BOYER_MOORE_SEARCH
+ StringSearchPerfFunction *func = new StringSearchPerfFunction(ICUForwardSearch, bms, src, srcLen, pttrn, pttrnLen);
+#else
StringSearchPerfFunction* func = new StringSearchPerfFunction(ICUForwardSearch, srch, src, srcLen, pttrn, pttrnLen);
+#endif
return func;
}
UPerfFunction* StringSearchPerformanceTest::Test_ICU_Backward_Search(){
+#ifdef TEST_BOYER_MOORE_SEARCH
+ StringSearchPerfFunction *func = new StringSearchPerfFunction(ICUBackwardSearch, bms, src, srcLen, pttrn, pttrnLen);
+#else
StringSearchPerfFunction* func = new StringSearchPerfFunction(ICUBackwardSearch, srch, src, srcLen, pttrn, pttrnLen);
+#endif
return func;
}
Modified: trunk/source/test/perf/strsrchperf/strsrchperf.h
===================================================================
--- trunk/source/test/perf/strsrchperf/strsrchperf.h 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/perf/strsrchperf/strsrchperf.h 2009-02-07 10:08:34 UTC (rev 162)
@@ -8,11 +8,19 @@
#include "unicode/ubrk.h"
#include "unicode/usearch.h"
+#include "unicode/colldata.h"
+#include "unicode/bmsearch.h"
#include "unicode/uperf.h"
#include <stdlib.h>
#include <stdio.h>
+#define TEST_BOYER_MOORE_SEARCH
+
+#ifdef TEST_BOYER_MOORE_SEARCH
+typedef void (*StrSrchFn) (BoyerMooreSearch * bms, const UChar *src, int32_t srcLen, const UChar *pttrn, int32_t pttrnLen, UErrorCode *status);
+#else
typedef void (*StrSrchFn)(UStringSearch* srch, const UChar* src,int32_t srcLen, const UChar* pttrn, int32_t pttrnLen, UErrorCode* status);
+#endif
class StringSearchPerfFunction : public UPerfFunction {
private:
@@ -21,17 +29,39 @@
int32_t srcLen;
const UChar* pttrn;
int32_t pttrnLen;
+#ifdef TEST_BOYER_MOORE_SEARCH
+ BoyerMooreSearch *bms;
+#else
UStringSearch* srch;
+#endif
public:
virtual void call(UErrorCode* status) {
+#ifdef TEST_BOYER_MOORE_SEARCH
+ (*fn)(bms, src, srcLen, pttrn, pttrnLen, status);
+#else
(*fn)(srch, src, srcLen, pttrn, pttrnLen, status);
+#endif
}
virtual long getOperationsPerIteration() {
+#if 0
return (long)(srcLen/pttrnLen);
+#else
+ return (long) srcLen;
+#endif
}
+#ifdef TEST_BOYER_MOORE_SEARCH
+ StringSearchPerfFunction(StrSrchFn func, BoyerMooreSearch *search, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen) {
+ fn = func;
+ src = source;
+ srcLen = sourceLen;
+ pttrn = pattern;
+ pttrnLen = patternLen;
+ bms = search;
+ }
+#else
StringSearchPerfFunction(StrSrchFn func, UStringSearch* search, const UChar* source,int32_t sourceLen, const UChar* pattern, int32_t patternLen) {
fn = func;
src = source;
@@ -40,6 +70,7 @@
pttrnLen = patternLen;
srch = search;
}
+#endif
};
class StringSearchPerformanceTest : public UPerfTest {
@@ -48,7 +79,12 @@
int32_t srcLen;
UChar* pttrn;
int32_t pttrnLen;
+#ifdef TEST_BOYER_MOORE_SEARCH
+ UnicodeString *targetString;
+ BoyerMooreSearch *bms;
+#else
UStringSearch* srch;
+#endif
public:
StringSearchPerformanceTest(int32_t argc, const char *argv[], UErrorCode &status);
@@ -56,9 +92,29 @@
virtual UPerfFunction* runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = NULL);
UPerfFunction* Test_ICU_Forward_Search();
+
UPerfFunction* Test_ICU_Backward_Search();
};
+
+#ifdef TEST_BOYER_MOORE_SEARCH
+void ICUForwardSearch(BoyerMooreSearch *bms, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen, UErrorCode * /*status*/) {
+ int32_t offset = 0, start = -1, end = -1;
+
+ while (bms->search(offset, start, end)) {
+ offset = end;
+ }
+}
+
+void ICUBackwardSearch(BoyerMooreSearch *bms, const UChar *source, int32_t sourceLen, const UChar *pattern, int32_t patternLen, UErrorCode * /*status*/) {
+ int32_t offset = 0, start = -1, end = -1;
+
+ /* NOTE: No Boyer-Moore backward search yet... */
+ while (bms->search(offset, start, end)) {
+ offset = end;
+ }
+}
+#else
void ICUForwardSearch(UStringSearch *srch, const UChar* source, int32_t sourceLen, const UChar* pattern, int32_t patternLen, UErrorCode* status) {
int32_t match;
@@ -76,5 +132,6 @@
match = usearch_previous(srch, status);
}
}
+#endif
#endif /* _STRSRCHPERF_H */
Modified: trunk/source/test/perf/strsrchperf/strsrchperf.vcproj
===================================================================
--- trunk/source/test/perf/strsrchperf/strsrchperf.vcproj 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/perf/strsrchperf/strsrchperf.vcproj 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,252 +1,464 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="strsrchperf"
- ProjectGUID="{241DED26-1635-45E6-9564-7742AC8043B5}"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- OutputDirectory=".\Debug"
- IntermediateDirectory=".\Debug"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="1"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\Debug/strsrchperf.tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_MBCS"
- BasicRuntimeChecks="3"
- RuntimeLibrary="3"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Debug/strsrchperf.pch"
- AssemblerListingLocation=".\Debug/"
- ObjectFile=".\Debug/"
- ProgramDataBaseFileName=".\Debug/"
- BrowseInformation="1"
- WarningLevel="3"
- SuppressStartupBanner="true"
- DebugInformationFormat="3"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="_DEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="icuucd.lib icutud.lib icutestd.lib winmm.lib"
- OutputFile=".\Debug/strsrchperf.exe"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\lib\"
- GenerateDebugInformation="true"
- ProgramDatabaseFile=".\Debug/strsrchperf.pdb"
- SubSystem="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- OutputDirectory=".\Release"
- IntermediateDirectory=".\Release"
- ConfigurationType="1"
- InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
- UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="false"
- CharacterSet="2"
- >
- <Tool
- Name="VCPreBuildEventTool"
- />
- <Tool
- Name="VCCustomBuildTool"
- />
- <Tool
- Name="VCXMLDataGeneratorTool"
- />
- <Tool
- Name="VCWebServiceProxyGeneratorTool"
- />
- <Tool
- Name="VCMIDLTool"
- TypeLibraryName=".\Release/strsrchperf.tlb"
- HeaderFileName=""
- />
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
- StringPooling="true"
- RuntimeLibrary="2"
- EnableFunctionLevelLinking="true"
- UsePrecompiledHeader="0"
- PrecompiledHeaderFile=".\Release/strsrchperf.pch"
- AssemblerListingLocation=".\Release/"
- ObjectFile=".\Release/"
- ProgramDataBaseFileName=".\Release/"
- WarningLevel="3"
- SuppressStartupBanner="true"
- CompileAs="0"
- />
- <Tool
- Name="VCManagedResourceCompilerTool"
- />
- <Tool
- Name="VCResourceCompilerTool"
- PreprocessorDefinitions="NDEBUG"
- Culture="1033"
- />
- <Tool
- Name="VCPreLinkEventTool"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="icuuc.lib icutu.lib icutest.lib winmm.lib"
- OutputFile=".\Release/strsrchperf.exe"
- LinkIncremental="1"
- SuppressStartupBanner="true"
- AdditionalLibraryDirectories="..\..\..\..\lib\"
- ProgramDatabaseFile=".\Release/strsrchperf.pdb"
- SubSystem="1"
- TargetMachine="1"
- />
- <Tool
- Name="VCALinkTool"
- />
- <Tool
- Name="VCManifestTool"
- />
- <Tool
- Name="VCXDCMakeTool"
- />
- <Tool
- Name="VCBscMakeTool"
- />
- <Tool
- Name="VCFxCopTool"
- />
- <Tool
- Name="VCAppVerifierTool"
- />
- <Tool
- Name="VCWebDeploymentTool"
- />
- <Tool
- Name="VCPostBuildEventTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <Filter
- Name="Source Files"
- Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
- >
- <File
- RelativePath="strsrchperf.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="0"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE;$(NoInherit)"
- BasicRuntimeChecks="3"
- BrowseInformation="1"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- >
- <Tool
- Name="VCCLCompilerTool"
- Optimization="2"
- AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Header Files"
- Filter="h;hpp;hxx;hm;inl"
- >
- <File
- RelativePath="strsrchperf.h"
- >
- </File>
- </Filter>
- <Filter
- Name="Resource Files"
- Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
- >
- </Filter>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="8.00"
+ Name="strsrchperf"
+ ProjectGUID="{241DED26-1635-45E6-9564-7742AC8043B5}"
+ >
+ <Platforms>
+ <Platform
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
+ </Platforms>
+ <ToolFiles>
+ </ToolFiles>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\x86\Debug"
+ IntermediateDirectory=".\x86\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\x86\Debug/strsrchperf.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_MBCS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x86\Debug/strsrchperf.pch"
+ AssemblerListingLocation=".\x86\Debug/"
+ ObjectFile=".\x86\Debug/"
+ ProgramDataBaseFileName=".\x86\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuucd.lib icuind.lib icutud.lib icutestd.lib winmm.lib"
+ OutputFile=".\x86\Debug/strsrchperf.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\..\..\lib\"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\x86\Debug/strsrchperf.pdb"
+ SubSystem="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory=".\x64\Debug"
+ IntermediateDirectory=".\x64\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="1"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ TypeLibraryName=".\x64\Debug/strsrchperf.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
+ PreprocessorDefinitions="WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS"
+ BasicRuntimeChecks="3"
+ RuntimeLibrary="3"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x64\Debug/strsrchperf.pch"
+ AssemblerListingLocation=".\x64\Debug/"
+ ObjectFile=".\x64\Debug/"
+ ProgramDataBaseFileName=".\x64\Debug/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuucd.lib icutud.lib icutestd.lib winmm.lib"
+ OutputFile=".\x64\Debug/strsrchperf.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\..\..\lib64\"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\x64\Debug/strsrchperf.pdb"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\x86\Release"
+ IntermediateDirectory=".\x86\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\x86\Release/strsrchperf.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x86\Release/strsrchperf.pch"
+ AssemblerListingLocation=".\x86\Release/"
+ ObjectFile=".\x86\Release/"
+ ProgramDataBaseFileName=".\x86\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuuc.lib icuin.lib icutu.lib icutest.lib winmm.lib"
+ OutputFile=".\x86\Release/strsrchperf.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\..\..\lib\"
+ ProgramDatabaseFile=".\x86\Release/strsrchperf.pdb"
+ SubSystem="1"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory=".\x64\Release"
+ IntermediateDirectory=".\x64\Release"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TargetEnvironment="3"
+ TypeLibraryName=".\x64\Release/strsrchperf.tlb"
+ HeaderFileName=""
+ />
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\tools\toolutil;..\..\..\common;..\..\..\tools\ctestfw"
+ PreprocessorDefinitions="WIN64;WIN32;NDEBUG;_CONSOLE"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile=".\x64\Release/strsrchperf.pch"
+ AssemblerListingLocation=".\x64\Release/"
+ ObjectFile=".\x64\Release/"
+ ProgramDataBaseFileName=".\x64\Release/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="icuuc.lib icutu.lib icutest.lib winmm.lib"
+ OutputFile=".\x64\Release/strsrchperf.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="..\..\..\..\lib64\"
+ ProgramDatabaseFile=".\x64\Release/strsrchperf.pdb"
+ SubSystem="1"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCWebDeploymentTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+ >
+ <File
+ RelativePath="strsrchperf.cpp"
+ >
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions="WIN64;WIN32;_DEBUG;_CONSOLE;_MBCS;_UNICODE;$(NoInherit)"
+ BasicRuntimeChecks="3"
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl"
+ >
+ <File
+ RelativePath="strsrchperf.h"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+ >
+ </Filter>
+ </Files>
+ <Globals>
+ </Globals>
+</VisualStudioProject>
Modified: trunk/source/test/testdata/conversion.txt
===================================================================
--- trunk/source/test/testdata/conversion.txt 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/testdata/conversion.txt 2009-02-07 10:08:34 UTC (rev 162)
@@ -48,6 +48,138 @@
toUnicode {
Headers { "charset", "bytes", "unicode", "offsets", "flush", "fallbacks", "errorCode", "callback", "invalidChars" }
Cases {
+ // Test ticket 5691: consistent illegal sequences
+ // The following test cases are for illegal character byte sequences.
+ //
+ // Unfortunately, we cannot use the Shift-JIS examples from the ticket
+ // comments because our Shift-JIS table is Windows-compatible and
+ // therefore has no illegal single bytes. Same for GBK.
+ // Instead, we use the stricter GB 18030 also for 2-byte examples.
+ // The byte sequences are generally slightly different from the ticket
+ // comment, simply using assigned characters rather than just
+ // theoretically valid sequences.
+ {
+ "gb18030",
+ :bin{ 618140813c81ff7a },
+ "a\u4e02\\x81<\\x81\\xFFz",
+ :intvector{ 0,1,3,3,3,3,4,5,5,5,5,5,5,5,5,7 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "EUC-JP",
+ :bin{ 618fb0a98fb03c8f3cb0a97a },
+ "a\u4e28\\x8F\\xB0<\\x8F<\u9022z",
+ :intvector{ 0,1,4,4,4,4,5,5,5,5,6,7,7,7,7,8,9,11 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "gb18030",
+ :bin{ 618130fc318130fc8181303c3e813cfc817a },
+ "a\u05ed\\x810\u9f07\\x810<>\\x81<\u9f07z",
+ :intvector{ 0,1,5,5,5,5,6,7,9,9,9,9,10,11,12,13,13,13,13,14,15,17 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "UTF-8",
+ :bin{ 61f1808182f180813cf18081fff180ff3cf1ff3c3e7a },
+ "a\U00040042\\xF1\\x80\\x81<\\xF1\\x80\\x81\\xFF\\xF1\\x80\\xFF<\\xF1\\xFF<>z",
+ :intvector{ 0,1,1,5,5,5,5,5,5,5,5,5,5,5,5,8,9,9,9,9,9,9,9,9,9,9,9,9,12,12,12,12,13,13,13,13,13,13,13,13,15,15,15,15,16,17,17,17,17,18,18,18,18,19,20,21 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "ISO-2022-JP",
+ :bin{ 1b24424141af4142affe41431b2842 },
+ "\u758f\\xAF\u758e\\xAF\\xFE\u790e",
+ :intvector{ 3,5,5,5,5,6,8,8,8,8,8,8,8,8,10 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "ibm-25546",
+ :bin{ 411b242943420e4141af4142affe41430f5a },
+ "AB\uc88b\\xAF\uc88c\\xAF\\xFE\uc88dZ",
+ :intvector{ 0,5,7,9,9,9,9,10,12,12,12,12,12,12,12,12,14,17 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "ISO-2022-KR",
+ :bin{ 411b242943420e4141af4142affe41430f5a },
+ "AB\uc88b\\xAF\uc88c\\xAF\\xFE\uc88dZ",
+ :intvector{ 0,5,7,9,9,9,9,10,12,12,12,12,12,12,12,12,14,17 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "ISO-2022-CN",
+ :bin{ 411b242941420e4141af4142affe41430f5a },
+ "AB\u4eae\\xAF\u8c05\\xAF\\xFE\u64a9Z",
+ :intvector{ 0,5,7,9,9,9,9,10,12,12,12,12,12,12,12,12,14,17 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "HZ",
+ :bin{ 417e7b4141af4142affe41437e7d5a },
+ "A\u4eae\\xAF\u8c05\\xAF\\xFE\u64a9Z",
+ :intvector{ 0,3,5,5,5,5,6,8,8,8,8,8,8,8,8,10,14 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ // Test ticket 5691: consistent illegal sequences
+ // The following test cases are for illegal escape/designator/shift sequences.
+ //
+ // ISO-2022-JP and -CN with illegal escape sequences.
+ {
+ "ISO-2022-JP",
+ :bin{ 611b24201b244241411b283f1b28427a },
+ "a\\x1B$ \u758f\\x1B\u2538z",
+ :intvector{ 0,1,1,1,1,2,3,7,9,9,9,9,10,15 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "ISO-2022-CN",
+ :bin{ 611b2429201b2429410e41410f7a },
+ "a\\x1B$) \u4eaez",
+ :intvector{ 0,1,1,1,1,2,3,4,10,13 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ // Test ticket 5691: ISO-2022-JP-2 with illegal single-shift SS2 and SS3 sequences.
+ // The first ESC N comes before its designator sequence, the last sequence is ESC+space.
+ {
+ "ISO-2022-JP-2",
+ :bin{ 4e1b4e4e1b2e414e1b4e4e4e1b204e },
+ "N\\x1BNNN\xceN\\x1B N",
+ :intvector{ 0,1,1,1,1,2,3,7,10,11,12,12,12,12,13,14 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "ISO-2022-CN-EXT",
+ :bin{ 4e1b4e4e1b242a484e1b4e4e4e4e1b204e },
+ "N\\x1BNNN\u8f0eN\\x1B N",
+ :intvector{ 0,1,1,1,1,2,3,8,11,13,14,14,14,14,15,16 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ {
+ "ISO-2022-CN-EXT",
+ :bin{ 4f1b4f4f1b242b494f1b4f4f4f4f1b204f },
+ "O\\x1BOOO\u492bO\\x1B O",
+ :intvector{ 0,1,1,1,1,2,3,8,11,13,14,14,14,14,15,16 },
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ // Test ticket 5691: HZ with illegal tilde sequences.
+ {
+ "HZ",
+ :bin{ 417e20427e21437e80447e7b41417e207e41427e7f41437e7d5a },
+ "A\\x7E B\\x7E!C\\x7E\\x80D\u4eae\\x7E\\x20\\x7E\u8c05\\x7E\\x7F\u64a9Z",
+ :intvector{ 0,1,1,1,1,2,3,4,4,4,4,5,6,7,7,7,7,7,7,7,7,9, // SBCS
+ 12,14,14,14,14,14,14,14,14,16,16,16,16,17,19,19,19,19,19,19,19,19,21, // DBCS
+ 25 }, // SBCS
+ :int{1}, :int{0}, "", "&C", :bin{""}
+ }
+ // Test ticket 5691: Example from Peter Edberg.
+ {
+ "ISO-2022-JP",
+ :bin{ 1b244230212f7e742630801b284a621b2458631b2842648061 },
+ "\u4e9c\ufffd\u7199\ufffdb\ufffd$Xcd\ufffda",
+ :intvector{ 3,5,7,9,14,15,16,17,18,22,23,24 },
+ :int{1}, :int{0}, "", "?", :bin{""}
+ }
// Test bug 6071 (2:1 Unicode:charset SBCS mapping).
{
"*test1bmp",
@@ -59,9 +191,9 @@
// test that HZ limits its byte values to lead bytes 21..7d and trail bytes 21..7e
{
"HZ",
- :bin{ 7e7b21212120217e217f772100007e217e7d207e7e807e0a2b },
- "\u3000\ufffd\u3013\ufffd\u9ccc\ufffd\ufffd ~\ufffd+",
- :intvector{ 2,4,6,8,10,12,14,18,19,21,24 },
+ :bin{ 7e7b21212120217e217f772100007e217e7e7d207e7e807e0a2b },
+ "\u3000\ufffd\u3013\ufffd\u9ccc\ufffd\ufffd\u3013 ~\ufffd+",
+ :intvector{ 2,4,6,8,10,12,14,15,19,20,22,25 },
:int{1}, :int{1}, "", "?", :bin{""}
}
// improve coverage of ISO-2022-JP converter with hardcoded JIS X 0201 and
@@ -69,8 +201,8 @@
{
"ISO-2022-JP",
:bin{ 1b284a7d7e801b2442306c20217f7e21202160217f22202225227f5f211b2842 },
- "}\u203e\ufffd\u4e00\ufffd\ufffd\ufffd\xf7\ufffd\ufffd\u25b2\ufffd\u6f3e",
- :intvector{ 3,4,5,9,11,13,15,17,19,21,23,25,27 },
+ "}\u203e\ufffd\u4e00\ufffd\ufffd\ufffd\ufffd\xf7\ufffd\ufffd\u25b2\ufffd\u6f3e",
+ :intvector{ 3,4,5,9,11,12,14,16,17,19,21,23,25,27 },
:int{1}, :int{1}, "", "?", :bin{""}
}
// improve coverage of ISO-2022-JP converter by simulating erroneous input
@@ -365,7 +497,7 @@
{
"ISO-2022-CN-EXT",
:bin{ 411b4e2121 }, "\x41", :intvector{ 0 },
- :int{1}, :int{1}, "illesc", ".", :bin{ 1b4e }
+ :int{1}, :int{1}, "illesc", ".", :bin{ 1b }
}
// G3 designator: recognized, but not supported for -CN (only for -CN-EXT)
{
Modified: trunk/source/test/testdata/ssearch.xml
===================================================================
--- trunk/source/test/testdata/ssearch.xml 2009-02-07 09:37:15 UTC (rev 161)
+++ trunk/source/test/testdata/ssearch.xml 2009-02-07 10:08:34 UTC (rev 162)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2007-2008 IBM Corporation and others. All rights reserved -->
+<!-- Copyright (c) 2007-2009 IBM Corporation and others. All rights reserved -->
<!-- Test data file for string search -->
<!DOCTYPE stringsearch-tests [
@@ -12,6 +12,7 @@
locale CDATA "en"
strength (PRIMARY | SECONDARY | TERTIARY | QUATERNARY | IDENTICAL) "TERTIARY"
norm (ON | OFF) "OFF"
+ alternate_handling (NON_IGNORABLE | SHIFTED) "NON_IGNORABLE"
>
<!ELEMENT pattern (#PCDATA)>
@@ -20,7 +21,7 @@
<!ELEMENT post (#PCDATA)>
]>
-<stringsearch-tests debug="test32">
+<stringsearch-tests>
<!-- debug="test11" (for copying into the above element) -->
<!-- Very simple match -->
@@ -174,8 +175,15 @@
<pattern>A\u0300</pattern>
<pre>At IDENTICAL, shoud this match? </pre><m>\u00c0</m><post></post>
</test-case>
-
- <test-case id="test25" strength="SECONDARY" locale="en">
+
+ <test-case id="test24b" strength="IDENTICAL" alternate_handling="SHIFTED" locale="en">
+ <pattern>A\u0300</pattern>
+ <pre>At IDENTICAL, shoud this match? </pre>
+ <m>\u00c0</m>
+ <post></post>
+ </test-case>
+
+ <test-case id="test25" strength="SECONDARY" locale="en">
<pattern>Ű</pattern>
<pre>12</pre><m>ű</m><post> Ű</post>
</test-case>
@@ -285,11 +293,13 @@
<!-- Long combining sequences -->
+ <!-- Backwards search fails because patterns ends w/ ignorables
<test-case id="test60" strength="PRIMARY">
<pattern>A\u0301\u0301\u0301\u0301</pattern>
<m>A\u0301\u0301\u0301\u0301\u0301</m>
</test-case>
-
+ -->
+
<test-case id="test61" strength="TERTIARY">
<pattern>A\u0301\u0301\u0301\u0301</pattern>
<pre>A\u0301\u0301\u0301\u0301\u0301</pre>
@@ -409,5 +419,27 @@
<pattern>VII</pattern>
<m>\u2166</m>
</test-case>
+
+ <test-case id="test83" strength="IDENTICAL" alternate_handling="SHIFTED" locale="en">
+ <pattern>Universal Declaration of Human Rights</pattern>
+ <pre>Proclaims this </pre><m>Universal Declaration of Human Rights</m><post> as a common standard of achievement for all peoples and all nations</post>
+ </test-case>
+
+ <test-case id="test83b" strength="TERTIARY" alternate_handling="SHIFTED" locale="en">
+ <pattern>Universal Declaration of Human Rights</pattern>
+ <pre>Proclaims this </pre>
+ <m>Universal-Declaration-of-Human-Rights</m>
+ <post> as a common standard of achievement for all peoples and all nations</post>
+ </test-case>
+
+ <test-case id="test84" strength="TERTIARY" locale="en">
+ <pattern>\u05E9\u0591\u05E9</pattern>
+ <m>\u05E9\u0592\u05E9</m>
+ </test-case>
+
+ <test-case id="test84b" strength="IDENTICAL" locale="en">
+ <pattern>\u05E9\u0591\u05E9</pattern>
+ <pre>\u05E9\u0592\u05E9</pre>
+ </test-case>
</stringsearch-tests>
More information about the sword-cvs
mailing list