Remove copy of ICU headers from WebKit
authorjbedard@apple.com <jbedard@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Jul 2017 22:54:14 +0000 (22:54 +0000)
committerjbedard@apple.com <jbedard@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 3 Jul 2017 22:54:14 +0000 (22:54 +0000)
https://bugs.webkit.org/show_bug.cgi?id=116407

Patch by Myles C. Maxfield <mmaxfield@apple.com> on 2017-07-03
Reviewed by Alex Christensen.

Source/JavaScriptCore:

Use WTF's copy of ICU headers.

* Configurations/Base.xcconfig:
* icu/unicode/localpointer.h: Removed.
* icu/unicode/parseerr.h: Removed.
* icu/unicode/platform.h: Removed.
* icu/unicode/ptypes.h: Removed.
* icu/unicode/putil.h: Removed.
* icu/unicode/uchar.h: Removed.
* icu/unicode/ucnv.h: Removed.
* icu/unicode/ucnv_err.h: Removed.
* icu/unicode/ucol.h: Removed.
* icu/unicode/uconfig.h: Removed.
* icu/unicode/ucurr.h: Removed.
* icu/unicode/uenum.h: Removed.
* icu/unicode/uiter.h: Removed.
* icu/unicode/uloc.h: Removed.
* icu/unicode/umachine.h: Removed.
* icu/unicode/unorm.h: Removed.
* icu/unicode/unorm2.h: Removed.
* icu/unicode/urename.h: Removed.
* icu/unicode/uscript.h: Removed.
* icu/unicode/uset.h: Removed.
* icu/unicode/ustring.h: Removed.
* icu/unicode/utf.h: Removed.
* icu/unicode/utf16.h: Removed.
* icu/unicode/utf8.h: Removed.
* icu/unicode/utf_old.h: Removed.
* icu/unicode/utypes.h: Removed.
* icu/unicode/uvernum.h: Removed.
* icu/unicode/uversion.h: Removed.
* runtime/IntlCollator.cpp:
* runtime/IntlDateTimeFormat.cpp:
* runtime/JSGlobalObject.cpp:
* runtime/StringPrototype.cpp:

Source/WebCore:

Use WTF's copy of ICU headers.

No new tests because there is no behavior change.

* Configurations/WebCore.xcconfig:
* icu/unicode/bytestream.h: Removed.
* icu/unicode/localpointer.h: Removed.
* icu/unicode/parseerr.h: Removed.
* icu/unicode/platform.h: Removed.
* icu/unicode/ptypes.h: Removed.
* icu/unicode/putil.h: Removed.
* icu/unicode/rep.h: Removed.
* icu/unicode/std_string.h: Removed.
* icu/unicode/strenum.h: Removed.
* icu/unicode/stringpiece.h: Removed.
* icu/unicode/ubrk.h: Removed.
* icu/unicode/uchar.h: Removed.
* icu/unicode/ucnv.h: Removed.
* icu/unicode/ucnv_err.h: Removed.
* icu/unicode/ucol.h: Removed.
* icu/unicode/uconfig.h: Removed.
* icu/unicode/ucurr.h: Removed.
* icu/unicode/uenum.h: Removed.
* icu/unicode/uiter.h: Removed.
* icu/unicode/uloc.h: Removed.
* icu/unicode/umachine.h: Removed.
* icu/unicode/unistr.h: Removed.
* icu/unicode/unorm.h: Removed.
* icu/unicode/unorm2.h: Removed.
* icu/unicode/uobject.h: Removed.
* icu/unicode/urename.h: Removed.
* icu/unicode/uscript.h: Removed.
* icu/unicode/uset.h: Removed.
* icu/unicode/ustring.h: Removed.
* icu/unicode/utext.h: Removed.
* icu/unicode/utf.h: Removed.
* icu/unicode/utf16.h: Removed.
* icu/unicode/utf8.h: Removed.
* icu/unicode/utf_old.h: Removed.
* icu/unicode/utypes.h: Removed.
* icu/unicode/uvernum.h: Removed.
* icu/unicode/uversion.h: Removed.

Source/WebKit/mac:

Use WTF's copy of ICU headers.

* Configurations/WebKitLegacy.xcconfig:
* icu/unicode/localpointer.h: Removed.
* icu/unicode/parseerr.h: Removed.
* icu/unicode/platform.h: Removed.
* icu/unicode/ptypes.h: Removed.
* icu/unicode/putil.h: Removed.
* icu/unicode/uchar.h: Removed.
* icu/unicode/uconfig.h: Removed.
* icu/unicode/ucurr.h: Removed.
* icu/unicode/uidna.h: Removed.
* icu/unicode/uiter.h: Removed.
* icu/unicode/umachine.h: Removed.
* icu/unicode/unorm.h: Removed.
* icu/unicode/unorm2.h: Removed.
* icu/unicode/urename.h: Removed.
* icu/unicode/uscript.h: Removed.
* icu/unicode/ustring.h: Removed.
* icu/unicode/utf.h: Removed.
* icu/unicode/utf16.h: Removed.
* icu/unicode/utf8.h: Removed.
* icu/unicode/utf_old.h: Removed.
* icu/unicode/utypes.h: Removed.
* icu/unicode/uvernum.h: Removed.
* icu/unicode/uversion.h: Removed.

Source/WebKit2:

Use WTF's copy of ICU headers.

* Configurations/BaseTarget.xcconfig:

Source/WTF:

Add an extra rsync command to CopyWTFHeaders which copies the ICU headers
to DSTROOT/usr/local/include/. These headers already live inside a
"unicode" folder, so an example path of a header is
DSTROOT/usr/local/include/unicode/uchar.h. This is already in the search
path of the other WebKit projects, so those other projects can remove
their explicit listing of the old place these headers lived.

Also add the remaining ICU 55.1 headers which the other projects (like
WebCore) need. Revert any local changes to these headers in favor of
using the GCC_PREPROCESSOR_DEFINITIONS build setting. This is so we can
compile the same way against unmodified headers.

* Configurations/Base.xcconfig:
* Configurations/CopyWTFHeaders.xcconfig:
* WTF.xcodeproj/project.pbxproj:
* icu/unicode/alphaindex.h: Added.
* icu/unicode/appendable.h: Added.
* icu/unicode/basictz.h: Added.
* icu/unicode/brkiter.h: Added.
(BreakIterator::isBufferClone):
* icu/unicode/bytestrie.h: Added.
* icu/unicode/bytestriebuilder.h: Added.
* icu/unicode/calendar.h: Added.
(Calendar::createInstance):
(Calendar::roll):
(Calendar::internalSet):
(Calendar::weekNumber):
* icu/unicode/caniter.h: Added.
* icu/unicode/chariter.h: Renamed from Source/WebCore/icu/unicode/chariter.h.
* icu/unicode/choicfmt.h: Added.
* icu/unicode/coleitr.h: Added.
(CollationElementIterator::primaryOrder):
(CollationElementIterator::secondaryOrder):
(CollationElementIterator::tertiaryOrder):
(CollationElementIterator::isIgnorable):
* icu/unicode/coll.h: Added.
* icu/unicode/compactdecimalformat.h: Added.
* icu/unicode/curramt.h: Added.
(CurrencyAmount::getCurrency):
(CurrencyAmount::getISOCurrency):
* icu/unicode/currpinf.h: Added.
(CurrencyPluralInfo::operator!=):
* icu/unicode/currunit.h: Added.
(CurrencyUnit::getISOCurrency):
* icu/unicode/datefmt.h: Added.
* icu/unicode/dbbi.h: Added.
* icu/unicode/dcfmtsym.h: Added.
(DecimalFormatSymbols::getSymbol):
(DecimalFormatSymbols::getConstSymbol):
(DecimalFormatSymbols::setSymbol):
(DecimalFormatSymbols::getLocale):
(DecimalFormatSymbols::getCurrencyPattern):
* icu/unicode/decimfmt.h: Added.
(DecimalFormat::getConstSymbol):
* icu/unicode/docmain.h: Added.
* icu/unicode/dtfmtsym.h: Added.
* icu/unicode/dtintrv.h: Added.
(DateInterval::getFromDate):
(DateInterval::getToDate):
(DateInterval::operator!=):
* icu/unicode/dtitvfmt.h: Added.
(DateIntervalFormat::operator!=):
* icu/unicode/dtitvinf.h: Added.
(DateIntervalInfo::operator!=):
* icu/unicode/dtptngen.h: Added.
* icu/unicode/dtrule.h: Added.
* icu/unicode/enumset.h: Added.
(EnumSet::EnumSet):
(EnumSet::~EnumSet):
(EnumSet::clear):
(EnumSet::add):
(EnumSet::remove):
(EnumSet::contains):
(EnumSet::set):
(EnumSet::get):
(EnumSet::isValidEnum):
(EnumSet::isValidValue):
(EnumSet::operator=):
(EnumSet::getAll):
(EnumSet::flag):
* icu/unicode/errorcode.h: Added.
* icu/unicode/fieldpos.h: Added.
(FieldPosition::operator=):
(FieldPosition::operator==):
(FieldPosition::operator!=):
* icu/unicode/filteredbrk.h: Added.
* icu/unicode/fmtable.h: Added.
(Formattable::getDate):
(Formattable::getString):
(Formattable::getLong):
(Formattable::toUFormattable):
(Formattable::fromUFormattable):
* icu/unicode/format.h: Added.
* icu/unicode/fpositer.h: Added.
* icu/unicode/gender.h: Added.
* icu/unicode/gregocal.h: Added.
* icu/unicode/icudataver.h: Added.
* icu/unicode/icuplug.h: Added.
* icu/unicode/idna.h: Added.
* icu/unicode/listformatter.h: Added.
(ListFormatData::ListFormatData):
* icu/unicode/locdspnm.h: Added.
(LocaleDisplayNames::createInstance):
* icu/unicode/locid.h: Added.
(Locale::operator!=):
(Locale::getCountry):
(Locale::getLanguage):
(Locale::getScript):
(Locale::getVariant):
(Locale::getName):
(Locale::isBogus):
* icu/unicode/measfmt.h: Added.
* icu/unicode/measunit.h: Added.
* icu/unicode/measure.h: Added.
(Measure::getNumber):
(Measure::getUnit):
* icu/unicode/messagepattern.h: Added.
* icu/unicode/msgfmt.h: Added.
* icu/unicode/normalizer2.h: Added.
* icu/unicode/normlzr.h: Added.
(Normalizer::operator!= ):
(Normalizer::quickCheck):
(Normalizer::isNormalized):
(Normalizer::compare):
* icu/unicode/numfmt.h: Added.
(NumberFormat::isParseIntegerOnly):
(NumberFormat::isLenient):
* icu/unicode/numsys.h: Added.
* icu/unicode/parsepos.h: Added.
(ParsePosition::operator=):
(ParsePosition::operator==):
(ParsePosition::operator!=):
(ParsePosition::getIndex):
(ParsePosition::setIndex):
(ParsePosition::getErrorIndex):
(ParsePosition::setErrorIndex):
* icu/unicode/plurfmt.h: Added.
* icu/unicode/plurrule.h: Added.
* icu/unicode/rbbi.h: Added.
(RuleBasedBreakIterator::operator!=):
* icu/unicode/rbnf.h: Added.
(RuleBasedNumberFormat::isLenient):
(RuleBasedNumberFormat::getDefaultRuleSet):
* icu/unicode/rbtz.h: Added.
* icu/unicode/regex.h: Added.
* icu/unicode/region.h: Added.
* icu/unicode/reldatefmt.h: Added.
* icu/unicode/resbund.h: Added.
* icu/unicode/schriter.h: Added.
* icu/unicode/scientificnumberformatter.h: Added.
* icu/unicode/search.h: Added.
(SearchIterator::operator!=):
* icu/unicode/selfmt.h: Added.
* icu/unicode/simpletz.h: Added.
(SimpleTimeZone::setStartRule):
(SimpleTimeZone::setEndRule):
(SimpleTimeZone::getOffset):
* icu/unicode/smpdtfmt.h: Added.
(SimpleDateFormat::get2DigitYearStart):
* icu/unicode/sortkey.h: Added.
(CollationKey::operator!=):
(CollationKey::isBogus):
(CollationKey::getByteArray):
* icu/unicode/stringtriebuilder.h: Added.
* icu/unicode/stsearch.h: Added.
* icu/unicode/symtable.h: Added.
* icu/unicode/tblcoll.h: Added.
* icu/unicode/timezone.h: Added.
(TimeZone::getID):
(TimeZone::setID):
* icu/unicode/tmunit.h: Added.
* icu/unicode/tmutamt.h: Added.
(TimeUnitAmount::operator!=):
* icu/unicode/tmutfmt.h: Added.
(TimeUnitFormat::operator!=):
* icu/unicode/translit.h: Added.
(Transliterator::getMaximumContextLength):
(Transliterator::setID):
(Transliterator::integerToken):
(Transliterator::pointerToken):
* icu/unicode/tzfmt.h: Added.
* icu/unicode/tznames.h: Added.
* icu/unicode/tzrule.h: Added.
* icu/unicode/tztrans.h: Added.
* icu/unicode/ubidi.h: Added.
* icu/unicode/ucal.h: Renamed from Source/JavaScriptCore/icu/unicode/ucal.h.
* icu/unicode/ucasemap.h: Added.
* icu/unicode/ucat.h: Added.
* icu/unicode/ucharstrie.h: Added.
* icu/unicode/ucharstriebuilder.h: Added.
* icu/unicode/uchriter.h: Added.
* icu/unicode/uclean.h: Added.
* icu/unicode/ucnv_cb.h: Renamed from Source/WebCore/icu/unicode/ucnv_cb.h.
* icu/unicode/ucnvsel.h: Added.
* icu/unicode/ucoleitr.h: Renamed from Source/WebCore/icu/unicode/ucoleitr.h.
* icu/unicode/uconfig.h:
* icu/unicode/ucsdet.h: Renamed from Source/WebCore/icu/unicode/ucsdet.h.
* icu/unicode/udat.h: Renamed from Source/JavaScriptCore/icu/unicode/udat.h.
* icu/unicode/udata.h: Added.
* icu/unicode/udateintervalformat.h: Added.
* icu/unicode/udatpg.h: Renamed from Source/JavaScriptCore/icu/unicode/udatpg.h.
* icu/unicode/udisplaycontext.h: Renamed from Source/JavaScriptCore/icu/unicode/udisplaycontext.h.
* icu/unicode/ufieldpositer.h: Renamed from Source/JavaScriptCore/icu/unicode/ufieldpositer.h.
* icu/unicode/uformattable.h: Renamed from Source/JavaScriptCore/icu/unicode/uformattable.h.
* icu/unicode/ugender.h: Added.
* icu/unicode/uidna.h: Renamed from Source/WebCore/icu/unicode/uidna.h.
* icu/unicode/uldnames.h: Added.
* icu/unicode/ulistformatter.h: Added.
* icu/unicode/ulocdata.h: Added.
* icu/unicode/umisc.h: Renamed from Source/JavaScriptCore/icu/unicode/umisc.h.
* icu/unicode/umsg.h: Added.
* icu/unicode/unifilt.h: Added.
* icu/unicode/unifunct.h: Added.
* icu/unicode/unimatch.h: Added.
* icu/unicode/unirepl.h: Added.
* icu/unicode/uniset.h: Added.
(UnicodeSet::operator!=):
(UnicodeSet::isFrozen):
(UnicodeSet::containsSome):
(UnicodeSet::isBogus):
(UnicodeSet::fromUSet):
(UnicodeSet::toUSet):
(UnicodeSet::span):
(UnicodeSet::spanBack):
* icu/unicode/unum.h: Renamed from Source/JavaScriptCore/icu/unicode/unum.h.
* icu/unicode/unumsys.h: Renamed from Source/JavaScriptCore/icu/unicode/unumsys.h.
* icu/unicode/upluralrules.h: Added.
* icu/unicode/uregex.h: Added.
* icu/unicode/uregion.h: Added.
* icu/unicode/urep.h: Added.
* icu/unicode/ures.h: Added.
(ures_getUnicodeString):
(ures_getNextUnicodeString):
(ures_getUnicodeStringByIndex):
(ures_getUnicodeStringByKey):
* icu/unicode/usearch.h: Renamed from Source/WebCore/icu/unicode/usearch.h.
* icu/unicode/usetiter.h: Added.
(UnicodeSetIterator::isString):
(UnicodeSetIterator::getCodepoint):
(UnicodeSetIterator::getCodepointEnd):
* icu/unicode/ushape.h: Renamed from Source/WebCore/icu/unicode/ushape.h.
* icu/unicode/usprep.h: Added.
* icu/unicode/ustdio.h: Added.
* icu/unicode/ustream.h: Added.
* icu/unicode/ustringtrie.h: Added.
* icu/unicode/utf32.h: Added.
* icu/unicode/utmscale.h: Added.
* icu/unicode/utrace.h: Added.
* icu/unicode/utrans.h: Added.
* icu/unicode/utypes.h:
* icu/unicode/vtzone.h: Added.

Tools:

Use WTF's copy of ICU headers.

* DumpRenderTree/mac/Configurations/Base.xcconfig:
* TestWebKitAPI/Configurations/Base.xcconfig:
* WebKitTestRunner/Configurations/Base.xcconfig:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@219103 268f45cc-cd09-0410-ab3c-d52691b4dbfc

243 files changed:
Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/Configurations/Base.xcconfig
Source/JavaScriptCore/icu/unicode/localpointer.h [deleted file]
Source/JavaScriptCore/icu/unicode/parseerr.h [deleted file]
Source/JavaScriptCore/icu/unicode/platform.h [deleted file]
Source/JavaScriptCore/icu/unicode/ptypes.h [deleted file]
Source/JavaScriptCore/icu/unicode/putil.h [deleted file]
Source/JavaScriptCore/icu/unicode/uchar.h [deleted file]
Source/JavaScriptCore/icu/unicode/ucnv.h [deleted file]
Source/JavaScriptCore/icu/unicode/ucnv_err.h [deleted file]
Source/JavaScriptCore/icu/unicode/ucol.h [deleted file]
Source/JavaScriptCore/icu/unicode/uconfig.h [deleted file]
Source/JavaScriptCore/icu/unicode/ucurr.h [deleted file]
Source/JavaScriptCore/icu/unicode/uenum.h [deleted file]
Source/JavaScriptCore/icu/unicode/uiter.h [deleted file]
Source/JavaScriptCore/icu/unicode/uloc.h [deleted file]
Source/JavaScriptCore/icu/unicode/umachine.h [deleted file]
Source/JavaScriptCore/icu/unicode/unorm.h [deleted file]
Source/JavaScriptCore/icu/unicode/unorm2.h [deleted file]
Source/JavaScriptCore/icu/unicode/urename.h [deleted file]
Source/JavaScriptCore/icu/unicode/uscript.h [deleted file]
Source/JavaScriptCore/icu/unicode/uset.h [deleted file]
Source/JavaScriptCore/icu/unicode/ustring.h [deleted file]
Source/JavaScriptCore/icu/unicode/utf.h [deleted file]
Source/JavaScriptCore/icu/unicode/utf16.h [deleted file]
Source/JavaScriptCore/icu/unicode/utf8.h [deleted file]
Source/JavaScriptCore/icu/unicode/utf_old.h [deleted file]
Source/JavaScriptCore/icu/unicode/utypes.h [deleted file]
Source/JavaScriptCore/icu/unicode/uvernum.h [deleted file]
Source/JavaScriptCore/icu/unicode/uversion.h [deleted file]
Source/JavaScriptCore/runtime/IntlCollator.cpp
Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp
Source/JavaScriptCore/runtime/JSGlobalObject.cpp
Source/JavaScriptCore/runtime/StringPrototype.cpp
Source/WTF/ChangeLog
Source/WTF/Configurations/Base.xcconfig
Source/WTF/Configurations/CopyWTFHeaders.xcconfig
Source/WTF/WTF.xcodeproj/project.pbxproj
Source/WTF/icu/unicode/alphaindex.h [new file with mode: 0644]
Source/WTF/icu/unicode/appendable.h [new file with mode: 0644]
Source/WTF/icu/unicode/basictz.h [new file with mode: 0644]
Source/WTF/icu/unicode/brkiter.h [new file with mode: 0644]
Source/WTF/icu/unicode/bytestrie.h [new file with mode: 0644]
Source/WTF/icu/unicode/bytestriebuilder.h [new file with mode: 0644]
Source/WTF/icu/unicode/calendar.h [new file with mode: 0644]
Source/WTF/icu/unicode/caniter.h [new file with mode: 0644]
Source/WTF/icu/unicode/chariter.h [moved from Source/WebCore/icu/unicode/chariter.h with 100% similarity]
Source/WTF/icu/unicode/choicfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/coleitr.h [new file with mode: 0644]
Source/WTF/icu/unicode/coll.h [new file with mode: 0644]
Source/WTF/icu/unicode/compactdecimalformat.h [new file with mode: 0644]
Source/WTF/icu/unicode/curramt.h [new file with mode: 0644]
Source/WTF/icu/unicode/currpinf.h [new file with mode: 0644]
Source/WTF/icu/unicode/currunit.h [new file with mode: 0644]
Source/WTF/icu/unicode/datefmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/dbbi.h [new file with mode: 0644]
Source/WTF/icu/unicode/dcfmtsym.h [new file with mode: 0644]
Source/WTF/icu/unicode/decimfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/docmain.h [new file with mode: 0644]
Source/WTF/icu/unicode/dtfmtsym.h [new file with mode: 0644]
Source/WTF/icu/unicode/dtintrv.h [new file with mode: 0644]
Source/WTF/icu/unicode/dtitvfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/dtitvinf.h [new file with mode: 0644]
Source/WTF/icu/unicode/dtptngen.h [new file with mode: 0644]
Source/WTF/icu/unicode/dtrule.h [new file with mode: 0644]
Source/WTF/icu/unicode/enumset.h [new file with mode: 0644]
Source/WTF/icu/unicode/errorcode.h [new file with mode: 0644]
Source/WTF/icu/unicode/fieldpos.h [new file with mode: 0644]
Source/WTF/icu/unicode/filteredbrk.h [new file with mode: 0644]
Source/WTF/icu/unicode/fmtable.h [new file with mode: 0644]
Source/WTF/icu/unicode/format.h [new file with mode: 0644]
Source/WTF/icu/unicode/fpositer.h [new file with mode: 0644]
Source/WTF/icu/unicode/gender.h [new file with mode: 0644]
Source/WTF/icu/unicode/gregocal.h [new file with mode: 0644]
Source/WTF/icu/unicode/icudataver.h [new file with mode: 0644]
Source/WTF/icu/unicode/icuplug.h [new file with mode: 0644]
Source/WTF/icu/unicode/idna.h [new file with mode: 0644]
Source/WTF/icu/unicode/listformatter.h [new file with mode: 0644]
Source/WTF/icu/unicode/locdspnm.h [new file with mode: 0644]
Source/WTF/icu/unicode/locid.h [new file with mode: 0644]
Source/WTF/icu/unicode/measfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/measunit.h [new file with mode: 0644]
Source/WTF/icu/unicode/measure.h [new file with mode: 0644]
Source/WTF/icu/unicode/messagepattern.h [new file with mode: 0644]
Source/WTF/icu/unicode/msgfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/normalizer2.h [new file with mode: 0644]
Source/WTF/icu/unicode/normlzr.h [new file with mode: 0644]
Source/WTF/icu/unicode/numfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/numsys.h [new file with mode: 0644]
Source/WTF/icu/unicode/parsepos.h [new file with mode: 0644]
Source/WTF/icu/unicode/plurfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/plurrule.h [new file with mode: 0644]
Source/WTF/icu/unicode/rbbi.h [new file with mode: 0644]
Source/WTF/icu/unicode/rbnf.h [new file with mode: 0644]
Source/WTF/icu/unicode/rbtz.h [new file with mode: 0644]
Source/WTF/icu/unicode/regex.h [new file with mode: 0644]
Source/WTF/icu/unicode/region.h [new file with mode: 0644]
Source/WTF/icu/unicode/reldatefmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/resbund.h [new file with mode: 0644]
Source/WTF/icu/unicode/schriter.h [new file with mode: 0644]
Source/WTF/icu/unicode/scientificnumberformatter.h [new file with mode: 0644]
Source/WTF/icu/unicode/search.h [new file with mode: 0644]
Source/WTF/icu/unicode/selfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/simpletz.h [new file with mode: 0644]
Source/WTF/icu/unicode/smpdtfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/sortkey.h [new file with mode: 0644]
Source/WTF/icu/unicode/stringtriebuilder.h [new file with mode: 0644]
Source/WTF/icu/unicode/stsearch.h [new file with mode: 0644]
Source/WTF/icu/unicode/symtable.h [new file with mode: 0644]
Source/WTF/icu/unicode/tblcoll.h [new file with mode: 0644]
Source/WTF/icu/unicode/timezone.h [new file with mode: 0644]
Source/WTF/icu/unicode/tmunit.h [new file with mode: 0644]
Source/WTF/icu/unicode/tmutamt.h [new file with mode: 0644]
Source/WTF/icu/unicode/tmutfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/translit.h [new file with mode: 0644]
Source/WTF/icu/unicode/tzfmt.h [new file with mode: 0644]
Source/WTF/icu/unicode/tznames.h [new file with mode: 0644]
Source/WTF/icu/unicode/tzrule.h [new file with mode: 0644]
Source/WTF/icu/unicode/tztrans.h [new file with mode: 0644]
Source/WTF/icu/unicode/ubidi.h [new file with mode: 0644]
Source/WTF/icu/unicode/ucal.h [moved from Source/JavaScriptCore/icu/unicode/ucal.h with 100% similarity]
Source/WTF/icu/unicode/ucasemap.h [new file with mode: 0644]
Source/WTF/icu/unicode/ucat.h [new file with mode: 0644]
Source/WTF/icu/unicode/ucharstrie.h [new file with mode: 0644]
Source/WTF/icu/unicode/ucharstriebuilder.h [new file with mode: 0644]
Source/WTF/icu/unicode/uchriter.h [new file with mode: 0644]
Source/WTF/icu/unicode/uclean.h [new file with mode: 0644]
Source/WTF/icu/unicode/ucnv_cb.h [moved from Source/WebCore/icu/unicode/ucnv_cb.h with 100% similarity]
Source/WTF/icu/unicode/ucnvsel.h [new file with mode: 0644]
Source/WTF/icu/unicode/ucoleitr.h [moved from Source/WebCore/icu/unicode/ucoleitr.h with 100% similarity]
Source/WTF/icu/unicode/uconfig.h
Source/WTF/icu/unicode/ucsdet.h [moved from Source/WebCore/icu/unicode/ucsdet.h with 100% similarity]
Source/WTF/icu/unicode/udat.h [moved from Source/JavaScriptCore/icu/unicode/udat.h with 100% similarity]
Source/WTF/icu/unicode/udata.h [new file with mode: 0644]
Source/WTF/icu/unicode/udateintervalformat.h [new file with mode: 0644]
Source/WTF/icu/unicode/udatpg.h [moved from Source/JavaScriptCore/icu/unicode/udatpg.h with 100% similarity]
Source/WTF/icu/unicode/udisplaycontext.h [moved from Source/JavaScriptCore/icu/unicode/udisplaycontext.h with 100% similarity]
Source/WTF/icu/unicode/ufieldpositer.h [moved from Source/JavaScriptCore/icu/unicode/ufieldpositer.h with 100% similarity]
Source/WTF/icu/unicode/uformattable.h [moved from Source/JavaScriptCore/icu/unicode/uformattable.h with 100% similarity]
Source/WTF/icu/unicode/ugender.h [new file with mode: 0644]
Source/WTF/icu/unicode/uidna.h [moved from Source/WebCore/icu/unicode/uidna.h with 100% similarity]
Source/WTF/icu/unicode/uldnames.h [new file with mode: 0644]
Source/WTF/icu/unicode/ulistformatter.h [new file with mode: 0644]
Source/WTF/icu/unicode/ulocdata.h [new file with mode: 0644]
Source/WTF/icu/unicode/umisc.h [moved from Source/JavaScriptCore/icu/unicode/umisc.h with 100% similarity]
Source/WTF/icu/unicode/umsg.h [new file with mode: 0644]
Source/WTF/icu/unicode/unifilt.h [new file with mode: 0644]
Source/WTF/icu/unicode/unifunct.h [new file with mode: 0644]
Source/WTF/icu/unicode/unimatch.h [new file with mode: 0644]
Source/WTF/icu/unicode/unirepl.h [new file with mode: 0644]
Source/WTF/icu/unicode/uniset.h [new file with mode: 0644]
Source/WTF/icu/unicode/unum.h [moved from Source/JavaScriptCore/icu/unicode/unum.h with 100% similarity]
Source/WTF/icu/unicode/unumsys.h [moved from Source/JavaScriptCore/icu/unicode/unumsys.h with 100% similarity]
Source/WTF/icu/unicode/upluralrules.h [new file with mode: 0644]
Source/WTF/icu/unicode/uregex.h [new file with mode: 0644]
Source/WTF/icu/unicode/uregion.h [new file with mode: 0644]
Source/WTF/icu/unicode/urep.h [new file with mode: 0644]
Source/WTF/icu/unicode/ures.h [new file with mode: 0644]
Source/WTF/icu/unicode/usearch.h [moved from Source/WebCore/icu/unicode/usearch.h with 100% similarity]
Source/WTF/icu/unicode/usetiter.h [new file with mode: 0644]
Source/WTF/icu/unicode/ushape.h [moved from Source/WebCore/icu/unicode/ushape.h with 100% similarity]
Source/WTF/icu/unicode/uspoof.h [new file with mode: 0644]
Source/WTF/icu/unicode/usprep.h [new file with mode: 0644]
Source/WTF/icu/unicode/ustdio.h [new file with mode: 0644]
Source/WTF/icu/unicode/ustream.h [new file with mode: 0644]
Source/WTF/icu/unicode/ustringtrie.h [new file with mode: 0644]
Source/WTF/icu/unicode/utf32.h [new file with mode: 0644]
Source/WTF/icu/unicode/utmscale.h [new file with mode: 0644]
Source/WTF/icu/unicode/utrace.h [new file with mode: 0644]
Source/WTF/icu/unicode/utrans.h [new file with mode: 0644]
Source/WTF/icu/unicode/utypes.h
Source/WTF/icu/unicode/vtzone.h [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/Configurations/WebCore.xcconfig
Source/WebCore/icu/unicode/bytestream.h [deleted file]
Source/WebCore/icu/unicode/localpointer.h [deleted file]
Source/WebCore/icu/unicode/parseerr.h [deleted file]
Source/WebCore/icu/unicode/platform.h [deleted file]
Source/WebCore/icu/unicode/ptypes.h [deleted file]
Source/WebCore/icu/unicode/putil.h [deleted file]
Source/WebCore/icu/unicode/rep.h [deleted file]
Source/WebCore/icu/unicode/std_string.h [deleted file]
Source/WebCore/icu/unicode/strenum.h [deleted file]
Source/WebCore/icu/unicode/stringpiece.h [deleted file]
Source/WebCore/icu/unicode/ubrk.h [deleted file]
Source/WebCore/icu/unicode/uchar.h [deleted file]
Source/WebCore/icu/unicode/ucnv.h [deleted file]
Source/WebCore/icu/unicode/ucnv_err.h [deleted file]
Source/WebCore/icu/unicode/ucol.h [deleted file]
Source/WebCore/icu/unicode/uconfig.h [deleted file]
Source/WebCore/icu/unicode/ucurr.h [deleted file]
Source/WebCore/icu/unicode/uenum.h [deleted file]
Source/WebCore/icu/unicode/uiter.h [deleted file]
Source/WebCore/icu/unicode/uloc.h [deleted file]
Source/WebCore/icu/unicode/umachine.h [deleted file]
Source/WebCore/icu/unicode/unistr.h [deleted file]
Source/WebCore/icu/unicode/unorm.h [deleted file]
Source/WebCore/icu/unicode/unorm2.h [deleted file]
Source/WebCore/icu/unicode/uobject.h [deleted file]
Source/WebCore/icu/unicode/urename.h [deleted file]
Source/WebCore/icu/unicode/uscript.h [deleted file]
Source/WebCore/icu/unicode/uset.h [deleted file]
Source/WebCore/icu/unicode/ustring.h [deleted file]
Source/WebCore/icu/unicode/utext.h [deleted file]
Source/WebCore/icu/unicode/utf.h [deleted file]
Source/WebCore/icu/unicode/utf16.h [deleted file]
Source/WebCore/icu/unicode/utf8.h [deleted file]
Source/WebCore/icu/unicode/utf_old.h [deleted file]
Source/WebCore/icu/unicode/utypes.h [deleted file]
Source/WebCore/icu/unicode/uvernum.h [deleted file]
Source/WebCore/icu/unicode/uversion.h [deleted file]
Source/WebCore/platform/graphics/FontCache.h
Source/WebKit/mac/ChangeLog
Source/WebKit/mac/Configurations/WebKitLegacy.xcconfig
Source/WebKit/mac/icu/unicode/localpointer.h [deleted file]
Source/WebKit/mac/icu/unicode/parseerr.h [deleted file]
Source/WebKit/mac/icu/unicode/platform.h [deleted file]
Source/WebKit/mac/icu/unicode/ptypes.h [deleted file]
Source/WebKit/mac/icu/unicode/putil.h [deleted file]
Source/WebKit/mac/icu/unicode/uchar.h [deleted file]
Source/WebKit/mac/icu/unicode/uconfig.h [deleted file]
Source/WebKit/mac/icu/unicode/ucurr.h [deleted file]
Source/WebKit/mac/icu/unicode/uidna.h [deleted file]
Source/WebKit/mac/icu/unicode/uiter.h [deleted file]
Source/WebKit/mac/icu/unicode/umachine.h [deleted file]
Source/WebKit/mac/icu/unicode/unorm.h [deleted file]
Source/WebKit/mac/icu/unicode/unorm2.h [deleted file]
Source/WebKit/mac/icu/unicode/urename.h [deleted file]
Source/WebKit/mac/icu/unicode/uscript.h [deleted file]
Source/WebKit/mac/icu/unicode/ustring.h [deleted file]
Source/WebKit/mac/icu/unicode/utf.h [deleted file]
Source/WebKit/mac/icu/unicode/utf16.h [deleted file]
Source/WebKit/mac/icu/unicode/utf8.h [deleted file]
Source/WebKit/mac/icu/unicode/utf_old.h [deleted file]
Source/WebKit/mac/icu/unicode/utypes.h [deleted file]
Source/WebKit/mac/icu/unicode/uvernum.h [deleted file]
Source/WebKit/mac/icu/unicode/uversion.h [deleted file]
Source/WebKit2/ChangeLog
Source/WebKit2/Configurations/BaseTarget.xcconfig
Tools/ChangeLog
Tools/DumpRenderTree/mac/Configurations/Base.xcconfig
Tools/TestWebKitAPI/Configurations/Base.xcconfig
Tools/WebKitTestRunner/Configurations/Base.xcconfig

index 12e3dc4..ecc7d1b 100644 (file)
@@ -1,3 +1,46 @@
+2017-07-03  Myles C. Maxfield  <mmaxfield@apple.com>
+
+        Remove copy of ICU headers from WebKit
+        https://bugs.webkit.org/show_bug.cgi?id=116407
+
+        Reviewed by Alex Christensen.
+
+        Use WTF's copy of ICU headers.
+
+        * Configurations/Base.xcconfig:
+        * icu/unicode/localpointer.h: Removed.
+        * icu/unicode/parseerr.h: Removed.
+        * icu/unicode/platform.h: Removed.
+        * icu/unicode/ptypes.h: Removed.
+        * icu/unicode/putil.h: Removed.
+        * icu/unicode/uchar.h: Removed.
+        * icu/unicode/ucnv.h: Removed.
+        * icu/unicode/ucnv_err.h: Removed.
+        * icu/unicode/ucol.h: Removed.
+        * icu/unicode/uconfig.h: Removed.
+        * icu/unicode/ucurr.h: Removed.
+        * icu/unicode/uenum.h: Removed.
+        * icu/unicode/uiter.h: Removed.
+        * icu/unicode/uloc.h: Removed.
+        * icu/unicode/umachine.h: Removed.
+        * icu/unicode/unorm.h: Removed.
+        * icu/unicode/unorm2.h: Removed.
+        * icu/unicode/urename.h: Removed.
+        * icu/unicode/uscript.h: Removed.
+        * icu/unicode/uset.h: Removed.
+        * icu/unicode/ustring.h: Removed.
+        * icu/unicode/utf.h: Removed.
+        * icu/unicode/utf16.h: Removed.
+        * icu/unicode/utf8.h: Removed.
+        * icu/unicode/utf_old.h: Removed.
+        * icu/unicode/utypes.h: Removed.
+        * icu/unicode/uvernum.h: Removed.
+        * icu/unicode/uversion.h: Removed.
+        * runtime/IntlCollator.cpp:
+        * runtime/IntlDateTimeFormat.cpp:
+        * runtime/JSGlobalObject.cpp:
+        * runtime/StringPrototype.cpp:
+
 2017-07-03  Saam Barati  <sbarati@apple.com>
 
         Add better crash logging for allocation sinking phase
index 0bc0102..5993750 100644 (file)
@@ -57,7 +57,7 @@ GCC_INLINES_ARE_PRIVATE_EXTERN = YES;
 GCC_NO_COMMON_BLOCKS = YES;
 GCC_OBJC_CALL_CXX_CDTORS = YES;
 GCC_PRECOMPILE_PREFIX_HEADER = YES;
-GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) $(FEATURE_DEFINES) $(inherited);
+GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) $(FEATURE_DEFINES) U_HIDE_DEPRECATED_API U_DISABLE_RENAMING=1 U_SHOW_CPLUSPLUS_API=0 $(inherited);
 GCC_STRICT_ALIASING = YES;
 GCC_THREADSAFE_STATICS = NO;
 GCC_TREAT_WARNINGS_AS_ERRORS = YES;
@@ -137,8 +137,8 @@ DEAD_CODE_STRIPPING = $(DEAD_CODE_STRIPPING_$(CURRENT_VARIANT));
 
 SDKROOT = macosx.internal;
 
-OTHER_CFLAGS = $(ASAN_OTHER_CFLAGS) -isystem icu;
-OTHER_CPLUSPLUSFLAGS = $(ASAN_OTHER_CPLUSPLUSFLAGS) -isystem icu -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders;
+OTHER_CFLAGS = $(ASAN_OTHER_CFLAGS);
+OTHER_CPLUSPLUSFLAGS = $(ASAN_OTHER_CPLUSPLUSFLAGS) -isystem $(SDKROOT)/System/Library/Frameworks/System.framework/PrivateHeaders;
 OTHER_LDFLAGS = $(ASAN_OTHER_LDFLAGS);
 
 WK_EMPTY_ = YES;
diff --git a/Source/JavaScriptCore/icu/unicode/localpointer.h b/Source/JavaScriptCore/icu/unicode/localpointer.h
deleted file mode 100644 (file)
index e3aabf6..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
-*******************************************************************************
-*
-*   Copyright (C) 2009-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-*******************************************************************************
-*   file name:  localpointer.h
-*   encoding:   US-ASCII
-*   tab size:   8 (not used)
-*   indentation:4
-*
-*   created on: 2009nov13
-*   created by: Markus W. Scherer
-*/
-
-#ifndef __LOCALPOINTER_H__
-#define __LOCALPOINTER_H__
-
-/**
- * \file 
- * \brief C++ API: "Smart pointers" for use with and in ICU4C C++ code.
- *
- * These classes are inspired by
- * - std::auto_ptr
- * - boost::scoped_ptr & boost::scoped_array
- * - Taligent Safe Pointers (TOnlyPointerTo)
- *
- * but none of those provide for all of the goals for ICU smart pointers:
- * - Smart pointer owns the object and releases it when it goes out of scope.
- * - No transfer of ownership via copy/assignment to reduce misuse. Simpler & more robust.
- * - ICU-compatible: No exceptions.
- * - Need to be able to orphan/release the pointer and its ownership.
- * - Need variants for normal C++ object pointers, C++ arrays, and ICU C service objects.
- *
- * For details see http://site.icu-project.org/design/cpp/scoped_ptr
- */
-
-#include "unicode/utypes.h"
-
-#if U_SHOW_CPLUSPLUS_API
-
-U_NAMESPACE_BEGIN
-
-/**
- * "Smart pointer" base class; do not use directly: use LocalPointer etc.
- *
- * Base class for smart pointer classes that do not throw exceptions.
- *
- * Do not use this base class directly, since it does not delete its pointer.
- * A subclass must implement methods that delete the pointer:
- * Destructor and adoptInstead().
- *
- * There is no operator T *() provided because the programmer must decide
- * whether to use getAlias() (without transfer of ownership) or orpan()
- * (with transfer of ownership and NULLing of the pointer).
- *
- * @see LocalPointer
- * @see LocalArray
- * @see U_DEFINE_LOCAL_OPEN_POINTER
- * @stable ICU 4.4
- */
-template<typename T>
-class LocalPointerBase {
-public:
-    /**
-     * Constructor takes ownership.
-     * @param p simple pointer to an object that is adopted
-     * @stable ICU 4.4
-     */
-    explicit LocalPointerBase(T *p=NULL) : ptr(p) {}
-    /**
-     * Destructor deletes the object it owns.
-     * Subclass must override: Base class does nothing.
-     * @stable ICU 4.4
-     */
-    ~LocalPointerBase() { /* delete ptr; */ }
-    /**
-     * NULL check.
-     * @return TRUE if ==NULL
-     * @stable ICU 4.4
-     */
-    UBool isNull() const { return ptr==NULL; }
-    /**
-     * NULL check.
-     * @return TRUE if !=NULL
-     * @stable ICU 4.4
-     */
-    UBool isValid() const { return ptr!=NULL; }
-    /**
-     * Comparison with a simple pointer, so that existing code
-     * with ==NULL need not be changed.
-     * @param other simple pointer for comparison
-     * @return true if this pointer value equals other
-     * @stable ICU 4.4
-     */
-    bool operator==(const T *other) const { return ptr==other; }
-    /**
-     * Comparison with a simple pointer, so that existing code
-     * with !=NULL need not be changed.
-     * @param other simple pointer for comparison
-     * @return true if this pointer value differs from other
-     * @stable ICU 4.4
-     */
-    bool operator!=(const T *other) const { return ptr!=other; }
-    /**
-     * Access without ownership change.
-     * @return the pointer value
-     * @stable ICU 4.4
-     */
-    T *getAlias() const { return ptr; }
-    /**
-     * Access without ownership change.
-     * @return the pointer value as a reference
-     * @stable ICU 4.4
-     */
-    T &operator*() const { return *ptr; }
-    /**
-     * Access without ownership change.
-     * @return the pointer value
-     * @stable ICU 4.4
-     */
-    T *operator->() const { return ptr; }
-    /**
-     * Gives up ownership; the internal pointer becomes NULL.
-     * @return the pointer value;
-     *         caller becomes responsible for deleting the object
-     * @stable ICU 4.4
-     */
-    T *orphan() {
-        T *p=ptr;
-        ptr=NULL;
-        return p;
-    }
-    /**
-     * Deletes the object it owns,
-     * and adopts (takes ownership of) the one passed in.
-     * Subclass must override: Base class does not delete the object.
-     * @param p simple pointer to an object that is adopted
-     * @stable ICU 4.4
-     */
-    void adoptInstead(T *p) {
-        // delete ptr;
-        ptr=p;
-    }
-protected:
-    /**
-     * Actual pointer.
-     * @internal
-     */
-    T *ptr;
-private:
-    // No comparison operators with other LocalPointerBases.
-    bool operator==(const LocalPointerBase &other);
-    bool operator!=(const LocalPointerBase &other);
-    // No ownership transfer: No copy constructor, no assignment operator.
-    LocalPointerBase(const LocalPointerBase &other);
-    void operator=(const LocalPointerBase &other);
-    // No heap allocation. Use only on the stack.
-    static void * U_EXPORT2 operator new(size_t size);
-    static void * U_EXPORT2 operator new[](size_t size);
-#if U_HAVE_PLACEMENT_NEW
-    static void * U_EXPORT2 operator new(size_t, void *ptr);
-#endif
-};
-
-/**
- * "Smart pointer" class, deletes objects via the standard C++ delete operator.
- * For most methods see the LocalPointerBase base class.
- *
- * Usage example:
- * \code
- * LocalPointer<UnicodeString> s(new UnicodeString((UChar32)0x50005));
- * int32_t length=s->length();  // 2
- * UChar lead=s->charAt(0);  // 0xd900
- * if(some condition) { return; }  // no need to explicitly delete the pointer
- * s.adoptInstead(new UnicodeString((UChar)0xfffc));
- * length=s->length();  // 1
- * // no need to explicitly delete the pointer
- * \endcode
- *
- * @see LocalPointerBase
- * @stable ICU 4.4
- */
-template<typename T>
-class LocalPointer : public LocalPointerBase<T> {
-public:
-    /**
-     * Constructor takes ownership.
-     * @param p simple pointer to an object that is adopted
-     * @stable ICU 4.4
-     */
-    explicit LocalPointer(T *p=NULL) : LocalPointerBase<T>(p) {}
-#ifndef U_HIDE_DRAFT_API
-    /**
-     * Constructor takes ownership and reports an error if NULL.
-     *
-     * This constructor is intended to be used with other-class constructors
-     * that may report a failure UErrorCode,
-     * so that callers need to check only for U_FAILURE(errorCode)
-     * and not also separately for isNull().
-     *
-     * @param p simple pointer to an object that is adopted
-     * @param errorCode in/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR
-     *     if p==NULL and no other failure code had been set
-     * @draft ICU 55
-     */
-    LocalPointer(T *p, UErrorCode &errorCode) : LocalPointerBase<T>(p) {
-        if(p==NULL && U_SUCCESS(errorCode)) {
-            errorCode=U_MEMORY_ALLOCATION_ERROR;
-        }
-    }
-#endif  /* U_HIDE_DRAFT_API */
-    /**
-     * Destructor deletes the object it owns.
-     * @stable ICU 4.4
-     */
-    ~LocalPointer() {
-        delete LocalPointerBase<T>::ptr;
-    }
-    /**
-     * Deletes the object it owns,
-     * and adopts (takes ownership of) the one passed in.
-     * @param p simple pointer to an object that is adopted
-     * @stable ICU 4.4
-     */
-    void adoptInstead(T *p) {
-        delete LocalPointerBase<T>::ptr;
-        LocalPointerBase<T>::ptr=p;
-    }
-#ifndef U_HIDE_DRAFT_API
-    /**
-     * Deletes the object it owns,
-     * and adopts (takes ownership of) the one passed in.
-     *
-     * If U_FAILURE(errorCode), then the current object is retained and the new one deleted.
-     *
-     * If U_SUCCESS(errorCode) but the input pointer is NULL,
-     * then U_MEMORY_ALLOCATION_ERROR is set,
-     * the current object is deleted, and NULL is set.
-     *
-     * @param p simple pointer to an object that is adopted
-     * @param errorCode in/out UErrorCode, set to U_MEMORY_ALLOCATION_ERROR
-     *     if p==NULL and no other failure code had been set
-     * @draft ICU 55
-     */
-    void adoptInsteadAndCheckErrorCode(T *p, UErrorCode &errorCode) {
-        if(U_SUCCESS(errorCode)) {
-            delete LocalPointerBase<T>::ptr;
-            LocalPointerBase<T>::ptr=p;
-            if(p==NULL) {
-                errorCode=U_MEMORY_ALLOCATION_ERROR;
-            }
-        } else {
-            delete p;
-        }
-    }
-#endif  /* U_HIDE_DRAFT_API */
-};
-
-/**
- * "Smart pointer" class, deletes objects via the C++ array delete[] operator.
- * For most methods see the LocalPointerBase base class.
- * Adds operator[] for array item access.
- *
- * Usage example:
- * \code
- * LocalArray<UnicodeString> a(new UnicodeString[2]);
- * a[0].append((UChar)0x61);
- * if(some condition) { return; }  // no need to explicitly delete the array
- * a.adoptInstead(new UnicodeString[4]);
- * a[3].append((UChar)0x62).append((UChar)0x63).reverse();
- * // no need to explicitly delete the array
- * \endcode
- *
- * @see LocalPointerBase
- * @stable ICU 4.4
- */
-template<typename T>
-class LocalArray : public LocalPointerBase<T> {
-public:
-    /**
-     * Constructor takes ownership.
-     * @param p simple pointer to an array of T objects that is adopted
-     * @stable ICU 4.4
-     */
-    explicit LocalArray(T *p=NULL) : LocalPointerBase<T>(p) {}
-    /**
-     * Destructor deletes the array it owns.
-     * @stable ICU 4.4
-     */
-    ~LocalArray() {
-        delete[] LocalPointerBase<T>::ptr;
-    }
-    /**
-     * Deletes the array it owns,
-     * and adopts (takes ownership of) the one passed in.
-     * @param p simple pointer to an array of T objects that is adopted
-     * @stable ICU 4.4
-     */
-    void adoptInstead(T *p) {
-        delete[] LocalPointerBase<T>::ptr;
-        LocalPointerBase<T>::ptr=p;
-    }
-    /**
-     * Array item access (writable).
-     * No index bounds check.
-     * @param i array index
-     * @return reference to the array item
-     * @stable ICU 4.4
-     */
-    T &operator[](ptrdiff_t i) const { return LocalPointerBase<T>::ptr[i]; }
-};
-
-/**
- * \def U_DEFINE_LOCAL_OPEN_POINTER
- * "Smart pointer" definition macro, deletes objects via the closeFunction.
- * Defines a subclass of LocalPointerBase which works just
- * like LocalPointer<Type> except that this subclass will use the closeFunction
- * rather than the C++ delete operator.
- *
- * Requirement: The closeFunction must tolerate a NULL pointer.
- * (We could add a NULL check here but it is normally redundant.)
- *
- * Usage example:
- * \code
- * LocalUCaseMapPointer csm(ucasemap_open(localeID, options, &errorCode));
- * utf8OutLength=ucasemap_utf8ToLower(csm.getAlias(),
- *     utf8Out, (int32_t)sizeof(utf8Out),
- *     utf8In, utf8InLength, &errorCode);
- * if(U_FAILURE(errorCode)) { return; }  // no need to explicitly delete the UCaseMap
- * \endcode
- *
- * @see LocalPointerBase
- * @see LocalPointer
- * @stable ICU 4.4
- */
-#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction) \
-    class LocalPointerClassName : public LocalPointerBase<Type> { \
-    public: \
-        explicit LocalPointerClassName(Type *p=NULL) : LocalPointerBase<Type>(p) {} \
-        ~LocalPointerClassName() { closeFunction(ptr); } \
-        void adoptInstead(Type *p) { \
-            closeFunction(ptr); \
-            ptr=p; \
-        } \
-    }
-
-U_NAMESPACE_END
-
-#endif  /* U_SHOW_CPLUSPLUS_API */
-#endif  /* __LOCALPOINTER_H__ */
diff --git a/Source/JavaScriptCore/icu/unicode/parseerr.h b/Source/JavaScriptCore/icu/unicode/parseerr.h
deleted file mode 100644 (file)
index 44ff008..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-**********************************************************************
-*   Copyright (C) 1999-2005, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*   Date        Name        Description
-*   03/14/00    aliu        Creation.
-*   06/27/00    aliu        Change from C++ class to C struct
-**********************************************************************
-*/
-#ifndef PARSEERR_H
-#define PARSEERR_H
-
-#include "unicode/utypes.h"
-
-
-/**
- * \file
- * \brief C API: Parse Error Information
- */
-/**
- * The capacity of the context strings in UParseError.
- * @stable ICU 2.0
- */ 
-enum { U_PARSE_CONTEXT_LEN = 16 };
-
-/**
- * A UParseError struct is used to returned detailed information about
- * parsing errors.  It is used by ICU parsing engines that parse long
- * rules, patterns, or programs, where the text being parsed is long
- * enough that more information than a UErrorCode is needed to
- * localize the error.
- *
- * <p>The line, offset, and context fields are optional; parsing
- * engines may choose not to use to use them.
- *
- * <p>The preContext and postContext strings include some part of the
- * context surrounding the error.  If the source text is "let for=7"
- * and "for" is the error (e.g., because it is a reserved word), then
- * some examples of what a parser might produce are the following:
- *
- * <pre>
- * preContext   postContext
- * ""           ""            The parser does not support context
- * "let "       "=7"          Pre- and post-context only
- * "let "       "for=7"       Pre- and post-context and error text
- * ""           "for"         Error text only
- * </pre>
- *
- * <p>Examples of engines which use UParseError (or may use it in the
- * future) are Transliterator, RuleBasedBreakIterator, and
- * RegexPattern.
- * 
- * @stable ICU 2.0
- */
-typedef struct UParseError {
-
-    /**
-     * The line on which the error occured.  If the parser uses this
-     * field, it sets it to the line number of the source text line on
-     * which the error appears, which will be be a value >= 1.  If the
-     * parse does not support line numbers, the value will be <= 0.
-     * @stable ICU 2.0
-     */
-    int32_t        line;
-
-    /**
-     * The character offset to the error.  If the line field is >= 1,
-     * then this is the offset from the start of the line.  Otherwise,
-     * this is the offset from the start of the text.  If the parser
-     * does not support this field, it will have a value < 0.
-     * @stable ICU 2.0
-     */
-    int32_t        offset;
-
-    /**
-     * Textual context before the error.  Null-terminated.  The empty
-     * string if not supported by parser.
-     * @stable ICU 2.0   
-     */
-    UChar          preContext[U_PARSE_CONTEXT_LEN];
-
-    /**
-     * The error itself and/or textual context after the error.
-     * Null-terminated.  The empty string if not supported by parser.
-     * @stable ICU 2.0   
-     */
-    UChar          postContext[U_PARSE_CONTEXT_LEN];
-
-} UParseError;
-
-#endif
diff --git a/Source/JavaScriptCore/icu/unicode/platform.h b/Source/JavaScriptCore/icu/unicode/platform.h
deleted file mode 100644 (file)
index 4829000..0000000
+++ /dev/null
@@ -1,761 +0,0 @@
-/*
-******************************************************************************
-*
-*   Copyright (C) 1997-2015, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-*  FILE NAME : platform.h
-*
-*   Date        Name        Description
-*   05/13/98    nos         Creation (content moved here from ptypes.h).
-*   03/02/99    stephen     Added AS400 support.
-*   03/30/99    stephen     Added Linux support.
-*   04/13/99    stephen     Reworked for autoconf.
-******************************************************************************
-*/
-
-#ifndef _PLATFORM_H
-#define _PLATFORM_H
-
-#include "unicode/uconfig.h"
-#include "unicode/uvernum.h"
-
-/**
- * \file
- * \brief Basic types for the platform.
- *
- * This file used to be generated by autoconf/configure.
- * Starting with ICU 49, platform.h is a normal source file,
- * to simplify cross-compiling and working with non-autoconf/make build systems.
- *
- * When a value in this file does not work on a platform, then please
- * try to derive it from the U_PLATFORM value
- * (for which we might need a new value constant in rare cases)
- * and/or from other macros that are predefined by the compiler
- * or defined in standard (POSIX or platform or compiler) headers.
- *
- * As a temporary workaround, you can add an explicit <code>#define</code> for some macros
- * before it is first tested, or add an equivalent -D macro definition
- * to the compiler's command line.
- *
- * Note: Some compilers provide ways to show the predefined macros.
- * For example, with gcc you can compile an empty .c file and have the compiler
- * print the predefined macros with
- * \code
- * gcc -E -dM -x c /dev/null | sort
- * \endcode
- * (You can provide an actual empty .c file rather than /dev/null.
- * <code>-x c++</code> is for C++.)
- */
-
-/**
- * Define some things so that they can be documented.
- * @internal
- */
-#ifdef U_IN_DOXYGEN
-/*
- * Problem: "platform.h:335: warning: documentation for unknown define U_HAVE_STD_STRING found." means that U_HAVE_STD_STRING is not documented.
- * Solution: #define any defines for non @internal API here, so that they are visible in the docs.  If you just set PREDEFINED in Doxyfile.in,  they won't be documented.
- */
-
-/* None for now. */
-#endif
-
-/**
- * \def U_PLATFORM
- * The U_PLATFORM macro defines the platform we're on.
- *
- * We used to define one different, value-less macro per platform.
- * That made it hard to know the set of relevant platforms and macros,
- * and hard to deal with variants of platforms.
- *
- * Starting with ICU 49, we define platforms as numeric macros,
- * with ranges of values for related platforms and their variants.
- * The U_PLATFORM macro is set to one of these values.
- *
- * Historical note from the Solaris Wikipedia article:
- * AT&T and Sun collaborated on a project to merge the most popular Unix variants
- * on the market at that time: BSD, System V, and Xenix.
- * This became Unix System V Release 4 (SVR4).
- *
- * @internal
- */
-
-/** Unknown platform. @internal */
-#define U_PF_UNKNOWN 0
-/** Windows @internal */
-#define U_PF_WINDOWS 1000
-/** MinGW. Windows, calls to Win32 API, but using GNU gcc and binutils. @internal */
-#define U_PF_MINGW 1800
-/**
- * Cygwin. Windows, calls to cygwin1.dll for Posix functions,
- * using MSVC or GNU gcc and binutils.
- * @internal
- */
-#define U_PF_CYGWIN 1900
-/* Reserve 2000 for U_PF_UNIX? */
-/** HP-UX is based on UNIX System V. @internal */
-#define U_PF_HPUX 2100
-/** Solaris is a Unix operating system based on SVR4. @internal */
-#define U_PF_SOLARIS 2600
-/** BSD is a UNIX operating system derivative. @internal */
-#define U_PF_BSD 3000
-/** AIX is based on UNIX System V Releases and 4.3 BSD. @internal */
-#define U_PF_AIX 3100
-/** IRIX is based on UNIX System V with BSD extensions. @internal */
-#define U_PF_IRIX 3200
-/**
- * Darwin is a POSIX-compliant operating system, composed of code developed by Apple,
- * as well as code derived from NeXTSTEP, BSD, and other projects,
- * built around the Mach kernel.
- * Darwin forms the core set of components upon which Mac OS X, Apple TV, and iOS are based.
- * (Original description modified from WikiPedia.)
- * @internal
- */
-#define U_PF_DARWIN 3500
-/** iPhone OS (iOS) is a derivative of Mac OS X. @internal */
-#define U_PF_IPHONE 3550
-/** QNX is a commercial Unix-like real-time operating system related to BSD. @internal */
-#define U_PF_QNX 3700
-/** Linux is a Unix-like operating system. @internal */
-#define U_PF_LINUX 4000
-/**
- * Native Client is pretty close to Linux.
- * See https://developer.chrome.com/native-client and
- *  http://www.chromium.org/nativeclient
- *  @internal
- */
-#define U_PF_BROWSER_NATIVE_CLIENT 4020
-/** Android is based on Linux. @internal */
-#define U_PF_ANDROID 4050
-/* Maximum value for Linux-based platform is 4499 */
-/** z/OS is the successor to OS/390 which was the successor to MVS. @internal */
-#define U_PF_OS390 9000
-/** "IBM i" is the current name of what used to be i5/OS and earlier OS/400. @internal */
-#define U_PF_OS400 9400
-
-#ifdef U_PLATFORM
-    /* Use the predefined value. */
-#elif defined(__MINGW32__)
-#   define U_PLATFORM U_PF_MINGW
-#elif defined(__CYGWIN__)
-#   define U_PLATFORM U_PF_CYGWIN
-#elif defined(WIN32) || defined(_WIN32) || defined(WIN64) || defined(_WIN64)
-#   define U_PLATFORM U_PF_WINDOWS
-#elif defined(__ANDROID__)
-#   define U_PLATFORM U_PF_ANDROID
-    /* Android wchar_t support depends on the API level. */
-#   include <android/api-level.h>
-#elif defined(__native_client__)
-#   define U_PLATFORM U_PF_BROWSER_NATIVE_CLIENT
-#elif defined(linux) || defined(__linux__) || defined(__linux)
-#   define U_PLATFORM U_PF_LINUX
-#elif defined(__APPLE__) && defined(__MACH__)
-#   include <TargetConditionals.h>
-#   if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE  /* variant of TARGET_OS_MAC */
-#       define U_PLATFORM U_PF_IPHONE
-#   else
-#       define U_PLATFORM U_PF_DARWIN
-#   endif
-#elif defined(BSD) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__MirBSD__)
-#   define U_PLATFORM U_PF_BSD
-#elif defined(sun) || defined(__sun)
-    /* Check defined(__SVR4) || defined(__svr4__) to distinguish Solaris from SunOS? */
-#   define U_PLATFORM U_PF_SOLARIS
-#   if defined(__GNUC__)
-        /* Solaris/GCC needs this header file to get the proper endianness. Normally, this
-         * header file is included with stddef.h but on Solairs/GCC, the GCC version of stddef.h
-         *  is included which does not include this header file.
-         */
-#       include <sys/isa_defs.h>
-#   endif
-#elif defined(_AIX) || defined(__TOS_AIX__)
-#   define U_PLATFORM U_PF_AIX
-#elif defined(_hpux) || defined(hpux) || defined(__hpux)
-#   define U_PLATFORM U_PF_HPUX
-#elif defined(sgi) || defined(__sgi)
-#   define U_PLATFORM U_PF_IRIX
-#elif defined(__QNX__) || defined(__QNXNTO__)
-#   define U_PLATFORM U_PF_QNX
-#elif defined(__TOS_MVS__)
-#   define U_PLATFORM U_PF_OS390
-#elif defined(__OS400__) || defined(__TOS_OS400__)
-#   define U_PLATFORM U_PF_OS400
-#else
-#   define U_PLATFORM U_PF_UNKNOWN
-#endif
-
-/**
- * \def CYGWINMSVC
- * Defined if this is Windows with Cygwin, but using MSVC rather than gcc.
- * Otherwise undefined.
- * @internal
- */
-/* Commented out because this is already set in mh-cygwin-msvc
-#if U_PLATFORM == U_PF_CYGWIN && defined(_MSC_VER)
-#   define CYGWINMSVC
-#endif
-*/
-
-/**
- * \def U_PLATFORM_USES_ONLY_WIN32_API
- * Defines whether the platform uses only the Win32 API.
- * Set to 1 for Windows/MSVC and MinGW but not Cygwin.
- * @internal
- */
-#ifdef U_PLATFORM_USES_ONLY_WIN32_API
-    /* Use the predefined value. */
-#elif (U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_MINGW) || defined(CYGWINMSVC)
-#   define U_PLATFORM_USES_ONLY_WIN32_API 1
-#else
-    /* Cygwin implements POSIX. */
-#   define U_PLATFORM_USES_ONLY_WIN32_API 0
-#endif
-
-/**
- * \def U_PLATFORM_HAS_WIN32_API
- * Defines whether the Win32 API is available on the platform.
- * Set to 1 for Windows/MSVC, MinGW and Cygwin.
- * @internal
- */
-#ifdef U_PLATFORM_HAS_WIN32_API
-    /* Use the predefined value. */
-#elif U_PF_WINDOWS <= U_PLATFORM && U_PLATFORM <= U_PF_CYGWIN
-#   define U_PLATFORM_HAS_WIN32_API 1
-#else
-#   define U_PLATFORM_HAS_WIN32_API 0
-#endif
-
-/**
- * \def U_PLATFORM_IMPLEMENTS_POSIX
- * Defines whether the platform implements (most of) the POSIX API.
- * Set to 1 for Cygwin and most other platforms.
- * @internal
- */
-#ifdef U_PLATFORM_IMPLEMENTS_POSIX
-    /* Use the predefined value. */
-#elif U_PLATFORM_USES_ONLY_WIN32_API
-#   define U_PLATFORM_IMPLEMENTS_POSIX 0
-#else
-#   define U_PLATFORM_IMPLEMENTS_POSIX 1
-#endif
-
-/**
- * \def U_PLATFORM_IS_LINUX_BASED
- * Defines whether the platform is Linux or one of its derivatives.
- * @internal
- */
-#ifdef U_PLATFORM_IS_LINUX_BASED
-    /* Use the predefined value. */
-#elif U_PF_LINUX <= U_PLATFORM && U_PLATFORM <= 4499
-#   define U_PLATFORM_IS_LINUX_BASED 1
-#else
-#   define U_PLATFORM_IS_LINUX_BASED 0
-#endif
-
-/**
- * \def U_PLATFORM_IS_DARWIN_BASED
- * Defines whether the platform is Darwin or one of its derivatives.
- * @internal
- */
-#ifdef U_PLATFORM_IS_DARWIN_BASED
-    /* Use the predefined value. */
-#elif U_PF_DARWIN <= U_PLATFORM && U_PLATFORM <= U_PF_IPHONE
-#   define U_PLATFORM_IS_DARWIN_BASED 1
-#else
-#   define U_PLATFORM_IS_DARWIN_BASED 0
-#endif
-
-/**
- * \def U_HAVE_STDINT_H
- * Defines whether stdint.h is available. It is a C99 standard header.
- * We used to include inttypes.h which includes stdint.h but we usually do not need
- * the additional definitions from inttypes.h.
- * @internal
- */
-#ifdef U_HAVE_STDINT_H
-    /* Use the predefined value. */
-#elif U_PLATFORM_USES_ONLY_WIN32_API
-#   if defined(__BORLANDC__) || U_PLATFORM == U_PF_MINGW || (defined(_MSC_VER) && _MSC_VER>=1600)
-        /* Windows Visual Studio 9 and below do not have stdint.h & inttypes.h, but VS 2010 adds them. */
-#       define U_HAVE_STDINT_H 1
-#   else
-#       define U_HAVE_STDINT_H 0
-#   endif
-#elif U_PLATFORM == U_PF_SOLARIS
-    /* Solaris has inttypes.h but not stdint.h. */
-#   define U_HAVE_STDINT_H 0
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
-    /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-#   define U_HAVE_STDINT_H 0
-#else
-#   define U_HAVE_STDINT_H 1
-#endif
-
-/**
- * \def U_HAVE_INTTYPES_H
- * Defines whether inttypes.h is available. It is a C99 standard header.
- * We include inttypes.h where it is available but stdint.h is not.
- * @internal
- */
-#ifdef U_HAVE_INTTYPES_H
-    /* Use the predefined value. */
-#elif U_PLATFORM == U_PF_SOLARIS
-    /* Solaris has inttypes.h but not stdint.h. */
-#   define U_HAVE_INTTYPES_H 1
-#elif U_PLATFORM == U_PF_AIX && !defined(_AIX51) && defined(_POWER)
-    /* PPC AIX <= 4.3 has inttypes.h but not stdint.h. */
-#   define U_HAVE_INTTYPES_H 1
-#else
-    /* Most platforms have both inttypes.h and stdint.h, or neither. */
-#   define U_HAVE_INTTYPES_H U_HAVE_STDINT_H
-#endif
-
-/**
- * \def U_IOSTREAM_SOURCE
- * Defines what support for C++ streams is available.
- *
- * If U_IOSTREAM_SOURCE is set to 199711, then &lt;iostream&gt; is available
- * (the ISO/IEC C++ FDIS was published in November 1997), and then
- * one should qualify streams using the std namespace in ICU header
- * files.
- * Starting with ICU 49, this is the only supported version.
- *
- * If U_IOSTREAM_SOURCE is set to 198506, then &lt;iostream.h&gt; is
- * available instead (in June 1985 Stroustrup published
- * "An Extensible I/O Facility for C++" at the summer USENIX conference).
- * Starting with ICU 49, this version is not supported any more.
- *
- * If U_IOSTREAM_SOURCE is 0 (or any value less than 199711),
- * then C++ streams are not available and
- * support for them will be silently suppressed in ICU.
- *
- * @internal
- */
-#ifndef U_IOSTREAM_SOURCE
-#define U_IOSTREAM_SOURCE 199711
-#endif
-
-/**
- * \def U_HAVE_STD_STRING
- * Defines whether the standard C++ (STL) &lt;string&gt; header is available.
- * @internal
- */
-#ifdef U_HAVE_STD_STRING
-    /* Use the predefined value. */
-#else
-#   define U_HAVE_STD_STRING 1
-#endif
-
-/*===========================================================================*/
-/** @{ Compiler and environment features                                     */
-/*===========================================================================*/
-
-/**
- * \def U_GCC_MAJOR_MINOR
- * Indicates whether the compiler is gcc (test for != 0),
- * and if so, contains its major (times 100) and minor version numbers.
- * If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.
- *
- * For example, for testing for whether we have gcc, and whether it's 4.6 or higher,
- * use "#if U_GCC_MAJOR_MINOR >= 406".
- * @internal
- */
-#ifdef __GNUC__
-#   define U_GCC_MAJOR_MINOR (__GNUC__ * 100 + __GNUC_MINOR__)
-#else
-#   define U_GCC_MAJOR_MINOR 0
-#endif
-
-/**
- * \def U_IS_BIG_ENDIAN
- * Determines the endianness of the platform.
- * @internal
- */
-#ifdef U_IS_BIG_ENDIAN
-    /* Use the predefined value. */
-#elif defined(BYTE_ORDER) && defined(BIG_ENDIAN)
-#   define U_IS_BIG_ENDIAN (BYTE_ORDER == BIG_ENDIAN)
-#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__)
-    /* gcc */
-#   define U_IS_BIG_ENDIAN (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__)
-#elif defined(__BIG_ENDIAN__) || defined(_BIG_ENDIAN)
-#   define U_IS_BIG_ENDIAN 1
-#elif defined(__LITTLE_ENDIAN__) || defined(_LITTLE_ENDIAN)
-#   define U_IS_BIG_ENDIAN 0
-#elif U_PLATFORM == U_PF_OS390 || U_PLATFORM == U_PF_OS400 || defined(__s390__) || defined(__s390x__)
-    /* These platforms do not appear to predefine any endianness macros. */
-#   define U_IS_BIG_ENDIAN 1
-#elif defined(_PA_RISC1_0) || defined(_PA_RISC1_1) || defined(_PA_RISC2_0)
-    /* HPPA do not appear to predefine any endianness macros. */
-#   define U_IS_BIG_ENDIAN 1
-#elif defined(sparc) || defined(__sparc) || defined(__sparc__)
-    /* Some sparc based systems (e.g. Linux) do not predefine any endianness macros. */
-#   define U_IS_BIG_ENDIAN 1
-#else
-#   define U_IS_BIG_ENDIAN 0
-#endif
-
-/**
- * \def U_HAVE_PLACEMENT_NEW
- * Determines whether to override placement new and delete for STL.
- * @stable ICU 2.6
- */
-#ifdef U_HAVE_PLACEMENT_NEW
-    /* Use the predefined value. */
-#elif defined(__BORLANDC__)
-#   define U_HAVE_PLACEMENT_NEW 0
-#else
-#   define U_HAVE_PLACEMENT_NEW 1
-#endif
-
-/**
- * \def U_HAVE_DEBUG_LOCATION_NEW 
- * Define this to define the MFC debug version of the operator new.
- *
- * @stable ICU 3.4
- */
-#ifdef U_HAVE_DEBUG_LOCATION_NEW
-    /* Use the predefined value. */
-#elif defined(_MSC_VER)
-#   define U_HAVE_DEBUG_LOCATION_NEW 1
-#else
-#   define U_HAVE_DEBUG_LOCATION_NEW 0
-#endif
-
-/* Compatibility with non clang compilers */
-#ifndef __has_attribute
-#    define __has_attribute(x) 0
-#endif
-
-/**
- * \def U_MALLOC_ATTR
- * Attribute to mark functions as malloc-like
- * @internal
- */
-#if defined(__GNUC__) && __GNUC__>=3
-#    define U_MALLOC_ATTR __attribute__ ((__malloc__))
-#else
-#    define U_MALLOC_ATTR
-#endif
-
-/**
- * \def U_ALLOC_SIZE_ATTR
- * Attribute to specify the size of the allocated buffer for malloc-like functions
- * @internal
- */
-#if (defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) || __has_attribute(alloc_size)
-#   define U_ALLOC_SIZE_ATTR(X) __attribute__ ((alloc_size(X)))
-#   define U_ALLOC_SIZE_ATTR2(X,Y) __attribute__ ((alloc_size(X,Y)))
-#else
-#   define U_ALLOC_SIZE_ATTR(X)
-#   define U_ALLOC_SIZE_ATTR2(X,Y)
-#endif
-
-/** @} */
-
-/*===========================================================================*/
-/** @{ Character data types                                                  */
-/*===========================================================================*/
-
-/**
- * U_CHARSET_FAMILY is equal to this value when the platform is an ASCII based platform.
- * @stable ICU 2.0
- */
-#define U_ASCII_FAMILY 0
-
-/**
- * U_CHARSET_FAMILY is equal to this value when the platform is an EBCDIC based platform.
- * @stable ICU 2.0
- */
-#define U_EBCDIC_FAMILY 1
-
-/**
- * \def U_CHARSET_FAMILY
- *
- * <p>These definitions allow to specify the encoding of text
- * in the char data type as defined by the platform and the compiler.
- * It is enough to determine the code point values of "invariant characters",
- * which are the ones shared by all encodings that are in use
- * on a given platform.</p>
- *
- * <p>Those "invariant characters" should be all the uppercase and lowercase
- * latin letters, the digits, the space, and "basic punctuation".
- * Also, '\\n', '\\r', '\\t' should be available.</p>
- *
- * <p>The list of "invariant characters" is:<br>
- * \code
- *    A-Z  a-z  0-9  SPACE  "  %  &amp;  '  (  )  *  +  ,  -  .  /  :  ;  <  =  >  ?  _
- * \endcode
- * <br>
- * (52 letters + 10 numbers + 20 punc/sym/space = 82 total)</p>
- *
- * <p>This matches the IBM Syntactic Character Set (CS 640).</p>
- *
- * <p>In other words, all the graphic characters in 7-bit ASCII should
- * be safely accessible except the following:</p>
- *
- * \code
- *    '\' <backslash>
- *    '[' <left bracket>
- *    ']' <right bracket>
- *    '{' <left brace>
- *    '}' <right brace>
- *    '^' <circumflex>
- *    '~' <tilde>
- *    '!' <exclamation mark>
- *    '#' <number sign>
- *    '|' <vertical line>
- *    '$' <dollar sign>
- *    '@' <commercial at>
- *    '`' <grave accent>
- * \endcode
- * @stable ICU 2.0
- */
-#ifdef U_CHARSET_FAMILY
-    /* Use the predefined value. */
-#elif U_PLATFORM == U_PF_OS390 && (!defined(__CHARSET_LIB) || !__CHARSET_LIB)
-#   define U_CHARSET_FAMILY U_EBCDIC_FAMILY
-#elif U_PLATFORM == U_PF_OS400 && !defined(__UTF32__)
-#   define U_CHARSET_FAMILY U_EBCDIC_FAMILY
-#else
-#   define U_CHARSET_FAMILY U_ASCII_FAMILY
-#endif
-
-/**
- * \def U_CHARSET_IS_UTF8
- *
- * Hardcode the default charset to UTF-8.
- *
- * If this is set to 1, then
- * - ICU will assume that all non-invariant char*, StringPiece, std::string etc.
- *   contain UTF-8 text, regardless of what the system API uses
- * - some ICU code will use fast functions like u_strFromUTF8()
- *   rather than the more general and more heavy-weight conversion API (ucnv.h)
- * - ucnv_getDefaultName() always returns "UTF-8"
- * - ucnv_setDefaultName() is disabled and will not change the default charset
- * - static builds of ICU are smaller
- * - more functionality is available with the UCONFIG_NO_CONVERSION build-time
- *   configuration option (see unicode/uconfig.h)
- * - the UCONFIG_NO_CONVERSION build option in uconfig.h is more usable
- *
- * @stable ICU 4.2
- * @see UCONFIG_NO_CONVERSION
- */
-#ifdef U_CHARSET_IS_UTF8
-    /* Use the predefined value. */
-#elif U_PLATFORM == U_PF_ANDROID || U_PLATFORM_IS_DARWIN_BASED
-#   define U_CHARSET_IS_UTF8 1
-#else
-#   define U_CHARSET_IS_UTF8 0
-#endif
-
-/** @} */
-
-/*===========================================================================*/
-/** @{ Information about wchar support                                       */
-/*===========================================================================*/
-
-/**
- * \def U_HAVE_WCHAR_H
- * Indicates whether <wchar.h> is available (1) or not (0). Set to 1 by default.
- *
- * @stable ICU 2.0
- */
-#ifdef U_HAVE_WCHAR_H
-    /* Use the predefined value. */
-#elif U_PLATFORM == U_PF_ANDROID && __ANDROID_API__ < 9
-    /*
-     * Android before Gingerbread (Android 2.3, API level 9) did not support wchar_t.
-     * The type and header existed, but the library functions did not work as expected.
-     * The size of wchar_t was 1 but L"xyz" string literals had 32-bit units anyway.
-     */
-#   define U_HAVE_WCHAR_H 0
-#else
-#   define U_HAVE_WCHAR_H 1
-#endif
-
-/**
- * \def U_SIZEOF_WCHAR_T
- * U_SIZEOF_WCHAR_T==sizeof(wchar_t)
- *
- * @stable ICU 2.0
- */
-#ifdef U_SIZEOF_WCHAR_T
-    /* Use the predefined value. */
-#elif (U_PLATFORM == U_PF_ANDROID && __ANDROID_API__ < 9)
-    /*
-     * Classic Mac OS and Mac OS X before 10.3 (Panther) did not support wchar_t or wstring.
-     * Newer Mac OS X has size 4.
-     */
-#   define U_SIZEOF_WCHAR_T 1
-#elif U_PLATFORM_HAS_WIN32_API || U_PLATFORM == U_PF_CYGWIN
-#   define U_SIZEOF_WCHAR_T 2
-#elif U_PLATFORM == U_PF_AIX
-    /*
-     * AIX 6.1 information, section "Wide character data representation":
-     * "... the wchar_t datatype is 32-bit in the 64-bit environment and
-     * 16-bit in the 32-bit environment."
-     * and
-     * "All locales use Unicode for their wide character code values (process code),
-     * except the IBM-eucTW codeset."
-     */
-#   ifdef __64BIT__
-#       define U_SIZEOF_WCHAR_T 4
-#   else
-#       define U_SIZEOF_WCHAR_T 2
-#   endif
-#elif U_PLATFORM == U_PF_OS390
-    /*
-     * z/OS V1R11 information center, section "LP64 | ILP32":
-     * "In 31-bit mode, the size of long and pointers is 4 bytes and the size of wchar_t is 2 bytes.
-     * Under LP64, the size of long and pointer is 8 bytes and the size of wchar_t is 4 bytes."
-     */
-#   ifdef _LP64
-#       define U_SIZEOF_WCHAR_T 4
-#   else
-#       define U_SIZEOF_WCHAR_T 2
-#   endif
-#elif U_PLATFORM == U_PF_OS400
-#   if defined(__UTF32__)
-        /*
-         * LOCALETYPE(*LOCALEUTF) is specified.
-         * Wide-character strings are in UTF-32,
-         * narrow-character strings are in UTF-8.
-         */
-#       define U_SIZEOF_WCHAR_T 4
-#   elif defined(__UCS2__)
-        /*
-         * LOCALETYPE(*LOCALEUCS2) is specified.
-         * Wide-character strings are in UCS-2,
-         * narrow-character strings are in EBCDIC.
-         */
-#       define U_SIZEOF_WCHAR_T 2
-#else
-        /*
-         * LOCALETYPE(*CLD) or LOCALETYPE(*LOCALE) is specified.
-         * Wide-character strings are in 16-bit EBCDIC,
-         * narrow-character strings are in EBCDIC.
-         */
-#       define U_SIZEOF_WCHAR_T 2
-#   endif
-#else
-#   define U_SIZEOF_WCHAR_T 4
-#endif
-
-#ifndef U_HAVE_WCSCPY
-#define U_HAVE_WCSCPY U_HAVE_WCHAR_H
-#endif
-
-/** @} */
-
-/**
- * \def U_HAVE_CHAR16_T
- * Defines whether the char16_t type is available for UTF-16
- * and u"abc" UTF-16 string literals are supported.
- * This is a new standard type and standard string literal syntax in C++0x
- * but has been available in some compilers before.
- * @internal
- */
-#ifdef U_HAVE_CHAR16_T
-    /* Use the predefined value. */
-#else
-    /*
-     * Notes:
-     * Visual Studio 10 (_MSC_VER>=1600) defines char16_t but
-     * does not support u"abc" string literals.
-     * gcc 4.4 defines the __CHAR16_TYPE__ macro to a usable type but
-     * does not support u"abc" string literals.
-     * C++11 and C11 require support for UTF-16 literals
-     */
-#   if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L)
-#       define U_HAVE_CHAR16_T 1
-#   else
-#       define U_HAVE_CHAR16_T 0
-#   endif
-#endif
-
-/**
- * @{
- * \def U_DECLARE_UTF16
- * Do not use this macro because it is not defined on all platforms.
- * Use the UNICODE_STRING or U_STRING_DECL macros instead.
- * @internal
- */
-#ifdef U_DECLARE_UTF16
-    /* Use the predefined value. */
-#elif U_HAVE_CHAR16_T \
-    || (defined(__xlC__) && defined(__IBM_UTF_LITERAL) && U_SIZEOF_WCHAR_T != 2) \
-    || (defined(__HP_aCC) && __HP_aCC >= 035000) \
-    || (defined(__HP_cc) && __HP_cc >= 111106)
-#   define U_DECLARE_UTF16(string) u ## string
-#elif U_SIZEOF_WCHAR_T == 2 \
-    && (U_CHARSET_FAMILY == 0 || (U_PF_OS390 <= U_PLATFORM && U_PLATFORM <= U_PF_OS400 && defined(__UCS2__)))
-#   define U_DECLARE_UTF16(string) L ## string
-#else
-    /* Leave U_DECLARE_UTF16 undefined. See unistr.h. */
-#endif
-
-/** @} */
-
-/*===========================================================================*/
-/** @{ Symbol import-export control                                          */
-/*===========================================================================*/
-
-#ifdef U_EXPORT
-    /* Use the predefined value. */
-#elif defined(U_STATIC_IMPLEMENTATION)
-#   define U_EXPORT
-#elif defined(__GNUC__)
-#   define U_EXPORT __attribute__((visibility("default")))
-#elif (defined(__SUNPRO_CC) && __SUNPRO_CC >= 0x550) \
-   || (defined(__SUNPRO_C) && __SUNPRO_C >= 0x550) 
-#   define U_EXPORT __global
-/*#elif defined(__HP_aCC) || defined(__HP_cc)
-#   define U_EXPORT __declspec(dllexport)*/
-#elif defined(_MSC_VER)
-#   define U_EXPORT __declspec(dllexport)
-#else
-#   define U_EXPORT
-#endif
-
-/* U_CALLCONV is releated to U_EXPORT2 */
-#ifdef U_EXPORT2
-    /* Use the predefined value. */
-#elif defined(_MSC_VER)
-#   define U_EXPORT2 __cdecl
-#else
-#   define U_EXPORT2
-#endif
-
-#ifdef U_IMPORT
-    /* Use the predefined value. */
-#elif defined(_MSC_VER)
-    /* Windows needs to export/import data. */
-#   define U_IMPORT __declspec(dllimport)
-#else
-#   define U_IMPORT 
-#endif
-
-/**
- * \def U_CALLCONV
- * Similar to U_CDECL_BEGIN/U_CDECL_END, this qualifier is necessary
- * in callback function typedefs to make sure that the calling convention
- * is compatible.
- *
- * This is only used for non-ICU-API functions.
- * When a function is a public ICU API,
- * you must use the U_CAPI and U_EXPORT2 qualifiers.
- * @stable ICU 2.0
- */
-#if U_PLATFORM == U_PF_OS390 && defined(__cplusplus)
-#    define U_CALLCONV __cdecl
-#else
-#    define U_CALLCONV U_EXPORT2
-#endif
-
-/* @} */
-
-#endif
diff --git a/Source/JavaScriptCore/icu/unicode/ptypes.h b/Source/JavaScriptCore/icu/unicode/ptypes.h
deleted file mode 100644 (file)
index b7f7116..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
-******************************************************************************
-*
-*   Copyright (C) 1997-2012, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-*  FILE NAME : ptypes.h
-*
-*   Date        Name        Description
-*   05/13/98    nos         Creation (content moved here from ptypes.h).
-*   03/02/99    stephen     Added AS400 support.
-*   03/30/99    stephen     Added Linux support.
-*   04/13/99    stephen     Reworked for autoconf.
-*   09/18/08    srl         Moved basic types back to ptypes.h from platform.h
-******************************************************************************
-*/
-
-/**
- * \file
- * \brief C API: Definitions of integer types of various widths
- */
-
-#ifndef _PTYPES_H
-#define _PTYPES_H
-
-/**
- * \def __STDC_LIMIT_MACROS
- * According to the Linux stdint.h, the ISO C99 standard specifies that in C++ implementations
- * macros like INT32_MIN and UINTPTR_MAX should only be defined if explicitly requested.
- * We need to define __STDC_LIMIT_MACROS before including stdint.h in C++ code
- * that uses such limit macros.
- * @internal
- */
-#ifndef __STDC_LIMIT_MACROS
-#define __STDC_LIMIT_MACROS
-#endif
-
-/* NULL, size_t, wchar_t */
-#include <stddef.h>
-
-/*
- * If all compilers provided all of the C99 headers and types,
- * we would just unconditionally #include <stdint.h> here
- * and not need any of the stuff after including platform.h.
- */
-
-/* Find out if we have stdint.h etc. */
-#include "unicode/platform.h"
-
-/*===========================================================================*/
-/* Generic data types                                                        */
-/*===========================================================================*/
-
-/* If your platform does not have the <stdint.h> header, you may
-   need to edit the typedefs in the #else section below.
-   Use #if...#else...#endif with predefined compiler macros if possible. */
-#if U_HAVE_STDINT_H
-
-/*
- * We mostly need <stdint.h> (which defines the standard integer types) but not <inttypes.h>.
- * <inttypes.h> includes <stdint.h> and adds the printf/scanf helpers PRId32, SCNx16 etc.
- * which we almost never use, plus stuff like imaxabs() which we never use.
- */
-#include <stdint.h>
-
-#if U_PLATFORM == U_PF_OS390
-/* The features header is needed to get (u)int64_t sometimes. */
-#include <features.h>
-/* z/OS has <stdint.h>, but some versions are missing uint8_t (APAR PK62248). */
-#if !defined(__uint8_t)
-#define __uint8_t 1
-typedef unsigned char uint8_t;
-#endif
-#endif /* U_PLATFORM == U_PF_OS390 */
-
-#elif U_HAVE_INTTYPES_H
-
-#   include <inttypes.h>
-
-#else /* neither U_HAVE_STDINT_H nor U_HAVE_INTTYPES_H */
-
-#if ! U_HAVE_INT8_T
-typedef signed char int8_t;
-#endif
-
-#if ! U_HAVE_UINT8_T
-typedef unsigned char uint8_t;
-#endif
-
-#if ! U_HAVE_INT16_T
-typedef signed short int16_t;
-#endif
-
-#if ! U_HAVE_UINT16_T
-typedef unsigned short uint16_t;
-#endif
-
-#if ! U_HAVE_INT32_T
-typedef signed int int32_t;
-#endif
-
-#if ! U_HAVE_UINT32_T
-typedef unsigned int uint32_t;
-#endif
-
-#if ! U_HAVE_INT64_T
-#ifdef _MSC_VER
-    typedef signed __int64 int64_t;
-#else
-    typedef signed long long int64_t;
-#endif
-#endif
-
-#if ! U_HAVE_UINT64_T
-#ifdef _MSC_VER
-    typedef unsigned __int64 uint64_t;
-#else
-    typedef unsigned long long uint64_t;
-#endif
-#endif
-
-#endif /* U_HAVE_STDINT_H / U_HAVE_INTTYPES_H */
-
-#endif /* _PTYPES_H */
diff --git a/Source/JavaScriptCore/icu/unicode/putil.h b/Source/JavaScriptCore/icu/unicode/putil.h
deleted file mode 100644 (file)
index df1b17b..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-******************************************************************************
-*
-*   Copyright (C) 1997-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-*
-******************************************************************************
-*
-*  FILE NAME : putil.h
-*
-*   Date        Name        Description
-*   05/14/98    nos         Creation (content moved here from utypes.h).
-*   06/17/99    erm         Added IEEE_754
-*   07/22/98    stephen     Added IEEEremainder, max, min, trunc
-*   08/13/98    stephen     Added isNegativeInfinity, isPositiveInfinity
-*   08/24/98    stephen     Added longBitsFromDouble
-*   03/02/99    stephen     Removed openFile().  Added AS400 support.
-*   04/15/99    stephen     Converted to C
-*   11/15/99    helena      Integrated S/390 changes for IEEE support.
-*   01/11/00    helena      Added u_getVersion.
-******************************************************************************
-*/
-
-#ifndef PUTIL_H
-#define PUTIL_H
-
-#include "unicode/utypes.h"
- /**
-  * \file
-  * \brief C API: Platform Utilities
-  */
-
-/*==========================================================================*/
-/* Platform utilities                                                       */
-/*==========================================================================*/
-
-/**
- * Platform utilities isolates the platform dependencies of the
- * libarary.  For each platform which this code is ported to, these
- * functions may have to be re-implemented.
- */
-
-/**
- * Return the ICU data directory. 
- * The data directory is where common format ICU data files (.dat files)
- *   are loaded from.  Note that normal use of the built-in ICU
- *   facilities does not require loading of an external data file;
- *   unless you are adding custom data to ICU, the data directory
- *   does not need to be set.
- *
- * The data directory is determined as follows:
- *    If u_setDataDirectory() has been called, that is it, otherwise
- *    if the ICU_DATA environment variable is set, use that, otherwise
- *    If a data directory was specifed at ICU build time
- *      <code>
- * \code
- *        #define ICU_DATA_DIR "path" 
- * \endcode
- * </code> use that,
- *    otherwise no data directory is available.
- *
- * @return the data directory, or an empty string ("") if no data directory has
- *         been specified.
- *   
- * @stable ICU 2.0
- */
-U_STABLE const char* U_EXPORT2 u_getDataDirectory(void);
-
-
-/** 
- * Set the ICU data directory. 
- * The data directory is where common format ICU data files (.dat files)
- *   are loaded from.  Note that normal use of the built-in ICU
- *   facilities does not require loading of an external data file;
- *   unless you are adding custom data to ICU, the data directory
- *   does not need to be set.
- *
- * This function should be called at most once in a process, before the
- * first ICU operation (e.g., u_init()) that will require the loading of an
- * ICU data file.
- * This function is not thread-safe. Use it before calling ICU APIs from
- * multiple threads.
- *
- * @param directory The directory to be set.
- *
- * @see u_init
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2 u_setDataDirectory(const char *directory);
-
-#ifndef U_HIDE_INTERNAL_API
-/**
-  * Return the time zone files override directory, or an empty string if
-  * no directory was specified. Certain time zone resources will be preferrentially
-  * loaded from individual files in this directory.
-  *
-  * @return the time zone data override directory.
-  * @internal
-  */ 
-U_INTERNAL const char * U_EXPORT2 u_getTimeZoneFilesDirectory(UErrorCode *status);
-
-/**
-  * Set the time zone files override directory.
-  * This function is not thread safe; it must not be called concurrently with
-  *   u_getTimeZoneFilesDirectory() or any other use of ICU time zone functions.
-  * This function should only be called before using any ICU service that
-  *   will access the time zone data.
-  * @internal
-  */
-U_INTERNAL void U_EXPORT2 u_setTimeZoneFilesDirectory(const char *path, UErrorCode *status);
-#endif  /* U_HIDE_INTERNAL_API */
-
-
-/**
- * @{
- * Filesystem file and path separator characters.
- * Example: '/' and ':' on Unix, '\\' and ';' on Windows.
- * @stable ICU 2.0
- */
-#if U_PLATFORM_USES_ONLY_WIN32_API
-#   define U_FILE_SEP_CHAR '\\'
-#   define U_FILE_ALT_SEP_CHAR '/'
-#   define U_PATH_SEP_CHAR ';'
-#   define U_FILE_SEP_STRING "\\"
-#   define U_FILE_ALT_SEP_STRING "/"
-#   define U_PATH_SEP_STRING ";"
-#else
-#   define U_FILE_SEP_CHAR '/'
-#   define U_FILE_ALT_SEP_CHAR '/'
-#   define U_PATH_SEP_CHAR ':'
-#   define U_FILE_SEP_STRING "/"
-#   define U_FILE_ALT_SEP_STRING "/"
-#   define U_PATH_SEP_STRING ":"
-#endif
-
-/** @} */
-
-/**
- * Convert char characters to UChar characters.
- * This utility function is useful only for "invariant characters"
- * that are encoded in the platform default encoding.
- * They are a small, constant subset of the encoding and include
- * just the latin letters, digits, and some punctuation.
- * For details, see U_CHARSET_FAMILY.
- *
- * @param cs Input string, points to <code>length</code>
- *           character bytes from a subset of the platform encoding.
- * @param us Output string, points to memory for <code>length</code>
- *           Unicode characters.
- * @param length The number of characters to convert; this may
- *               include the terminating <code>NUL</code>.
- *
- * @see U_CHARSET_FAMILY
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-u_charsToUChars(const char *cs, UChar *us, int32_t length);
-
-/**
- * Convert UChar characters to char characters.
- * This utility function is useful only for "invariant characters"
- * that can be encoded in the platform default encoding.
- * They are a small, constant subset of the encoding and include
- * just the latin letters, digits, and some punctuation.
- * For details, see U_CHARSET_FAMILY.
- *
- * @param us Input string, points to <code>length</code>
- *           Unicode characters that can be encoded with the
- *           codepage-invariant subset of the platform encoding.
- * @param cs Output string, points to memory for <code>length</code>
- *           character bytes.
- * @param length The number of characters to convert; this may
- *               include the terminating <code>NUL</code>.
- *
- * @see U_CHARSET_FAMILY
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-u_UCharsToChars(const UChar *us, char *cs, int32_t length);
-
-#endif
diff --git a/Source/JavaScriptCore/icu/unicode/uchar.h b/Source/JavaScriptCore/icu/unicode/uchar.h
deleted file mode 100644 (file)
index 1d3ae0d..0000000
+++ /dev/null
@@ -1,3426 +0,0 @@
-/*
-**********************************************************************
-*   Copyright (C) 1997-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
-*
-* File UCHAR.H
-*
-* Modification History:
-*
-*   Date        Name        Description
-*   04/02/97    aliu        Creation.
-*   03/29/99    helena      Updated for C APIs.
-*   4/15/99     Madhu       Updated for C Implementation and Javadoc
-*   5/20/99     Madhu       Added the function u_getVersion()
-*   8/19/1999   srl         Upgraded scripts to Unicode 3.0
-*   8/27/1999   schererm    UCharDirection constants: U_...
-*   11/11/1999  weiv        added u_isalnum(), cleaned comments
-*   01/11/2000  helena      Renamed u_getVersion to u_getUnicodeVersion().
-******************************************************************************
-*/
-
-#ifndef UCHAR_H
-#define UCHAR_H
-
-#include "unicode/utypes.h"
-
-U_CDECL_BEGIN
-
-/*==========================================================================*/
-/* Unicode version number                                                   */
-/*==========================================================================*/
-/**
- * Unicode version number, default for the current ICU version.
- * The actual Unicode Character Database (UCD) data is stored in uprops.dat
- * and may be generated from UCD files from a different Unicode version.
- * Call u_getUnicodeVersion to get the actual Unicode version of the data.
- *
- * @see u_getUnicodeVersion
- * @stable ICU 2.0
- */
-#define U_UNICODE_VERSION "7.0"
-
-/**
- * \file
- * \brief C API: Unicode Properties
- *
- * This C API provides low-level access to the Unicode Character Database.
- * In addition to raw property values, some convenience functions calculate
- * derived properties, for example for Java-style programming.
- *
- * Unicode assigns each code point (not just assigned character) values for
- * many properties.
- * Most of them are simple boolean flags, or constants from a small enumerated list.
- * For some properties, values are strings or other relatively more complex types.
- *
- * For more information see
- * "About the Unicode Character Database" (http://www.unicode.org/ucd/)
- * and the ICU User Guide chapter on Properties (http://icu-project.org/userguide/properties.html).
- *
- * Many functions are designed to match java.lang.Character functions.
- * See the individual function documentation,
- * and see the JDK 1.4 java.lang.Character documentation
- * at http://java.sun.com/j2se/1.4/docs/api/java/lang/Character.html
- *
- * There are also functions that provide easy migration from C/POSIX functions
- * like isblank(). Their use is generally discouraged because the C/POSIX
- * standards do not define their semantics beyond the ASCII range, which means
- * that different implementations exhibit very different behavior.
- * Instead, Unicode properties should be used directly.
- *
- * There are also only a few, broad C/POSIX character classes, and they tend
- * to be used for conflicting purposes. For example, the "isalpha()" class
- * is sometimes used to determine word boundaries, while a more sophisticated
- * approach would at least distinguish initial letters from continuation
- * characters (the latter including combining marks).
- * (In ICU, BreakIterator is the most sophisticated API for word boundaries.)
- * Another example: There is no "istitle()" class for titlecase characters.
- *
- * ICU 3.4 and later provides API access for all twelve C/POSIX character classes.
- * ICU implements them according to the Standard Recommendations in
- * Annex C: Compatibility Properties of UTS #18 Unicode Regular Expressions
- * (http://www.unicode.org/reports/tr18/#Compatibility_Properties).
- *
- * API access for C/POSIX character classes is as follows:
- * - alpha:     u_isUAlphabetic(c) or u_hasBinaryProperty(c, UCHAR_ALPHABETIC)
- * - lower:     u_isULowercase(c) or u_hasBinaryProperty(c, UCHAR_LOWERCASE)
- * - upper:     u_isUUppercase(c) or u_hasBinaryProperty(c, UCHAR_UPPERCASE)
- * - punct:     u_ispunct(c)
- * - digit:     u_isdigit(c) or u_charType(c)==U_DECIMAL_DIGIT_NUMBER
- * - xdigit:    u_isxdigit(c) or u_hasBinaryProperty(c, UCHAR_POSIX_XDIGIT)
- * - alnum:     u_hasBinaryProperty(c, UCHAR_POSIX_ALNUM)
- * - space:     u_isUWhiteSpace(c) or u_hasBinaryProperty(c, UCHAR_WHITE_SPACE)
- * - blank:     u_isblank(c) or u_hasBinaryProperty(c, UCHAR_POSIX_BLANK)
- * - cntrl:     u_charType(c)==U_CONTROL_CHAR
- * - graph:     u_hasBinaryProperty(c, UCHAR_POSIX_GRAPH)
- * - print:     u_hasBinaryProperty(c, UCHAR_POSIX_PRINT)
- *
- * Note: Some of the u_isxyz() functions in uchar.h predate, and do not match,
- * the Standard Recommendations in UTS #18. Instead, they match Java
- * functions according to their API documentation.
- *
- * \htmlonly
- * The C/POSIX character classes are also available in UnicodeSet patterns,
- * using patterns like [:graph:] or \p{graph}.
- * \endhtmlonly
- *
- * Note: There are several ICU whitespace functions.
- * Comparison:
- * - u_isUWhiteSpace=UCHAR_WHITE_SPACE: Unicode White_Space property;
- *       most of general categories "Z" (separators) + most whitespace ISO controls
- *       (including no-break spaces, but excluding IS1..IS4 and ZWSP)
- * - u_isWhitespace: Java isWhitespace; Z + whitespace ISO controls but excluding no-break spaces
- * - u_isJavaSpaceChar: Java isSpaceChar; just Z (including no-break spaces)
- * - u_isspace: Z + whitespace ISO controls (including no-break spaces)
- * - u_isblank: "horizontal spaces" = TAB + Zs - ZWSP
- */
-
-/**
- * Constants.
- */
-
-/** The lowest Unicode code point value. Code points are non-negative. @stable ICU 2.0 */
-#define UCHAR_MIN_VALUE 0
-
-/**
- * The highest Unicode code point value (scalar value) according to
- * The Unicode Standard. This is a 21-bit value (20.1 bits, rounded up).
- * For a single character, UChar32 is a simple type that can hold any code point value.
- *
- * @see UChar32
- * @stable ICU 2.0
- */
-#define UCHAR_MAX_VALUE 0x10ffff
-
-/**
- * Get a single-bit bit set (a flag) from a bit number 0..31.
- * @stable ICU 2.1
- */
-#define U_MASK(x) ((uint32_t)1<<(x))
-
-/**
- * Selection constants for Unicode properties.
- * These constants are used in functions like u_hasBinaryProperty to select
- * one of the Unicode properties.
- *
- * The properties APIs are intended to reflect Unicode properties as defined
- * in the Unicode Character Database (UCD) and Unicode Technical Reports (UTR).
- * For details about the properties see http://www.unicode.org/ucd/ .
- * For names of Unicode properties see the UCD file PropertyAliases.txt.
- *
- * Important: If ICU is built with UCD files from Unicode versions below, e.g., 3.2,
- * then properties marked with "new in Unicode 3.2" are not or not fully available.
- * Check u_getUnicodeVersion to be sure.
- *
- * @see u_hasBinaryProperty
- * @see u_getIntPropertyValue
- * @see u_getUnicodeVersion
- * @stable ICU 2.1
- */
-typedef enum UProperty {
-    /*
-     * Note: UProperty constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     UCHAR_<Unicode property name>=<integer>,
-     */
-
-    /*  Note: Place UCHAR_ALPHABETIC before UCHAR_BINARY_START so that
-    debuggers display UCHAR_ALPHABETIC as the symbolic name for 0,
-    rather than UCHAR_BINARY_START.  Likewise for other *_START
-    identifiers. */
-
-    /** Binary property Alphabetic. Same as u_isUAlphabetic, different from u_isalpha.
-        Lu+Ll+Lt+Lm+Lo+Nl+Other_Alphabetic @stable ICU 2.1 */
-    UCHAR_ALPHABETIC=0,
-    /** First constant for binary Unicode properties. @stable ICU 2.1 */
-    UCHAR_BINARY_START=UCHAR_ALPHABETIC,
-    /** Binary property ASCII_Hex_Digit. 0-9 A-F a-f @stable ICU 2.1 */
-    UCHAR_ASCII_HEX_DIGIT=1,
-    /** Binary property Bidi_Control.
-        Format controls which have specific functions
-        in the Bidi Algorithm. @stable ICU 2.1 */
-    UCHAR_BIDI_CONTROL=2,
-    /** Binary property Bidi_Mirrored.
-        Characters that may change display in RTL text.
-        Same as u_isMirrored.
-        See Bidi Algorithm, UTR 9. @stable ICU 2.1 */
-    UCHAR_BIDI_MIRRORED=3,
-    /** Binary property Dash. Variations of dashes. @stable ICU 2.1 */
-    UCHAR_DASH=4,
-    /** Binary property Default_Ignorable_Code_Point (new in Unicode 3.2).
-        Ignorable in most processing.
-        <2060..206F, FFF0..FFFB, E0000..E0FFF>+Other_Default_Ignorable_Code_Point+(Cf+Cc+Cs-White_Space) @stable ICU 2.1 */
-    UCHAR_DEFAULT_IGNORABLE_CODE_POINT=5,
-    /** Binary property Deprecated (new in Unicode 3.2).
-        The usage of deprecated characters is strongly discouraged. @stable ICU 2.1 */
-    UCHAR_DEPRECATED=6,
-    /** Binary property Diacritic. Characters that linguistically modify
-        the meaning of another character to which they apply. @stable ICU 2.1 */
-    UCHAR_DIACRITIC=7,
-    /** Binary property Extender.
-        Extend the value or shape of a preceding alphabetic character,
-        e.g., length and iteration marks. @stable ICU 2.1 */
-    UCHAR_EXTENDER=8,
-    /** Binary property Full_Composition_Exclusion.
-        CompositionExclusions.txt+Singleton Decompositions+
-        Non-Starter Decompositions. @stable ICU 2.1 */
-    UCHAR_FULL_COMPOSITION_EXCLUSION=9,
-    /** Binary property Grapheme_Base (new in Unicode 3.2).
-        For programmatic determination of grapheme cluster boundaries.
-        [0..10FFFF]-Cc-Cf-Cs-Co-Cn-Zl-Zp-Grapheme_Link-Grapheme_Extend-CGJ @stable ICU 2.1 */
-    UCHAR_GRAPHEME_BASE=10,
-    /** Binary property Grapheme_Extend (new in Unicode 3.2).
-        For programmatic determination of grapheme cluster boundaries.
-        Me+Mn+Mc+Other_Grapheme_Extend-Grapheme_Link-CGJ @stable ICU 2.1 */
-    UCHAR_GRAPHEME_EXTEND=11,
-    /** Binary property Grapheme_Link (new in Unicode 3.2).
-        For programmatic determination of grapheme cluster boundaries. @stable ICU 2.1 */
-    UCHAR_GRAPHEME_LINK=12,
-    /** Binary property Hex_Digit.
-        Characters commonly used for hexadecimal numbers. @stable ICU 2.1 */
-    UCHAR_HEX_DIGIT=13,
-    /** Binary property Hyphen. Dashes used to mark connections
-        between pieces of words, plus the Katakana middle dot. @stable ICU 2.1 */
-    UCHAR_HYPHEN=14,
-    /** Binary property ID_Continue.
-        Characters that can continue an identifier.
-        DerivedCoreProperties.txt also says "NOTE: Cf characters should be filtered out."
-        ID_Start+Mn+Mc+Nd+Pc @stable ICU 2.1 */
-    UCHAR_ID_CONTINUE=15,
-    /** Binary property ID_Start.
-        Characters that can start an identifier.
-        Lu+Ll+Lt+Lm+Lo+Nl @stable ICU 2.1 */
-    UCHAR_ID_START=16,
-    /** Binary property Ideographic.
-        CJKV ideographs. @stable ICU 2.1 */
-    UCHAR_IDEOGRAPHIC=17,
-    /** Binary property IDS_Binary_Operator (new in Unicode 3.2).
-        For programmatic determination of
-        Ideographic Description Sequences. @stable ICU 2.1 */
-    UCHAR_IDS_BINARY_OPERATOR=18,
-    /** Binary property IDS_Trinary_Operator (new in Unicode 3.2).
-        For programmatic determination of
-        Ideographic Description Sequences. @stable ICU 2.1 */
-    UCHAR_IDS_TRINARY_OPERATOR=19,
-    /** Binary property Join_Control.
-        Format controls for cursive joining and ligation. @stable ICU 2.1 */
-    UCHAR_JOIN_CONTROL=20,
-    /** Binary property Logical_Order_Exception (new in Unicode 3.2).
-        Characters that do not use logical order and
-        require special handling in most processing. @stable ICU 2.1 */
-    UCHAR_LOGICAL_ORDER_EXCEPTION=21,
-    /** Binary property Lowercase. Same as u_isULowercase, different from u_islower.
-        Ll+Other_Lowercase @stable ICU 2.1 */
-    UCHAR_LOWERCASE=22,
-    /** Binary property Math. Sm+Other_Math @stable ICU 2.1 */
-    UCHAR_MATH=23,
-    /** Binary property Noncharacter_Code_Point.
-        Code points that are explicitly defined as illegal
-        for the encoding of characters. @stable ICU 2.1 */
-    UCHAR_NONCHARACTER_CODE_POINT=24,
-    /** Binary property Quotation_Mark. @stable ICU 2.1 */
-    UCHAR_QUOTATION_MARK=25,
-    /** Binary property Radical (new in Unicode 3.2).
-        For programmatic determination of
-        Ideographic Description Sequences. @stable ICU 2.1 */
-    UCHAR_RADICAL=26,
-    /** Binary property Soft_Dotted (new in Unicode 3.2).
-        Characters with a "soft dot", like i or j.
-        An accent placed on these characters causes
-        the dot to disappear. @stable ICU 2.1 */
-    UCHAR_SOFT_DOTTED=27,
-    /** Binary property Terminal_Punctuation.
-        Punctuation characters that generally mark
-        the end of textual units. @stable ICU 2.1 */
-    UCHAR_TERMINAL_PUNCTUATION=28,
-    /** Binary property Unified_Ideograph (new in Unicode 3.2).
-        For programmatic determination of
-        Ideographic Description Sequences. @stable ICU 2.1 */
-    UCHAR_UNIFIED_IDEOGRAPH=29,
-    /** Binary property Uppercase. Same as u_isUUppercase, different from u_isupper.
-        Lu+Other_Uppercase @stable ICU 2.1 */
-    UCHAR_UPPERCASE=30,
-    /** Binary property White_Space.
-        Same as u_isUWhiteSpace, different from u_isspace and u_isWhitespace.
-        Space characters+TAB+CR+LF-ZWSP-ZWNBSP @stable ICU 2.1 */
-    UCHAR_WHITE_SPACE=31,
-    /** Binary property XID_Continue.
-        ID_Continue modified to allow closure under
-        normalization forms NFKC and NFKD. @stable ICU 2.1 */
-    UCHAR_XID_CONTINUE=32,
-    /** Binary property XID_Start. ID_Start modified to allow
-        closure under normalization forms NFKC and NFKD. @stable ICU 2.1 */
-    UCHAR_XID_START=33,
-    /** Binary property Case_Sensitive. Either the source of a case
-        mapping or _in_ the target of a case mapping. Not the same as
-        the general category Cased_Letter. @stable ICU 2.6 */
-   UCHAR_CASE_SENSITIVE=34,
-    /** Binary property STerm (new in Unicode 4.0.1).
-        Sentence Terminal. Used in UAX #29: Text Boundaries
-        (http://www.unicode.org/reports/tr29/)
-        @stable ICU 3.0 */
-    UCHAR_S_TERM=35,
-    /** Binary property Variation_Selector (new in Unicode 4.0.1).
-        Indicates all those characters that qualify as Variation Selectors.
-        For details on the behavior of these characters,
-        see StandardizedVariants.html and 15.6 Variation Selectors.
-        @stable ICU 3.0 */
-    UCHAR_VARIATION_SELECTOR=36,
-    /** Binary property NFD_Inert.
-        ICU-specific property for characters that are inert under NFD,
-        i.e., they do not interact with adjacent characters.
-        See the documentation for the Normalizer2 class and the
-        Normalizer2::isInert() method.
-        @stable ICU 3.0 */
-    UCHAR_NFD_INERT=37,
-    /** Binary property NFKD_Inert.
-        ICU-specific property for characters that are inert under NFKD,
-        i.e., they do not interact with adjacent characters.
-        See the documentation for the Normalizer2 class and the
-        Normalizer2::isInert() method.
-        @stable ICU 3.0 */
-    UCHAR_NFKD_INERT=38,
-    /** Binary property NFC_Inert.
-        ICU-specific property for characters that are inert under NFC,
-        i.e., they do not interact with adjacent characters.
-        See the documentation for the Normalizer2 class and the
-        Normalizer2::isInert() method.
-        @stable ICU 3.0 */
-    UCHAR_NFC_INERT=39,
-    /** Binary property NFKC_Inert.
-        ICU-specific property for characters that are inert under NFKC,
-        i.e., they do not interact with adjacent characters.
-        See the documentation for the Normalizer2 class and the
-        Normalizer2::isInert() method.
-        @stable ICU 3.0 */
-    UCHAR_NFKC_INERT=40,
-    /** Binary Property Segment_Starter.
-        ICU-specific property for characters that are starters in terms of
-        Unicode normalization and combining character sequences.
-        They have ccc=0 and do not occur in non-initial position of the
-        canonical decomposition of any character
-        (like a-umlaut in NFD and a Jamo T in an NFD(Hangul LVT)).
-        ICU uses this property for segmenting a string for generating a set of
-        canonically equivalent strings, e.g. for canonical closure while
-        processing collation tailoring rules.
-        @stable ICU 3.0 */
-    UCHAR_SEGMENT_STARTER=41,
-    /** Binary property Pattern_Syntax (new in Unicode 4.1).
-        See UAX #31 Identifier and Pattern Syntax
-        (http://www.unicode.org/reports/tr31/)
-        @stable ICU 3.4 */
-    UCHAR_PATTERN_SYNTAX=42,
-    /** Binary property Pattern_White_Space (new in Unicode 4.1).
-        See UAX #31 Identifier and Pattern Syntax
-        (http://www.unicode.org/reports/tr31/)
-        @stable ICU 3.4 */
-    UCHAR_PATTERN_WHITE_SPACE=43,
-    /** Binary property alnum (a C/POSIX character class).
-        Implemented according to the UTS #18 Annex C Standard Recommendation.
-        See the uchar.h file documentation.
-        @stable ICU 3.4 */
-    UCHAR_POSIX_ALNUM=44,
-    /** Binary property blank (a C/POSIX character class).
-        Implemented according to the UTS #18 Annex C Standard Recommendation.
-        See the uchar.h file documentation.
-        @stable ICU 3.4 */
-    UCHAR_POSIX_BLANK=45,
-    /** Binary property graph (a C/POSIX character class).
-        Implemented according to the UTS #18 Annex C Standard Recommendation.
-        See the uchar.h file documentation.
-        @stable ICU 3.4 */
-    UCHAR_POSIX_GRAPH=46,
-    /** Binary property print (a C/POSIX character class).
-        Implemented according to the UTS #18 Annex C Standard Recommendation.
-        See the uchar.h file documentation.
-        @stable ICU 3.4 */
-    UCHAR_POSIX_PRINT=47,
-    /** Binary property xdigit (a C/POSIX character class).
-        Implemented according to the UTS #18 Annex C Standard Recommendation.
-        See the uchar.h file documentation.
-        @stable ICU 3.4 */
-    UCHAR_POSIX_XDIGIT=48,
-    /** Binary property Cased. For Lowercase, Uppercase and Titlecase characters. @stable ICU 4.4 */
-    UCHAR_CASED=49,
-    /** Binary property Case_Ignorable. Used in context-sensitive case mappings. @stable ICU 4.4 */
-    UCHAR_CASE_IGNORABLE=50,
-    /** Binary property Changes_When_Lowercased. @stable ICU 4.4 */
-    UCHAR_CHANGES_WHEN_LOWERCASED=51,
-    /** Binary property Changes_When_Uppercased. @stable ICU 4.4 */
-    UCHAR_CHANGES_WHEN_UPPERCASED=52,
-    /** Binary property Changes_When_Titlecased. @stable ICU 4.4 */
-    UCHAR_CHANGES_WHEN_TITLECASED=53,
-    /** Binary property Changes_When_Casefolded. @stable ICU 4.4 */
-    UCHAR_CHANGES_WHEN_CASEFOLDED=54,
-    /** Binary property Changes_When_Casemapped. @stable ICU 4.4 */
-    UCHAR_CHANGES_WHEN_CASEMAPPED=55,
-    /** Binary property Changes_When_NFKC_Casefolded. @stable ICU 4.4 */
-    UCHAR_CHANGES_WHEN_NFKC_CASEFOLDED=56,
-    /** One more than the last constant for binary Unicode properties. @stable ICU 2.1 */
-    UCHAR_BINARY_LIMIT=57,
-
-    /** Enumerated property Bidi_Class.
-        Same as u_charDirection, returns UCharDirection values. @stable ICU 2.2 */
-    UCHAR_BIDI_CLASS=0x1000,
-    /** First constant for enumerated/integer Unicode properties. @stable ICU 2.2 */
-    UCHAR_INT_START=UCHAR_BIDI_CLASS,
-    /** Enumerated property Block.
-        Same as ublock_getCode, returns UBlockCode values. @stable ICU 2.2 */
-    UCHAR_BLOCK=0x1001,
-    /** Enumerated property Canonical_Combining_Class.
-        Same as u_getCombiningClass, returns 8-bit numeric values. @stable ICU 2.2 */
-    UCHAR_CANONICAL_COMBINING_CLASS=0x1002,
-    /** Enumerated property Decomposition_Type.
-        Returns UDecompositionType values. @stable ICU 2.2 */
-    UCHAR_DECOMPOSITION_TYPE=0x1003,
-    /** Enumerated property East_Asian_Width.
-        See http://www.unicode.org/reports/tr11/
-        Returns UEastAsianWidth values. @stable ICU 2.2 */
-    UCHAR_EAST_ASIAN_WIDTH=0x1004,
-    /** Enumerated property General_Category.
-        Same as u_charType, returns UCharCategory values. @stable ICU 2.2 */
-    UCHAR_GENERAL_CATEGORY=0x1005,
-    /** Enumerated property Joining_Group.
-        Returns UJoiningGroup values. @stable ICU 2.2 */
-    UCHAR_JOINING_GROUP=0x1006,
-    /** Enumerated property Joining_Type.
-        Returns UJoiningType values. @stable ICU 2.2 */
-    UCHAR_JOINING_TYPE=0x1007,
-    /** Enumerated property Line_Break.
-        Returns ULineBreak values. @stable ICU 2.2 */
-    UCHAR_LINE_BREAK=0x1008,
-    /** Enumerated property Numeric_Type.
-        Returns UNumericType values. @stable ICU 2.2 */
-    UCHAR_NUMERIC_TYPE=0x1009,
-    /** Enumerated property Script.
-        Same as uscript_getScript, returns UScriptCode values. @stable ICU 2.2 */
-    UCHAR_SCRIPT=0x100A,
-    /** Enumerated property Hangul_Syllable_Type, new in Unicode 4.
-        Returns UHangulSyllableType values. @stable ICU 2.6 */
-    UCHAR_HANGUL_SYLLABLE_TYPE=0x100B,
-    /** Enumerated property NFD_Quick_Check.
-        Returns UNormalizationCheckResult values. @stable ICU 3.0 */
-    UCHAR_NFD_QUICK_CHECK=0x100C,
-    /** Enumerated property NFKD_Quick_Check.
-        Returns UNormalizationCheckResult values. @stable ICU 3.0 */
-    UCHAR_NFKD_QUICK_CHECK=0x100D,
-    /** Enumerated property NFC_Quick_Check.
-        Returns UNormalizationCheckResult values. @stable ICU 3.0 */
-    UCHAR_NFC_QUICK_CHECK=0x100E,
-    /** Enumerated property NFKC_Quick_Check.
-        Returns UNormalizationCheckResult values. @stable ICU 3.0 */
-    UCHAR_NFKC_QUICK_CHECK=0x100F,
-    /** Enumerated property Lead_Canonical_Combining_Class.
-        ICU-specific property for the ccc of the first code point
-        of the decomposition, or lccc(c)=ccc(NFD(c)[0]).
-        Useful for checking for canonically ordered text;
-        see UNORM_FCD and http://www.unicode.org/notes/tn5/#FCD .
-        Returns 8-bit numeric values like UCHAR_CANONICAL_COMBINING_CLASS. @stable ICU 3.0 */
-    UCHAR_LEAD_CANONICAL_COMBINING_CLASS=0x1010,
-    /** Enumerated property Trail_Canonical_Combining_Class.
-        ICU-specific property for the ccc of the last code point
-        of the decomposition, or tccc(c)=ccc(NFD(c)[last]).
-        Useful for checking for canonically ordered text;
-        see UNORM_FCD and http://www.unicode.org/notes/tn5/#FCD .
-        Returns 8-bit numeric values like UCHAR_CANONICAL_COMBINING_CLASS. @stable ICU 3.0 */
-    UCHAR_TRAIL_CANONICAL_COMBINING_CLASS=0x1011,
-    /** Enumerated property Grapheme_Cluster_Break (new in Unicode 4.1).
-        Used in UAX #29: Text Boundaries
-        (http://www.unicode.org/reports/tr29/)
-        Returns UGraphemeClusterBreak values. @stable ICU 3.4 */
-    UCHAR_GRAPHEME_CLUSTER_BREAK=0x1012,
-    /** Enumerated property Sentence_Break (new in Unicode 4.1).
-        Used in UAX #29: Text Boundaries
-        (http://www.unicode.org/reports/tr29/)
-        Returns USentenceBreak values. @stable ICU 3.4 */
-    UCHAR_SENTENCE_BREAK=0x1013,
-    /** Enumerated property Word_Break (new in Unicode 4.1).
-        Used in UAX #29: Text Boundaries
-        (http://www.unicode.org/reports/tr29/)
-        Returns UWordBreakValues values. @stable ICU 3.4 */
-    UCHAR_WORD_BREAK=0x1014,
-    /** Enumerated property Bidi_Paired_Bracket_Type (new in Unicode 6.3).
-        Used in UAX #9: Unicode Bidirectional Algorithm
-        (http://www.unicode.org/reports/tr9/)
-        Returns UBidiPairedBracketType values. @stable ICU 52 */
-    UCHAR_BIDI_PAIRED_BRACKET_TYPE=0x1015,
-    /** One more than the last constant for enumerated/integer Unicode properties. @stable ICU 2.2 */
-    UCHAR_INT_LIMIT=0x1016,
-
-    /** Bitmask property General_Category_Mask.
-        This is the General_Category property returned as a bit mask.
-        When used in u_getIntPropertyValue(c), same as U_MASK(u_charType(c)),
-        returns bit masks for UCharCategory values where exactly one bit is set.
-        When used with u_getPropertyValueName() and u_getPropertyValueEnum(),
-        a multi-bit mask is used for sets of categories like "Letters".
-        Mask values should be cast to uint32_t.
-        @stable ICU 2.4 */
-    UCHAR_GENERAL_CATEGORY_MASK=0x2000,
-    /** First constant for bit-mask Unicode properties. @stable ICU 2.4 */
-    UCHAR_MASK_START=UCHAR_GENERAL_CATEGORY_MASK,
-    /** One more than the last constant for bit-mask Unicode properties. @stable ICU 2.4 */
-    UCHAR_MASK_LIMIT=0x2001,
-
-    /** Double property Numeric_Value.
-        Corresponds to u_getNumericValue. @stable ICU 2.4 */
-    UCHAR_NUMERIC_VALUE=0x3000,
-    /** First constant for double Unicode properties. @stable ICU 2.4 */
-    UCHAR_DOUBLE_START=UCHAR_NUMERIC_VALUE,
-    /** One more than the last constant for double Unicode properties. @stable ICU 2.4 */
-    UCHAR_DOUBLE_LIMIT=0x3001,
-
-    /** String property Age.
-        Corresponds to u_charAge. @stable ICU 2.4 */
-    UCHAR_AGE=0x4000,
-    /** First constant for string Unicode properties. @stable ICU 2.4 */
-    UCHAR_STRING_START=UCHAR_AGE,
-    /** String property Bidi_Mirroring_Glyph.
-        Corresponds to u_charMirror. @stable ICU 2.4 */
-    UCHAR_BIDI_MIRRORING_GLYPH=0x4001,
-    /** String property Case_Folding.
-        Corresponds to u_strFoldCase in ustring.h. @stable ICU 2.4 */
-    UCHAR_CASE_FOLDING=0x4002,
-#ifndef U_HIDE_DEPRECATED_API
-    /** Deprecated string property ISO_Comment.
-        Corresponds to u_getISOComment. @deprecated ICU 49 */
-    UCHAR_ISO_COMMENT=0x4003,
-#endif  /* U_HIDE_DEPRECATED_API */
-    /** String property Lowercase_Mapping.
-        Corresponds to u_strToLower in ustring.h. @stable ICU 2.4 */
-    UCHAR_LOWERCASE_MAPPING=0x4004,
-    /** String property Name.
-        Corresponds to u_charName. @stable ICU 2.4 */
-    UCHAR_NAME=0x4005,
-    /** String property Simple_Case_Folding.
-        Corresponds to u_foldCase. @stable ICU 2.4 */
-    UCHAR_SIMPLE_CASE_FOLDING=0x4006,
-    /** String property Simple_Lowercase_Mapping.
-        Corresponds to u_tolower. @stable ICU 2.4 */
-    UCHAR_SIMPLE_LOWERCASE_MAPPING=0x4007,
-    /** String property Simple_Titlecase_Mapping.
-        Corresponds to u_totitle. @stable ICU 2.4 */
-    UCHAR_SIMPLE_TITLECASE_MAPPING=0x4008,
-    /** String property Simple_Uppercase_Mapping.
-        Corresponds to u_toupper. @stable ICU 2.4 */
-    UCHAR_SIMPLE_UPPERCASE_MAPPING=0x4009,
-    /** String property Titlecase_Mapping.
-        Corresponds to u_strToTitle in ustring.h. @stable ICU 2.4 */
-    UCHAR_TITLECASE_MAPPING=0x400A,
-#ifndef U_HIDE_DEPRECATED_API
-    /** String property Unicode_1_Name.
-        This property is of little practical value.
-        Beginning with ICU 49, ICU APIs return an empty string for this property.
-        Corresponds to u_charName(U_UNICODE_10_CHAR_NAME). @deprecated ICU 49 */
-    UCHAR_UNICODE_1_NAME=0x400B,
-#endif  /* U_HIDE_DEPRECATED_API */
-    /** String property Uppercase_Mapping.
-        Corresponds to u_strToUpper in ustring.h. @stable ICU 2.4 */
-    UCHAR_UPPERCASE_MAPPING=0x400C,
-    /** String property Bidi_Paired_Bracket (new in Unicode 6.3).
-        Corresponds to u_getBidiPairedBracket. @stable ICU 52 */
-    UCHAR_BIDI_PAIRED_BRACKET=0x400D,
-    /** One more than the last constant for string Unicode properties. @stable ICU 2.4 */
-    UCHAR_STRING_LIMIT=0x400E,
-
-    /** Miscellaneous property Script_Extensions (new in Unicode 6.0).
-        Some characters are commonly used in multiple scripts.
-        For more information, see UAX #24: http://www.unicode.org/reports/tr24/.
-        Corresponds to uscript_hasScript and uscript_getScriptExtensions in uscript.h.
-        @stable ICU 4.6 */
-    UCHAR_SCRIPT_EXTENSIONS=0x7000,
-    /** First constant for Unicode properties with unusual value types. @stable ICU 4.6 */
-    UCHAR_OTHER_PROPERTY_START=UCHAR_SCRIPT_EXTENSIONS,
-    /** One more than the last constant for Unicode properties with unusual value types.
-     * @stable ICU 4.6 */
-    UCHAR_OTHER_PROPERTY_LIMIT=0x7001,
-    /** Represents a nonexistent or invalid property or property value. @stable ICU 2.4 */
-    UCHAR_INVALID_CODE = -1
-} UProperty;
-
-/**
- * Data for enumerated Unicode general category types.
- * See http://www.unicode.org/Public/UNIDATA/UnicodeData.html .
- * @stable ICU 2.0
- */
-typedef enum UCharCategory
-{
-    /*
-     * Note: UCharCategory constants and their API comments are parsed by preparseucd.py.
-     * It matches pairs of lines like
-     *     / ** <Unicode 2-letter General_Category value> comment... * /
-     *     U_<[A-Z_]+> = <integer>,
-     */
-
-    /** Non-category for unassigned and non-character code points. @stable ICU 2.0 */
-    U_UNASSIGNED              = 0,
-    /** Cn "Other, Not Assigned (no characters in [UnicodeData.txt] have this property)" (same as U_UNASSIGNED!) @stable ICU 2.0 */
-    U_GENERAL_OTHER_TYPES     = 0,
-    /** Lu @stable ICU 2.0 */
-    U_UPPERCASE_LETTER        = 1,
-    /** Ll @stable ICU 2.0 */
-    U_LOWERCASE_LETTER        = 2,
-    /** Lt @stable ICU 2.0 */
-    U_TITLECASE_LETTER        = 3,
-    /** Lm @stable ICU 2.0 */
-    U_MODIFIER_LETTER         = 4,
-    /** Lo @stable ICU 2.0 */
-    U_OTHER_LETTER            = 5,
-    /** Mn @stable ICU 2.0 */
-    U_NON_SPACING_MARK        = 6,
-    /** Me @stable ICU 2.0 */
-    U_ENCLOSING_MARK          = 7,
-    /** Mc @stable ICU 2.0 */
-    U_COMBINING_SPACING_MARK  = 8,
-    /** Nd @stable ICU 2.0 */
-    U_DECIMAL_DIGIT_NUMBER    = 9,
-    /** Nl @stable ICU 2.0 */
-    U_LETTER_NUMBER           = 10,
-    /** No @stable ICU 2.0 */
-    U_OTHER_NUMBER            = 11,
-    /** Zs @stable ICU 2.0 */
-    U_SPACE_SEPARATOR         = 12,
-    /** Zl @stable ICU 2.0 */
-    U_LINE_SEPARATOR          = 13,
-    /** Zp @stable ICU 2.0 */
-    U_PARAGRAPH_SEPARATOR     = 14,
-    /** Cc @stable ICU 2.0 */
-    U_CONTROL_CHAR            = 15,
-    /** Cf @stable ICU 2.0 */
-    U_FORMAT_CHAR             = 16,
-    /** Co @stable ICU 2.0 */
-    U_PRIVATE_USE_CHAR        = 17,
-    /** Cs @stable ICU 2.0 */
-    U_SURROGATE               = 18,
-    /** Pd @stable ICU 2.0 */
-    U_DASH_PUNCTUATION        = 19,
-    /** Ps @stable ICU 2.0 */
-    U_START_PUNCTUATION       = 20,
-    /** Pe @stable ICU 2.0 */
-    U_END_PUNCTUATION         = 21,
-    /** Pc @stable ICU 2.0 */
-    U_CONNECTOR_PUNCTUATION   = 22,
-    /** Po @stable ICU 2.0 */
-    U_OTHER_PUNCTUATION       = 23,
-    /** Sm @stable ICU 2.0 */
-    U_MATH_SYMBOL             = 24,
-    /** Sc @stable ICU 2.0 */
-    U_CURRENCY_SYMBOL         = 25,
-    /** Sk @stable ICU 2.0 */
-    U_MODIFIER_SYMBOL         = 26,
-    /** So @stable ICU 2.0 */
-    U_OTHER_SYMBOL            = 27,
-    /** Pi @stable ICU 2.0 */
-    U_INITIAL_PUNCTUATION     = 28,
-    /** Pf @stable ICU 2.0 */
-    U_FINAL_PUNCTUATION       = 29,
-    /** One higher than the last enum UCharCategory constant. @stable ICU 2.0 */
-    U_CHAR_CATEGORY_COUNT
-} UCharCategory;
-
-/**
- * U_GC_XX_MASK constants are bit flags corresponding to Unicode
- * general category values.
- * For each category, the nth bit is set if the numeric value of the
- * corresponding UCharCategory constant is n.
- *
- * There are also some U_GC_Y_MASK constants for groups of general categories
- * like L for all letter categories.
- *
- * @see u_charType
- * @see U_GET_GC_MASK
- * @see UCharCategory
- * @stable ICU 2.1
- */
-#define U_GC_CN_MASK    U_MASK(U_GENERAL_OTHER_TYPES)
-
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_LU_MASK    U_MASK(U_UPPERCASE_LETTER)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_LL_MASK    U_MASK(U_LOWERCASE_LETTER)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_LT_MASK    U_MASK(U_TITLECASE_LETTER)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_LM_MASK    U_MASK(U_MODIFIER_LETTER)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_LO_MASK    U_MASK(U_OTHER_LETTER)
-
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_MN_MASK    U_MASK(U_NON_SPACING_MARK)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_ME_MASK    U_MASK(U_ENCLOSING_MARK)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_MC_MASK    U_MASK(U_COMBINING_SPACING_MARK)
-
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_ND_MASK    U_MASK(U_DECIMAL_DIGIT_NUMBER)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_NL_MASK    U_MASK(U_LETTER_NUMBER)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_NO_MASK    U_MASK(U_OTHER_NUMBER)
-
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_ZS_MASK    U_MASK(U_SPACE_SEPARATOR)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_ZL_MASK    U_MASK(U_LINE_SEPARATOR)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_ZP_MASK    U_MASK(U_PARAGRAPH_SEPARATOR)
-
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_CC_MASK    U_MASK(U_CONTROL_CHAR)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_CF_MASK    U_MASK(U_FORMAT_CHAR)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_CO_MASK    U_MASK(U_PRIVATE_USE_CHAR)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_CS_MASK    U_MASK(U_SURROGATE)
-
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_PD_MASK    U_MASK(U_DASH_PUNCTUATION)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_PS_MASK    U_MASK(U_START_PUNCTUATION)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_PE_MASK    U_MASK(U_END_PUNCTUATION)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_PC_MASK    U_MASK(U_CONNECTOR_PUNCTUATION)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_PO_MASK    U_MASK(U_OTHER_PUNCTUATION)
-
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_SM_MASK    U_MASK(U_MATH_SYMBOL)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_SC_MASK    U_MASK(U_CURRENCY_SYMBOL)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_SK_MASK    U_MASK(U_MODIFIER_SYMBOL)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_SO_MASK    U_MASK(U_OTHER_SYMBOL)
-
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_PI_MASK    U_MASK(U_INITIAL_PUNCTUATION)
-/** Mask constant for a UCharCategory. @stable ICU 2.1 */
-#define U_GC_PF_MASK    U_MASK(U_FINAL_PUNCTUATION)
-
-
-/** Mask constant for multiple UCharCategory bits (L Letters). @stable ICU 2.1 */
-#define U_GC_L_MASK \
-            (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK|U_GC_LM_MASK|U_GC_LO_MASK)
-
-/** Mask constant for multiple UCharCategory bits (LC Cased Letters). @stable ICU 2.1 */
-#define U_GC_LC_MASK \
-            (U_GC_LU_MASK|U_GC_LL_MASK|U_GC_LT_MASK)
-
-/** Mask constant for multiple UCharCategory bits (M Marks). @stable ICU 2.1 */
-#define U_GC_M_MASK (U_GC_MN_MASK|U_GC_ME_MASK|U_GC_MC_MASK)
-
-/** Mask constant for multiple UCharCategory bits (N Numbers). @stable ICU 2.1 */
-#define U_GC_N_MASK (U_GC_ND_MASK|U_GC_NL_MASK|U_GC_NO_MASK)
-
-/** Mask constant for multiple UCharCategory bits (Z Separators). @stable ICU 2.1 */
-#define U_GC_Z_MASK (U_GC_ZS_MASK|U_GC_ZL_MASK|U_GC_ZP_MASK)
-
-/** Mask constant for multiple UCharCategory bits (C Others). @stable ICU 2.1 */
-#define U_GC_C_MASK \
-            (U_GC_CN_MASK|U_GC_CC_MASK|U_GC_CF_MASK|U_GC_CO_MASK|U_GC_CS_MASK)
-
-/** Mask constant for multiple UCharCategory bits (P Punctuation). @stable ICU 2.1 */
-#define U_GC_P_MASK \
-            (U_GC_PD_MASK|U_GC_PS_MASK|U_GC_PE_MASK|U_GC_PC_MASK|U_GC_PO_MASK| \
-             U_GC_PI_MASK|U_GC_PF_MASK)
-
-/** Mask constant for multiple UCharCategory bits (S Symbols). @stable ICU 2.1 */
-#define U_GC_S_MASK (U_GC_SM_MASK|U_GC_SC_MASK|U_GC_SK_MASK|U_GC_SO_MASK)
-
-/**
- * This specifies the language directional property of a character set.
- * @stable ICU 2.0
- */
-typedef enum UCharDirection {
-    /*
-     * Note: UCharDirection constants and their API comments are parsed by preparseucd.py.
-     * It matches pairs of lines like
-     *     / ** <Unicode 1..3-letter Bidi_Class value> comment... * /
-     *     U_<[A-Z_]+> = <integer>,
-     */
-
-    /** L @stable ICU 2.0 */
-    U_LEFT_TO_RIGHT               = 0,
-    /** R @stable ICU 2.0 */
-    U_RIGHT_TO_LEFT               = 1,
-    /** EN @stable ICU 2.0 */
-    U_EUROPEAN_NUMBER             = 2,
-    /** ES @stable ICU 2.0 */
-    U_EUROPEAN_NUMBER_SEPARATOR   = 3,
-    /** ET @stable ICU 2.0 */
-    U_EUROPEAN_NUMBER_TERMINATOR  = 4,
-    /** AN @stable ICU 2.0 */
-    U_ARABIC_NUMBER               = 5,
-    /** CS @stable ICU 2.0 */
-    U_COMMON_NUMBER_SEPARATOR     = 6,
-    /** B @stable ICU 2.0 */
-    U_BLOCK_SEPARATOR             = 7,
-    /** S @stable ICU 2.0 */
-    U_SEGMENT_SEPARATOR           = 8,
-    /** WS @stable ICU 2.0 */
-    U_WHITE_SPACE_NEUTRAL         = 9,
-    /** ON @stable ICU 2.0 */
-    U_OTHER_NEUTRAL               = 10,
-    /** LRE @stable ICU 2.0 */
-    U_LEFT_TO_RIGHT_EMBEDDING     = 11,
-    /** LRO @stable ICU 2.0 */
-    U_LEFT_TO_RIGHT_OVERRIDE      = 12,
-    /** AL @stable ICU 2.0 */
-    U_RIGHT_TO_LEFT_ARABIC        = 13,
-    /** RLE @stable ICU 2.0 */
-    U_RIGHT_TO_LEFT_EMBEDDING     = 14,
-    /** RLO @stable ICU 2.0 */
-    U_RIGHT_TO_LEFT_OVERRIDE      = 15,
-    /** PDF @stable ICU 2.0 */
-    U_POP_DIRECTIONAL_FORMAT      = 16,
-    /** NSM @stable ICU 2.0 */
-    U_DIR_NON_SPACING_MARK        = 17,
-    /** BN @stable ICU 2.0 */
-    U_BOUNDARY_NEUTRAL            = 18,
-    /** FSI @stable ICU 52 */
-    U_FIRST_STRONG_ISOLATE        = 19,
-    /** LRI @stable ICU 52 */
-    U_LEFT_TO_RIGHT_ISOLATE       = 20,
-    /** RLI @stable ICU 52 */
-    U_RIGHT_TO_LEFT_ISOLATE       = 21,
-    /** PDI @stable ICU 52 */
-    U_POP_DIRECTIONAL_ISOLATE     = 22,
-    /** @stable ICU 2.0 */
-    U_CHAR_DIRECTION_COUNT
-} UCharDirection;
-
-/**
- * Bidi Paired Bracket Type constants.
- *
- * @see UCHAR_BIDI_PAIRED_BRACKET_TYPE
- * @stable ICU 52
- */
-typedef enum UBidiPairedBracketType {
-    /*
-     * Note: UBidiPairedBracketType constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_BPT_<Unicode Bidi_Paired_Bracket_Type value name>
-     */
-
-    /** Not a paired bracket. @stable ICU 52 */
-    U_BPT_NONE,
-    /** Open paired bracket. @stable ICU 52 */
-    U_BPT_OPEN,
-    /** Close paired bracket. @stable ICU 52 */
-    U_BPT_CLOSE,
-    /** @stable ICU 52 */
-    U_BPT_COUNT /* 3 */
-} UBidiPairedBracketType;
-
-/**
- * Constants for Unicode blocks, see the Unicode Data file Blocks.txt
- * @stable ICU 2.0
- */
-enum UBlockCode {
-    /*
-     * Note: UBlockCode constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     UBLOCK_<Unicode Block value name> = <integer>,
-     */
-
-    /** New No_Block value in Unicode 4. @stable ICU 2.6 */
-    UBLOCK_NO_BLOCK = 0, /*[none]*/ /* Special range indicating No_Block */
-
-    /** @stable ICU 2.0 */
-    UBLOCK_BASIC_LATIN = 1, /*[0000]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_LATIN_1_SUPPLEMENT=2, /*[0080]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_LATIN_EXTENDED_A =3, /*[0100]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_LATIN_EXTENDED_B =4, /*[0180]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_IPA_EXTENSIONS =5, /*[0250]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_SPACING_MODIFIER_LETTERS =6, /*[02B0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_COMBINING_DIACRITICAL_MARKS =7, /*[0300]*/
-
-    /**
-     * Unicode 3.2 renames this block to "Greek and Coptic".
-     * @stable ICU 2.0
-     */
-    UBLOCK_GREEK =8, /*[0370]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CYRILLIC =9, /*[0400]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ARMENIAN =10, /*[0530]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_HEBREW =11, /*[0590]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ARABIC =12, /*[0600]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_SYRIAC =13, /*[0700]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_THAANA =14, /*[0780]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_DEVANAGARI =15, /*[0900]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_BENGALI =16, /*[0980]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_GURMUKHI =17, /*[0A00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_GUJARATI =18, /*[0A80]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ORIYA =19, /*[0B00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_TAMIL =20, /*[0B80]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_TELUGU =21, /*[0C00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_KANNADA =22, /*[0C80]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_MALAYALAM =23, /*[0D00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_SINHALA =24, /*[0D80]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_THAI =25, /*[0E00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_LAO =26, /*[0E80]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_TIBETAN =27, /*[0F00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_MYANMAR =28, /*[1000]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_GEORGIAN =29, /*[10A0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_HANGUL_JAMO =30, /*[1100]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ETHIOPIC =31, /*[1200]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CHEROKEE =32, /*[13A0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS =33, /*[1400]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_OGHAM =34, /*[1680]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_RUNIC =35, /*[16A0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_KHMER =36, /*[1780]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_MONGOLIAN =37, /*[1800]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_LATIN_EXTENDED_ADDITIONAL =38, /*[1E00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_GREEK_EXTENDED =39, /*[1F00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_GENERAL_PUNCTUATION =40, /*[2000]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS =41, /*[2070]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CURRENCY_SYMBOLS =42, /*[20A0]*/
-
-    /**
-     * Unicode 3.2 renames this block to "Combining Diacritical Marks for Symbols".
-     * @stable ICU 2.0
-     */
-    UBLOCK_COMBINING_MARKS_FOR_SYMBOLS =43, /*[20D0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_LETTERLIKE_SYMBOLS =44, /*[2100]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_NUMBER_FORMS =45, /*[2150]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ARROWS =46, /*[2190]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_MATHEMATICAL_OPERATORS =47, /*[2200]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_MISCELLANEOUS_TECHNICAL =48, /*[2300]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CONTROL_PICTURES =49, /*[2400]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_OPTICAL_CHARACTER_RECOGNITION =50, /*[2440]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ENCLOSED_ALPHANUMERICS =51, /*[2460]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_BOX_DRAWING =52, /*[2500]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_BLOCK_ELEMENTS =53, /*[2580]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_GEOMETRIC_SHAPES =54, /*[25A0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_MISCELLANEOUS_SYMBOLS =55, /*[2600]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_DINGBATS =56, /*[2700]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_BRAILLE_PATTERNS =57, /*[2800]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_RADICALS_SUPPLEMENT =58, /*[2E80]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_KANGXI_RADICALS =59, /*[2F00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_IDEOGRAPHIC_DESCRIPTION_CHARACTERS =60, /*[2FF0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_SYMBOLS_AND_PUNCTUATION =61, /*[3000]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_HIRAGANA =62, /*[3040]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_KATAKANA =63, /*[30A0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_BOPOMOFO =64, /*[3100]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_HANGUL_COMPATIBILITY_JAMO =65, /*[3130]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_KANBUN =66, /*[3190]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_BOPOMOFO_EXTENDED =67, /*[31A0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ENCLOSED_CJK_LETTERS_AND_MONTHS =68, /*[3200]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_COMPATIBILITY =69, /*[3300]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A =70, /*[3400]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_UNIFIED_IDEOGRAPHS =71, /*[4E00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_YI_SYLLABLES =72, /*[A000]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_YI_RADICALS =73, /*[A490]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_HANGUL_SYLLABLES =74, /*[AC00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_HIGH_SURROGATES =75, /*[D800]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_HIGH_PRIVATE_USE_SURROGATES =76, /*[DB80]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_LOW_SURROGATES =77, /*[DC00]*/
-
-    /**
-     * Same as UBLOCK_PRIVATE_USE.
-     * Until Unicode 3.1.1, the corresponding block name was "Private Use",
-     * and multiple code point ranges had this block.
-     * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" and
-     * adds separate blocks for the supplementary PUAs.
-     *
-     * @stable ICU 2.0
-     */
-    UBLOCK_PRIVATE_USE_AREA =78, /*[E000]*/
-    /**
-     * Same as UBLOCK_PRIVATE_USE_AREA.
-     * Until Unicode 3.1.1, the corresponding block name was "Private Use",
-     * and multiple code point ranges had this block.
-     * Unicode 3.2 renames the block for the BMP PUA to "Private Use Area" and
-     * adds separate blocks for the supplementary PUAs.
-     *
-     * @stable ICU 2.0
-     */
-    UBLOCK_PRIVATE_USE = UBLOCK_PRIVATE_USE_AREA,
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS =79, /*[F900]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ALPHABETIC_PRESENTATION_FORMS =80, /*[FB00]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ARABIC_PRESENTATION_FORMS_A =81, /*[FB50]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_COMBINING_HALF_MARKS =82, /*[FE20]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_COMPATIBILITY_FORMS =83, /*[FE30]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_SMALL_FORM_VARIANTS =84, /*[FE50]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_ARABIC_PRESENTATION_FORMS_B =85, /*[FE70]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_SPECIALS =86, /*[FFF0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS =87, /*[FF00]*/
-
-    /* New blocks in Unicode 3.1 */
-
-    /** @stable ICU 2.0 */
-    UBLOCK_OLD_ITALIC = 88, /*[10300]*/
-    /** @stable ICU 2.0 */
-    UBLOCK_GOTHIC = 89, /*[10330]*/
-    /** @stable ICU 2.0 */
-    UBLOCK_DESERET = 90, /*[10400]*/
-    /** @stable ICU 2.0 */
-    UBLOCK_BYZANTINE_MUSICAL_SYMBOLS = 91, /*[1D000]*/
-    /** @stable ICU 2.0 */
-    UBLOCK_MUSICAL_SYMBOLS = 92, /*[1D100]*/
-    /** @stable ICU 2.0 */
-    UBLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS = 93, /*[1D400]*/
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B  = 94, /*[20000]*/
-    /** @stable ICU 2.0 */
-    UBLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT = 95, /*[2F800]*/
-    /** @stable ICU 2.0 */
-    UBLOCK_TAGS = 96, /*[E0000]*/
-
-    /* New blocks in Unicode 3.2 */
-
-    /** @stable ICU 3.0  */
-    UBLOCK_CYRILLIC_SUPPLEMENT = 97, /*[0500]*/
-    /**
-     * Unicode 4.0.1 renames the "Cyrillic Supplementary" block to "Cyrillic Supplement".
-     * @stable ICU 2.2
-     */
-    UBLOCK_CYRILLIC_SUPPLEMENTARY = UBLOCK_CYRILLIC_SUPPLEMENT, 
-    /** @stable ICU 2.2 */
-    UBLOCK_TAGALOG = 98, /*[1700]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_HANUNOO = 99, /*[1720]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_BUHID = 100, /*[1740]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_TAGBANWA = 101, /*[1760]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A = 102, /*[27C0]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_SUPPLEMENTAL_ARROWS_A = 103, /*[27F0]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_SUPPLEMENTAL_ARROWS_B = 104, /*[2900]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B = 105, /*[2980]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_SUPPLEMENTAL_MATHEMATICAL_OPERATORS = 106, /*[2A00]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_KATAKANA_PHONETIC_EXTENSIONS = 107, /*[31F0]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_VARIATION_SELECTORS = 108, /*[FE00]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_A = 109, /*[F0000]*/
-    /** @stable ICU 2.2 */
-    UBLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B = 110, /*[100000]*/
-
-    /* New blocks in Unicode 4 */
-
-    /** @stable ICU 2.6 */
-    UBLOCK_LIMBU = 111, /*[1900]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_TAI_LE = 112, /*[1950]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_KHMER_SYMBOLS = 113, /*[19E0]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_PHONETIC_EXTENSIONS = 114, /*[1D00]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS = 115, /*[2B00]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_YIJING_HEXAGRAM_SYMBOLS = 116, /*[4DC0]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_LINEAR_B_SYLLABARY = 117, /*[10000]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_LINEAR_B_IDEOGRAMS = 118, /*[10080]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_AEGEAN_NUMBERS = 119, /*[10100]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_UGARITIC = 120, /*[10380]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_SHAVIAN = 121, /*[10450]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_OSMANYA = 122, /*[10480]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_CYPRIOT_SYLLABARY = 123, /*[10800]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_TAI_XUAN_JING_SYMBOLS = 124, /*[1D300]*/
-    /** @stable ICU 2.6 */
-    UBLOCK_VARIATION_SELECTORS_SUPPLEMENT = 125, /*[E0100]*/
-
-    /* New blocks in Unicode 4.1 */
-
-    /** @stable ICU 3.4 */
-    UBLOCK_ANCIENT_GREEK_MUSICAL_NOTATION = 126, /*[1D200]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_ANCIENT_GREEK_NUMBERS = 127, /*[10140]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_ARABIC_SUPPLEMENT = 128, /*[0750]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_BUGINESE = 129, /*[1A00]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_CJK_STROKES = 130, /*[31C0]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT = 131, /*[1DC0]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_COPTIC = 132, /*[2C80]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_ETHIOPIC_EXTENDED = 133, /*[2D80]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_ETHIOPIC_SUPPLEMENT = 134, /*[1380]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_GEORGIAN_SUPPLEMENT = 135, /*[2D00]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_GLAGOLITIC = 136, /*[2C00]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_KHAROSHTHI = 137, /*[10A00]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_MODIFIER_TONE_LETTERS = 138, /*[A700]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_NEW_TAI_LUE = 139, /*[1980]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_OLD_PERSIAN = 140, /*[103A0]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_PHONETIC_EXTENSIONS_SUPPLEMENT = 141, /*[1D80]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_SUPPLEMENTAL_PUNCTUATION = 142, /*[2E00]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_SYLOTI_NAGRI = 143, /*[A800]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_TIFINAGH = 144, /*[2D30]*/
-    /** @stable ICU 3.4 */
-    UBLOCK_VERTICAL_FORMS = 145, /*[FE10]*/
-
-    /* New blocks in Unicode 5.0 */
-
-    /** @stable ICU 3.6 */
-    UBLOCK_NKO = 146, /*[07C0]*/
-    /** @stable ICU 3.6 */
-    UBLOCK_BALINESE = 147, /*[1B00]*/
-    /** @stable ICU 3.6 */
-    UBLOCK_LATIN_EXTENDED_C = 148, /*[2C60]*/
-    /** @stable ICU 3.6 */
-    UBLOCK_LATIN_EXTENDED_D = 149, /*[A720]*/
-    /** @stable ICU 3.6 */
-    UBLOCK_PHAGS_PA = 150, /*[A840]*/
-    /** @stable ICU 3.6 */
-    UBLOCK_PHOENICIAN = 151, /*[10900]*/
-    /** @stable ICU 3.6 */
-    UBLOCK_CUNEIFORM = 152, /*[12000]*/
-    /** @stable ICU 3.6 */
-    UBLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION = 153, /*[12400]*/
-    /** @stable ICU 3.6 */
-    UBLOCK_COUNTING_ROD_NUMERALS = 154, /*[1D360]*/
-
-    /* New blocks in Unicode 5.1 */
-
-    /** @stable ICU 4.0 */
-    UBLOCK_SUNDANESE = 155, /*[1B80]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_LEPCHA = 156, /*[1C00]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_OL_CHIKI = 157, /*[1C50]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_CYRILLIC_EXTENDED_A = 158, /*[2DE0]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_VAI = 159, /*[A500]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_CYRILLIC_EXTENDED_B = 160, /*[A640]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_SAURASHTRA = 161, /*[A880]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_KAYAH_LI = 162, /*[A900]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_REJANG = 163, /*[A930]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_CHAM = 164, /*[AA00]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_ANCIENT_SYMBOLS = 165, /*[10190]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_PHAISTOS_DISC = 166, /*[101D0]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_LYCIAN = 167, /*[10280]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_CARIAN = 168, /*[102A0]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_LYDIAN = 169, /*[10920]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_MAHJONG_TILES = 170, /*[1F000]*/
-    /** @stable ICU 4.0 */
-    UBLOCK_DOMINO_TILES = 171, /*[1F030]*/
-
-    /* New blocks in Unicode 5.2 */
-
-    /** @stable ICU 4.4 */
-    UBLOCK_SAMARITAN = 172, /*[0800]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS_EXTENDED = 173, /*[18B0]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_TAI_THAM = 174, /*[1A20]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_VEDIC_EXTENSIONS = 175, /*[1CD0]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_LISU = 176, /*[A4D0]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_BAMUM = 177, /*[A6A0]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_COMMON_INDIC_NUMBER_FORMS = 178, /*[A830]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_DEVANAGARI_EXTENDED = 179, /*[A8E0]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_HANGUL_JAMO_EXTENDED_A = 180, /*[A960]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_JAVANESE = 181, /*[A980]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_MYANMAR_EXTENDED_A = 182, /*[AA60]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_TAI_VIET = 183, /*[AA80]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_MEETEI_MAYEK = 184, /*[ABC0]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_HANGUL_JAMO_EXTENDED_B = 185, /*[D7B0]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_IMPERIAL_ARAMAIC = 186, /*[10840]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_OLD_SOUTH_ARABIAN = 187, /*[10A60]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_AVESTAN = 188, /*[10B00]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_INSCRIPTIONAL_PARTHIAN = 189, /*[10B40]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_INSCRIPTIONAL_PAHLAVI = 190, /*[10B60]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_OLD_TURKIC = 191, /*[10C00]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_RUMI_NUMERAL_SYMBOLS = 192, /*[10E60]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_KAITHI = 193, /*[11080]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_EGYPTIAN_HIEROGLYPHS = 194, /*[13000]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_ENCLOSED_ALPHANUMERIC_SUPPLEMENT = 195, /*[1F100]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_ENCLOSED_IDEOGRAPHIC_SUPPLEMENT = 196, /*[1F200]*/
-    /** @stable ICU 4.4 */
-    UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_C = 197, /*[2A700]*/
-
-    /* New blocks in Unicode 6.0 */
-
-    /** @stable ICU 4.6 */
-    UBLOCK_MANDAIC = 198, /*[0840]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_BATAK = 199, /*[1BC0]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_ETHIOPIC_EXTENDED_A = 200, /*[AB00]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_BRAHMI = 201, /*[11000]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_BAMUM_SUPPLEMENT = 202, /*[16800]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_KANA_SUPPLEMENT = 203, /*[1B000]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_PLAYING_CARDS = 204, /*[1F0A0]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_MISCELLANEOUS_SYMBOLS_AND_PICTOGRAPHS = 205, /*[1F300]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_EMOTICONS = 206, /*[1F600]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_TRANSPORT_AND_MAP_SYMBOLS = 207, /*[1F680]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_ALCHEMICAL_SYMBOLS = 208, /*[1F700]*/
-    /** @stable ICU 4.6 */
-    UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_D = 209, /*[2B740]*/
-
-    /* New blocks in Unicode 6.1 */
-
-    /** @stable ICU 49 */
-    UBLOCK_ARABIC_EXTENDED_A = 210, /*[08A0]*/
-    /** @stable ICU 49 */
-    UBLOCK_ARABIC_MATHEMATICAL_ALPHABETIC_SYMBOLS = 211, /*[1EE00]*/
-    /** @stable ICU 49 */
-    UBLOCK_CHAKMA = 212, /*[11100]*/
-    /** @stable ICU 49 */
-    UBLOCK_MEETEI_MAYEK_EXTENSIONS = 213, /*[AAE0]*/
-    /** @stable ICU 49 */
-    UBLOCK_MEROITIC_CURSIVE = 214, /*[109A0]*/
-    /** @stable ICU 49 */
-    UBLOCK_MEROITIC_HIEROGLYPHS = 215, /*[10980]*/
-    /** @stable ICU 49 */
-    UBLOCK_MIAO = 216, /*[16F00]*/
-    /** @stable ICU 49 */
-    UBLOCK_SHARADA = 217, /*[11180]*/
-    /** @stable ICU 49 */
-    UBLOCK_SORA_SOMPENG = 218, /*[110D0]*/
-    /** @stable ICU 49 */
-    UBLOCK_SUNDANESE_SUPPLEMENT = 219, /*[1CC0]*/
-    /** @stable ICU 49 */
-    UBLOCK_TAKRI = 220, /*[11680]*/
-
-    /* New blocks in Unicode 7.0 */
-
-    /** @stable ICU 54 */
-    UBLOCK_BASSA_VAH = 221, /*[16AD0]*/
-    /** @stable ICU 54 */
-    UBLOCK_CAUCASIAN_ALBANIAN = 222, /*[10530]*/
-    /** @stable ICU 54 */
-    UBLOCK_COPTIC_EPACT_NUMBERS = 223, /*[102E0]*/
-    /** @stable ICU 54 */
-    UBLOCK_COMBINING_DIACRITICAL_MARKS_EXTENDED = 224, /*[1AB0]*/
-    /** @stable ICU 54 */
-    UBLOCK_DUPLOYAN = 225, /*[1BC00]*/
-    /** @stable ICU 54 */
-    UBLOCK_ELBASAN = 226, /*[10500]*/
-    /** @stable ICU 54 */
-    UBLOCK_GEOMETRIC_SHAPES_EXTENDED = 227, /*[1F780]*/
-    /** @stable ICU 54 */
-    UBLOCK_GRANTHA = 228, /*[11300]*/
-    /** @stable ICU 54 */
-    UBLOCK_KHOJKI = 229, /*[11200]*/
-    /** @stable ICU 54 */
-    UBLOCK_KHUDAWADI = 230, /*[112B0]*/
-    /** @stable ICU 54 */
-    UBLOCK_LATIN_EXTENDED_E = 231, /*[AB30]*/
-    /** @stable ICU 54 */
-    UBLOCK_LINEAR_A = 232, /*[10600]*/
-    /** @stable ICU 54 */
-    UBLOCK_MAHAJANI = 233, /*[11150]*/
-    /** @stable ICU 54 */
-    UBLOCK_MANICHAEAN = 234, /*[10AC0]*/
-    /** @stable ICU 54 */
-    UBLOCK_MENDE_KIKAKUI = 235, /*[1E800]*/
-    /** @stable ICU 54 */
-    UBLOCK_MODI = 236, /*[11600]*/
-    /** @stable ICU 54 */
-    UBLOCK_MRO = 237, /*[16A40]*/
-    /** @stable ICU 54 */
-    UBLOCK_MYANMAR_EXTENDED_B = 238, /*[A9E0]*/
-    /** @stable ICU 54 */
-    UBLOCK_NABATAEAN = 239, /*[10880]*/
-    /** @stable ICU 54 */
-    UBLOCK_OLD_NORTH_ARABIAN = 240, /*[10A80]*/
-    /** @stable ICU 54 */
-    UBLOCK_OLD_PERMIC = 241, /*[10350]*/
-    /** @stable ICU 54 */
-    UBLOCK_ORNAMENTAL_DINGBATS = 242, /*[1F650]*/
-    /** @stable ICU 54 */
-    UBLOCK_PAHAWH_HMONG = 243, /*[16B00]*/
-    /** @stable ICU 54 */
-    UBLOCK_PALMYRENE = 244, /*[10860]*/
-    /** @stable ICU 54 */
-    UBLOCK_PAU_CIN_HAU = 245, /*[11AC0]*/
-    /** @stable ICU 54 */
-    UBLOCK_PSALTER_PAHLAVI = 246, /*[10B80]*/
-    /** @stable ICU 54 */
-    UBLOCK_SHORTHAND_FORMAT_CONTROLS = 247, /*[1BCA0]*/
-    /** @stable ICU 54 */
-    UBLOCK_SIDDHAM = 248, /*[11580]*/
-    /** @stable ICU 54 */
-    UBLOCK_SINHALA_ARCHAIC_NUMBERS = 249, /*[111E0]*/
-    /** @stable ICU 54 */
-    UBLOCK_SUPPLEMENTAL_ARROWS_C = 250, /*[1F800]*/
-    /** @stable ICU 54 */
-    UBLOCK_TIRHUTA = 251, /*[11480]*/
-    /** @stable ICU 54 */
-    UBLOCK_WARANG_CITI = 252, /*[118A0]*/
-
-    /** @stable ICU 2.0 */
-    UBLOCK_COUNT = 253,
-
-    /** @stable ICU 2.0 */
-    UBLOCK_INVALID_CODE=-1
-};
-
-/** @stable ICU 2.0 */
-typedef enum UBlockCode UBlockCode;
-
-/**
- * East Asian Width constants.
- *
- * @see UCHAR_EAST_ASIAN_WIDTH
- * @see u_getIntPropertyValue
- * @stable ICU 2.2
- */
-typedef enum UEastAsianWidth {
-    /*
-     * Note: UEastAsianWidth constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_EA_<Unicode East_Asian_Width value name>
-     */
-
-    U_EA_NEUTRAL,   /*[N]*/
-    U_EA_AMBIGUOUS, /*[A]*/
-    U_EA_HALFWIDTH, /*[H]*/
-    U_EA_FULLWIDTH, /*[F]*/
-    U_EA_NARROW,    /*[Na]*/
-    U_EA_WIDE,      /*[W]*/
-    U_EA_COUNT
-} UEastAsianWidth;
-
-/**
- * Selector constants for u_charName().
- * u_charName() returns the "modern" name of a
- * Unicode character; or the name that was defined in
- * Unicode version 1.0, before the Unicode standard merged
- * with ISO-10646; or an "extended" name that gives each
- * Unicode code point a unique name.
- *
- * @see u_charName
- * @stable ICU 2.0
- */
-typedef enum UCharNameChoice {
-    /** Unicode character name (Name property). @stable ICU 2.0 */
-    U_UNICODE_CHAR_NAME,
-#ifndef U_HIDE_DEPRECATED_API 
-    /**
-     * The Unicode_1_Name property value which is of little practical value.
-     * Beginning with ICU 49, ICU APIs return an empty string for this name choice.
-     * @deprecated ICU 49
-     */
-    U_UNICODE_10_CHAR_NAME,
-#endif  /* U_HIDE_DEPRECATED_API */
-    /** Standard or synthetic character name. @stable ICU 2.0 */
-    U_EXTENDED_CHAR_NAME = U_UNICODE_CHAR_NAME+2,
-    /** Corrected name from NameAliases.txt. @stable ICU 4.4 */
-    U_CHAR_NAME_ALIAS,
-    /** @stable ICU 2.0 */
-    U_CHAR_NAME_CHOICE_COUNT
-} UCharNameChoice;
-
-/**
- * Selector constants for u_getPropertyName() and
- * u_getPropertyValueName().  These selectors are used to choose which
- * name is returned for a given property or value.  All properties and
- * values have a long name.  Most have a short name, but some do not.
- * Unicode allows for additional names, beyond the long and short
- * name, which would be indicated by U_LONG_PROPERTY_NAME + i, where
- * i=1, 2,...
- *
- * @see u_getPropertyName()
- * @see u_getPropertyValueName()
- * @stable ICU 2.4
- */
-typedef enum UPropertyNameChoice {
-    U_SHORT_PROPERTY_NAME,
-    U_LONG_PROPERTY_NAME,
-    U_PROPERTY_NAME_CHOICE_COUNT
-} UPropertyNameChoice;
-
-/**
- * Decomposition Type constants.
- *
- * @see UCHAR_DECOMPOSITION_TYPE
- * @stable ICU 2.2
- */
-typedef enum UDecompositionType {
-    /*
-     * Note: UDecompositionType constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_DT_<Unicode Decomposition_Type value name>
-     */
-
-    U_DT_NONE,              /*[none]*/
-    U_DT_CANONICAL,         /*[can]*/
-    U_DT_COMPAT,            /*[com]*/
-    U_DT_CIRCLE,            /*[enc]*/
-    U_DT_FINAL,             /*[fin]*/
-    U_DT_FONT,              /*[font]*/
-    U_DT_FRACTION,          /*[fra]*/
-    U_DT_INITIAL,           /*[init]*/
-    U_DT_ISOLATED,          /*[iso]*/
-    U_DT_MEDIAL,            /*[med]*/
-    U_DT_NARROW,            /*[nar]*/
-    U_DT_NOBREAK,           /*[nb]*/
-    U_DT_SMALL,             /*[sml]*/
-    U_DT_SQUARE,            /*[sqr]*/
-    U_DT_SUB,               /*[sub]*/
-    U_DT_SUPER,             /*[sup]*/
-    U_DT_VERTICAL,          /*[vert]*/
-    U_DT_WIDE,              /*[wide]*/
-    U_DT_COUNT /* 18 */
-} UDecompositionType;
-
-/**
- * Joining Type constants.
- *
- * @see UCHAR_JOINING_TYPE
- * @stable ICU 2.2
- */
-typedef enum UJoiningType {
-    /*
-     * Note: UJoiningType constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_JT_<Unicode Joining_Type value name>
-     */
-
-    U_JT_NON_JOINING,       /*[U]*/
-    U_JT_JOIN_CAUSING,      /*[C]*/
-    U_JT_DUAL_JOINING,      /*[D]*/
-    U_JT_LEFT_JOINING,      /*[L]*/
-    U_JT_RIGHT_JOINING,     /*[R]*/
-    U_JT_TRANSPARENT,       /*[T]*/
-    U_JT_COUNT /* 6 */
-} UJoiningType;
-
-/**
- * Joining Group constants.
- *
- * @see UCHAR_JOINING_GROUP
- * @stable ICU 2.2
- */
-typedef enum UJoiningGroup {
-    /*
-     * Note: UJoiningGroup constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_JG_<Unicode Joining_Group value name>
-     */
-
-    U_JG_NO_JOINING_GROUP,
-    U_JG_AIN,
-    U_JG_ALAPH,
-    U_JG_ALEF,
-    U_JG_BEH,
-    U_JG_BETH,
-    U_JG_DAL,
-    U_JG_DALATH_RISH,
-    U_JG_E,
-    U_JG_FEH,
-    U_JG_FINAL_SEMKATH,
-    U_JG_GAF,
-    U_JG_GAMAL,
-    U_JG_HAH,
-    U_JG_TEH_MARBUTA_GOAL,  /**< @stable ICU 4.6 */
-    U_JG_HAMZA_ON_HEH_GOAL=U_JG_TEH_MARBUTA_GOAL,
-    U_JG_HE,
-    U_JG_HEH,
-    U_JG_HEH_GOAL,
-    U_JG_HETH,
-    U_JG_KAF,
-    U_JG_KAPH,
-    U_JG_KNOTTED_HEH,
-    U_JG_LAM,
-    U_JG_LAMADH,
-    U_JG_MEEM,
-    U_JG_MIM,
-    U_JG_NOON,
-    U_JG_NUN,
-    U_JG_PE,
-    U_JG_QAF,
-    U_JG_QAPH,
-    U_JG_REH,
-    U_JG_REVERSED_PE,
-    U_JG_SAD,
-    U_JG_SADHE,
-    U_JG_SEEN,
-    U_JG_SEMKATH,
-    U_JG_SHIN,
-    U_JG_SWASH_KAF,
-    U_JG_SYRIAC_WAW,
-    U_JG_TAH,
-    U_JG_TAW,
-    U_JG_TEH_MARBUTA,
-    U_JG_TETH,
-    U_JG_WAW,
-    U_JG_YEH,
-    U_JG_YEH_BARREE,
-    U_JG_YEH_WITH_TAIL,
-    U_JG_YUDH,
-    U_JG_YUDH_HE,
-    U_JG_ZAIN,
-    U_JG_FE,        /**< @stable ICU 2.6 */
-    U_JG_KHAPH,     /**< @stable ICU 2.6 */
-    U_JG_ZHAIN,     /**< @stable ICU 2.6 */
-    U_JG_BURUSHASKI_YEH_BARREE, /**< @stable ICU 4.0 */
-    U_JG_FARSI_YEH, /**< @stable ICU 4.4 */
-    U_JG_NYA,       /**< @stable ICU 4.4 */
-    U_JG_ROHINGYA_YEH,  /**< @stable ICU 49 */
-    U_JG_MANICHAEAN_ALEPH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_AYIN,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_BETH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_DALETH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_DHAMEDH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_FIVE,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_GIMEL,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_HETH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_HUNDRED,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_KAPH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_LAMEDH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_MEM,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_NUN,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_ONE,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_PE,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_QOPH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_RESH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_SADHE,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_SAMEKH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_TAW,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_TEN,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_TETH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_THAMEDH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_TWENTY,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_WAW,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_YODH,  /**< @stable ICU 54 */
-    U_JG_MANICHAEAN_ZAYIN,  /**< @stable ICU 54 */
-    U_JG_STRAIGHT_WAW,  /**< @stable ICU 54 */
-    U_JG_COUNT
-} UJoiningGroup;
-
-/**
- * Grapheme Cluster Break constants.
- *
- * @see UCHAR_GRAPHEME_CLUSTER_BREAK
- * @stable ICU 3.4
- */
-typedef enum UGraphemeClusterBreak {
-    /*
-     * Note: UGraphemeClusterBreak constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_GCB_<Unicode Grapheme_Cluster_Break value name>
-     */
-
-    U_GCB_OTHER = 0,            /*[XX]*/
-    U_GCB_CONTROL = 1,          /*[CN]*/
-    U_GCB_CR = 2,               /*[CR]*/
-    U_GCB_EXTEND = 3,           /*[EX]*/
-    U_GCB_L = 4,                /*[L]*/
-    U_GCB_LF = 5,               /*[LF]*/
-    U_GCB_LV = 6,               /*[LV]*/
-    U_GCB_LVT = 7,              /*[LVT]*/
-    U_GCB_T = 8,                /*[T]*/
-    U_GCB_V = 9,                /*[V]*/
-    U_GCB_SPACING_MARK = 10,    /*[SM]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
-    U_GCB_PREPEND = 11,         /*[PP]*/
-    U_GCB_REGIONAL_INDICATOR = 12,  /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
-    U_GCB_COUNT = 13
-} UGraphemeClusterBreak;
-
-/**
- * Word Break constants.
- * (UWordBreak is a pre-existing enum type in ubrk.h for word break status tags.)
- *
- * @see UCHAR_WORD_BREAK
- * @stable ICU 3.4
- */
-typedef enum UWordBreakValues {
-    /*
-     * Note: UWordBreakValues constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_WB_<Unicode Word_Break value name>
-     */
-
-    U_WB_OTHER = 0,             /*[XX]*/
-    U_WB_ALETTER = 1,           /*[LE]*/
-    U_WB_FORMAT = 2,            /*[FO]*/
-    U_WB_KATAKANA = 3,          /*[KA]*/
-    U_WB_MIDLETTER = 4,         /*[ML]*/
-    U_WB_MIDNUM = 5,            /*[MN]*/
-    U_WB_NUMERIC = 6,           /*[NU]*/
-    U_WB_EXTENDNUMLET = 7,      /*[EX]*/
-    U_WB_CR = 8,                /*[CR]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
-    U_WB_EXTEND = 9,            /*[Extend]*/
-    U_WB_LF = 10,               /*[LF]*/
-    U_WB_MIDNUMLET =11,         /*[MB]*/
-    U_WB_NEWLINE =12,           /*[NL]*/
-    U_WB_REGIONAL_INDICATOR = 13,   /*[RI]*/ /* new in Unicode 6.2/ICU 50 */
-    U_WB_HEBREW_LETTER = 14,    /*[HL]*/ /* from here on: new in Unicode 6.3/ICU 52 */
-    U_WB_SINGLE_QUOTE = 15,     /*[SQ]*/
-    U_WB_DOUBLE_QUOTE = 16,     /*[DQ]*/
-    U_WB_COUNT = 17
-} UWordBreakValues;
-
-/**
- * Sentence Break constants.
- *
- * @see UCHAR_SENTENCE_BREAK
- * @stable ICU 3.4
- */
-typedef enum USentenceBreak {
-    /*
-     * Note: USentenceBreak constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_SB_<Unicode Sentence_Break value name>
-     */
-
-    U_SB_OTHER = 0,             /*[XX]*/
-    U_SB_ATERM = 1,             /*[AT]*/
-    U_SB_CLOSE = 2,             /*[CL]*/
-    U_SB_FORMAT = 3,            /*[FO]*/
-    U_SB_LOWER = 4,             /*[LO]*/
-    U_SB_NUMERIC = 5,           /*[NU]*/
-    U_SB_OLETTER = 6,           /*[LE]*/
-    U_SB_SEP = 7,               /*[SE]*/
-    U_SB_SP = 8,                /*[SP]*/
-    U_SB_STERM = 9,             /*[ST]*/
-    U_SB_UPPER = 10,            /*[UP]*/
-    U_SB_CR = 11,               /*[CR]*/ /* from here on: new in Unicode 5.1/ICU 4.0 */
-    U_SB_EXTEND = 12,           /*[EX]*/
-    U_SB_LF = 13,               /*[LF]*/
-    U_SB_SCONTINUE = 14,        /*[SC]*/
-    U_SB_COUNT = 15
-} USentenceBreak;
-
-/**
- * Line Break constants.
- *
- * @see UCHAR_LINE_BREAK
- * @stable ICU 2.2
- */
-typedef enum ULineBreak {
-    /*
-     * Note: ULineBreak constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_LB_<Unicode Line_Break value name>
-     */
-
-    U_LB_UNKNOWN = 0,           /*[XX]*/
-    U_LB_AMBIGUOUS = 1,         /*[AI]*/
-    U_LB_ALPHABETIC = 2,        /*[AL]*/
-    U_LB_BREAK_BOTH = 3,        /*[B2]*/
-    U_LB_BREAK_AFTER = 4,       /*[BA]*/
-    U_LB_BREAK_BEFORE = 5,      /*[BB]*/
-    U_LB_MANDATORY_BREAK = 6,   /*[BK]*/
-    U_LB_CONTINGENT_BREAK = 7,  /*[CB]*/
-    U_LB_CLOSE_PUNCTUATION = 8, /*[CL]*/
-    U_LB_COMBINING_MARK = 9,    /*[CM]*/
-    U_LB_CARRIAGE_RETURN = 10,   /*[CR]*/
-    U_LB_EXCLAMATION = 11,       /*[EX]*/
-    U_LB_GLUE = 12,              /*[GL]*/
-    U_LB_HYPHEN = 13,            /*[HY]*/
-    U_LB_IDEOGRAPHIC = 14,       /*[ID]*/
-    /** Renamed from the misspelled "inseperable" in Unicode 4.0.1/ICU 3.0 @stable ICU 3.0 */
-    U_LB_INSEPARABLE = 15,       /*[IN]*/
-    U_LB_INSEPERABLE = U_LB_INSEPARABLE,
-    U_LB_INFIX_NUMERIC = 16,     /*[IS]*/
-    U_LB_LINE_FEED = 17,         /*[LF]*/
-    U_LB_NONSTARTER = 18,        /*[NS]*/
-    U_LB_NUMERIC = 19,           /*[NU]*/
-    U_LB_OPEN_PUNCTUATION = 20,  /*[OP]*/
-    U_LB_POSTFIX_NUMERIC = 21,   /*[PO]*/
-    U_LB_PREFIX_NUMERIC = 22,    /*[PR]*/
-    U_LB_QUOTATION = 23,         /*[QU]*/
-    U_LB_COMPLEX_CONTEXT = 24,   /*[SA]*/
-    U_LB_SURROGATE = 25,         /*[SG]*/
-    U_LB_SPACE = 26,             /*[SP]*/
-    U_LB_BREAK_SYMBOLS = 27,     /*[SY]*/
-    U_LB_ZWSPACE = 28,           /*[ZW]*/
-    U_LB_NEXT_LINE = 29,         /*[NL]*/ /* from here on: new in Unicode 4/ICU 2.6 */
-    U_LB_WORD_JOINER = 30,       /*[WJ]*/
-    U_LB_H2 = 31,                /*[H2]*/ /* from here on: new in Unicode 4.1/ICU 3.4 */
-    U_LB_H3 = 32,                /*[H3]*/
-    U_LB_JL = 33,                /*[JL]*/
-    U_LB_JT = 34,                /*[JT]*/
-    U_LB_JV = 35,                /*[JV]*/
-    U_LB_CLOSE_PARENTHESIS = 36, /*[CP]*/ /* new in Unicode 5.2/ICU 4.4 */
-    U_LB_CONDITIONAL_JAPANESE_STARTER = 37,/*[CJ]*/ /* new in Unicode 6.1/ICU 49 */
-    U_LB_HEBREW_LETTER = 38,     /*[HL]*/ /* new in Unicode 6.1/ICU 49 */
-    U_LB_REGIONAL_INDICATOR = 39,/*[RI]*/ /* new in Unicode 6.2/ICU 50 */
-    U_LB_COUNT = 40
-} ULineBreak;
-
-/**
- * Numeric Type constants.
- *
- * @see UCHAR_NUMERIC_TYPE
- * @stable ICU 2.2
- */
-typedef enum UNumericType {
-    /*
-     * Note: UNumericType constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_NT_<Unicode Numeric_Type value name>
-     */
-
-    U_NT_NONE,              /*[None]*/
-    U_NT_DECIMAL,           /*[de]*/
-    U_NT_DIGIT,             /*[di]*/
-    U_NT_NUMERIC,           /*[nu]*/
-    U_NT_COUNT
-} UNumericType;
-
-/**
- * Hangul Syllable Type constants.
- *
- * @see UCHAR_HANGUL_SYLLABLE_TYPE
- * @stable ICU 2.6
- */
-typedef enum UHangulSyllableType {
-    /*
-     * Note: UHangulSyllableType constants are parsed by preparseucd.py.
-     * It matches lines like
-     *     U_HST_<Unicode Hangul_Syllable_Type value name>
-     */
-
-    U_HST_NOT_APPLICABLE,   /*[NA]*/
-    U_HST_LEADING_JAMO,     /*[L]*/
-    U_HST_VOWEL_JAMO,       /*[V]*/
-    U_HST_TRAILING_JAMO,    /*[T]*/
-    U_HST_LV_SYLLABLE,      /*[LV]*/
-    U_HST_LVT_SYLLABLE,     /*[LVT]*/
-    U_HST_COUNT
-} UHangulSyllableType;
-
-/**
- * Check a binary Unicode property for a code point.
- *
- * Unicode, especially in version 3.2, defines many more properties than the
- * original set in UnicodeData.txt.
- *
- * The properties APIs are intended to reflect Unicode properties as defined
- * in the Unicode Character Database (UCD) and Unicode Technical Reports (UTR).
- * For details about the properties see http://www.unicode.org/ucd/ .
- * For names of Unicode properties see the UCD file PropertyAliases.txt.
- *
- * Important: If ICU is built with UCD files from Unicode versions below 3.2,
- * then properties marked with "new in Unicode 3.2" are not or not fully available.
- *
- * @param c Code point to test.
- * @param which UProperty selector constant, identifies which binary property to check.
- *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT.
- * @return TRUE or FALSE according to the binary Unicode property value for c.
- *         Also FALSE if 'which' is out of bounds or if the Unicode version
- *         does not have data for the property at all, or not for this code point.
- *
- * @see UProperty
- * @see u_getIntPropertyValue
- * @see u_getUnicodeVersion
- * @stable ICU 2.1
- */
-U_STABLE UBool U_EXPORT2
-u_hasBinaryProperty(UChar32 c, UProperty which);
-
-/**
- * Check if a code point has the Alphabetic Unicode property.
- * Same as u_hasBinaryProperty(c, UCHAR_ALPHABETIC).
- * This is different from u_isalpha!
- * @param c Code point to test
- * @return true if the code point has the Alphabetic Unicode property, false otherwise
- *
- * @see UCHAR_ALPHABETIC
- * @see u_isalpha
- * @see u_hasBinaryProperty
- * @stable ICU 2.1
- */
-U_STABLE UBool U_EXPORT2
-u_isUAlphabetic(UChar32 c);
-
-/**
- * Check if a code point has the Lowercase Unicode property.
- * Same as u_hasBinaryProperty(c, UCHAR_LOWERCASE).
- * This is different from u_islower!
- * @param c Code point to test
- * @return true if the code point has the Lowercase Unicode property, false otherwise
- *
- * @see UCHAR_LOWERCASE
- * @see u_islower
- * @see u_hasBinaryProperty
- * @stable ICU 2.1
- */
-U_STABLE UBool U_EXPORT2
-u_isULowercase(UChar32 c);
-
-/**
- * Check if a code point has the Uppercase Unicode property.
- * Same as u_hasBinaryProperty(c, UCHAR_UPPERCASE).
- * This is different from u_isupper!
- * @param c Code point to test
- * @return true if the code point has the Uppercase Unicode property, false otherwise
- *
- * @see UCHAR_UPPERCASE
- * @see u_isupper
- * @see u_hasBinaryProperty
- * @stable ICU 2.1
- */
-U_STABLE UBool U_EXPORT2
-u_isUUppercase(UChar32 c);
-
-/**
- * Check if a code point has the White_Space Unicode property.
- * Same as u_hasBinaryProperty(c, UCHAR_WHITE_SPACE).
- * This is different from both u_isspace and u_isWhitespace!
- *
- * Note: There are several ICU whitespace functions; please see the uchar.h
- * file documentation for a detailed comparison.
- *
- * @param c Code point to test
- * @return true if the code point has the White_Space Unicode property, false otherwise.
- *
- * @see UCHAR_WHITE_SPACE
- * @see u_isWhitespace
- * @see u_isspace
- * @see u_isJavaSpaceChar
- * @see u_hasBinaryProperty
- * @stable ICU 2.1
- */
-U_STABLE UBool U_EXPORT2
-u_isUWhiteSpace(UChar32 c);
-
-/**
- * Get the property value for an enumerated or integer Unicode property for a code point.
- * Also returns binary and mask property values.
- *
- * Unicode, especially in version 3.2, defines many more properties than the
- * original set in UnicodeData.txt.
- *
- * The properties APIs are intended to reflect Unicode properties as defined
- * in the Unicode Character Database (UCD) and Unicode Technical Reports (UTR).
- * For details about the properties see http://www.unicode.org/ .
- * For names of Unicode properties see the UCD file PropertyAliases.txt.
- *
- * Sample usage:
- * UEastAsianWidth ea=(UEastAsianWidth)u_getIntPropertyValue(c, UCHAR_EAST_ASIAN_WIDTH);
- * UBool b=(UBool)u_getIntPropertyValue(c, UCHAR_IDEOGRAPHIC);
- *
- * @param c Code point to test.
- * @param which UProperty selector constant, identifies which property to check.
- *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT
- *        or UCHAR_INT_START<=which<UCHAR_INT_LIMIT
- *        or UCHAR_MASK_START<=which<UCHAR_MASK_LIMIT.
- * @return Numeric value that is directly the property value or,
- *         for enumerated properties, corresponds to the numeric value of the enumerated
- *         constant of the respective property value enumeration type
- *         (cast to enum type if necessary).
- *         Returns 0 or 1 (for FALSE/TRUE) for binary Unicode properties.
- *         Returns a bit-mask for mask properties.
- *         Returns 0 if 'which' is out of bounds or if the Unicode version
- *         does not have data for the property at all, or not for this code point.
- *
- * @see UProperty
- * @see u_hasBinaryProperty
- * @see u_getIntPropertyMinValue
- * @see u_getIntPropertyMaxValue
- * @see u_getUnicodeVersion
- * @stable ICU 2.2
- */
-U_STABLE int32_t U_EXPORT2
-u_getIntPropertyValue(UChar32 c, UProperty which);
-
-/**
- * Get the minimum value for an enumerated/integer/binary Unicode property.
- * Can be used together with u_getIntPropertyMaxValue
- * to allocate arrays of UnicodeSet or similar.
- *
- * @param which UProperty selector constant, identifies which binary property to check.
- *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT
- *        or UCHAR_INT_START<=which<UCHAR_INT_LIMIT.
- * @return Minimum value returned by u_getIntPropertyValue for a Unicode property.
- *         0 if the property selector is out of range.
- *
- * @see UProperty
- * @see u_hasBinaryProperty
- * @see u_getUnicodeVersion
- * @see u_getIntPropertyMaxValue
- * @see u_getIntPropertyValue
- * @stable ICU 2.2
- */
-U_STABLE int32_t U_EXPORT2
-u_getIntPropertyMinValue(UProperty which);
-
-/**
- * Get the maximum value for an enumerated/integer/binary Unicode property.
- * Can be used together with u_getIntPropertyMinValue
- * to allocate arrays of UnicodeSet or similar.
- *
- * Examples for min/max values (for Unicode 3.2):
- *
- * - UCHAR_BIDI_CLASS:    0/18 (U_LEFT_TO_RIGHT/U_BOUNDARY_NEUTRAL)
- * - UCHAR_SCRIPT:        0/45 (USCRIPT_COMMON/USCRIPT_TAGBANWA)
- * - UCHAR_IDEOGRAPHIC:   0/1  (FALSE/TRUE)
- *
- * For undefined UProperty constant values, min/max values will be 0/-1.
- *
- * @param which UProperty selector constant, identifies which binary property to check.
- *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT
- *        or UCHAR_INT_START<=which<UCHAR_INT_LIMIT.
- * @return Maximum value returned by u_getIntPropertyValue for a Unicode property.
- *         <=0 if the property selector is out of range.
- *
- * @see UProperty
- * @see u_hasBinaryProperty
- * @see u_getUnicodeVersion
- * @see u_getIntPropertyMaxValue
- * @see u_getIntPropertyValue
- * @stable ICU 2.2
- */
-U_STABLE int32_t U_EXPORT2
-u_getIntPropertyMaxValue(UProperty which);
-
-/**
- * Get the numeric value for a Unicode code point as defined in the
- * Unicode Character Database.
- *
- * A "double" return type is necessary because
- * some numeric values are fractions, negative, or too large for int32_t.
- *
- * For characters without any numeric values in the Unicode Character Database,
- * this function will return U_NO_NUMERIC_VALUE.
- * Note: This is different from the Unicode Standard which specifies NaN as the default value.
- * (NaN is not available on all platforms.)
- *
- * Similar to java.lang.Character.getNumericValue(), but u_getNumericValue()
- * also supports negative values, large values, and fractions,
- * while Java's getNumericValue() returns values 10..35 for ASCII letters.
- *
- * @param c Code point to get the numeric value for.
- * @return Numeric value of c, or U_NO_NUMERIC_VALUE if none is defined.
- *
- * @see U_NO_NUMERIC_VALUE
- * @stable ICU 2.2
- */
-U_STABLE double U_EXPORT2
-u_getNumericValue(UChar32 c);
-
-/**
- * Special value that is returned by u_getNumericValue when
- * no numeric value is defined for a code point.
- *
- * @see u_getNumericValue
- * @stable ICU 2.2
- */
-#define U_NO_NUMERIC_VALUE ((double)-123456789.)
-
-/**
- * Determines whether the specified code point has the general category "Ll"
- * (lowercase letter).
- *
- * Same as java.lang.Character.isLowerCase().
- *
- * This misses some characters that are also lowercase but
- * have a different general category value.
- * In order to include those, use UCHAR_LOWERCASE.
- *
- * In addition to being equivalent to a Java function, this also serves
- * as a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is an Ll lowercase letter
- *
- * @see UCHAR_LOWERCASE
- * @see u_isupper
- * @see u_istitle
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_islower(UChar32 c);
-
-/**
- * Determines whether the specified code point has the general category "Lu"
- * (uppercase letter).
- *
- * Same as java.lang.Character.isUpperCase().
- *
- * This misses some characters that are also uppercase but
- * have a different general category value.
- * In order to include those, use UCHAR_UPPERCASE.
- *
- * In addition to being equivalent to a Java function, this also serves
- * as a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is an Lu uppercase letter
- *
- * @see UCHAR_UPPERCASE
- * @see u_islower
- * @see u_istitle
- * @see u_tolower
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isupper(UChar32 c);
-
-/**
- * Determines whether the specified code point is a titlecase letter.
- * True for general category "Lt" (titlecase letter).
- *
- * Same as java.lang.Character.isTitleCase().
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is an Lt titlecase letter
- *
- * @see u_isupper
- * @see u_islower
- * @see u_totitle
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_istitle(UChar32 c);
-
-/**
- * Determines whether the specified code point is a digit character according to Java.
- * True for characters with general category "Nd" (decimal digit numbers).
- * Beginning with Unicode 4, this is the same as
- * testing for the Numeric_Type of Decimal.
- *
- * Same as java.lang.Character.isDigit().
- *
- * In addition to being equivalent to a Java function, this also serves
- * as a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a digit character according to Character.isDigit()
- *
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isdigit(UChar32 c);
-
-/**
- * Determines whether the specified code point is a letter character.
- * True for general categories "L" (letters).
- *
- * Same as java.lang.Character.isLetter().
- *
- * In addition to being equivalent to a Java function, this also serves
- * as a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a letter character
- *
- * @see u_isdigit
- * @see u_isalnum
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isalpha(UChar32 c);
-
-/**
- * Determines whether the specified code point is an alphanumeric character
- * (letter or digit) according to Java.
- * True for characters with general categories
- * "L" (letters) and "Nd" (decimal digit numbers).
- *
- * Same as java.lang.Character.isLetterOrDigit().
- *
- * In addition to being equivalent to a Java function, this also serves
- * as a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is an alphanumeric character according to Character.isLetterOrDigit()
- *
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isalnum(UChar32 c);
-
-/**
- * Determines whether the specified code point is a hexadecimal digit.
- * This is equivalent to u_digit(c, 16)>=0.
- * True for characters with general category "Nd" (decimal digit numbers)
- * as well as Latin letters a-f and A-F in both ASCII and Fullwidth ASCII.
- * (That is, for letters with code points
- * 0041..0046, 0061..0066, FF21..FF26, FF41..FF46.)
- *
- * In order to narrow the definition of hexadecimal digits to only ASCII
- * characters, use (c<=0x7f && u_isxdigit(c)).
- *
- * This is a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a hexadecimal digit
- *
- * @stable ICU 2.6
- */
-U_STABLE UBool U_EXPORT2
-u_isxdigit(UChar32 c);
-
-/**
- * Determines whether the specified code point is a punctuation character.
- * True for characters with general categories "P" (punctuation).
- *
- * This is a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a punctuation character
- *
- * @stable ICU 2.6
- */
-U_STABLE UBool U_EXPORT2
-u_ispunct(UChar32 c);
-
-/**
- * Determines whether the specified code point is a "graphic" character
- * (printable, excluding spaces).
- * TRUE for all characters except those with general categories
- * "Cc" (control codes), "Cf" (format controls), "Cs" (surrogates),
- * "Cn" (unassigned), and "Z" (separators).
- *
- * This is a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a "graphic" character
- *
- * @stable ICU 2.6
- */
-U_STABLE UBool U_EXPORT2
-u_isgraph(UChar32 c);
-
-/**
- * Determines whether the specified code point is a "blank" or "horizontal space",
- * a character that visibly separates words on a line.
- * The following are equivalent definitions:
- *
- * TRUE for Unicode White_Space characters except for "vertical space controls"
- * where "vertical space controls" are the following characters:
- * U+000A (LF) U+000B (VT) U+000C (FF) U+000D (CR) U+0085 (NEL) U+2028 (LS) U+2029 (PS)
- *
- * same as
- *
- * TRUE for U+0009 (TAB) and characters with general category "Zs" (space separators)
- * except Zero Width Space (ZWSP, U+200B).
- *
- * Note: There are several ICU whitespace functions; please see the uchar.h
- * file documentation for a detailed comparison.
- *
- * This is a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a "blank"
- *
- * @stable ICU 2.6
- */
-U_STABLE UBool U_EXPORT2
-u_isblank(UChar32 c);
-
-/**
- * Determines whether the specified code point is "defined",
- * which usually means that it is assigned a character.
- * True for general categories other than "Cn" (other, not assigned),
- * i.e., true for all code points mentioned in UnicodeData.txt.
- *
- * Note that non-character code points (e.g., U+FDD0) are not "defined"
- * (they are Cn), but surrogate code points are "defined" (Cs).
- *
- * Same as java.lang.Character.isDefined().
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is assigned a character
- *
- * @see u_isdigit
- * @see u_isalpha
- * @see u_isalnum
- * @see u_isupper
- * @see u_islower
- * @see u_istitle
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isdefined(UChar32 c);
-
-/**
- * Determines if the specified character is a space character or not.
- *
- * Note: There are several ICU whitespace functions; please see the uchar.h
- * file documentation for a detailed comparison.
- *
- * This is a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c    the character to be tested
- * @return  true if the character is a space character; false otherwise.
- *
- * @see u_isJavaSpaceChar
- * @see u_isWhitespace
- * @see u_isUWhiteSpace
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isspace(UChar32 c);
-
-/**
- * Determine if the specified code point is a space character according to Java.
- * True for characters with general categories "Z" (separators),
- * which does not include control codes (e.g., TAB or Line Feed).
- *
- * Same as java.lang.Character.isSpaceChar().
- *
- * Note: There are several ICU whitespace functions; please see the uchar.h
- * file documentation for a detailed comparison.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a space character according to Character.isSpaceChar()
- *
- * @see u_isspace
- * @see u_isWhitespace
- * @see u_isUWhiteSpace
- * @stable ICU 2.6
- */
-U_STABLE UBool U_EXPORT2
-u_isJavaSpaceChar(UChar32 c);
-
-/**
- * Determines if the specified code point is a whitespace character according to Java/ICU.
- * A character is considered to be a Java whitespace character if and only
- * if it satisfies one of the following criteria:
- *
- * - It is a Unicode Separator character (categories "Z" = "Zs" or "Zl" or "Zp"), but is not
- *      also a non-breaking space (U+00A0 NBSP or U+2007 Figure Space or U+202F Narrow NBSP).
- * - It is U+0009 HORIZONTAL TABULATION.
- * - It is U+000A LINE FEED.
- * - It is U+000B VERTICAL TABULATION.
- * - It is U+000C FORM FEED.
- * - It is U+000D CARRIAGE RETURN.
- * - It is U+001C FILE SEPARATOR.
- * - It is U+001D GROUP SEPARATOR.
- * - It is U+001E RECORD SEPARATOR.
- * - It is U+001F UNIT SEPARATOR.
- *
- * This API tries to sync with the semantics of Java's
- * java.lang.Character.isWhitespace(), but it may not return
- * the exact same results because of the Unicode version
- * difference.
- *
- * Note: Unicode 4.0.1 changed U+200B ZERO WIDTH SPACE from a Space Separator (Zs)
- * to a Format Control (Cf). Since then, isWhitespace(0x200b) returns false.
- * See http://www.unicode.org/versions/Unicode4.0.1/
- *
- * Note: There are several ICU whitespace functions; please see the uchar.h
- * file documentation for a detailed comparison.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a whitespace character according to Java/ICU
- *
- * @see u_isspace
- * @see u_isJavaSpaceChar
- * @see u_isUWhiteSpace
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isWhitespace(UChar32 c);
-
-/**
- * Determines whether the specified code point is a control character
- * (as defined by this function).
- * A control character is one of the following:
- * - ISO 8-bit control character (U+0000..U+001f and U+007f..U+009f)
- * - U_CONTROL_CHAR (Cc)
- * - U_FORMAT_CHAR (Cf)
- * - U_LINE_SEPARATOR (Zl)
- * - U_PARAGRAPH_SEPARATOR (Zp)
- *
- * This is a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a control character
- *
- * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
- * @see u_isprint
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_iscntrl(UChar32 c);
-
-/**
- * Determines whether the specified code point is an ISO control code.
- * True for U+0000..U+001f and U+007f..U+009f (general category "Cc").
- *
- * Same as java.lang.Character.isISOControl().
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is an ISO control code
- *
- * @see u_iscntrl
- * @stable ICU 2.6
- */
-U_STABLE UBool U_EXPORT2
-u_isISOControl(UChar32 c);
-
-/**
- * Determines whether the specified code point is a printable character.
- * True for general categories <em>other</em> than "C" (controls).
- *
- * This is a C/POSIX migration function.
- * See the comments about C/POSIX character classification functions in the
- * documentation at the top of this header file.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a printable character
- *
- * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
- * @see u_iscntrl
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isprint(UChar32 c);
-
-/**
- * Determines whether the specified code point is a base character.
- * True for general categories "L" (letters), "N" (numbers),
- * "Mc" (spacing combining marks), and "Me" (enclosing marks).
- *
- * Note that this is different from the Unicode definition in
- * chapter 3.5, conformance clause D13,
- * which defines base characters to be all characters (not Cn)
- * that do not graphically combine with preceding characters (M)
- * and that are neither control (Cc) or format (Cf) characters.
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is a base character according to this function
- *
- * @see u_isalpha
- * @see u_isdigit
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isbase(UChar32 c);
-
-/**
- * Returns the bidirectional category value for the code point,
- * which is used in the Unicode bidirectional algorithm
- * (UAX #9 http://www.unicode.org/reports/tr9/).
- * Note that some <em>unassigned</em> code points have bidi values
- * of R or AL because they are in blocks that are reserved
- * for Right-To-Left scripts.
- *
- * Same as java.lang.Character.getDirectionality()
- *
- * @param c the code point to be tested
- * @return the bidirectional category (UCharDirection) value
- *
- * @see UCharDirection
- * @stable ICU 2.0
- */
-U_STABLE UCharDirection U_EXPORT2
-u_charDirection(UChar32 c);
-
-/**
- * Determines whether the code point has the Bidi_Mirrored property.
- * This property is set for characters that are commonly used in
- * Right-To-Left contexts and need to be displayed with a "mirrored"
- * glyph.
- *
- * Same as java.lang.Character.isMirrored().
- * Same as UCHAR_BIDI_MIRRORED
- *
- * @param c the code point to be tested
- * @return TRUE if the character has the Bidi_Mirrored property
- *
- * @see UCHAR_BIDI_MIRRORED
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isMirrored(UChar32 c);
-
-/**
- * Maps the specified character to a "mirror-image" character.
- * For characters with the Bidi_Mirrored property, implementations
- * sometimes need a "poor man's" mapping to another Unicode
- * character (code point) such that the default glyph may serve
- * as the mirror-image of the default glyph of the specified
- * character. This is useful for text conversion to and from
- * codepages with visual order, and for displays without glyph
- * selection capabilities.
- *
- * @param c the code point to be mapped
- * @return another Unicode code point that may serve as a mirror-image
- *         substitute, or c itself if there is no such mapping or c
- *         does not have the Bidi_Mirrored property
- *
- * @see UCHAR_BIDI_MIRRORED
- * @see u_isMirrored
- * @stable ICU 2.0
- */
-U_STABLE UChar32 U_EXPORT2
-u_charMirror(UChar32 c);
-
-/**
- * Maps the specified character to its paired bracket character.
- * For Bidi_Paired_Bracket_Type!=None, this is the same as u_charMirror().
- * Otherwise c itself is returned.
- * See http://www.unicode.org/reports/tr9/
- *
- * @param c the code point to be mapped
- * @return the paired bracket code point,
- *         or c itself if there is no such mapping
- *         (Bidi_Paired_Bracket_Type=None)
- *
- * @see UCHAR_BIDI_PAIRED_BRACKET
- * @see UCHAR_BIDI_PAIRED_BRACKET_TYPE
- * @see u_charMirror
- * @stable ICU 52
- */
-U_STABLE UChar32 U_EXPORT2
-u_getBidiPairedBracket(UChar32 c);
-
-/**
- * Returns the general category value for the code point.
- *
- * Same as java.lang.Character.getType().
- *
- * @param c the code point to be tested
- * @return the general category (UCharCategory) value
- *
- * @see UCharCategory
- * @stable ICU 2.0
- */
-U_STABLE int8_t U_EXPORT2
-u_charType(UChar32 c);
-
-/**
- * Get a single-bit bit set for the general category of a character.
- * This bit set can be compared bitwise with U_GC_SM_MASK, U_GC_L_MASK, etc.
- * Same as U_MASK(u_charType(c)).
- *
- * @param c the code point to be tested
- * @return a single-bit mask corresponding to the general category (UCharCategory) value
- *
- * @see u_charType
- * @see UCharCategory
- * @see U_GC_CN_MASK
- * @stable ICU 2.1
- */
-#define U_GET_GC_MASK(c) U_MASK(u_charType(c))
-
-/**
- * Callback from u_enumCharTypes(), is called for each contiguous range
- * of code points c (where start<=c<limit)
- * with the same Unicode general category ("character type").
- *
- * The callback function can stop the enumeration by returning FALSE.
- *
- * @param context an opaque pointer, as passed into utrie_enum()
- * @param start the first code point in a contiguous range with value
- * @param limit one past the last code point in a contiguous range with value
- * @param type the general category for all code points in [start..limit[
- * @return FALSE to stop the enumeration
- *
- * @stable ICU 2.1
- * @see UCharCategory
- * @see u_enumCharTypes
- */
-typedef UBool U_CALLCONV
-UCharEnumTypeRange(const void *context, UChar32 start, UChar32 limit, UCharCategory type);
-
-/**
- * Enumerate efficiently all code points with their Unicode general categories.
- *
- * This is useful for building data structures (e.g., UnicodeSet's),
- * for enumerating all assigned code points (type!=U_UNASSIGNED), etc.
- *
- * For each contiguous range of code points with a given general category ("character type"),
- * the UCharEnumTypeRange function is called.
- * Adjacent ranges have different types.
- * The Unicode Standard guarantees that the numeric value of the type is 0..31.
- *
- * @param enumRange a pointer to a function that is called for each contiguous range
- *                  of code points with the same general category
- * @param context an opaque pointer that is passed on to the callback function
- *
- * @stable ICU 2.1
- * @see UCharCategory
- * @see UCharEnumTypeRange
- */
-U_STABLE void U_EXPORT2
-u_enumCharTypes(UCharEnumTypeRange *enumRange, const void *context);
-
-#if !UCONFIG_NO_NORMALIZATION
-
-/**
- * Returns the combining class of the code point as specified in UnicodeData.txt.
- *
- * @param c the code point of the character
- * @return the combining class of the character
- * @stable ICU 2.0
- */
-U_STABLE uint8_t U_EXPORT2
-u_getCombiningClass(UChar32 c);
-
-#endif
-
-/**
- * Returns the decimal digit value of a decimal digit character.
- * Such characters have the general category "Nd" (decimal digit numbers)
- * and a Numeric_Type of Decimal.
- *
- * Unlike ICU releases before 2.6, no digit values are returned for any
- * Han characters because Han number characters are often used with a special
- * Chinese-style number format (with characters for powers of 10 in between)
- * instead of in decimal-positional notation.
- * Unicode 4 explicitly assigns Han number characters the Numeric_Type
- * Numeric instead of Decimal.
- * See Jitterbug 1483 for more details.
- *
- * Use u_getIntPropertyValue(c, UCHAR_NUMERIC_TYPE) and u_getNumericValue()
- * for complete numeric Unicode properties.
- *
- * @param c the code point for which to get the decimal digit value
- * @return the decimal digit value of c,
- *         or -1 if c is not a decimal digit character
- *
- * @see u_getNumericValue
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-u_charDigitValue(UChar32 c);
-
-/**
- * Returns the Unicode allocation block that contains the character.
- *
- * @param c the code point to be tested
- * @return the block value (UBlockCode) for c
- *
- * @see UBlockCode
- * @stable ICU 2.0
- */
-U_STABLE UBlockCode U_EXPORT2
-ublock_getCode(UChar32 c);
-
-/**
- * Retrieve the name of a Unicode character.
- * Depending on <code>nameChoice</code>, the character name written
- * into the buffer is the "modern" name or the name that was defined
- * in Unicode version 1.0.
- * The name contains only "invariant" characters
- * like A-Z, 0-9, space, and '-'.
- * Unicode 1.0 names are only retrieved if they are different from the modern
- * names and if the data file contains the data for them. gennames may or may
- * not be called with a command line option to include 1.0 names in unames.dat.
- *
- * @param code The character (code point) for which to get the name.
- *             It must be <code>0<=code<=0x10ffff</code>.
- * @param nameChoice Selector for which name to get.
- * @param buffer Destination address for copying the name.
- *               The name will always be zero-terminated.
- *               If there is no name, then the buffer will be set to the empty string.
- * @param bufferLength <code>==sizeof(buffer)</code>
- * @param pErrorCode Pointer to a UErrorCode variable;
- *        check for <code>U_SUCCESS()</code> after <code>u_charName()</code>
- *        returns.
- * @return The length of the name, or 0 if there is no name for this character.
- *         If the bufferLength is less than or equal to the length, then the buffer
- *         contains the truncated name and the returned length indicates the full
- *         length of the name.
- *         The length does not include the zero-termination.
- *
- * @see UCharNameChoice
- * @see u_charFromName
- * @see u_enumCharNames
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-u_charName(UChar32 code, UCharNameChoice nameChoice,
-           char *buffer, int32_t bufferLength,
-           UErrorCode *pErrorCode);
-
-#ifndef U_HIDE_DEPRECATED_API 
-/**
- * Returns an empty string.
- * Used to return the ISO 10646 comment for a character.
- * The Unicode ISO_Comment property is deprecated and has no values.
- *
- * @param c The character (code point) for which to get the ISO comment.
- *             It must be <code>0<=c<=0x10ffff</code>.
- * @param dest Destination address for copying the comment.
- *             The comment will be zero-terminated if possible.
- *             If there is no comment, then the buffer will be set to the empty string.
- * @param destCapacity <code>==sizeof(dest)</code>
- * @param pErrorCode Pointer to a UErrorCode variable;
- *        check for <code>U_SUCCESS()</code> after <code>u_getISOComment()</code>
- *        returns.
- * @return 0
- *
- * @deprecated ICU 49
- */
-U_DEPRECATED int32_t U_EXPORT2
-u_getISOComment(UChar32 c,
-                char *dest, int32_t destCapacity,
-                UErrorCode *pErrorCode);
-#endif  /* U_HIDE_DEPRECATED_API */
-
-/**
- * Find a Unicode character by its name and return its code point value.
- * The name is matched exactly and completely.
- * If the name does not correspond to a code point, <i>pErrorCode</i>
- * is set to <code>U_INVALID_CHAR_FOUND</code>.
- * A Unicode 1.0 name is matched only if it differs from the modern name.
- * Unicode names are all uppercase. Extended names are lowercase followed
- * by an uppercase hexadecimal number, and within angle brackets.
- *
- * @param nameChoice Selector for which name to match.
- * @param name The name to match.
- * @param pErrorCode Pointer to a UErrorCode variable
- * @return The Unicode value of the code point with the given name,
- *         or an undefined value if there is no such code point.
- *
- * @see UCharNameChoice
- * @see u_charName
- * @see u_enumCharNames
- * @stable ICU 1.7
- */
-U_STABLE UChar32 U_EXPORT2
-u_charFromName(UCharNameChoice nameChoice,
-               const char *name,
-               UErrorCode *pErrorCode);
-
-/**
- * Type of a callback function for u_enumCharNames() that gets called
- * for each Unicode character with the code point value and
- * the character name.
- * If such a function returns FALSE, then the enumeration is stopped.
- *
- * @param context The context pointer that was passed to u_enumCharNames().
- * @param code The Unicode code point for the character with this name.
- * @param nameChoice Selector for which kind of names is enumerated.
- * @param name The character's name, zero-terminated.
- * @param length The length of the name.
- * @return TRUE if the enumeration should continue, FALSE to stop it.
- *
- * @see UCharNameChoice
- * @see u_enumCharNames
- * @stable ICU 1.7
- */
-typedef UBool U_CALLCONV UEnumCharNamesFn(void *context,
-                               UChar32 code,
-                               UCharNameChoice nameChoice,
-                               const char *name,
-                               int32_t length);
-
-/**
- * Enumerate all assigned Unicode characters between the start and limit
- * code points (start inclusive, limit exclusive) and call a function
- * for each, passing the code point value and the character name.
- * For Unicode 1.0 names, only those are enumerated that differ from the
- * modern names.
- *
- * @param start The first code point in the enumeration range.
- * @param limit One more than the last code point in the enumeration range
- *              (the first one after the range).
- * @param fn The function that is to be called for each character name.
- * @param context An arbitrary pointer that is passed to the function.
- * @param nameChoice Selector for which kind of names to enumerate.
- * @param pErrorCode Pointer to a UErrorCode variable
- *
- * @see UCharNameChoice
- * @see UEnumCharNamesFn
- * @see u_charName
- * @see u_charFromName
- * @stable ICU 1.7
- */
-U_STABLE void U_EXPORT2
-u_enumCharNames(UChar32 start, UChar32 limit,
-                UEnumCharNamesFn *fn,
-                void *context,
-                UCharNameChoice nameChoice,
-                UErrorCode *pErrorCode);
-
-/**
- * Return the Unicode name for a given property, as given in the
- * Unicode database file PropertyAliases.txt.
- *
- * In addition, this function maps the property
- * UCHAR_GENERAL_CATEGORY_MASK to the synthetic names "gcm" /
- * "General_Category_Mask".  These names are not in
- * PropertyAliases.txt.
- *
- * @param property UProperty selector other than UCHAR_INVALID_CODE.
- *         If out of range, NULL is returned.
- *
- * @param nameChoice selector for which name to get.  If out of range,
- *         NULL is returned.  All properties have a long name.  Most
- *         have a short name, but some do not.  Unicode allows for
- *         additional names; if present these will be returned by
- *         U_LONG_PROPERTY_NAME + i, where i=1, 2,...
- *
- * @return a pointer to the name, or NULL if either the
- *         property or the nameChoice is out of range.  If a given
- *         nameChoice returns NULL, then all larger values of
- *         nameChoice will return NULL, with one exception: if NULL is
- *         returned for U_SHORT_PROPERTY_NAME, then
- *         U_LONG_PROPERTY_NAME (and higher) may still return a
- *         non-NULL value.  The returned pointer is valid until
- *         u_cleanup() is called.
- *
- * @see UProperty
- * @see UPropertyNameChoice
- * @stable ICU 2.4
- */
-U_STABLE const char* U_EXPORT2
-u_getPropertyName(UProperty property,
-                  UPropertyNameChoice nameChoice);
-
-/**
- * Return the UProperty enum for a given property name, as specified
- * in the Unicode database file PropertyAliases.txt.  Short, long, and
- * any other variants are recognized.
- *
- * In addition, this function maps the synthetic names "gcm" /
- * "General_Category_Mask" to the property
- * UCHAR_GENERAL_CATEGORY_MASK.  These names are not in
- * PropertyAliases.txt.
- *
- * @param alias the property name to be matched.  The name is compared
- *         using "loose matching" as described in PropertyAliases.txt.
- *
- * @return a UProperty enum, or UCHAR_INVALID_CODE if the given name
- *         does not match any property.
- *
- * @see UProperty
- * @stable ICU 2.4
- */
-U_STABLE UProperty U_EXPORT2
-u_getPropertyEnum(const char* alias);
-
-/**
- * Return the Unicode name for a given property value, as given in the
- * Unicode database file PropertyValueAliases.txt.
- *
- * Note: Some of the names in PropertyValueAliases.txt can only be
- * retrieved using UCHAR_GENERAL_CATEGORY_MASK, not
- * UCHAR_GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
- * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
- * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
- *
- * @param property UProperty selector constant.
- *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT
- *        or UCHAR_INT_START<=which<UCHAR_INT_LIMIT
- *        or UCHAR_MASK_START<=which<UCHAR_MASK_LIMIT.
- *        If out of range, NULL is returned.
- *
- * @param value selector for a value for the given property.  If out
- *         of range, NULL is returned.  In general, valid values range
- *         from 0 up to some maximum.  There are a few exceptions:
- *         (1.) UCHAR_BLOCK values begin at the non-zero value
- *         UBLOCK_BASIC_LATIN.  (2.)  UCHAR_CANONICAL_COMBINING_CLASS
- *         values are not contiguous and range from 0..240.  (3.)
- *         UCHAR_GENERAL_CATEGORY_MASK values are not values of
- *         UCharCategory, but rather mask values produced by
- *         U_GET_GC_MASK().  This allows grouped categories such as
- *         [:L:] to be represented.  Mask values range
- *         non-contiguously from 1..U_GC_P_MASK.
- *
- * @param nameChoice selector for which name to get.  If out of range,
- *         NULL is returned.  All values have a long name.  Most have
- *         a short name, but some do not.  Unicode allows for
- *         additional names; if present these will be returned by
- *         U_LONG_PROPERTY_NAME + i, where i=1, 2,...
-
- * @return a pointer to the name, or NULL if either the
- *         property or the nameChoice is out of range.  If a given
- *         nameChoice returns NULL, then all larger values of
- *         nameChoice will return NULL, with one exception: if NULL is
- *         returned for U_SHORT_PROPERTY_NAME, then
- *         U_LONG_PROPERTY_NAME (and higher) may still return a
- *         non-NULL value.  The returned pointer is valid until
- *         u_cleanup() is called.
- *
- * @see UProperty
- * @see UPropertyNameChoice
- * @stable ICU 2.4
- */
-U_STABLE const char* U_EXPORT2
-u_getPropertyValueName(UProperty property,
-                       int32_t value,
-                       UPropertyNameChoice nameChoice);
-
-/**
- * Return the property value integer for a given value name, as
- * specified in the Unicode database file PropertyValueAliases.txt.
- * Short, long, and any other variants are recognized.
- *
- * Note: Some of the names in PropertyValueAliases.txt will only be
- * recognized with UCHAR_GENERAL_CATEGORY_MASK, not
- * UCHAR_GENERAL_CATEGORY.  These include: "C" / "Other", "L" /
- * "Letter", "LC" / "Cased_Letter", "M" / "Mark", "N" / "Number", "P"
- * / "Punctuation", "S" / "Symbol", and "Z" / "Separator".
- *
- * @param property UProperty selector constant.
- *        Must be UCHAR_BINARY_START<=which<UCHAR_BINARY_LIMIT
- *        or UCHAR_INT_START<=which<UCHAR_INT_LIMIT
- *        or UCHAR_MASK_START<=which<UCHAR_MASK_LIMIT.
- *        If out of range, UCHAR_INVALID_CODE is returned.
- *
- * @param alias the value name to be matched.  The name is compared
- *         using "loose matching" as described in
- *         PropertyValueAliases.txt.
- *
- * @return a value integer or UCHAR_INVALID_CODE if the given name
- *         does not match any value of the given property, or if the
- *         property is invalid.  Note: UCHAR_GENERAL_CATEGORY_MASK values
- *         are not values of UCharCategory, but rather mask values
- *         produced by U_GET_GC_MASK().  This allows grouped
- *         categories such as [:L:] to be represented.
- *
- * @see UProperty
- * @stable ICU 2.4
- */
-U_STABLE int32_t U_EXPORT2
-u_getPropertyValueEnum(UProperty property,
-                       const char* alias);
-
-/**
- * Determines if the specified character is permissible as the
- * first character in an identifier according to Unicode
- * (The Unicode Standard, Version 3.0, chapter 5.16 Identifiers).
- * True for characters with general categories "L" (letters) and "Nl" (letter numbers).
- *
- * Same as java.lang.Character.isUnicodeIdentifierStart().
- * Same as UCHAR_ID_START
- *
- * @param c the code point to be tested
- * @return TRUE if the code point may start an identifier
- *
- * @see UCHAR_ID_START
- * @see u_isalpha
- * @see u_isIDPart
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isIDStart(UChar32 c);
-
-/**
- * Determines if the specified character is permissible
- * in an identifier according to Java.
- * True for characters with general categories "L" (letters),
- * "Nl" (letter numbers), "Nd" (decimal digits),
- * "Mc" and "Mn" (combining marks), "Pc" (connecting punctuation), and
- * u_isIDIgnorable(c).
- *
- * Same as java.lang.Character.isUnicodeIdentifierPart().
- * Almost the same as Unicode's ID_Continue (UCHAR_ID_CONTINUE)
- * except that Unicode recommends to ignore Cf which is less than
- * u_isIDIgnorable(c).
- *
- * @param c the code point to be tested
- * @return TRUE if the code point may occur in an identifier according to Java
- *
- * @see UCHAR_ID_CONTINUE
- * @see u_isIDStart
- * @see u_isIDIgnorable
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isIDPart(UChar32 c);
-
-/**
- * Determines if the specified character should be regarded
- * as an ignorable character in an identifier,
- * according to Java.
- * True for characters with general category "Cf" (format controls) as well as
- * non-whitespace ISO controls
- * (U+0000..U+0008, U+000E..U+001B, U+007F..U+009F).
- *
- * Same as java.lang.Character.isIdentifierIgnorable().
- *
- * Note that Unicode just recommends to ignore Cf (format controls).
- *
- * @param c the code point to be tested
- * @return TRUE if the code point is ignorable in identifiers according to Java
- *
- * @see UCHAR_DEFAULT_IGNORABLE_CODE_POINT
- * @see u_isIDStart
- * @see u_isIDPart
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isIDIgnorable(UChar32 c);
-
-/**
- * Determines if the specified character is permissible as the
- * first character in a Java identifier.
- * In addition to u_isIDStart(c), true for characters with
- * general categories "Sc" (currency symbols) and "Pc" (connecting punctuation).
- *
- * Same as java.lang.Character.isJavaIdentifierStart().
- *
- * @param c the code point to be tested
- * @return TRUE if the code point may start a Java identifier
- *
- * @see     u_isJavaIDPart
- * @see     u_isalpha
- * @see     u_isIDStart
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isJavaIDStart(UChar32 c);
-
-/**
- * Determines if the specified character is permissible
- * in a Java identifier.
- * In addition to u_isIDPart(c), true for characters with
- * general category "Sc" (currency symbols).
- *
- * Same as java.lang.Character.isJavaIdentifierPart().
- *
- * @param c the code point to be tested
- * @return TRUE if the code point may occur in a Java identifier
- *
- * @see     u_isIDIgnorable
- * @see     u_isJavaIDStart
- * @see     u_isalpha
- * @see     u_isdigit
- * @see     u_isIDPart
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-u_isJavaIDPart(UChar32 c);
-
-/**
- * The given character is mapped to its lowercase equivalent according to
- * UnicodeData.txt; if the character has no lowercase equivalent, the character
- * itself is returned.
- *
- * Same as java.lang.Character.toLowerCase().
- *
- * This function only returns the simple, single-code point case mapping.
- * Full case mappings should be used whenever possible because they produce
- * better results by working on whole strings.
- * They take into account the string context and the language and can map
- * to a result string with a different length as appropriate.
- * Full case mappings are applied by the string case mapping functions,
- * see ustring.h and the UnicodeString class.
- * See also the User Guide chapter on C/POSIX migration:
- * http://icu-project.org/userguide/posix.html#case_mappings
- *
- * @param c the code point to be mapped
- * @return the Simple_Lowercase_Mapping of the code point, if any;
- *         otherwise the code point itself.
- * @stable ICU 2.0
- */
-U_STABLE UChar32 U_EXPORT2
-u_tolower(UChar32 c);
-
-/**
- * The given character is mapped to its uppercase equivalent according to UnicodeData.txt;
- * if the character has no uppercase equivalent, the character itself is
- * returned.
- *
- * Same as java.lang.Character.toUpperCase().
- *
- * This function only returns the simple, single-code point case mapping.
- * Full case mappings should be used whenever possible because they produce
- * better results by working on whole strings.
- * They take into account the string context and the language and can map
- * to a result string with a different length as appropriate.
- * Full case mappings are applied by the string case mapping functions,
- * see ustring.h and the UnicodeString class.
- * See also the User Guide chapter on C/POSIX migration:
- * http://icu-project.org/userguide/posix.html#case_mappings
- *
- * @param c the code point to be mapped
- * @return the Simple_Uppercase_Mapping of the code point, if any;
- *         otherwise the code point itself.
- * @stable ICU 2.0
- */
-U_STABLE UChar32 U_EXPORT2
-u_toupper(UChar32 c);
-
-/**
- * The given character is mapped to its titlecase equivalent
- * according to UnicodeData.txt;
- * if none is defined, the character itself is returned.
- *
- * Same as java.lang.Character.toTitleCase().
- *
- * This function only returns the simple, single-code point case mapping.
- * Full case mappings should be used whenever possible because they produce
- * better results by working on whole strings.
- * They take into account the string context and the language and can map
- * to a result string with a different length as appropriate.
- * Full case mappings are applied by the string case mapping functions,
- * see ustring.h and the UnicodeString class.
- * See also the User Guide chapter on C/POSIX migration:
- * http://icu-project.org/userguide/posix.html#case_mappings
- *
- * @param c the code point to be mapped
- * @return the Simple_Titlecase_Mapping of the code point, if any;
- *         otherwise the code point itself.
- * @stable ICU 2.0
- */
-U_STABLE UChar32 U_EXPORT2
-u_totitle(UChar32 c);
-
-/** Option value for case folding: use default mappings defined in CaseFolding.txt. @stable ICU 2.0 */
-#define U_FOLD_CASE_DEFAULT 0
-
-/**
- * Option value for case folding:
- *
- * Use the modified set of mappings provided in CaseFolding.txt to handle dotted I
- * and dotless i appropriately for Turkic languages (tr, az).
- *
- * Before Unicode 3.2, CaseFolding.txt contains mappings marked with 'I' that
- * are to be included for default mappings and
- * excluded for the Turkic-specific mappings.
- *
- * Unicode 3.2 CaseFolding.txt instead contains mappings marked with 'T' that
- * are to be excluded for default mappings and
- * included for the Turkic-specific mappings.
- *
- * @stable ICU 2.0
- */
-#define U_FOLD_CASE_EXCLUDE_SPECIAL_I 1
-
-/**
- * The given character is mapped to its case folding equivalent according to
- * UnicodeData.txt and CaseFolding.txt;
- * if the character has no case folding equivalent, the character
- * itself is returned.
- *
- * This function only returns the simple, single-code point case mapping.
- * Full case mappings should be used whenever possible because they produce
- * better results by working on whole strings.
- * They take into account the string context and the language and can map
- * to a result string with a different length as appropriate.
- * Full case mappings are applied by the string case mapping functions,
- * see ustring.h and the UnicodeString class.
- * See also the User Guide chapter on C/POSIX migration:
- * http://icu-project.org/userguide/posix.html#case_mappings
- *
- * @param c the code point to be mapped
- * @param options Either U_FOLD_CASE_DEFAULT or U_FOLD_CASE_EXCLUDE_SPECIAL_I
- * @return the Simple_Case_Folding of the code point, if any;
- *         otherwise the code point itself.
- * @stable ICU 2.0
- */
-U_STABLE UChar32 U_EXPORT2
-u_foldCase(UChar32 c, uint32_t options);
-
-/**
- * Returns the decimal digit value of the code point in the
- * specified radix.
- *
- * If the radix is not in the range <code>2<=radix<=36</code> or if the
- * value of <code>c</code> is not a valid digit in the specified
- * radix, <code>-1</code> is returned. A character is a valid digit
- * if at least one of the following is true:
- * <ul>
- * <li>The character has a decimal digit value.
- *     Such characters have the general category "Nd" (decimal digit numbers)
- *     and a Numeric_Type of Decimal.
- *     In this case the value is the character's decimal digit value.</li>
- * <li>The character is one of the uppercase Latin letters
- *     <code>'A'</code> through <code>'Z'</code>.
- *     In this case the value is <code>c-'A'+10</code>.</li>
- * <li>The character is one of the lowercase Latin letters
- *     <code>'a'</code> through <code>'z'</code>.
- *     In this case the value is <code>ch-'a'+10</code>.</li>
- * <li>Latin letters from both the ASCII range (0061..007A, 0041..005A)
- *     as well as from the Fullwidth ASCII range (FF41..FF5A, FF21..FF3A)
- *     are recognized.</li>
- * </ul>
- *
- * Same as java.lang.Character.digit().
- *
- * @param   ch      the code point to be tested.
- * @param   radix   the radix.
- * @return  the numeric value represented by the character in the
- *          specified radix,
- *          or -1 if there is no value or if the value exceeds the radix.
- *
- * @see     UCHAR_NUMERIC_TYPE
- * @see     u_forDigit
- * @see     u_charDigitValue
- * @see     u_isdigit
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-u_digit(UChar32 ch, int8_t radix);
-
-/**
- * Determines the character representation for a specific digit in
- * the specified radix. If the value of <code>radix</code> is not a
- * valid radix, or the value of <code>digit</code> is not a valid
- * digit in the specified radix, the null character
- * (<code>U+0000</code>) is returned.
- * <p>
- * The <code>radix</code> argument is valid if it is greater than or
- * equal to 2 and less than or equal to 36.
- * The <code>digit</code> argument is valid if
- * <code>0 <= digit < radix</code>.
- * <p>
- * If the digit is less than 10, then
- * <code>'0' + digit</code> is returned. Otherwise, the value
- * <code>'a' + digit - 10</code> is returned.
- *
- * Same as java.lang.Character.forDigit().
- *
- * @param   digit   the number to convert to a character.
- * @param   radix   the radix.
- * @return  the <code>char</code> representation of the specified digit
- *          in the specified radix.
- *
- * @see     u_digit
- * @see     u_charDigitValue
- * @see     u_isdigit
- * @stable ICU 2.0
- */
-U_STABLE UChar32 U_EXPORT2
-u_forDigit(int32_t digit, int8_t radix);
-
-/**
- * Get the "age" of the code point.
- * The "age" is the Unicode version when the code point was first
- * designated (as a non-character or for Private Use)
- * or assigned a character.
- * This can be useful to avoid emitting code points to receiving
- * processes that do not accept newer characters.
- * The data is from the UCD file DerivedAge.txt.
- *
- * @param c The code point.
- * @param versionArray The Unicode version number array, to be filled in.
- *
- * @stable ICU 2.1
- */
-U_STABLE void U_EXPORT2
-u_charAge(UChar32 c, UVersionInfo versionArray);
-
-/**
- * Gets the Unicode version information.
- * The version array is filled in with the version information
- * for the Unicode standard that is currently used by ICU.
- * For example, Unicode version 3.1.1 is represented as an array with
- * the values { 3, 1, 1, 0 }.
- *
- * @param versionArray an output array that will be filled in with
- *                     the Unicode version number
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-u_getUnicodeVersion(UVersionInfo versionArray);
-
-#if !UCONFIG_NO_NORMALIZATION
-/**
- * Get the FC_NFKC_Closure property string for a character.
- * See Unicode Standard Annex #15 for details, search for "FC_NFKC_Closure"
- * or for "FNC": http://www.unicode.org/reports/tr15/
- *
- * @param c The character (code point) for which to get the FC_NFKC_Closure string.
- *             It must be <code>0<=c<=0x10ffff</code>.
- * @param dest Destination address for copying the string.
- *             The string will be zero-terminated if possible.
- *             If there is no FC_NFKC_Closure string,
- *             then the buffer will be set to the empty string.
- * @param destCapacity <code>==sizeof(dest)</code>
- * @param pErrorCode Pointer to a UErrorCode variable.
- * @return The length of the string, or 0 if there is no FC_NFKC_Closure string for this character.
- *         If the destCapacity is less than or equal to the length, then the buffer
- *         contains the truncated name and the returned length indicates the full
- *         length of the name.
- *         The length does not include the zero-termination.
- *
- * @stable ICU 2.2
- */
-U_STABLE int32_t U_EXPORT2
-u_getFC_NFKC_Closure(UChar32 c, UChar *dest, int32_t destCapacity, UErrorCode *pErrorCode);
-
-#endif
-
-
-U_CDECL_END
-
-#endif /*_UCHAR*/
-/*eof*/
diff --git a/Source/JavaScriptCore/icu/unicode/ucnv.h b/Source/JavaScriptCore/icu/unicode/ucnv.h
deleted file mode 100644 (file)
index 564656c..0000000
+++ /dev/null
@@ -1,2036 +0,0 @@
-/*
-**********************************************************************
-*   Copyright (C) 1999-2014, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
- *  ucnv.h:
- *  External APIs for the ICU's codeset conversion library
- *  Bertrand A. Damiba
- *
- * Modification History:
- *
- *   Date        Name        Description
- *   04/04/99    helena      Fixed internal header inclusion.
- *   05/11/00    helena      Added setFallback and usesFallback APIs.
- *   06/29/2000  helena      Major rewrite of the callback APIs.
- *   12/07/2000  srl         Update of documentation
- */
-
-/**
- * \file
- * \brief C API: Character conversion
- *
- * <h2>Character Conversion C API</h2>
- *
- * <p>This API is used to convert codepage or character encoded data to and
- * from UTF-16. You can open a converter with {@link ucnv_open() }. With that
- * converter, you can get its properties, set options, convert your data and
- * close the converter.</p>
- *
- * <p>Since many software programs recogize different converter names for
- * different types of converters, there are other functions in this API to
- * iterate over the converter aliases. The functions {@link ucnv_getAvailableName() },
- * {@link ucnv_getAlias() } and {@link ucnv_getStandardName() } are some of the
- * more frequently used alias functions to get this information.</p>
- *
- * <p>When a converter encounters an illegal, irregular, invalid or unmappable character
- * its default behavior is to use a substitution character to replace the
- * bad byte sequence. This behavior can be changed by using {@link ucnv_setFromUCallBack() }
- * or {@link ucnv_setToUCallBack() } on the converter. The header ucnv_err.h defines
- * many other callback actions that can be used instead of a character substitution.</p>
- *
- * <p>More information about this API can be found in our
- * <a href="http://icu-project.org/userguide/conversion.html">User's
- * Guide</a>.</p>
- */
-
-#ifndef UCNV_H
-#define UCNV_H
-
-#include "unicode/ucnv_err.h"
-#include "unicode/uenum.h"
-#include "unicode/localpointer.h"
-
-#ifndef __USET_H__
-
-/**
- * USet is the C API type for Unicode sets.
- * It is forward-declared here to avoid including the header file if related
- * conversion APIs are not used.
- * See unicode/uset.h
- *
- * @see ucnv_getUnicodeSet
- * @stable ICU 2.6
- */
-struct USet;
-/** @stable ICU 2.6 */
-typedef struct USet USet;
-
-#endif
-
-#if !UCONFIG_NO_CONVERSION
-
-U_CDECL_BEGIN
-
-/** Maximum length of a converter name including the terminating NULL @stable ICU 2.0 */
-#define UCNV_MAX_CONVERTER_NAME_LENGTH 60
-/** Maximum length of a converter name including path and terminating NULL @stable ICU 2.0 */
-#define UCNV_MAX_FULL_FILE_NAME_LENGTH (600+UCNV_MAX_CONVERTER_NAME_LENGTH)
-
-/** Shift in for EBDCDIC_STATEFUL and iso2022 states @stable ICU 2.0 */
-#define  UCNV_SI 0x0F
-/** Shift out for EBDCDIC_STATEFUL and iso2022 states @stable ICU 2.0 */
-#define  UCNV_SO 0x0E
-
-/**
- * Enum for specifying basic types of converters
- * @see ucnv_getType
- * @stable ICU 2.0
- */
-typedef enum {
-    /** @stable ICU 2.0 */
-    UCNV_UNSUPPORTED_CONVERTER = -1,
-    /** @stable ICU 2.0 */
-    UCNV_SBCS = 0,
-    /** @stable ICU 2.0 */
-    UCNV_DBCS = 1,
-    /** @stable ICU 2.0 */
-    UCNV_MBCS = 2,
-    /** @stable ICU 2.0 */
-    UCNV_LATIN_1 = 3,
-    /** @stable ICU 2.0 */
-    UCNV_UTF8 = 4,
-    /** @stable ICU 2.0 */
-    UCNV_UTF16_BigEndian = 5,
-    /** @stable ICU 2.0 */
-    UCNV_UTF16_LittleEndian = 6,
-    /** @stable ICU 2.0 */
-    UCNV_UTF32_BigEndian = 7,
-    /** @stable ICU 2.0 */
-    UCNV_UTF32_LittleEndian = 8,
-    /** @stable ICU 2.0 */
-    UCNV_EBCDIC_STATEFUL = 9,
-    /** @stable ICU 2.0 */
-    UCNV_ISO_2022 = 10,
-
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_1 = 11,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_2,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_3,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_4,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_5,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_6,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_8,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_11,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_16,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_17,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_18,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_19,
-    /** @stable ICU 2.0 */
-    UCNV_LMBCS_LAST = UCNV_LMBCS_19,
-    /** @stable ICU 2.0 */
-    UCNV_HZ,
-    /** @stable ICU 2.0 */
-    UCNV_SCSU,
-    /** @stable ICU 2.0 */
-    UCNV_ISCII,
-    /** @stable ICU 2.0 */
-    UCNV_US_ASCII,
-    /** @stable ICU 2.0 */
-    UCNV_UTF7,
-    /** @stable ICU 2.2 */
-    UCNV_BOCU1,
-    /** @stable ICU 2.2 */
-    UCNV_UTF16,
-    /** @stable ICU 2.2 */
-    UCNV_UTF32,
-    /** @stable ICU 2.2 */
-    UCNV_CESU8,
-    /** @stable ICU 2.4 */
-    UCNV_IMAP_MAILBOX,
-    /** @stable ICU 4.8 */
-    UCNV_COMPOUND_TEXT,
-
-    /* Number of converter types for which we have conversion routines. */
-    UCNV_NUMBER_OF_SUPPORTED_CONVERTER_TYPES
-} UConverterType;
-
-/**
- * Enum for specifying which platform a converter ID refers to.
- * The use of platform/CCSID is not recommended. See ucnv_openCCSID().
- *
- * @see ucnv_getPlatform
- * @see ucnv_openCCSID
- * @see ucnv_getCCSID
- * @stable ICU 2.0
- */
-typedef enum {
-    UCNV_UNKNOWN = -1,
-    UCNV_IBM = 0
-} UConverterPlatform;
-
-/**
- * Function pointer for error callback in the codepage to unicode direction.
- * Called when an error has occured in conversion to unicode, or on open/close of the callback (see reason).
- * @param context Pointer to the callback's private data
- * @param args Information about the conversion in progress
- * @param codeUnits Points to 'length' bytes of the concerned codepage sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param reason Defines the reason the callback was invoked
- * @param pErrorCode    ICU error code in/out parameter.
- *                      For converter callback functions, set to a conversion error
- *                      before the call, and the callback may reset it to U_ZERO_ERROR.
- * @see ucnv_setToUCallBack
- * @see UConverterToUnicodeArgs
- * @stable ICU 2.0
- */
-typedef void (U_EXPORT2 *UConverterToUCallback) (
-                  const void* context,
-                  UConverterToUnicodeArgs *args,
-                  const char *codeUnits,
-                  int32_t length,
-                  UConverterCallbackReason reason,
-                  UErrorCode *pErrorCode);
-
-/**
- * Function pointer for error callback in the unicode to codepage direction.
- * Called when an error has occured in conversion from unicode, or on open/close of the callback (see reason).
- * @param context Pointer to the callback's private data
- * @param args Information about the conversion in progress
- * @param codeUnits Points to 'length' UChars of the concerned Unicode sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param codePoint Single UChar32 (UTF-32) containing the concerend Unicode codepoint.
- * @param reason Defines the reason the callback was invoked
- * @param pErrorCode    ICU error code in/out parameter.
- *                      For converter callback functions, set to a conversion error
- *                      before the call, and the callback may reset it to U_ZERO_ERROR.
- * @see ucnv_setFromUCallBack
- * @stable ICU 2.0
- */
-typedef void (U_EXPORT2 *UConverterFromUCallback) (
-                    const void* context,
-                    UConverterFromUnicodeArgs *args,
-                    const UChar* codeUnits,
-                    int32_t length,
-                    UChar32 codePoint,
-                    UConverterCallbackReason reason,
-                    UErrorCode *pErrorCode);
-
-U_CDECL_END
-
-/**
- * Character that separates converter names from options and options from each other.
- * @see ucnv_open
- * @stable ICU 2.0
- */
-#define UCNV_OPTION_SEP_CHAR ','
-
-/**
- * String version of UCNV_OPTION_SEP_CHAR.
- * @see ucnv_open
- * @stable ICU 2.0
- */
-#define UCNV_OPTION_SEP_STRING ","
-
-/**
- * Character that separates a converter option from its value.
- * @see ucnv_open
- * @stable ICU 2.0
- */
-#define UCNV_VALUE_SEP_CHAR '='
-
-/**
- * String version of UCNV_VALUE_SEP_CHAR.
- * @see ucnv_open
- * @stable ICU 2.0
- */
-#define UCNV_VALUE_SEP_STRING "="
-
-/**
- * Converter option for specifying a locale.
- * For example, ucnv_open("SCSU,locale=ja", &errorCode);
- * See convrtrs.txt.
- *
- * @see ucnv_open
- * @stable ICU 2.0
- */
-#define UCNV_LOCALE_OPTION_STRING ",locale="
-
-/**
- * Converter option for specifying a version selector (0..9) for some converters.
- * For example,
- * \code
- *   ucnv_open("UTF-7,version=1", &errorCode);
- * \endcode
- * See convrtrs.txt.
- *
- * @see ucnv_open
- * @stable ICU 2.4
- */
-#define UCNV_VERSION_OPTION_STRING ",version="
-
-/**
- * Converter option for EBCDIC SBCS or mixed-SBCS/DBCS (stateful) codepages.
- * Swaps Unicode mappings for EBCDIC LF and NL codes, as used on
- * S/390 (z/OS) Unix System Services (Open Edition).
- * For example, ucnv_open("ibm-1047,swaplfnl", &errorCode);
- * See convrtrs.txt.
- *
- * @see ucnv_open
- * @stable ICU 2.4
- */
-#define UCNV_SWAP_LFNL_OPTION_STRING ",swaplfnl"
-
-/**
- * Do a fuzzy compare of two converter/alias names.
- * The comparison is case-insensitive, ignores leading zeroes if they are not
- * followed by further digits, and ignores all but letters and digits.
- * Thus the strings "UTF-8", "utf_8", "u*T@f08" and "Utf 8" are exactly equivalent.
- * See section 1.4, Charset Alias Matching in Unicode Technical Standard #22
- * at http://www.unicode.org/reports/tr22/
- *
- * @param name1 a converter name or alias, zero-terminated
- * @param name2 a converter name or alias, zero-terminated
- * @return 0 if the names match, or a negative value if the name1
- * lexically precedes name2, or a positive value if the name1
- * lexically follows name2.
- * @stable ICU 2.0
- */
-U_STABLE int U_EXPORT2
-ucnv_compareNames(const char *name1, const char *name2);
-
-
-/**
- * Creates a UConverter object with the name of a coded character set specified as a C string.
- * The actual name will be resolved with the alias file
- * using a case-insensitive string comparison that ignores
- * leading zeroes and all non-alphanumeric characters.
- * E.g., the names "UTF8", "utf-8", "u*T@f08" and "Utf 8" are all equivalent.
- * (See also ucnv_compareNames().)
- * If <code>NULL</code> is passed for the converter name, it will create one with the
- * getDefaultName return value.
- *
- * <p>A converter name for ICU 1.5 and above may contain options
- * like a locale specification to control the specific behavior of
- * the newly instantiated converter.
- * The meaning of the options depends on the particular converter.
- * If an option is not defined for or recognized by a given converter, then it is ignored.</p>
- *
- * <p>Options are appended to the converter name string, with a
- * <code>UCNV_OPTION_SEP_CHAR</code> between the name and the first option and
- * also between adjacent options.</p>
- *
- * <p>If the alias is ambiguous, then the preferred converter is used
- * and the status is set to U_AMBIGUOUS_ALIAS_WARNING.</p>
- *
- * <p>The conversion behavior and names can vary between platforms. ICU may
- * convert some characters differently from other platforms. Details on this topic
- * are in the <a href="http://icu-project.org/userguide/conversion.html">User's
- * Guide</a>. Aliases starting with a "cp" prefix have no specific meaning
- * other than its an alias starting with the letters "cp". Please do not
- * associate any meaning to these aliases.</p>
- *
- * \snippet samples/ucnv/convsamp.cpp ucnv_open
- *
- * @param converterName Name of the coded character set table.
- *          This may have options appended to the string.
- *          IANA alias character set names, IBM CCSIDs starting with "ibm-",
- *          Windows codepage numbers starting with "windows-" are frequently
- *          used for this parameter. See ucnv_getAvailableName and
- *          ucnv_getAlias for a complete list that is available.
- *          If this parameter is NULL, the default converter will be used.
- * @param err outgoing error status <TT>U_MEMORY_ALLOCATION_ERROR, U_FILE_ACCESS_ERROR</TT>
- * @return the created Unicode converter object, or <TT>NULL</TT> if an error occured
- * @see ucnv_openU
- * @see ucnv_openCCSID
- * @see ucnv_getAvailableName
- * @see ucnv_getAlias
- * @see ucnv_getDefaultName
- * @see ucnv_close
- * @see ucnv_compareNames
- * @stable ICU 2.0
- */
-U_STABLE UConverter* U_EXPORT2
-ucnv_open(const char *converterName, UErrorCode *err);
-
-
-/**
- * Creates a Unicode converter with the names specified as unicode string.
- * The name should be limited to the ASCII-7 alphanumerics range.
- * The actual name will be resolved with the alias file
- * using a case-insensitive string comparison that ignores
- * leading zeroes and all non-alphanumeric characters.
- * E.g., the names "UTF8", "utf-8", "u*T@f08" and "Utf 8" are all equivalent.
- * (See also ucnv_compareNames().)
- * If <TT>NULL</TT> is passed for the converter name, it will create
- * one with the ucnv_getDefaultName() return value.
- * If the alias is ambiguous, then the preferred converter is used
- * and the status is set to U_AMBIGUOUS_ALIAS_WARNING.
- *
- * <p>See ucnv_open for the complete details</p>
- * @param name Name of the UConverter table in a zero terminated
- *        Unicode string
- * @param err outgoing error status <TT>U_MEMORY_ALLOCATION_ERROR,
- *        U_FILE_ACCESS_ERROR</TT>
- * @return the created Unicode converter object, or <TT>NULL</TT> if an
- *        error occured
- * @see ucnv_open
- * @see ucnv_openCCSID
- * @see ucnv_close
- * @see ucnv_compareNames
- * @stable ICU 2.0
- */
-U_STABLE UConverter* U_EXPORT2
-ucnv_openU(const UChar *name,
-           UErrorCode *err);
-
-/**
- * Creates a UConverter object from a CCSID number and platform pair.
- * Note that the usefulness of this function is limited to platforms with numeric
- * encoding IDs. Only IBM and Microsoft platforms use numeric (16-bit) identifiers for
- * encodings.
- *
- * In addition, IBM CCSIDs and Unicode conversion tables are not 1:1 related.
- * For many IBM CCSIDs there are multiple (up to six) Unicode conversion tables, and
- * for some Unicode conversion tables there are multiple CCSIDs.
- * Some "alternate" Unicode conversion tables are provided by the
- * IBM CDRA conversion table registry.
- * The most prominent example of a systematic modification of conversion tables that is
- * not provided in the form of conversion table files in the repository is
- * that S/390 Unix System Services swaps the codes for Line Feed and New Line in all
- * EBCDIC codepages, which requires such a swap in the Unicode conversion tables as well.
- *
- * Only IBM default conversion tables are accessible with ucnv_openCCSID().
- * ucnv_getCCSID() will return the same CCSID for all conversion tables that are associated
- * with that CCSID.
- *
- * Currently, the only "platform" supported in the ICU converter API is UCNV_IBM.
- *
- * In summary, the use of CCSIDs and the associated API functions is not recommended.
- *
- * In order to open a converter with the default IBM CDRA Unicode conversion table,
- * you can use this function or use the prefix "ibm-":
- * \code
- *     char name[20];
- *     sprintf(name, "ibm-%hu", ccsid);
- *     cnv=ucnv_open(name, &errorCode);
- * \endcode
- *
- * In order to open a converter with the IBM S/390 Unix System Services variant
- * of a Unicode/EBCDIC conversion table,
- * you can use the prefix "ibm-" together with the option string UCNV_SWAP_LFNL_OPTION_STRING:
- * \code
- *     char name[20];
- *     sprintf(name, "ibm-%hu" UCNV_SWAP_LFNL_OPTION_STRING, ccsid);
- *     cnv=ucnv_open(name, &errorCode);
- * \endcode
- *
- * In order to open a converter from a Microsoft codepage number, use the prefix "cp":
- * \code
- *     char name[20];
- *     sprintf(name, "cp%hu", codepageID);
- *     cnv=ucnv_open(name, &errorCode);
- * \endcode
- *
- * If the alias is ambiguous, then the preferred converter is used
- * and the status is set to U_AMBIGUOUS_ALIAS_WARNING.
- *
- * @param codepage codepage number to create
- * @param platform the platform in which the codepage number exists
- * @param err error status <TT>U_MEMORY_ALLOCATION_ERROR, U_FILE_ACCESS_ERROR</TT>
- * @return the created Unicode converter object, or <TT>NULL</TT> if an error
- *   occured.
- * @see ucnv_open
- * @see ucnv_openU
- * @see ucnv_close
- * @see ucnv_getCCSID
- * @see ucnv_getPlatform
- * @see UConverterPlatform
- * @stable ICU 2.0
- */
-U_STABLE UConverter* U_EXPORT2
-ucnv_openCCSID(int32_t codepage,
-               UConverterPlatform platform,
-               UErrorCode * err);
-
-/**
- * <p>Creates a UConverter object specified from a packageName and a converterName.</p>
- *
- * <p>The packageName and converterName must point to an ICU udata object, as defined by
- *   <code> udata_open( packageName, "cnv", converterName, err) </code> or equivalent.
- * Typically, packageName will refer to a (.dat) file, or to a package registered with
- * udata_setAppData(). Using a full file or directory pathname for packageName is deprecated.</p>
- *
- * <p>The name will NOT be looked up in the alias mechanism, nor will the converter be
- * stored in the converter cache or the alias table. The only way to open further converters
- * is call this function multiple times, or use the ucnv_safeClone() function to clone a
- * 'master' converter.</p>
- *
- * <p>A future version of ICU may add alias table lookups and/or caching
- * to this function.</p>
- *
- * <p>Example Use:
- *      <code>cnv = ucnv_openPackage("myapp", "myconverter", &err);</code>
- * </p>
- *
- * @param packageName name of the package (equivalent to 'path' in udata_open() call)
- * @param converterName name of the data item to be used, without suffix.
- * @param err outgoing error status <TT>U_MEMORY_ALLOCATION_ERROR, U_FILE_ACCESS_ERROR</TT>
- * @return the created Unicode converter object, or <TT>NULL</TT> if an error occured
- * @see udata_open
- * @see ucnv_open
- * @see ucnv_safeClone
- * @see ucnv_close
- * @stable ICU 2.2
- */
-U_STABLE UConverter* U_EXPORT2
-ucnv_openPackage(const char *packageName, const char *converterName, UErrorCode *err);
-
-/**
- * Thread safe converter cloning operation.
- * For most efficient operation, pass in a stackBuffer (and a *pBufferSize)
- * with at least U_CNV_SAFECLONE_BUFFERSIZE bytes of space.
- * If the buffer size is sufficient, then the clone will use the stack buffer;
- * otherwise, it will be allocated, and *pBufferSize will indicate
- * the actual size. (This should not occur with U_CNV_SAFECLONE_BUFFERSIZE.)
- *
- * You must ucnv_close() the clone in any case.
- *
- * If *pBufferSize==0, (regardless of whether stackBuffer==NULL or not)
- * then *pBufferSize will be changed to a sufficient size
- * for cloning this converter,
- * without actually cloning the converter ("pure pre-flighting").
- *
- * If *pBufferSize is greater than zero but not large enough for a stack-based
- * clone, then the converter is cloned using newly allocated memory
- * and *pBufferSize is changed to the necessary size.
- *
- * If the converter clone fits into the stack buffer but the stack buffer is not
- * sufficiently aligned for the clone, then the clone will use an
- * adjusted pointer and use an accordingly smaller buffer size.
- *
- * @param cnv converter to be cloned
- * @param stackBuffer <em>Deprecated functionality as of ICU 52, use NULL.</em><br>
- *  user allocated space for the new clone. If NULL new memory will be allocated.
- *  If buffer is not large enough, new memory will be allocated.
- *  Clients can use the U_CNV_SAFECLONE_BUFFERSIZE. This will probably be enough to avoid memory allocations.
- * @param pBufferSize <em>Deprecated functionality as of ICU 52, use NULL or 1.</em><br>
- *  pointer to size of allocated space.
- * @param status to indicate whether the operation went on smoothly or there were errors
- *  An informational status value, U_SAFECLONE_ALLOCATED_WARNING,
- *  is used if any allocations were necessary.
- *  However, it is better to check if *pBufferSize grew for checking for
- *  allocations because warning codes can be overridden by subsequent
- *  function calls.
- * @return pointer to the new clone
- * @stable ICU 2.0
- */
-U_STABLE UConverter * U_EXPORT2
-ucnv_safeClone(const UConverter *cnv,
-               void             *stackBuffer,
-               int32_t          *pBufferSize,
-               UErrorCode       *status);
-
-#ifndef U_HIDE_DEPRECATED_API
-
-/**
- * \def U_CNV_SAFECLONE_BUFFERSIZE
- * Definition of a buffer size that is designed to be large enough for
- * converters to be cloned with ucnv_safeClone().
- * @deprecated ICU 52. Do not rely on ucnv_safeClone() cloning into any provided buffer.
- */
-#define U_CNV_SAFECLONE_BUFFERSIZE  1024
-
-#endif /* U_HIDE_DEPRECATED_API */
-
-/**
- * Deletes the unicode converter and releases resources associated
- * with just this instance.
- * Does not free up shared converter tables.
- *
- * @param converter the converter object to be deleted
- * @see ucnv_open
- * @see ucnv_openU
- * @see ucnv_openCCSID
- * @stable ICU 2.0
- */
-U_STABLE void  U_EXPORT2
-ucnv_close(UConverter * converter);
-
-#if U_SHOW_CPLUSPLUS_API
-
-U_NAMESPACE_BEGIN
-
-/**
- * \class LocalUConverterPointer
- * "Smart pointer" class, closes a UConverter via ucnv_close().
- * For most methods see the LocalPointerBase base class.
- *
- * @see LocalPointerBase
- * @see LocalPointer
- * @stable ICU 4.4
- */
-U_DEFINE_LOCAL_OPEN_POINTER(LocalUConverterPointer, UConverter, ucnv_close);
-
-U_NAMESPACE_END
-
-#endif
-
-/**
- * Fills in the output parameter, subChars, with the substitution characters
- * as multiple bytes.
- * If ucnv_setSubstString() set a Unicode string because the converter is
- * stateful, then subChars will be an empty string.
- *
- * @param converter the Unicode converter
- * @param subChars the subsitution characters
- * @param len on input the capacity of subChars, on output the number
- * of bytes copied to it
- * @param  err the outgoing error status code.
- * If the substitution character array is too small, an
- * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
- * @see ucnv_setSubstString
- * @see ucnv_setSubstChars
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_getSubstChars(const UConverter *converter,
-                   char *subChars,
-                   int8_t *len,
-                   UErrorCode *err);
-
-/**
- * Sets the substitution chars when converting from unicode to a codepage. The
- * substitution is specified as a string of 1-4 bytes, and may contain
- * <TT>NULL</TT> bytes.
- * The subChars must represent a single character. The caller needs to know the
- * byte sequence of a valid character in the converter's charset.
- * For some converters, for example some ISO 2022 variants, only single-byte
- * substitution characters may be supported.
- * The newer ucnv_setSubstString() function relaxes these limitations.
- *
- * @param converter the Unicode converter
- * @param subChars the substitution character byte sequence we want set
- * @param len the number of bytes in subChars
- * @param err the error status code.  <TT>U_INDEX_OUTOFBOUNDS_ERROR </TT> if
- * len is bigger than the maximum number of bytes allowed in subchars
- * @see ucnv_setSubstString
- * @see ucnv_getSubstChars
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_setSubstChars(UConverter *converter,
-                   const char *subChars,
-                   int8_t len,
-                   UErrorCode *err);
-
-/**
- * Set a substitution string for converting from Unicode to a charset.
- * The caller need not know the charset byte sequence for each charset.
- *
- * Unlike ucnv_setSubstChars() which is designed to set a charset byte sequence
- * for a single character, this function takes a Unicode string with
- * zero, one or more characters, and immediately verifies that the string can be
- * converted to the charset.
- * If not, or if the result is too long (more than 32 bytes as of ICU 3.6),
- * then the function returns with an error accordingly.
- *
- * Also unlike ucnv_setSubstChars(), this function works for stateful charsets
- * by converting on the fly at the point of substitution rather than setting
- * a fixed byte sequence.
- *
- * @param cnv The UConverter object.
- * @param s The Unicode string.
- * @param length The number of UChars in s, or -1 for a NUL-terminated string.
- * @param err Pointer to a standard ICU error code. Its input value must
- *            pass the U_SUCCESS() test, or else the function returns
- *            immediately. Check for U_FAILURE() on output or use with
- *            function chaining. (See User Guide for details.)
- *
- * @see ucnv_setSubstChars
- * @see ucnv_getSubstChars
- * @stable ICU 3.6
- */
-U_STABLE void U_EXPORT2
-ucnv_setSubstString(UConverter *cnv,
-                    const UChar *s,
-                    int32_t length,
-                    UErrorCode *err);
-
-/**
- * Fills in the output parameter, errBytes, with the error characters from the
- * last failing conversion.
- *
- * @param converter the Unicode converter
- * @param errBytes the codepage bytes which were in error
- * @param len on input the capacity of errBytes, on output the number of
- *  bytes which were copied to it
- * @param err the error status code.
- * If the substitution character array is too small, an
- * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_getInvalidChars(const UConverter *converter,
-                     char *errBytes,
-                     int8_t *len,
-                     UErrorCode *err);
-
-/**
- * Fills in the output parameter, errChars, with the error characters from the
- * last failing conversion.
- *
- * @param converter the Unicode converter
- * @param errUChars the UChars which were in error
- * @param len on input the capacity of errUChars, on output the number of
- *  UChars which were copied to it
- * @param err the error status code.
- * If the substitution character array is too small, an
- * <TT>U_INDEX_OUTOFBOUNDS_ERROR</TT> will be returned.
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_getInvalidUChars(const UConverter *converter,
-                      UChar *errUChars,
-                      int8_t *len,
-                      UErrorCode *err);
-
-/**
- * Resets the state of a converter to the default state. This is used
- * in the case of an error, to restart a conversion from a known default state.
- * It will also empty the internal output buffers.
- * @param converter the Unicode converter
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_reset(UConverter *converter);
-
-/**
- * Resets the to-Unicode part of a converter state to the default state.
- * This is used in the case of an error to restart a conversion to
- * Unicode to a known default state. It will also empty the internal
- * output buffers used for the conversion to Unicode codepoints.
- * @param converter the Unicode converter
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_resetToUnicode(UConverter *converter);
-
-/**
- * Resets the from-Unicode part of a converter state to the default state.
- * This is used in the case of an error to restart a conversion from
- * Unicode to a known default state. It will also empty the internal output
- * buffers used for the conversion from Unicode codepoints.
- * @param converter the Unicode converter
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_resetFromUnicode(UConverter *converter);
-
-/**
- * Returns the maximum number of bytes that are output per UChar in conversion
- * from Unicode using this converter.
- * The returned number can be used with UCNV_GET_MAX_BYTES_FOR_STRING
- * to calculate the size of a target buffer for conversion from Unicode.
- *
- * Note: Before ICU 2.8, this function did not return reliable numbers for
- * some stateful converters (EBCDIC_STATEFUL, ISO-2022) and LMBCS.
- *
- * This number may not be the same as the maximum number of bytes per
- * "conversion unit". In other words, it may not be the intuitively expected
- * number of bytes per character that would be published for a charset,
- * and may not fulfill any other purpose than the allocation of an output
- * buffer of guaranteed sufficient size for a given input length and converter.
- *
- * Examples for special cases that are taken into account:
- * - Supplementary code points may convert to more bytes than BMP code points.
- *   This function returns bytes per UChar (UTF-16 code unit), not per
- *   Unicode code point, for efficient buffer allocation.
- * - State-shifting output (SI/SO, escapes, etc.) from stateful converters.
- * - When m input UChars are converted to n output bytes, then the maximum m/n
- *   is taken into account.
- *
- * The number returned here does not take into account
- * (see UCNV_GET_MAX_BYTES_FOR_STRING):
- * - callbacks which output more than one charset character sequence per call,
- *   like escape callbacks
- * - initial and final non-character bytes that are output by some converters
- *   (automatic BOMs, initial escape sequence, final SI, etc.)
- *
- * Examples for returned values:
- * - SBCS charsets: 1
- * - Shift-JIS: 2
- * - UTF-16: 2 (2 per BMP, 4 per surrogate _pair_, BOM not counted)
- * - UTF-8: 3 (3 per BMP, 4 per surrogate _pair_)
- * - EBCDIC_STATEFUL (EBCDIC mixed SBCS/DBCS): 3 (SO + DBCS)
- * - ISO-2022: 3 (always outputs UTF-8)
- * - ISO-2022-JP: 6 (4-byte escape sequences + DBCS)
- * - ISO-2022-CN: 8 (4-byte designator sequences + 2-byte SS2/SS3 + DBCS)
- *
- * @param converter The Unicode converter.
- * @return The maximum number of bytes per UChar (16 bit code unit)
- *    that are output by ucnv_fromUnicode(),
- *    to be used together with UCNV_GET_MAX_BYTES_FOR_STRING
- *    for buffer allocation.
- *
- * @see UCNV_GET_MAX_BYTES_FOR_STRING
- * @see ucnv_getMinCharSize
- * @stable ICU 2.0
- */
-U_STABLE int8_t U_EXPORT2
-ucnv_getMaxCharSize(const UConverter *converter);
-
-/**
- * Calculates the size of a buffer for conversion from Unicode to a charset.
- * The calculated size is guaranteed to be sufficient for this conversion.
- *
- * It takes into account initial and final non-character bytes that are output
- * by some converters.
- * It does not take into account callbacks which output more than one charset
- * character sequence per call, like escape callbacks.
- * The default (substitution) callback only outputs one charset character sequence.
- *
- * @param length Number of UChars to be converted.
- * @param maxCharSize Return value from ucnv_getMaxCharSize() for the converter
- *                    that will be used.
- * @return Size of a buffer that will be large enough to hold the output bytes of
- *         converting length UChars with the converter that returned the maxCharSize.
- *
- * @see ucnv_getMaxCharSize
- * @stable ICU 2.8
- */
-#define UCNV_GET_MAX_BYTES_FOR_STRING(length, maxCharSize) \
-     (((int32_t)(length)+10)*(int32_t)(maxCharSize))
-
-/**
- * Returns the minimum byte length (per codepoint) for characters in this codepage.
- * This is usually either 1 or 2.
- * @param converter the Unicode converter
- * @return the minimum number of bytes per codepoint allowed by this particular converter
- * @see ucnv_getMaxCharSize
- * @stable ICU 2.0
- */
-U_STABLE int8_t U_EXPORT2
-ucnv_getMinCharSize(const UConverter *converter);
-
-/**
- * Returns the display name of the converter passed in based on the Locale
- * passed in. If the locale contains no display name, the internal ASCII
- * name will be filled in.
- *
- * @param converter the Unicode converter.
- * @param displayLocale is the specific Locale we want to localised for
- * @param displayName user provided buffer to be filled in
- * @param displayNameCapacity size of displayName Buffer
- * @param err error status code
- * @return displayNameLength number of UChar needed in displayName
- * @see ucnv_getName
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_getDisplayName(const UConverter *converter,
-                    const char *displayLocale,
-                    UChar *displayName,
-                    int32_t displayNameCapacity,
-                    UErrorCode *err);
-
-/**
- * Gets the internal, canonical name of the converter (zero-terminated).
- * The lifetime of the returned string will be that of the converter
- * passed to this function.
- * @param converter the Unicode converter
- * @param err UErrorCode status
- * @return the internal name of the converter
- * @see ucnv_getDisplayName
- * @stable ICU 2.0
- */
-U_STABLE const char * U_EXPORT2
-ucnv_getName(const UConverter *converter, UErrorCode *err);
-
-/**
- * Gets a codepage number associated with the converter. This is not guaranteed
- * to be the one used to create the converter. Some converters do not represent
- * platform registered codepages and return zero for the codepage number.
- * The error code fill-in parameter indicates if the codepage number
- * is available.
- * Does not check if the converter is <TT>NULL</TT> or if converter's data
- * table is <TT>NULL</TT>.
- *
- * Important: The use of CCSIDs is not recommended because it is limited
- * to only two platforms in principle and only one (UCNV_IBM) in the current
- * ICU converter API.
- * Also, CCSIDs are insufficient to identify IBM Unicode conversion tables precisely.
- * For more details see ucnv_openCCSID().
- *
- * @param converter the Unicode converter
- * @param err the error status code.
- * @return If any error occurrs, -1 will be returned otherwise, the codepage number
- * will be returned
- * @see ucnv_openCCSID
- * @see ucnv_getPlatform
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_getCCSID(const UConverter *converter,
-              UErrorCode *err);
-
-/**
- * Gets a codepage platform associated with the converter. Currently,
- * only <TT>UCNV_IBM</TT> will be returned.
- * Does not test if the converter is <TT>NULL</TT> or if converter's data
- * table is <TT>NULL</TT>.
- * @param converter the Unicode converter
- * @param err the error status code.
- * @return The codepage platform
- * @stable ICU 2.0
- */
-U_STABLE UConverterPlatform U_EXPORT2
-ucnv_getPlatform(const UConverter *converter,
-                 UErrorCode *err);
-
-/**
- * Gets the type of the converter
- * e.g. SBCS, MBCS, DBCS, UTF8, UTF16_BE, UTF16_LE, ISO_2022,
- * EBCDIC_STATEFUL, LATIN_1
- * @param converter a valid, opened converter
- * @return the type of the converter
- * @stable ICU 2.0
- */
-U_STABLE UConverterType U_EXPORT2
-ucnv_getType(const UConverter * converter);
-
-/**
- * Gets the "starter" (lead) bytes for converters of type MBCS.
- * Will fill in an <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> if converter passed in
- * is not MBCS. Fills in an array of type UBool, with the value of the byte
- * as offset to the array. For example, if (starters[0x20] == TRUE) at return,
- * it means that the byte 0x20 is a starter byte in this converter.
- * Context pointers are always owned by the caller.
- *
- * @param converter a valid, opened converter of type MBCS
- * @param starters an array of size 256 to be filled in
- * @param err error status, <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> if the
- * converter is not a type which can return starters.
- * @see ucnv_getType
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_getStarters(const UConverter* converter,
-                 UBool starters[256],
-                 UErrorCode* err);
-
-
-/**
- * Selectors for Unicode sets that can be returned by ucnv_getUnicodeSet().
- * @see ucnv_getUnicodeSet
- * @stable ICU 2.6
- */
-typedef enum UConverterUnicodeSet {
-    /** Select the set of roundtrippable Unicode code points. @stable ICU 2.6 */
-    UCNV_ROUNDTRIP_SET,
-    /** Select the set of Unicode code points with roundtrip or fallback mappings. @stable ICU 4.0 */
-    UCNV_ROUNDTRIP_AND_FALLBACK_SET,
-    /** Number of UConverterUnicodeSet selectors. @stable ICU 2.6 */
-    UCNV_SET_COUNT
-} UConverterUnicodeSet;
-
-
-/**
- * Returns the set of Unicode code points that can be converted by an ICU converter.
- *
- * Returns one of several kinds of set:
- *
- * 1. UCNV_ROUNDTRIP_SET
- *
- * The set of all Unicode code points that can be roundtrip-converted
- * (converted without any data loss) with the converter (ucnv_fromUnicode()).
- * This set will not include code points that have fallback mappings
- * or are only the result of reverse fallback mappings.
- * This set will also not include PUA code points with fallbacks, although
- * ucnv_fromUnicode() will always uses those mappings despite ucnv_setFallback().
- * See UTR #22 "Character Mapping Markup Language"
- * at http://www.unicode.org/reports/tr22/
- *
- * This is useful for example for
- * - checking that a string or document can be roundtrip-converted with a converter,
- *   without/before actually performing the conversion
- * - testing if a converter can be used for text for typical text for a certain locale,
- *   by comparing its roundtrip set with the set of ExemplarCharacters from
- *   ICU's locale data or other sources
- *
- * 2. UCNV_ROUNDTRIP_AND_FALLBACK_SET
- *
- * The set of all Unicode code points that can be converted with the converter (ucnv_fromUnicode())
- * when fallbacks are turned on (see ucnv_setFallback()).
- * This set includes all code points with roundtrips and fallbacks (but not reverse fallbacks).
- *
- * In the future, there may be more UConverterUnicodeSet choices to select
- * sets with different properties.
- *
- * @param cnv The converter for which a set is requested.
- * @param setFillIn A valid USet *. It will be cleared by this function before
- *            the converter's specific set is filled into the USet.
- * @param whichSet A UConverterUnicodeSet selector;
- *              currently UCNV_ROUNDTRIP_SET is the only supported value.
- * @param pErrorCode ICU error code in/out parameter.
- *                   Must fulfill U_SUCCESS before the function call.
- *
- * @see UConverterUnicodeSet
- * @see uset_open
- * @see uset_close
- * @stable ICU 2.6
- */
-U_STABLE void U_EXPORT2
-ucnv_getUnicodeSet(const UConverter *cnv,
-                   USet *setFillIn,
-                   UConverterUnicodeSet whichSet,
-                   UErrorCode *pErrorCode);
-
-/**
- * Gets the current calback function used by the converter when an illegal
- *  or invalid codepage sequence is found.
- * Context pointers are always owned by the caller.
- *
- * @param converter the unicode converter
- * @param action fillin: returns the callback function pointer
- * @param context fillin: returns the callback's private void* context
- * @see ucnv_setToUCallBack
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_getToUCallBack (const UConverter * converter,
-                     UConverterToUCallback *action,
-                     const void **context);
-
-/**
- * Gets the current callback function used by the converter when illegal
- * or invalid Unicode sequence is found.
- * Context pointers are always owned by the caller.
- *
- * @param converter the unicode converter
- * @param action fillin: returns the callback function pointer
- * @param context fillin: returns the callback's private void* context
- * @see ucnv_setFromUCallBack
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_getFromUCallBack (const UConverter * converter,
-                       UConverterFromUCallback *action,
-                       const void **context);
-
-/**
- * Changes the callback function used by the converter when
- * an illegal or invalid sequence is found.
- * Context pointers are always owned by the caller.
- * Predefined actions and contexts can be found in the ucnv_err.h header.
- *
- * @param converter the unicode converter
- * @param newAction the new callback function
- * @param newContext the new toUnicode callback context pointer. This can be NULL.
- * @param oldAction fillin: returns the old callback function pointer. This can be NULL.
- * @param oldContext fillin: returns the old callback's private void* context. This can be NULL.
- * @param err The error code status
- * @see ucnv_getToUCallBack
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_setToUCallBack (UConverter * converter,
-                     UConverterToUCallback newAction,
-                     const void* newContext,
-                     UConverterToUCallback *oldAction,
-                     const void** oldContext,
-                     UErrorCode * err);
-
-/**
- * Changes the current callback function used by the converter when
- * an illegal or invalid sequence is found.
- * Context pointers are always owned by the caller.
- * Predefined actions and contexts can be found in the ucnv_err.h header.
- *
- * @param converter the unicode converter
- * @param newAction the new callback function
- * @param newContext the new fromUnicode callback context pointer. This can be NULL.
- * @param oldAction fillin: returns the old callback function pointer. This can be NULL.
- * @param oldContext fillin: returns the old callback's private void* context. This can be NULL.
- * @param err The error code status
- * @see ucnv_getFromUCallBack
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_setFromUCallBack (UConverter * converter,
-                       UConverterFromUCallback newAction,
-                       const void *newContext,
-                       UConverterFromUCallback *oldAction,
-                       const void **oldContext,
-                       UErrorCode * err);
-
-/**
- * Converts an array of unicode characters to an array of codepage
- * characters. This function is optimized for converting a continuous
- * stream of data in buffer-sized chunks, where the entire source and
- * target does not fit in available buffers.
- *
- * The source pointer is an in/out parameter. It starts out pointing where the
- * conversion is to begin, and ends up pointing after the last UChar consumed.
- *
- * Target similarly starts out pointer at the first available byte in the output
- * buffer, and ends up pointing after the last byte written to the output.
- *
- * The converter always attempts to consume the entire source buffer, unless
- * (1.) the target buffer is full, or (2.) a failing error is returned from the
- * current callback function.  When a successful error status has been
- * returned, it means that all of the source buffer has been
- *  consumed. At that point, the caller should reset the source and
- *  sourceLimit pointers to point to the next chunk.
- *
- * At the end of the stream (flush==TRUE), the input is completely consumed
- * when *source==sourceLimit and no error code is set.
- * The converter object is then automatically reset by this function.
- * (This means that a converter need not be reset explicitly between data
- * streams if it finishes the previous stream without errors.)
- *
- * This is a <I>stateful</I> conversion. Additionally, even when all source data has
- * been consumed, some data may be in the converters' internal state.
- * Call this function repeatedly, updating the target pointers with
- * the next empty chunk of target in case of a
- * <TT>U_BUFFER_OVERFLOW_ERROR</TT>, and updating the source  pointers
- *  with the next chunk of source when a successful error status is
- * returned, until there are no more chunks of source data.
- * @param converter the Unicode converter
- * @param target I/O parameter. Input : Points to the beginning of the buffer to copy
- *  codepage characters to. Output : points to after the last codepage character copied
- *  to <TT>target</TT>.
- * @param targetLimit the pointer just after last of the <TT>target</TT> buffer
- * @param source I/O parameter, pointer to pointer to the source Unicode character buffer.
- * @param sourceLimit the pointer just after the last of the source buffer
- * @param offsets if NULL is passed, nothing will happen to it, otherwise it needs to have the same number
- * of allocated cells as <TT>target</TT>. Will fill in offsets from target to source pointer
- * e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
- * For output data carried across calls, and other data without a specific source character
- * (such as from escape sequences or callbacks)  -1 will be placed for offsets.
- * @param flush set to <TT>TRUE</TT> if the current source buffer is the last available
- * chunk of the source, <TT>FALSE</TT> otherwise. Note that if a failing status is returned,
- * this function may have to be called multiple times with flush set to <TT>TRUE</TT> until
- * the source buffer is consumed.
- * @param err the error status.  <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
- * converter is <TT>NULL</TT>.
- * <code>U_BUFFER_OVERFLOW_ERROR</code> will be set if the target is full and there is
- * still data to be written to the target.
- * @see ucnv_fromUChars
- * @see ucnv_convert
- * @see ucnv_getMinCharSize
- * @see ucnv_setToUCallBack
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_fromUnicode (UConverter * converter,
-                  char **target,
-                  const char *targetLimit,
-                  const UChar ** source,
-                  const UChar * sourceLimit,
-                  int32_t* offsets,
-                  UBool flush,
-                  UErrorCode * err);
-
-/**
- * Converts a buffer of codepage bytes into an array of unicode UChars
- * characters. This function is optimized for converting a continuous
- * stream of data in buffer-sized chunks, where the entire source and
- * target does not fit in available buffers.
- *
- * The source pointer is an in/out parameter. It starts out pointing where the
- * conversion is to begin, and ends up pointing after the last byte of source consumed.
- *
- * Target similarly starts out pointer at the first available UChar in the output
- * buffer, and ends up pointing after the last UChar written to the output.
- * It does NOT necessarily keep UChar sequences together.
- *
- * The converter always attempts to consume the entire source buffer, unless
- * (1.) the target buffer is full, or (2.) a failing error is returned from the
- * current callback function.  When a successful error status has been
- * returned, it means that all of the source buffer has been
- *  consumed. At that point, the caller should reset the source and
- *  sourceLimit pointers to point to the next chunk.
- *
- * At the end of the stream (flush==TRUE), the input is completely consumed
- * when *source==sourceLimit and no error code is set
- * The converter object is then automatically reset by this function.
- * (This means that a converter need not be reset explicitly between data
- * streams if it finishes the previous stream without errors.)
- *
- * This is a <I>stateful</I> conversion. Additionally, even when all source data has
- * been consumed, some data may be in the converters' internal state.
- * Call this function repeatedly, updating the target pointers with
- * the next empty chunk of target in case of a
- * <TT>U_BUFFER_OVERFLOW_ERROR</TT>, and updating the source  pointers
- *  with the next chunk of source when a successful error status is
- * returned, until there are no more chunks of source data.
- * @param converter the Unicode converter
- * @param target I/O parameter. Input : Points to the beginning of the buffer to copy
- *  UChars into. Output : points to after the last UChar copied.
- * @param targetLimit the pointer just after the end of the <TT>target</TT> buffer
- * @param source I/O parameter, pointer to pointer to the source codepage buffer.
- * @param sourceLimit the pointer to the byte after the end of the source buffer
- * @param offsets if NULL is passed, nothing will happen to it, otherwise it needs to have the same number
- * of allocated cells as <TT>target</TT>. Will fill in offsets from target to source pointer
- * e.g: <TT>offsets[3]</TT> is equal to 6, it means that the <TT>target[3]</TT> was a result of transcoding <TT>source[6]</TT>
- * For output data carried across calls, and other data without a specific source character
- * (such as from escape sequences or callbacks)  -1 will be placed for offsets.
- * @param flush set to <TT>TRUE</TT> if the current source buffer is the last available
- * chunk of the source, <TT>FALSE</TT> otherwise. Note that if a failing status is returned,
- * this function may have to be called multiple times with flush set to <TT>TRUE</TT> until
- * the source buffer is consumed.
- * @param err the error status.  <TT>U_ILLEGAL_ARGUMENT_ERROR</TT> will be set if the
- * converter is <TT>NULL</TT>.
- * <code>U_BUFFER_OVERFLOW_ERROR</code> will be set if the target is full and there is
- * still data to be written to the target.
- * @see ucnv_fromUChars
- * @see ucnv_convert
- * @see ucnv_getMinCharSize
- * @see ucnv_setFromUCallBack
- * @see ucnv_getNextUChar
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_toUnicode(UConverter *converter,
-               UChar **target,
-               const UChar *targetLimit,
-               const char **source,
-               const char *sourceLimit,
-               int32_t *offsets,
-               UBool flush,
-               UErrorCode *err);
-
-/**
- * Convert the Unicode string into a codepage string using an existing UConverter.
- * The output string is NUL-terminated if possible.
- *
- * This function is a more convenient but less powerful version of ucnv_fromUnicode().
- * It is only useful for whole strings, not for streaming conversion.
- *
- * The maximum output buffer capacity required (barring output from callbacks) will be
- * UCNV_GET_MAX_BYTES_FOR_STRING(srcLength, ucnv_getMaxCharSize(cnv)).
- *
- * @param cnv the converter object to be used (ucnv_resetFromUnicode() will be called)
- * @param src the input Unicode string
- * @param srcLength the input string length, or -1 if NUL-terminated
- * @param dest destination string buffer, can be NULL if destCapacity==0
- * @param destCapacity the number of chars available at dest
- * @param pErrorCode normal ICU error code;
- *                  common error codes that may be set by this function include
- *                  U_BUFFER_OVERFLOW_ERROR, U_STRING_NOT_TERMINATED_WARNING,
- *                  U_ILLEGAL_ARGUMENT_ERROR, and conversion errors
- * @return the length of the output string, not counting the terminating NUL;
- *         if the length is greater than destCapacity, then the string will not fit
- *         and a buffer of the indicated length would need to be passed in
- * @see ucnv_fromUnicode
- * @see ucnv_convert
- * @see UCNV_GET_MAX_BYTES_FOR_STRING
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_fromUChars(UConverter *cnv,
-                char *dest, int32_t destCapacity,
-                const UChar *src, int32_t srcLength,
-                UErrorCode *pErrorCode);
-
-/**
- * Convert the codepage string into a Unicode string using an existing UConverter.
- * The output string is NUL-terminated if possible.
- *
- * This function is a more convenient but less powerful version of ucnv_toUnicode().
- * It is only useful for whole strings, not for streaming conversion.
- *
- * The maximum output buffer capacity required (barring output from callbacks) will be
- * 2*srcLength (each char may be converted into a surrogate pair).
- *
- * @param cnv the converter object to be used (ucnv_resetToUnicode() will be called)
- * @param src the input codepage string
- * @param srcLength the input string length, or -1 if NUL-terminated
- * @param dest destination string buffer, can be NULL if destCapacity==0
- * @param destCapacity the number of UChars available at dest
- * @param pErrorCode normal ICU error code;
- *                  common error codes that may be set by this function include
- *                  U_BUFFER_OVERFLOW_ERROR, U_STRING_NOT_TERMINATED_WARNING,
- *                  U_ILLEGAL_ARGUMENT_ERROR, and conversion errors
- * @return the length of the output string, not counting the terminating NUL;
- *         if the length is greater than destCapacity, then the string will not fit
- *         and a buffer of the indicated length would need to be passed in
- * @see ucnv_toUnicode
- * @see ucnv_convert
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_toUChars(UConverter *cnv,
-              UChar *dest, int32_t destCapacity,
-              const char *src, int32_t srcLength,
-              UErrorCode *pErrorCode);
-
-/**
- * Convert a codepage buffer into Unicode one character at a time.
- * The input is completely consumed when the U_INDEX_OUTOFBOUNDS_ERROR is set.
- *
- * Advantage compared to ucnv_toUnicode() or ucnv_toUChars():
- * - Faster for small amounts of data, for most converters, e.g.,
- *   US-ASCII, ISO-8859-1, UTF-8/16/32, and most "normal" charsets.
- *   (For complex converters, e.g., SCSU, UTF-7 and ISO 2022 variants,
- *    it uses ucnv_toUnicode() internally.)
- * - Convenient.
- *
- * Limitations compared to ucnv_toUnicode():
- * - Always assumes flush=TRUE.
- *   This makes ucnv_getNextUChar() unsuitable for "streaming" conversion,
- *   that is, for where the input is supplied in multiple buffers,
- *   because ucnv_getNextUChar() will assume the end of the input at the end
- *   of the first buffer.
- * - Does not provide offset output.
- *
- * It is possible to "mix" ucnv_getNextUChar() and ucnv_toUnicode() because
- * ucnv_getNextUChar() uses the current state of the converter
- * (unlike ucnv_toUChars() which always resets first).
- * However, if ucnv_getNextUChar() is called after ucnv_toUnicode()
- * stopped in the middle of a character sequence (with flush=FALSE),
- * then ucnv_getNextUChar() will always use the slower ucnv_toUnicode()
- * internally until the next character boundary.
- * (This is new in ICU 2.6. In earlier releases, ucnv_getNextUChar() had to
- * start at a character boundary.)
- *
- * Instead of using ucnv_getNextUChar(), it is recommended
- * to convert using ucnv_toUnicode() or ucnv_toUChars()
- * and then iterate over the text using U16_NEXT() or a UCharIterator (uiter.h)
- * or a C++ CharacterIterator or similar.
- * This allows streaming conversion and offset output, for example.
- *
- * <p>Handling of surrogate pairs and supplementary-plane code points:<br>
- * There are two different kinds of codepages that provide mappings for surrogate characters:
- * <ul>
- *   <li>Codepages like UTF-8, UTF-32, and GB 18030 provide direct representations for Unicode
- *       code points U+10000-U+10ffff as well as for single surrogates U+d800-U+dfff.
- *       Each valid sequence will result in exactly one returned code point.
- *       If a sequence results in a single surrogate, then that will be returned
- *       by itself, even if a neighboring sequence encodes the matching surrogate.</li>
- *   <li>Codepages like SCSU and LMBCS (and UTF-16) provide direct representations only for BMP code points
- *       including surrogates. Code points in supplementary planes are represented with
- *       two sequences, each encoding a surrogate.
- *       For these codepages, matching pairs of surrogates will be combined into single
- *       code points for returning from this function.
- *       (Note that SCSU is actually a mix of these codepage types.)</li>
- * </ul></p>
- *
- * @param converter an open UConverter
- * @param source the address of a pointer to the codepage buffer, will be
- *  updated to point after the bytes consumed in the conversion call.
- * @param sourceLimit points to the end of the input buffer
- * @param err fills in error status (see ucnv_toUnicode)
- * <code>U_INDEX_OUTOFBOUNDS_ERROR</code> will be set if the input
- * is empty or does not convert to any output (e.g.: pure state-change
- * codes SI/SO, escape sequences for ISO 2022,
- * or if the callback did not output anything, ...).
- * This function will not set a <code>U_BUFFER_OVERFLOW_ERROR</code> because
- *  the "buffer" is the return code. However, there might be subsequent output
- *  stored in the converter object
- * that will be returned in following calls to this function.
- * @return a UChar32 resulting from the partial conversion of source
- * @see ucnv_toUnicode
- * @see ucnv_toUChars
- * @see ucnv_convert
- * @stable ICU 2.0
- */
-U_STABLE UChar32 U_EXPORT2
-ucnv_getNextUChar(UConverter * converter,
-                  const char **source,
-                  const char * sourceLimit,
-                  UErrorCode * err);
-
-/**
- * Convert from one external charset to another using two existing UConverters.
- * Internally, two conversions - ucnv_toUnicode() and ucnv_fromUnicode() -
- * are used, "pivoting" through 16-bit Unicode.
- *
- * Important: For streaming conversion (multiple function calls for successive
- * parts of a text stream), the caller must provide a pivot buffer explicitly,
- * and must preserve the pivot buffer and associated pointers from one
- * call to another. (The buffer may be moved if its contents and the relative
- * pointer positions are preserved.)
- *
- * There is a similar function, ucnv_convert(),
- * which has the following limitations:
- * - it takes charset names, not converter objects, so that
- *   - two converters are opened for each call
- *   - only single-string conversion is possible, not streaming operation
- * - it does not provide enough information to find out,
- *   in case of failure, whether the toUnicode or
- *   the fromUnicode conversion failed
- *
- * By contrast, ucnv_convertEx()
- * - takes UConverter parameters instead of charset names
- * - fully exposes the pivot buffer for streaming conversion and complete error handling
- *
- * ucnv_convertEx() also provides further convenience:
- * - an option to reset the converters at the beginning
- *   (if reset==TRUE, see parameters;
- *    also sets *pivotTarget=*pivotSource=pivotStart)
- * - allow NUL-terminated input
- *   (only a single NUL byte, will not work for charsets with multi-byte NULs)
- *   (if sourceLimit==NULL, see parameters)
- * - terminate with a NUL on output
- *   (only a single NUL byte, not useful for charsets with multi-byte NULs),
- *   or set U_STRING_NOT_TERMINATED_WARNING if the output exactly fills
- *   the target buffer
- * - the pivot buffer can be provided internally;
- *   possible only for whole-string conversion, not streaming conversion;
- *   in this case, the caller will not be able to get details about where an
- *   error occurred
- *   (if pivotStart==NULL, see below)
- *
- * The function returns when one of the following is true:
- * - the entire source text has been converted successfully to the target buffer
- * - a target buffer overflow occurred (U_BUFFER_OVERFLOW_ERROR)
- * - a conversion error occurred
- *   (other U_FAILURE(), see description of pErrorCode)
- *
- * Limitation compared to the direct use of
- * ucnv_fromUnicode() and ucnv_toUnicode():
- * ucnv_convertEx() does not provide offset information.
- *
- * Limitation compared to ucnv_fromUChars() and ucnv_toUChars():
- * ucnv_convertEx() does not support preflighting directly.
- *
- * Sample code for converting a single string from
- * one external charset to UTF-8, ignoring the location of errors:
- *
- * \code
- * int32_t
- * myToUTF8(UConverter *cnv,
- *          const char *s, int32_t length,
- *          char *u8, int32_t capacity,
- *          UErrorCode *pErrorCode) {
- *     UConverter *utf8Cnv;
- *     char *target;
- *
- *     if(U_FAILURE(*pErrorCode)) {
- *         return 0;
- *     }
- *
- *     utf8Cnv=myGetCachedUTF8Converter(pErrorCode);
- *     if(U_FAILURE(*pErrorCode)) {
- *         return 0;
- *     }
- *
- *     if(length<0) {
- *         length=strlen(s);
- *     }
- *     target=u8;
- *     ucnv_convertEx(utf8Cnv, cnv,
- *                    &target, u8+capacity,
- *                    &s, s+length,
- *                    NULL, NULL, NULL, NULL,
- *                    TRUE, TRUE,
- *                    pErrorCode);
- *
- *     myReleaseCachedUTF8Converter(utf8Cnv);
- *
- *     // return the output string length, but without preflighting
- *     return (int32_t)(target-u8);
- * }
- * \endcode
- *
- * @param targetCnv     Output converter, used to convert from the UTF-16 pivot
- *                      to the target using ucnv_fromUnicode().
- * @param sourceCnv     Input converter, used to convert from the source to
- *                      the UTF-16 pivot using ucnv_toUnicode().
- * @param target        I/O parameter, same as for ucnv_fromUChars().
- *                      Input: *target points to the beginning of the target buffer.
- *                      Output: *target points to the first unit after the last char written.
- * @param targetLimit   Pointer to the first unit after the target buffer.
- * @param source        I/O parameter, same as for ucnv_toUChars().
- *                      Input: *source points to the beginning of the source buffer.
- *                      Output: *source points to the first unit after the last char read.
- * @param sourceLimit   Pointer to the first unit after the source buffer.
- * @param pivotStart    Pointer to the UTF-16 pivot buffer. If pivotStart==NULL,
- *                      then an internal buffer is used and the other pivot
- *                      arguments are ignored and can be NULL as well.
- * @param pivotSource   I/O parameter, same as source in ucnv_fromUChars() for
- *                      conversion from the pivot buffer to the target buffer.
- * @param pivotTarget   I/O parameter, same as target in ucnv_toUChars() for
- *                      conversion from the source buffer to the pivot buffer.
- *                      It must be pivotStart<=*pivotSource<=*pivotTarget<=pivotLimit
- *                      and pivotStart<pivotLimit (unless pivotStart==NULL).
- * @param pivotLimit    Pointer to the first unit after the pivot buffer.
- * @param reset         If TRUE, then ucnv_resetToUnicode(sourceCnv) and
- *                      ucnv_resetFromUnicode(targetCnv) are called, and the
- *                      pivot pointers are reset (*pivotTarget=*pivotSource=pivotStart).
- * @param flush         If true, indicates the end of the input.
- *                      Passed directly to ucnv_toUnicode(), and carried over to
- *                      ucnv_fromUnicode() when the source is empty as well.
- * @param pErrorCode    ICU error code in/out parameter.
- *                      Must fulfill U_SUCCESS before the function call.
- *                      U_BUFFER_OVERFLOW_ERROR always refers to the target buffer
- *                      because overflows into the pivot buffer are handled internally.
- *                      Other conversion errors are from the source-to-pivot
- *                      conversion if *pivotSource==pivotStart, otherwise from
- *                      the pivot-to-target conversion.
- *
- * @see ucnv_convert
- * @see ucnv_fromAlgorithmic
- * @see ucnv_toAlgorithmic
- * @see ucnv_fromUnicode
- * @see ucnv_toUnicode
- * @see ucnv_fromUChars
- * @see ucnv_toUChars
- * @stable ICU 2.6
- */
-U_STABLE void U_EXPORT2
-ucnv_convertEx(UConverter *targetCnv, UConverter *sourceCnv,
-               char **target, const char *targetLimit,
-               const char **source, const char *sourceLimit,
-               UChar *pivotStart, UChar **pivotSource,
-               UChar **pivotTarget, const UChar *pivotLimit,
-               UBool reset, UBool flush,
-               UErrorCode *pErrorCode);
-
-/**
- * Convert from one external charset to another.
- * Internally, two converters are opened according to the name arguments,
- * then the text is converted to and from the 16-bit Unicode "pivot"
- * using ucnv_convertEx(), then the converters are closed again.
- *
- * This is a convenience function, not an efficient way to convert a lot of text:
- * ucnv_convert()
- * - takes charset names, not converter objects, so that
- *   - two converters are opened for each call
- *   - only single-string conversion is possible, not streaming operation
- * - does not provide enough information to find out,
- *   in case of failure, whether the toUnicode or
- *   the fromUnicode conversion failed
- * - allows NUL-terminated input
- *   (only a single NUL byte, will not work for charsets with multi-byte NULs)
- *   (if sourceLength==-1, see parameters)
- * - terminate with a NUL on output
- *   (only a single NUL byte, not useful for charsets with multi-byte NULs),
- *   or set U_STRING_NOT_TERMINATED_WARNING if the output exactly fills
- *   the target buffer
- * - a pivot buffer is provided internally
- *
- * The function returns when one of the following is true:
- * - the entire source text has been converted successfully to the target buffer
- *   and either the target buffer is terminated with a single NUL byte
- *   or the error code is set to U_STRING_NOT_TERMINATED_WARNING
- * - a target buffer overflow occurred (U_BUFFER_OVERFLOW_ERROR)
- *   and the full output string length is returned ("preflighting")
- * - a conversion error occurred
- *   (other U_FAILURE(), see description of pErrorCode)
- *
- * @param toConverterName   The name of the converter that is used to convert
- *                          from the UTF-16 pivot buffer to the target.
- * @param fromConverterName The name of the converter that is used to convert
- *                          from the source to the UTF-16 pivot buffer.
- * @param target            Pointer to the output buffer.
- * @param targetCapacity    Capacity of the target, in bytes.
- * @param source            Pointer to the input buffer.
- * @param sourceLength      Length of the input text, in bytes, or -1 for NUL-terminated input.
- * @param pErrorCode        ICU error code in/out parameter.
- *                          Must fulfill U_SUCCESS before the function call.
- * @return Length of the complete output text in bytes, even if it exceeds the targetCapacity
- *         and a U_BUFFER_OVERFLOW_ERROR is set.
- *
- * @see ucnv_convertEx
- * @see ucnv_fromAlgorithmic
- * @see ucnv_toAlgorithmic
- * @see ucnv_fromUnicode
- * @see ucnv_toUnicode
- * @see ucnv_fromUChars
- * @see ucnv_toUChars
- * @see ucnv_getNextUChar
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_convert(const char *toConverterName,
-             const char *fromConverterName,
-             char *target,
-             int32_t targetCapacity,
-             const char *source,
-             int32_t sourceLength,
-             UErrorCode *pErrorCode);
-
-/**
- * Convert from one external charset to another.
- * Internally, the text is converted to and from the 16-bit Unicode "pivot"
- * using ucnv_convertEx(). ucnv_toAlgorithmic() works exactly like ucnv_convert()
- * except that the two converters need not be looked up and opened completely.
- *
- * The source-to-pivot conversion uses the cnv converter parameter.
- * The pivot-to-target conversion uses a purely algorithmic converter
- * according to the specified type, e.g., UCNV_UTF8 for a UTF-8 converter.
- *
- * Internally, the algorithmic converter is opened and closed for each
- * function call, which is more efficient than using the public ucnv_open()
- * but somewhat less efficient than only resetting an existing converter
- * and using ucnv_convertEx().
- *
- * This function is more convenient than ucnv_convertEx() for single-string
- * conversions, especially when "preflighting" is desired (returning the length
- * of the complete output even if it does not fit into the target buffer;
- * see the User Guide Strings chapter). See ucnv_convert() for details.
- *
- * @param algorithmicType   UConverterType constant identifying the desired target
- *                          charset as a purely algorithmic converter.
- *                          Those are converters for Unicode charsets like
- *                          UTF-8, BOCU-1, SCSU, UTF-7, IMAP-mailbox-name, etc.,
- *                          as well as US-ASCII and ISO-8859-1.
- * @param cnv               The converter that is used to convert
- *                          from the source to the UTF-16 pivot buffer.
- * @param target            Pointer to the output buffer.
- * @param targetCapacity    Capacity of the target, in bytes.
- * @param source            Pointer to the input buffer.
- * @param sourceLength      Length of the input text, in bytes
- * @param pErrorCode        ICU error code in/out parameter.
- *                          Must fulfill U_SUCCESS before the function call.
- * @return Length of the complete output text in bytes, even if it exceeds the targetCapacity
- *         and a U_BUFFER_OVERFLOW_ERROR is set.
- *
- * @see ucnv_fromAlgorithmic
- * @see ucnv_convert
- * @see ucnv_convertEx
- * @see ucnv_fromUnicode
- * @see ucnv_toUnicode
- * @see ucnv_fromUChars
- * @see ucnv_toUChars
- * @stable ICU 2.6
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_toAlgorithmic(UConverterType algorithmicType,
-                   UConverter *cnv,
-                   char *target, int32_t targetCapacity,
-                   const char *source, int32_t sourceLength,
-                   UErrorCode *pErrorCode);
-
-/**
- * Convert from one external charset to another.
- * Internally, the text is converted to and from the 16-bit Unicode "pivot"
- * using ucnv_convertEx(). ucnv_fromAlgorithmic() works exactly like ucnv_convert()
- * except that the two converters need not be looked up and opened completely.
- *
- * The source-to-pivot conversion uses a purely algorithmic converter
- * according to the specified type, e.g., UCNV_UTF8 for a UTF-8 converter.
- * The pivot-to-target conversion uses the cnv converter parameter.
- *
- * Internally, the algorithmic converter is opened and closed for each
- * function call, which is more efficient than using the public ucnv_open()
- * but somewhat less efficient than only resetting an existing converter
- * and using ucnv_convertEx().
- *
- * This function is more convenient than ucnv_convertEx() for single-string
- * conversions, especially when "preflighting" is desired (returning the length
- * of the complete output even if it does not fit into the target buffer;
- * see the User Guide Strings chapter). See ucnv_convert() for details.
- *
- * @param cnv               The converter that is used to convert
- *                          from the UTF-16 pivot buffer to the target.
- * @param algorithmicType   UConverterType constant identifying the desired source
- *                          charset as a purely algorithmic converter.
- *                          Those are converters for Unicode charsets like
- *                          UTF-8, BOCU-1, SCSU, UTF-7, IMAP-mailbox-name, etc.,
- *                          as well as US-ASCII and ISO-8859-1.
- * @param target            Pointer to the output buffer.
- * @param targetCapacity    Capacity of the target, in bytes.
- * @param source            Pointer to the input buffer.
- * @param sourceLength      Length of the input text, in bytes
- * @param pErrorCode        ICU error code in/out parameter.
- *                          Must fulfill U_SUCCESS before the function call.
- * @return Length of the complete output text in bytes, even if it exceeds the targetCapacity
- *         and a U_BUFFER_OVERFLOW_ERROR is set.
- *
- * @see ucnv_fromAlgorithmic
- * @see ucnv_convert
- * @see ucnv_convertEx
- * @see ucnv_fromUnicode
- * @see ucnv_toUnicode
- * @see ucnv_fromUChars
- * @see ucnv_toUChars
- * @stable ICU 2.6
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_fromAlgorithmic(UConverter *cnv,
-                     UConverterType algorithmicType,
-                     char *target, int32_t targetCapacity,
-                     const char *source, int32_t sourceLength,
-                     UErrorCode *pErrorCode);
-
-/**
- * Frees up memory occupied by unused, cached converter shared data.
- *
- * @return the number of cached converters successfully deleted
- * @see ucnv_close
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_flushCache(void);
-
-/**
- * Returns the number of available converters, as per the alias file.
- *
- * @return the number of available converters
- * @see ucnv_getAvailableName
- * @stable ICU 2.0
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_countAvailable(void);
-
-/**
- * Gets the canonical converter name of the specified converter from a list of
- * all available converters contaied in the alias file. All converters
- * in this list can be opened.
- *
- * @param n the index to a converter available on the system (in the range <TT>[0..ucnv_countAvaiable()]</TT>)
- * @return a pointer a string (library owned), or <TT>NULL</TT> if the index is out of bounds.
- * @see ucnv_countAvailable
- * @stable ICU 2.0
- */
-U_STABLE const char* U_EXPORT2
-ucnv_getAvailableName(int32_t n);
-
-/**
- * Returns a UEnumeration to enumerate all of the canonical converter
- * names, as per the alias file, regardless of the ability to open each
- * converter.
- *
- * @return A UEnumeration object for getting all the recognized canonical
- *   converter names.
- * @see ucnv_getAvailableName
- * @see uenum_close
- * @see uenum_next
- * @stable ICU 2.4
- */
-U_STABLE UEnumeration * U_EXPORT2
-ucnv_openAllNames(UErrorCode *pErrorCode);
-
-/**
- * Gives the number of aliases for a given converter or alias name.
- * If the alias is ambiguous, then the preferred converter is used
- * and the status is set to U_AMBIGUOUS_ALIAS_WARNING.
- * This method only enumerates the listed entries in the alias file.
- * @param alias alias name
- * @param pErrorCode error status
- * @return number of names on alias list for given alias
- * @stable ICU 2.0
- */
-U_STABLE uint16_t U_EXPORT2
-ucnv_countAliases(const char *alias, UErrorCode *pErrorCode);
-
-/**
- * Gives the name of the alias at given index of alias list.
- * This method only enumerates the listed entries in the alias file.
- * If the alias is ambiguous, then the preferred converter is used
- * and the status is set to U_AMBIGUOUS_ALIAS_WARNING.
- * @param alias alias name
- * @param n index in alias list
- * @param pErrorCode result of operation
- * @return returns the name of the alias at given index
- * @see ucnv_countAliases
- * @stable ICU 2.0
- */
-U_STABLE const char * U_EXPORT2
-ucnv_getAlias(const char *alias, uint16_t n, UErrorCode *pErrorCode);
-
-/**
- * Fill-up the list of alias names for the given alias.
- * This method only enumerates the listed entries in the alias file.
- * If the alias is ambiguous, then the preferred converter is used
- * and the status is set to U_AMBIGUOUS_ALIAS_WARNING.
- * @param alias alias name
- * @param aliases fill-in list, aliases is a pointer to an array of
- *        <code>ucnv_countAliases()</code> string-pointers
- *        (<code>const char *</code>) that will be filled in.
- *        The strings themselves are owned by the library.
- * @param pErrorCode result of operation
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_getAliases(const char *alias, const char **aliases, UErrorCode *pErrorCode);
-
-/**
- * Return a new UEnumeration object for enumerating all the
- * alias names for a given converter that are recognized by a standard.
- * This method only enumerates the listed entries in the alias file.
- * The convrtrs.txt file can be modified to change the results of
- * this function.
- * The first result in this list is the same result given by
- * <code>ucnv_getStandardName</code>, which is the default alias for
- * the specified standard name. The returned object must be closed with
- * <code>uenum_close</code> when you are done with the object.
- *
- * @param convName original converter name
- * @param standard name of the standard governing the names; MIME and IANA
- *      are such standards
- * @param pErrorCode The error code
- * @return A UEnumeration object for getting all aliases that are recognized
- *      by a standard. If any of the parameters are invalid, NULL
- *      is returned.
- * @see ucnv_getStandardName
- * @see uenum_close
- * @see uenum_next
- * @stable ICU 2.2
- */
-U_STABLE UEnumeration * U_EXPORT2
-ucnv_openStandardNames(const char *convName,
-                       const char *standard,
-                       UErrorCode *pErrorCode);
-
-/**
- * Gives the number of standards associated to converter names.
- * @return number of standards
- * @stable ICU 2.0
- */
-U_STABLE uint16_t U_EXPORT2
-ucnv_countStandards(void);
-
-/**
- * Gives the name of the standard at given index of standard list.
- * @param n index in standard list
- * @param pErrorCode result of operation
- * @return returns the name of the standard at given index. Owned by the library.
- * @stable ICU 2.0
- */
-U_STABLE const char * U_EXPORT2
-ucnv_getStandard(uint16_t n, UErrorCode *pErrorCode);
-
-/**
- * Returns a standard name for a given converter name.
- * <p>
- * Example alias table:<br>
- * conv alias1 { STANDARD1 } alias2 { STANDARD1* }
- * <p>
- * Result of ucnv_getStandardName("conv", "STANDARD1") from example
- * alias table:<br>
- * <b>"alias2"</b>
- *
- * @param name original converter name
- * @param standard name of the standard governing the names; MIME and IANA
- *        are such standards
- * @param pErrorCode result of operation
- * @return returns the standard converter name;
- *         if a standard converter name cannot be determined,
- *         then <code>NULL</code> is returned. Owned by the library.
- * @stable ICU 2.0
- */
-U_STABLE const char * U_EXPORT2
-ucnv_getStandardName(const char *name, const char *standard, UErrorCode *pErrorCode);
-
-/**
- * This function will return the internal canonical converter name of the
- * tagged alias. This is the opposite of ucnv_openStandardNames, which
- * returns the tagged alias given the canonical name.
- * <p>
- * Example alias table:<br>
- * conv alias1 { STANDARD1 } alias2 { STANDARD1* }
- * <p>
- * Result of ucnv_getStandardName("alias1", "STANDARD1") from example
- * alias table:<br>
- * <b>"conv"</b>
- *
- * @return returns the canonical converter name;
- *         if a standard or alias name cannot be determined,
- *         then <code>NULL</code> is returned. The returned string is
- *         owned by the library.
- * @see ucnv_getStandardName
- * @stable ICU 2.4
- */
-U_STABLE const char * U_EXPORT2
-ucnv_getCanonicalName(const char *alias, const char *standard, UErrorCode *pErrorCode);
-
-/**
- * Returns the current default converter name. If you want to open
- * a default converter, you do not need to use this function.
- * It is faster if you pass a NULL argument to ucnv_open the
- * default converter.
- *
- * If U_CHARSET_IS_UTF8 is defined to 1 in utypes.h then this function
- * always returns "UTF-8".
- *
- * @return returns the current default converter name.
- *         Storage owned by the library
- * @see ucnv_setDefaultName
- * @stable ICU 2.0
- */
-U_STABLE const char * U_EXPORT2
-ucnv_getDefaultName(void);
-
-#ifndef U_HIDE_SYSTEM_API
-/**
- * This function is not thread safe. DO NOT call this function when ANY ICU
- * function is being used from more than one thread! This function sets the
- * current default converter name. If this function needs to be called, it
- * should be called during application initialization. Most of the time, the
- * results from ucnv_getDefaultName() or ucnv_open with a NULL string argument
- * is sufficient for your application.
- *
- * If U_CHARSET_IS_UTF8 is defined to 1 in utypes.h then this function
- * does nothing.
- *
- * @param name the converter name to be the default (must be known by ICU).
- * @see ucnv_getDefaultName
- * @system
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_setDefaultName(const char *name);
-#endif  /* U_HIDE_SYSTEM_API */
-
-/**
- * Fixes the backslash character mismapping.  For example, in SJIS, the backslash
- * character in the ASCII portion is also used to represent the yen currency sign.
- * When mapping from Unicode character 0x005C, it's unclear whether to map the
- * character back to yen or backslash in SJIS.  This function will take the input
- * buffer and replace all the yen sign characters with backslash.  This is necessary
- * when the user tries to open a file with the input buffer on Windows.
- * This function will test the converter to see whether such mapping is
- * required.  You can sometimes avoid using this function by using the correct version
- * of Shift-JIS.
- *
- * @param cnv The converter representing the target codepage.
- * @param source the input buffer to be fixed
- * @param sourceLen the length of the input buffer
- * @see ucnv_isAmbiguous
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2
-ucnv_fixFileSeparator(const UConverter *cnv, UChar *source, int32_t sourceLen);
-
-/**
- * Determines if the converter contains ambiguous mappings of the same
- * character or not.
- * @param cnv the converter to be tested
- * @return TRUE if the converter contains ambiguous mapping of the same
- * character, FALSE otherwise.
- * @stable ICU 2.0
- */
-U_STABLE UBool U_EXPORT2
-ucnv_isAmbiguous(const UConverter *cnv);
-
-/**
- * Sets the converter to use fallback mappings or not.
- * Regardless of this flag, the converter will always use
- * fallbacks from Unicode Private Use code points, as well as
- * reverse fallbacks (to Unicode).
- * For details see ".ucm File Format"
- * in the Conversion Data chapter of the ICU User Guide:
- * http://www.icu-project.org/userguide/conversion-data.html#ucmformat
- *
- * @param cnv The converter to set the fallback mapping usage on.
- * @param usesFallback TRUE if the user wants the converter to take advantage of the fallback
- * mapping, FALSE otherwise.
- * @stable ICU 2.0
- * @see ucnv_usesFallback
- */
-U_STABLE void U_EXPORT2
-ucnv_setFallback(UConverter *cnv, UBool usesFallback);
-
-/**
- * Determines if the converter uses fallback mappings or not.
- * This flag has restrictions, see ucnv_setFallback().
- *
- * @param cnv The converter to be tested
- * @return TRUE if the converter uses fallback, FALSE otherwise.
- * @stable ICU 2.0
- * @see ucnv_setFallback
- */
-U_STABLE UBool U_EXPORT2
-ucnv_usesFallback(const UConverter *cnv);
-
-/**
- * Detects Unicode signature byte sequences at the start of the byte stream
- * and returns the charset name of the indicated Unicode charset.
- * NULL is returned when no Unicode signature is recognized.
- * The number of bytes in the signature is output as well.
- *
- * The caller can ucnv_open() a converter using the charset name.
- * The first code unit (UChar) from the start of the stream will be U+FEFF
- * (the Unicode BOM/signature character) and can usually be ignored.
- *
- * For most Unicode charsets it is also possible to ignore the indicated
- * number of initial stream bytes and start converting after them.
- * However, there are stateful Unicode charsets (UTF-7 and BOCU-1) for which
- * this will not work. Therefore, it is best to ignore the first output UChar
- * instead of the input signature bytes.
- * <p>
- * Usage:
- * \snippet samples/ucnv/convsamp.cpp ucnv_detectUnicodeSignature
- *
- * @param source            The source string in which the signature should be detected.
- * @param sourceLength      Length of the input string, or -1 if terminated with a NUL byte.
- * @param signatureLength   A pointer to int32_t to receive the number of bytes that make up the signature
- *                          of the detected UTF. 0 if not detected.
- *                          Can be a NULL pointer.
- * @param pErrorCode        ICU error code in/out parameter.
- *                          Must fulfill U_SUCCESS before the function call.
- * @return The name of the encoding detected. NULL if encoding is not detected.
- * @stable ICU 2.4
- */
-U_STABLE const char* U_EXPORT2
-ucnv_detectUnicodeSignature(const char* source,
-                            int32_t sourceLength,
-                            int32_t *signatureLength,
-                            UErrorCode *pErrorCode);
-
-/**
- * Returns the number of UChars held in the converter's internal state
- * because more input is needed for completing the conversion. This function is
- * useful for mapping semantics of ICU's converter interface to those of iconv,
- * and this information is not needed for normal conversion.
- * @param cnv       The converter in which the input is held
- * @param status    ICU error code in/out parameter.
- *                  Must fulfill U_SUCCESS before the function call.
- * @return The number of UChars in the state. -1 if an error is encountered.
- * @stable ICU 3.4
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_fromUCountPending(const UConverter* cnv, UErrorCode* status);
-
-/**
- * Returns the number of chars held in the converter's internal state
- * because more input is needed for completing the conversion. This function is
- * useful for mapping semantics of ICU's converter interface to those of iconv,
- * and this information is not needed for normal conversion.
- * @param cnv       The converter in which the input is held as internal state
- * @param status    ICU error code in/out parameter.
- *                  Must fulfill U_SUCCESS before the function call.
- * @return The number of chars in the state. -1 if an error is encountered.
- * @stable ICU 3.4
- */
-U_STABLE int32_t U_EXPORT2
-ucnv_toUCountPending(const UConverter* cnv, UErrorCode* status);
-
-/**
- * Returns whether or not the charset of the converter has a fixed number of bytes
- * per charset character.
- * An example of this are converters that are of the type UCNV_SBCS or UCNV_DBCS.
- * Another example is UTF-32 which is always 4 bytes per character.
- * A Unicode code point may be represented by more than one UTF-8 or UTF-16 code unit
- * but a UTF-32 converter encodes each code point with 4 bytes.
- * Note: This method is not intended to be used to determine whether the charset has a
- * fixed ratio of bytes to Unicode codes <i>units</i> for any particular Unicode encoding form.
- * FALSE is returned with the UErrorCode if error occurs or cnv is NULL.
- * @param cnv       The converter to be tested
- * @param status    ICU error code in/out paramter
- * @return TRUE if the converter is fixed-width
- * @stable ICU 4.8
- */
-U_STABLE UBool U_EXPORT2
-ucnv_isFixedWidth(UConverter *cnv, UErrorCode *status);
-
-#endif
-
-#endif
-/*_UCNV*/
diff --git a/Source/JavaScriptCore/icu/unicode/ucnv_err.h b/Source/JavaScriptCore/icu/unicode/ucnv_err.h
deleted file mode 100644 (file)
index e092e95..0000000
+++ /dev/null
@@ -1,463 +0,0 @@
-/*
-**********************************************************************
-*   Copyright (C) 1999-2009, International Business Machines
-*   Corporation and others.  All Rights Reserved.
-**********************************************************************
- *
- *
- *   ucnv_err.h:
- */
-
-/**
- * \file
- * \brief C UConverter predefined error callbacks
- *
- *  <h2>Error Behaviour Functions</h2>
- *  Defines some error behaviour functions called by ucnv_{from,to}Unicode
- *  These are provided as part of ICU and many are stable, but they
- *  can also be considered only as an example of what can be done with
- *  callbacks.  You may of course write your own.
- *
- *  If you want to write your own, you may also find the functions from
- *  ucnv_cb.h useful when writing your own callbacks.
- *
- *  These functions, although public, should NEVER be called directly.
- *  They should be used as parameters to the ucnv_setFromUCallback
- *  and ucnv_setToUCallback functions, to set the behaviour of a converter
- *  when it encounters ILLEGAL/UNMAPPED/INVALID sequences.
- *
- *  usage example:  'STOP' doesn't need any context, but newContext
- *    could be set to something other than 'NULL' if needed. The available
- *    contexts in this header can modify the default behavior of the callback.
- *
- *  \code
- *  UErrorCode err = U_ZERO_ERROR;
- *  UConverter *myConverter = ucnv_open("ibm-949", &err);
- *  const void *oldContext;
- *  UConverterFromUCallback oldAction;
- *
- *
- *  if (U_SUCCESS(err))
- *  {
- *      ucnv_setFromUCallBack(myConverter,
- *                       UCNV_FROM_U_CALLBACK_STOP,
- *                       NULL,
- *                       &oldAction,
- *                       &oldContext,
- *                       &status);
- *  }
- *  \endcode
- *
- *  The code above tells "myConverter" to stop when it encounters an
- *  ILLEGAL/TRUNCATED/INVALID sequences when it is used to convert from
- *  Unicode -> Codepage. The behavior from Codepage to Unicode is not changed,
- *  and ucnv_setToUCallBack would need to be called in order to change
- *  that behavior too.
- *
- *  Here is an example with a context:
- *
- *  \code
- *  UErrorCode err = U_ZERO_ERROR;
- *  UConverter *myConverter = ucnv_open("ibm-949", &err);
- *  const void *oldContext;
- *  UConverterFromUCallback oldAction;
- *
- *
- *  if (U_SUCCESS(err))
- *  {
- *      ucnv_setToUCallBack(myConverter,
- *                       UCNV_TO_U_CALLBACK_SUBSTITUTE,
- *                       UCNV_SUB_STOP_ON_ILLEGAL,
- *                       &oldAction,
- *                       &oldContext,
- *                       &status);
- *  }
- *  \endcode
- *
- *  The code above tells "myConverter" to stop when it encounters an
- *  ILLEGAL/TRUNCATED/INVALID sequences when it is used to convert from
- *  Codepage -> Unicode. Any unmapped and legal characters will be
- *  substituted to be the default substitution character.
- */
-
-#ifndef UCNV_ERR_H
-#define UCNV_ERR_H
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_CONVERSION
-
-/** Forward declaring the UConverter structure. @stable ICU 2.0 */
-struct UConverter;
-
-/** @stable ICU 2.0 */
-typedef struct UConverter UConverter;
-
-/**
- * FROM_U, TO_U context options for sub callback
- * @stable ICU 2.0
- */
-#define UCNV_SUB_STOP_ON_ILLEGAL "i"
-
-/**
- * FROM_U, TO_U context options for skip callback
- * @stable ICU 2.0
- */
-#define UCNV_SKIP_STOP_ON_ILLEGAL "i"
-
-/**
- * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to ICU (%UXXXX) 
- * @stable ICU 2.0
- */
-#define UCNV_ESCAPE_ICU       NULL
-/**
- * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to JAVA (\\uXXXX)
- * @stable ICU 2.0
- */
-#define UCNV_ESCAPE_JAVA      "J"
-/**
- * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to C (\\uXXXX \\UXXXXXXXX)
- * TO_U_CALLBACK_ESCAPE option to escape the character value accoding to C (\\xXXXX)
- * @stable ICU 2.0
- */
-#define UCNV_ESCAPE_C         "C"
-/**
- * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to XML Decimal escape \htmlonly(&amp;#DDDD;)\endhtmlonly
- * TO_U_CALLBACK_ESCAPE context option to escape the character value accoding to XML Decimal escape \htmlonly(&amp;#DDDD;)\endhtmlonly
- * @stable ICU 2.0
- */
-#define UCNV_ESCAPE_XML_DEC   "D"
-/**
- * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to XML Hex escape \htmlonly(&amp;#xXXXX;)\endhtmlonly
- * TO_U_CALLBACK_ESCAPE context option to escape the character value accoding to XML Hex escape \htmlonly(&amp;#xXXXX;)\endhtmlonly
- * @stable ICU 2.0
- */
-#define UCNV_ESCAPE_XML_HEX   "X"
-/**
- * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to Unicode (U+XXXXX)
- * @stable ICU 2.0
- */
-#define UCNV_ESCAPE_UNICODE   "U"
-
-/**
- * FROM_U_CALLBACK_ESCAPE context option to escape the code unit according to CSS2 conventions (\\HH..H<space>, that is,
- * a backslash, 1..6 hex digits, and a space)
- * @stable ICU 4.0
- */
-#define UCNV_ESCAPE_CSS2   "S"
-
-/** 
- * The process condition code to be used with the callbacks.  
- * Codes which are greater than UCNV_IRREGULAR should be 
- * passed on to any chained callbacks.
- * @stable ICU 2.0
- */
-typedef enum {
-    UCNV_UNASSIGNED = 0,  /**< The code point is unassigned.
-                             The error code U_INVALID_CHAR_FOUND will be set. */
-    UCNV_ILLEGAL = 1,     /**< The code point is illegal. For example, 
-                             \\x81\\x2E is illegal in SJIS because \\x2E
-                             is not a valid trail byte for the \\x81 
-                             lead byte.
-                             Also, starting with Unicode 3.0.1, non-shortest byte sequences
-                             in UTF-8 (like \\xC1\\xA1 instead of \\x61 for U+0061)
-                             are also illegal, not just irregular.
-                             The error code U_ILLEGAL_CHAR_FOUND will be set. */
-    UCNV_IRREGULAR = 2,   /**< The codepoint is not a regular sequence in 
-                             the encoding. For example, \\xED\\xA0\\x80..\\xED\\xBF\\xBF
-                             are irregular UTF-8 byte sequences for single surrogate
-                             code points.
-                             The error code U_INVALID_CHAR_FOUND will be set. */
-    UCNV_RESET = 3,       /**< The callback is called with this reason when a
-                             'reset' has occured. Callback should reset all
-                             state. */
-    UCNV_CLOSE = 4,        /**< Called when the converter is closed. The
-                             callback should release any allocated memory.*/
-    UCNV_CLONE = 5         /**< Called when ucnv_safeClone() is called on the
-                              converter. the pointer available as the
-                              'context' is an alias to the original converters'
-                              context pointer. If the context must be owned
-                              by the new converter, the callback must clone 
-                              the data and call ucnv_setFromUCallback 
-                              (or setToUCallback) with the correct pointer.
-                              @stable ICU 2.2
-                           */
-} UConverterCallbackReason;
-
-
-/**
- * The structure for the fromUnicode callback function parameter.
- * @stable ICU 2.0
- */
-typedef struct {
-    uint16_t size;              /**< The size of this struct. @stable ICU 2.0 */
-    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to TRUE. @stable ICU 2.0    */
-    UConverter *converter;      /**< Pointer to the converter that is opened and to which this struct is passed as an argument. @stable ICU 2.0  */
-    const UChar *source;        /**< Pointer to the source source buffer. @stable ICU 2.0    */
-    const UChar *sourceLimit;   /**< Pointer to the limit (end + 1) of source buffer. @stable ICU 2.0    */
-    char *target;               /**< Pointer to the target buffer. @stable ICU 2.0    */
-    const char *targetLimit;    /**< Pointer to the limit (end + 1) of target buffer. @stable ICU 2.0     */
-    int32_t *offsets;           /**< Pointer to the buffer that recieves the offsets. *offset = blah ; offset++;. @stable ICU 2.0  */
-} UConverterFromUnicodeArgs;
-
-
-/**
- * The structure for the toUnicode callback function parameter.
- * @stable ICU 2.0
- */
-typedef struct {
-    uint16_t size;              /**< The size of this struct   @stable ICU 2.0 */
-    UBool flush;                /**< The internal state of converter will be reset and data flushed if set to TRUE. @stable ICU 2.0   */
-    UConverter *converter;      /**< Pointer to the converter that is opened and to which this struct is passed as an argument. @stable ICU 2.0 */
-    const char *source;         /**< Pointer to the source source buffer. @stable ICU 2.0    */
-    const char *sourceLimit;    /**< Pointer to the limit (end + 1) of source buffer. @stable ICU 2.0    */
-    UChar *target;              /**< Pointer to the target buffer. @stable ICU 2.0    */
-    const UChar *targetLimit;   /**< Pointer to the limit (end + 1) of target buffer. @stable ICU 2.0     */
-    int32_t *offsets;           /**< Pointer to the buffer that recieves the offsets. *offset = blah ; offset++;. @stable ICU 2.0  */
-} UConverterToUnicodeArgs;
-
-
-/**
- * DO NOT CALL THIS FUNCTION DIRECTLY!
- * This From Unicode callback STOPS at the ILLEGAL_SEQUENCE,
- * returning the error code back to the caller immediately.
- *
- * @param context Pointer to the callback's private data
- * @param fromUArgs Information about the conversion in progress
- * @param codeUnits Points to 'length' UChars of the concerned Unicode sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param codePoint Single UChar32 (UTF-32) containing the concerend Unicode codepoint.
- * @param reason Defines the reason the callback was invoked
- * @param err This should always be set to a failure status prior to calling.
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_STOP (
-                  const void *context,
-                  UConverterFromUnicodeArgs *fromUArgs,
-                  const UChar* codeUnits,
-                  int32_t length,
-                  UChar32 codePoint,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err);
-
-
-
-/**
- * DO NOT CALL THIS FUNCTION DIRECTLY!
- * This To Unicode callback STOPS at the ILLEGAL_SEQUENCE,
- * returning the error code back to the caller immediately.
- *
- * @param context Pointer to the callback's private data
- * @param toUArgs Information about the conversion in progress
- * @param codeUnits Points to 'length' bytes of the concerned codepage sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param reason Defines the reason the callback was invoked
- * @param err This should always be set to a failure status prior to calling.
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_STOP (
-                  const void *context,
-                  UConverterToUnicodeArgs *toUArgs,
-                  const char* codeUnits,
-                  int32_t length,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err);
-
-/**
- * DO NOT CALL THIS FUNCTION DIRECTLY!
- * This From Unicode callback skips any ILLEGAL_SEQUENCE, or
- * skips only UNASSINGED_SEQUENCE depending on the context parameter
- * simply ignoring those characters. 
- *
- * @param context  The function currently recognizes the callback options:
- *                 UCNV_SKIP_STOP_ON_ILLEGAL: STOPS at the ILLEGAL_SEQUENCE,
- *                      returning the error code back to the caller immediately.
- *                 NULL: Skips any ILLEGAL_SEQUENCE
- * @param fromUArgs Information about the conversion in progress
- * @param codeUnits Points to 'length' UChars of the concerned Unicode sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param codePoint Single UChar32 (UTF-32) containing the concerend Unicode codepoint.
- * @param reason Defines the reason the callback was invoked
- * @param err Return value will be set to success if the callback was handled,
- *      otherwise this value will be set to a failure status.
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SKIP (
-                  const void *context,
-                  UConverterFromUnicodeArgs *fromUArgs,
-                  const UChar* codeUnits,
-                  int32_t length,
-                  UChar32 codePoint,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err);
-
-/**
- * DO NOT CALL THIS FUNCTION DIRECTLY!
- * This From Unicode callback will Substitute the ILLEGAL SEQUENCE, or 
- * UNASSIGNED_SEQUENCE depending on context parameter, with the
- * current substitution string for the converter. This is the default
- * callback.
- *
- * @param context The function currently recognizes the callback options:
- *                 UCNV_SUB_STOP_ON_ILLEGAL: STOPS at the ILLEGAL_SEQUENCE,
- *                      returning the error code back to the caller immediately.
- *                 NULL: Substitutes any ILLEGAL_SEQUENCE
- * @param fromUArgs Information about the conversion in progress
- * @param codeUnits Points to 'length' UChars of the concerned Unicode sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param codePoint Single UChar32 (UTF-32) containing the concerend Unicode codepoint.
- * @param reason Defines the reason the callback was invoked
- * @param err Return value will be set to success if the callback was handled,
- *      otherwise this value will be set to a failure status.
- * @see ucnv_setSubstChars
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_SUBSTITUTE (
-                  const void *context,
-                  UConverterFromUnicodeArgs *fromUArgs,
-                  const UChar* codeUnits,
-                  int32_t length,
-                  UChar32 codePoint,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err);
-
-/**
- * DO NOT CALL THIS FUNCTION DIRECTLY!
- * This From Unicode callback will Substitute the ILLEGAL SEQUENCE with the
- * hexadecimal representation of the illegal codepoints
- *
- * @param context The function currently recognizes the callback options:
- *        <ul>
- *        <li>UCNV_ESCAPE_ICU: Substitues the  ILLEGAL SEQUENCE with the hexadecimal 
- *          representation in the format  %UXXXX, e.g. "%uFFFE%u00AC%uC8FE"). 
- *          In the Event the converter doesn't support the characters {%,U}[A-F][0-9], 
- *          it will  substitute  the illegal sequence with the substitution characters.
- *          Note that  codeUnit(32bit int eg: unit of a surrogate pair) is represented as
- *          %UD84D%UDC56</li>
- *        <li>UCNV_ESCAPE_JAVA: Substitues the  ILLEGAL SEQUENCE with the hexadecimal 
- *          representation in the format  \\uXXXX, e.g. "\\uFFFE\\u00AC\\uC8FE"). 
- *          In the Event the converter doesn't support the characters {\,u}[A-F][0-9], 
- *          it will  substitute  the illegal sequence with the substitution characters.
- *          Note that  codeUnit(32bit int eg: unit of a surrogate pair) is represented as
- *          \\uD84D\\uDC56</li>
- *        <li>UCNV_ESCAPE_C: Substitues the  ILLEGAL SEQUENCE with the hexadecimal 
- *          representation in the format  \\uXXXX, e.g. "\\uFFFE\\u00AC\\uC8FE"). 
- *          In the Event the converter doesn't support the characters {\,u,U}[A-F][0-9], 
- *          it will  substitute  the illegal sequence with the substitution characters.
- *          Note that  codeUnit(32bit int eg: unit of a surrogate pair) is represented as
- *          \\U00023456</li>
- *        <li>UCNV_ESCAPE_XML_DEC: Substitues the  ILLEGAL SEQUENCE with the decimal 
- *          representation in the format \htmlonly&amp;#DDDDDDDD;, e.g. "&amp;#65534;&amp;#172;&amp;#51454;")\endhtmlonly. 
- *          In the Event the converter doesn't support the characters {&amp;,#}[0-9], 
- *          it will  substitute  the illegal sequence with the substitution characters.
- *          Note that  codeUnit(32bit int eg: unit of a surrogate pair) is represented as
- *          &amp;#144470; and Zero padding is ignored.</li>
- *        <li>UCNV_ESCAPE_XML_HEX:Substitues the  ILLEGAL SEQUENCE with the decimal 
- *          representation in the format \htmlonly&amp;#xXXXX; e.g. "&amp;#xFFFE;&amp;#x00AC;&amp;#xC8FE;")\endhtmlonly. 
- *          In the Event the converter doesn't support the characters {&,#,x}[0-9], 
- *          it will  substitute  the illegal sequence with the substitution characters.
- *          Note that  codeUnit(32bit int eg: unit of a surrogate pair) is represented as
- *          \htmlonly&amp;#x23456;\endhtmlonly</li>
- *        </ul>
- * @param fromUArgs Information about the conversion in progress
- * @param codeUnits Points to 'length' UChars of the concerned Unicode sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param codePoint Single UChar32 (UTF-32) containing the concerend Unicode codepoint.
- * @param reason Defines the reason the callback was invoked
- * @param err Return value will be set to success if the callback was handled,
- *      otherwise this value will be set to a failure status.
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2 UCNV_FROM_U_CALLBACK_ESCAPE (
-                  const void *context,
-                  UConverterFromUnicodeArgs *fromUArgs,
-                  const UChar* codeUnits,
-                  int32_t length,
-                  UChar32 codePoint,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err);
-
-
-/**
- * DO NOT CALL THIS FUNCTION DIRECTLY!
- * This To Unicode callback skips any ILLEGAL_SEQUENCE, or
- * skips only UNASSINGED_SEQUENCE depending on the context parameter
- * simply ignoring those characters. 
- *
- * @param context  The function currently recognizes the callback options:
- *                 UCNV_SKIP_STOP_ON_ILLEGAL: STOPS at the ILLEGAL_SEQUENCE,
- *                      returning the error code back to the caller immediately.
- *                 NULL: Skips any ILLEGAL_SEQUENCE
- * @param toUArgs Information about the conversion in progress
- * @param codeUnits Points to 'length' bytes of the concerned codepage sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param reason Defines the reason the callback was invoked
- * @param err Return value will be set to success if the callback was handled,
- *      otherwise this value will be set to a failure status.
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SKIP (
-                  const void *context,
-                  UConverterToUnicodeArgs *toUArgs,
-                  const char* codeUnits,
-                  int32_t length,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err);
-
-/**
- * DO NOT CALL THIS FUNCTION DIRECTLY!
- * This To Unicode callback will Substitute the ILLEGAL SEQUENCE,or 
- * UNASSIGNED_SEQUENCE depending on context parameter,  with the
- * Unicode substitution character, U+FFFD.
- *
- * @param context  The function currently recognizes the callback options:
- *                 UCNV_SUB_STOP_ON_ILLEGAL: STOPS at the ILLEGAL_SEQUENCE,
- *                      returning the error code back to the caller immediately.
- *                 NULL: Substitutes any ILLEGAL_SEQUENCE
- * @param toUArgs Information about the conversion in progress
- * @param codeUnits Points to 'length' bytes of the concerned codepage sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param reason Defines the reason the callback was invoked
- * @param err Return value will be set to success if the callback was handled,
- *      otherwise this value will be set to a failure status.
- * @stable ICU 2.0
- */
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_SUBSTITUTE (
-                  const void *context,
-                  UConverterToUnicodeArgs *toUArgs,
-                  const char* codeUnits,
-                  int32_t length,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err);
-
-/**
- * DO NOT CALL THIS FUNCTION DIRECTLY!
- * This To Unicode callback will Substitute the ILLEGAL SEQUENCE with the
- * hexadecimal representation of the illegal bytes
- *  (in the format  %XNN, e.g. "%XFF%X0A%XC8%X03").
- *
- * @param context This function currently recognizes the callback options:
- *      UCNV_ESCAPE_ICU, UCNV_ESCAPE_JAVA, UCNV_ESCAPE_C, UCNV_ESCAPE_XML_DEC,
- *      UCNV_ESCAPE_XML_HEX and UCNV_ESCAPE_UNICODE.
- * @param toUArgs Information about the conversion in progress
- * @param codeUnits Points to 'length' bytes of the concerned codepage sequence
- * @param length Size (in bytes) of the concerned codepage sequence
- * @param reason Defines the reason the callback was invoked
- * @param err Return value will be set to success if the callback was handled,
- *      otherwise this value will be set to a failure status.
- * @stable ICU 2.0
- */
-
-U_STABLE void U_EXPORT2 UCNV_TO_U_CALLBACK_ESCAPE (
-                  const void *context,
-                  UConverterToUnicodeArgs *toUArgs,
-                  const char* codeUnits,
-                  int32_t length,
-                  UConverterCallbackReason reason,
-                  UErrorCode * err);
-
-#endif
-
-#endif
-
-/*UCNV_ERR_H*/ 
diff --git a/Source/JavaScriptCore/icu/unicode/ucol.h b/Source/JavaScriptCore/icu/unicode/ucol.h
deleted file mode 100644 (file)
index 510ddc8..0000000
+++ /dev/null
@@ -1,1478 +0,0 @@
-/*
-*******************************************************************************
-* Copyright (c) 1996-2015, International Business Machines Corporation and others.
-* All Rights Reserved.
-*******************************************************************************
-*/
-
-#ifndef UCOL_H
-#define UCOL_H
-
-#include "unicode/utypes.h"
-
-#if !UCONFIG_NO_COLLATION
-
-#include "unicode/unorm.h"
-#include "unicode/localpointer.h"
-#include "unicode/parseerr.h"
-#include "unicode/uloc.h"
-#include "unicode/uset.h"
-#include "unicode/uscript.h"
-
-/**
- * \file
- * \brief C API: Collator 
- *
- * <h2> Collator C API </h2>
- *
- * The C API for Collator performs locale-sensitive
- * string comparison. You use this service to build
- * searching and sorting routines for natural language text.
- * <p>
- * For more information about the collation service see 
- * <a href="http://userguide.icu-project.org/collation">the User Guide</a>.
- * <p>
- * Collation service provides correct sorting orders for most locales supported in ICU. 
- * If specific data for a locale is not available, the orders eventually falls back
- * to the <a href="http://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation">CLDR root sort order</a>. 
- * <p>
- * Sort ordering may be customized by providing your own set of rules. For more on
- * this subject see the <a href="http://userguide.icu-project.org/collation/customization">
- * Collation Customization</a> section of the User Guide.
- * <p>
- * @see         UCollationResult
- * @see         UNormalizationMode
- * @see         UCollationStrength
- * @see         UCollationElements
- */
-
-/** A collator.
-*  For usage in C programs.
-*/
-struct UCollator;
-/** structure representing a collator object instance 
- * @stable ICU 2.0
- */
-typedef struct UCollator UCollator;
-
-
-/**
- * UCOL_LESS is returned if source string is compared to be less than target
- * string in the ucol_strcoll() method.
- * UCOL_EQUAL is returned if source string is compared to be equal to target
- * string in the ucol_strcoll() method.
- * UCOL_GREATER is returned if source string is compared to be greater than
- * target string in the ucol_strcoll() method.
- * @see ucol_strcoll()
- * <p>
- * Possible values for a comparison result 
- * @stable ICU 2.0
- */
-typedef enum {
-  /** string a == string b */
-  UCOL_EQUAL    = 0,
-  /** string a > string b */
-  UCOL_GREATER    = 1,
-  /** string a < string b */
-  UCOL_LESS    = -1
-} UCollationResult ;
-
-
-/** Enum containing attribute values for controling collation behavior.
- * Here are all the allowable values. Not every attribute can take every value. The only
- * universal value is UCOL_DEFAULT, which resets the attribute value to the predefined  
- * value for that locale 
- * @stable ICU 2.0
- */
-typedef enum {
-  /** accepted by most attributes */
-  UCOL_DEFAULT = -1,
-
-  /** Primary collation strength */
-  UCOL_PRIMARY = 0,
-  /** Secondary collation strength */
-  UCOL_SECONDARY = 1,
-  /** Tertiary collation strength */
-  UCOL_TERTIARY = 2,
-  /** Default collation strength */
-  UCOL_DEFAULT_STRENGTH = UCOL_TERTIARY,
-  UCOL_CE_STRENGTH_LIMIT,
-  /** Quaternary collation strength */
-  UCOL_QUATERNARY=3,
-  /** Identical collation strength */
-  UCOL_IDENTICAL=15,
-  UCOL_STRENGTH_LIMIT,
-
-  /** Turn the feature off - works for UCOL_FRENCH_COLLATION, 
-      UCOL_CASE_LEVEL, UCOL_HIRAGANA_QUATERNARY_MODE
-      & UCOL_DECOMPOSITION_MODE*/
-  UCOL_OFF = 16,
-  /** Turn the feature on - works for UCOL_FRENCH_COLLATION, 
-      UCOL_CASE_LEVEL, UCOL_HIRAGANA_QUATERNARY_MODE
-      & UCOL_DECOMPOSITION_MODE*/
-  UCOL_ON = 17,
-  
-  /** Valid for UCOL_ALTERNATE_HANDLING. Alternate handling will be shifted */
-  UCOL_SHIFTED = 20,
-  /** Valid for UCOL_ALTERNATE_HANDLING. Alternate handling will be non ignorable */
-  UCOL_NON_IGNORABLE = 21,
-
-  /** Valid for UCOL_CASE_FIRST - 
-      lower case sorts before upper case */
-  UCOL_LOWER_FIRST = 24,
-  /** upper case sorts before lower case */
-  UCOL_UPPER_FIRST = 25,
-
-  UCOL_ATTRIBUTE_VALUE_COUNT
-
-} UColAttributeValue;
-
-/**
- * Enum containing the codes for reordering segments of the collation table that are not script
- * codes. These reordering codes are to be used in conjunction with the script codes.
- * @see ucol_getReorderCodes
- * @see ucol_setReorderCodes
- * @see ucol_getEquivalentReorderCodes
- * @see UScriptCode
- * @stable ICU 4.8
- */
- typedef enum {
-   /**
-    * A special reordering code that is used to specify the default
-    * reordering codes for a locale.
-    * @stable ICU 4.8
-    */   
-    UCOL_REORDER_CODE_DEFAULT       = -1,
-   /**
-    * A special reordering code that is used to specify no reordering codes.
-    * @stable ICU 4.8
-    */   
-    UCOL_REORDER_CODE_NONE          = USCRIPT_UNKNOWN,
-   /**
-    * A special reordering code that is used to specify all other codes used for
-    * reordering except for the codes lised as UColReorderCode values and those
-    * listed explicitly in a reordering.
-    * @stable ICU 4.8
-    */   
-    UCOL_REORDER_CODE_OTHERS        = USCRIPT_UNKNOWN,
-   /**
-    * Characters with the space property.
-    * This is equivalent to the rule value "space".
-    * @stable ICU 4.8
-    */    
-    UCOL_REORDER_CODE_SPACE         = 0x1000,
-   /**
-    * The first entry in the enumeration of reordering groups. This is intended for use in
-    * range checking and enumeration of the reorder codes.
-    * @stable ICU 4.8
-    */    
-    UCOL_REORDER_CODE_FIRST         = UCOL_REORDER_CODE_SPACE,
-   /**
-    * Characters with the punctuation property.
-    * This is equivalent to the rule value "punct".
-    * @stable ICU 4.8
-    */    
-    UCOL_REORDER_CODE_PUNCTUATION   = 0x1001,
-   /**
-    * Characters with the symbol property.
-    * This is equivalent to the rule value "symbol".
-    * @stable ICU 4.8
-    */    
-    UCOL_REORDER_CODE_SYMBOL        = 0x1002,
-   /**
-    * Characters with the currency property.
-    * This is equivalent to the rule value "currency".
-    * @stable ICU 4.8
-    */    
-    UCOL_REORDER_CODE_CURRENCY      = 0x1003,
-   /**
-    * Characters with the digit property.
-    * This is equivalent to the rule value "digit".
-    * @stable ICU 4.8
-    */    
-    UCOL_REORDER_CODE_DIGIT         = 0x1004,
-   /**
-    * The limit of the reorder codes. This is intended for use in range checking 
-    * and enumeration of the reorder codes.
-    * @stable ICU 4.8
-    */    
-    UCOL_REORDER_CODE_LIMIT         = 0x1005
-} UColReorderCode;
-
-/**
- * Base letter represents a primary difference.  Set comparison
- * level to UCOL_PRIMARY to ignore secondary and tertiary differences.
- * Use this to set the strength of a Collator object.
- * Example of primary difference, "abc" &lt; "abd"
- * 
- * Diacritical differences on the same base letter represent a secondary
- * difference.  Set comparison level to UCOL_SECONDARY to ignore tertiary
- * differences. Use this to set the strength of a Collator object.
- * Example of secondary difference, "&auml;" >> "a".
- *
- * Uppercase and lowercase versions of the same character represents a
- * tertiary difference.  Set comparison level to UCOL_TERTIARY to include
- * all comparison differences. Use this to set the strength of a Collator
- * object.
- * Example of tertiary difference, "abc" &lt;&lt;&lt; "ABC".
- *
- * Two characters are considered "identical" when they have the same
- * unicode spellings.  UCOL_IDENTICAL.
- * For example, "&auml;" == "&auml;".
- *
- * UCollationStrength is also used to determine the strength of sort keys 
- * generated from UCollator objects
- * These values can be now found in the UColAttributeValue enum.
- * @stable ICU 2.0
- **/
-typedef UColAttributeValue UCollationStrength;
-
-/** Attributes that collation service understands. All the attributes can take UCOL_DEFAULT
- * value, as well as the values specific to each one. 
- * @stable ICU 2.0
- */
-typedef enum {
-     /** Attribute for direction of secondary weights - used in Canadian French.
-      * Acceptable values are UCOL_ON, which results in secondary weights
-      * being considered backwards and UCOL_OFF which treats secondary
-      * weights in the order they appear.
-      * @stable ICU 2.0
-      */
-     UCOL_FRENCH_COLLATION, 
-     /** Attribute for handling variable elements.
-      * Acceptable values are UCOL_NON_IGNORABLE (default)
-      * which treats all the codepoints with non-ignorable 
-      * primary weights in the same way,
-      * and UCOL_SHIFTED which causes codepoints with primary 
-      * weights that are equal or below the variable top value
-      * to be ignored on primary level and moved to the quaternary 
-      * level.
-      * @stable ICU 2.0
-      */
-     UCOL_ALTERNATE_HANDLING, 
-     /** Controls the ordering of upper and lower case letters.
-      * Acceptable values are UCOL_OFF (default), which orders
-      * upper and lower case letters in accordance to their tertiary
-      * weights, UCOL_UPPER_FIRST which forces upper case letters to 
-      * sort before lower case letters, and UCOL_LOWER_FIRST which does 
-      * the opposite.
-      * @stable ICU 2.0
-      */
-     UCOL_CASE_FIRST, 
-     /** Controls whether an extra case level (positioned before the third
-      * level) is generated or not. Acceptable values are UCOL_OFF (default), 
-      * when case level is not generated, and UCOL_ON which causes the case
-      * level to be generated. Contents of the case level are affected by
-      * the value of UCOL_CASE_FIRST attribute. A simple way to ignore 
-      * accent differences in a string is to set the strength to UCOL_PRIMARY
-      * and enable case level.
-      * @stable ICU 2.0
-      */
-     UCOL_CASE_LEVEL,
-     /** Controls whether the normalization check and necessary normalizations
-      * are performed. When set to UCOL_OFF (default) no normalization check
-      * is performed. The correctness of the result is guaranteed only if the 
-      * input data is in so-called FCD form (see users manual for more info).
-      * When set to UCOL_ON, an incremental check is performed to see whether
-      * the input data is in the FCD form. If the data is not in the FCD form,
-      * incremental NFD normalization is performed.
-      * @stable ICU 2.0
-      */
-     UCOL_NORMALIZATION_MODE, 
-     /** An alias for UCOL_NORMALIZATION_MODE attribute.
-      * @stable ICU 2.0
-      */
-     UCOL_DECOMPOSITION_MODE = UCOL_NORMALIZATION_MODE,
-     /** The strength attribute. Can be either UCOL_PRIMARY, UCOL_SECONDARY,
-      * UCOL_TERTIARY, UCOL_QUATERNARY or UCOL_IDENTICAL. The usual strength
-      * for most locales (except Japanese) is tertiary.
-      *
-      * Quaternary strength 
-      * is useful when combined with shifted setting for alternate handling
-      * attribute and for JIS X 4061 collation, when it is used to distinguish
-      * between Katakana and Hiragana.
-      * Otherwise, quaternary level
-      * is affected only by the number of non-ignorable code points in
-      * the string.
-      *
-      * Identical strength is rarely useful, as it amounts 
-      * to codepoints of the NFD form of the string.
-      * @stable ICU 2.0
-      */
-     UCOL_STRENGTH,  
-#ifndef U_HIDE_DEPRECATED_API
-     /** When turned on, this attribute positions Hiragana before all  
-      * non-ignorables on quaternary level This is a sneaky way to produce JIS
-      * sort order.
-      *
-      * This attribute was an implementation detail of the CLDR Japanese tailoring.
-      * Since ICU 50, this attribute is not settable any more via API functions.
-      * Since CLDR 25/ICU 53, explicit quaternary relations are used
-      * to achieve the same Japanese sort order.
-      *
-      * @deprecated ICU 50 Implementation detail, cannot be set via API, was removed from implementation.
-      */
-     UCOL_HIRAGANA_QUATERNARY_MODE = UCOL_STRENGTH + 1,
-#endif  /* U_HIDE_DEPRECATED_API */
-     /**
-      * When turned on, this attribute makes
-      * substrings of digits sort according to their numeric values.
-      *
-      * This is a way to get '100' to sort AFTER '2'. Note that the longest
-      * digit substring that can be treated as a single unit is
-      * 254 digits (not counting leading zeros). If a digit substring is
-      * longer than that, the digits beyond the limit will be treated as a
-      * separate digit substring.
-      *
-      * A "digit" in this sense is a code point with General_Category=Nd,
-      * which does not include circled numbers, roman numerals, etc.
-      * Only a contiguous digit substring is considered, that is,
-      * non-negative integers without separators.
-      * There is no support for plus/minus signs, decimals, exponents, etc.
-      *
-      * @stable ICU 2.8
-      */
-     UCOL_NUMERIC_COLLATION = UCOL_STRENGTH + 2, 
-     /**
-      * The number of UColAttribute constants.
-      * @stable ICU 2.0
-      */
-     UCOL_ATTRIBUTE_COUNT
-} UColAttribute;
-
-/** Options for retrieving the rule string 
- *  @stable ICU 2.0
- */
-typedef enum {
-  /**
-   * Retrieves the tailoring rules only.
-   * Same as calling the version of getRules() without UColRuleOption.
-   * @stable ICU 2.0
-   */
-  UCOL_TAILORING_ONLY, 
-  /**
-   * Retrieves the "UCA rules" concatenated with the tailoring rules.
-   * The "UCA rules" are an <i>approximation</i> of the root collator's sort order.
-   * They are almost never used or useful at runtime and can be removed from the data.
-   * See http://userguide.icu-project.org/collation/customization#TOC-Building-on-Existing-Locales
-   * @stable ICU 2.0
-   */
-  UCOL_FULL_RULES 
-} UColRuleOption ;
-
-/**
- * Open a UCollator for comparing strings.
- *
- * For some languages, multiple collation types are available;
- * for example, "de@collation=phonebook".
- * Starting with ICU 54, collation attributes can be specified via locale keywords as well,
- * in the old locale extension syntax ("el@colCaseFirst=upper")
- * or in language tag syntax ("el-u-kf-upper").
- * See <a href="http://userguide.icu-project.org/collation/api">User Guide: Collation API</a>.
- *
- * The UCollator pointer is used in all the calls to the Collation 
- * service. After finished, collator must be disposed of by calling
- * {@link #ucol_close }.
- * @param loc The locale containing the required collation rules. 
- *            Special values for locales can be passed in - 
- *            if NULL is passed for the locale, the default locale
- *            collation rules will be used. If empty string ("") or
- *            "root" are passed, the root collator will be returned.
- * @param status A pointer to a UErrorCode to receive any errors
- * @return A pointer to a UCollator, or 0 if an error occurred.
- * @see ucol_openRules
- * @see ucol_safeClone
- * @see ucol_close
- * @stable ICU 2.0
- */
-U_STABLE UCollator* U_EXPORT2 
-ucol_open(const char *loc, UErrorCode *status);
-
-/**
- * Produce a UCollator instance according to the rules supplied.
- * The rules are used to change the default ordering, defined in the
- * UCA in a process called tailoring. The resulting UCollator pointer
- * can be used in the same way as the one obtained by {@link #ucol_strcoll }.
- * @param rules A string describing the collation rules. For the syntax
- *              of the rules please see users guide.
- * @param rulesLength The length of rules, or -1 if null-terminated.
- * @param normalizationMode The normalization mode: One of
- *             UCOL_OFF     (expect the text to not need normalization),
- *             UCOL_ON      (normalize), or
- *             UCOL_DEFAULT (set the mode according to the rules)
- * @param strength The default collation strength; one of UCOL_PRIMARY, UCOL_SECONDARY,
- * UCOL_TERTIARY, UCOL_IDENTICAL,UCOL_DEFAULT_STRENGTH - can be also set in the rules.
- * @param parseError  A pointer to UParseError to recieve information about errors
- *                    occurred during parsing. This argument can currently be set
- *                    to NULL, but at users own risk. Please provide a real structure.
- * @param status A pointer to a UErrorCode to receive any errors
- * @return A pointer to a UCollator. It is not guaranteed that NULL be returned in case
- *         of error - please use status argument to check for errors.
- * @see ucol_open
- * @see ucol_safeClone
- * @see ucol_close
- * @stable ICU 2.0
- */
-U_STABLE UCollator* U_EXPORT2 
-ucol_openRules( const UChar        *rules,
-                int32_t            rulesLength,
-                UColAttributeValue normalizationMode,
-                UCollationStrength strength,
-                UParseError        *parseError,
-                UErrorCode         *status);
-
-#ifndef U_HIDE_DEPRECATED_API
-/** 
- * Open a collator defined by a short form string.
- * The structure and the syntax of the string is defined in the "Naming collators"
- * section of the users guide: 
- * http://userguide.icu-project.org/collation/concepts#TOC-Collator-naming-scheme
- * Attributes are overriden by the subsequent attributes. So, for "S2_S3", final
- * strength will be 3. 3066bis locale overrides individual locale parts.
- * The call to this function is equivalent to a call to ucol_open, followed by a 
- * series of calls to ucol_setAttribute and ucol_setVariableTop.
- * @param definition A short string containing a locale and a set of attributes. 
- *                   Attributes not explicitly mentioned are left at the default
- *                   state for a locale.
- * @param parseError if not NULL, structure that will get filled with error's pre
- *                   and post context in case of error.
- * @param forceDefaults if FALSE, the settings that are the same as the collator 
- *                   default settings will not be applied (for example, setting
- *                   French secondary on a French collator would not be executed). 
- *                   If TRUE, all the settings will be applied regardless of the 
- *                   collator default value. If the definition
- *                   strings are to be cached, should be set to FALSE.
- * @param status     Error code. Apart from regular error conditions connected to 
- *                   instantiating collators (like out of memory or similar), this
- *                   API will return an error if an invalid attribute or attribute/value
- *                   combination is specified.
- * @return           A pointer to a UCollator or 0 if an error occured (including an 
- *                   invalid attribute).
- * @see ucol_open
- * @see ucol_setAttribute
- * @see ucol_setVariableTop
- * @see ucol_getShortDefinitionString
- * @see ucol_normalizeShortDefinitionString
- * @deprecated ICU 54 Use ucol_open() with language tag collation keywords instead.
- */
-U_DEPRECATED UCollator* U_EXPORT2
-ucol_openFromShortString( const char *definition,
-                          UBool forceDefaults,
-                          UParseError *parseError,
-                          UErrorCode *status);
-#endif  /* U_HIDE_DEPRECATED_API */
-
-#ifndef U_HIDE_DEPRECATED_API
-/**
- * Get a set containing the contractions defined by the collator. The set includes
- * both the root collator's contractions and the contractions defined by the collator. This set
- * will contain only strings. If a tailoring explicitly suppresses contractions from 
- * the root collator (like Russian), removed contractions will not be in the resulting set.
- * @param coll collator 
- * @param conts the set to hold the result. It gets emptied before
- *              contractions are added. 
- * @param status to hold the error code
- * @return the size of the contraction set
- *
- * @deprecated ICU 3.4, use ucol_getContractionsAndExpansions instead
- */
-U_DEPRECATED int32_t U_EXPORT2
-ucol_getContractions( const UCollator *coll,
-                  USet *conts,
-                  UErrorCode *status);
-#endif  /* U_HIDE_DEPRECATED_API */
-
-/**
- * Get a set containing the expansions defined by the collator. The set includes
- * both the root collator's expansions and the expansions defined by the tailoring
- * @param coll collator
- * @param contractions if not NULL, the set to hold the contractions
- * @param expansions if not NULL, the set to hold the expansions
- * @param addPrefixes add the prefix contextual elements to contractions
- * @param status to hold the error code
- *
- * @stable ICU 3.4
- */
-U_STABLE void U_EXPORT2
-ucol_getContractionsAndExpansions( const UCollator *coll,
-                  USet *contractions, USet *expansions,
-                  UBool addPrefixes, UErrorCode *status);
-
-/** 
- * Close a UCollator.
- * Once closed, a UCollator should not be used. Every open collator should
- * be closed. Otherwise, a memory leak will result.
- * @param coll The UCollator