Compare commits

...
Author SHA1 Message Date
Steven R. Loomis fd123bf023 ICU-20796 update C API Change Report 2019-10-02 14:30:54 -07:00
Markus Scherer e5381c956b ICU-20845 UMutex not trivially but constexpr constructible 2019-10-02 11:00:19 -07:00
Steven R. Loomis 7f862281da ICU-20813 Fix Multi-line comment in umachine.h
- This comment failed on gcc. Split it into two lines.
2019-10-02 10:02:26 -07:00
Shane F. Carr 051d6a553e ICU-20453 Add more warning types to CI build.
See #824
2019-10-02 13:00:14 -04:00
Yoshito Umaoka c2687d9379 ICU-20796 Updated ICU4J API change report for ICU 65 GA 2019-09-27 20:36:13 -04:00
Shane Carr d36779df6c ICU-20796 Updating double-conversion from upstream master. 2019-09-27 13:03:30 -07:00
Peter Edberg 33ca188a7f ICU-20796 integrate CLDR release-36-beta 2019-09-27 11:52:05 -07:00
Jeff Genovy dc4dfd292b ICU-20836 ICU4C header file plurrule.h needs to include utypes.h before checking U_SHOW_CPLUSPLUS_API. 2019-09-26 18:25:19 -07:00
Peter Edberg 1823fbc0d2 ICU-20831 clone capitalizationBrkIter for actual use 2019-09-26 11:18:39 -07:00
Robin Leroy 4f72eea026 ICU-20831 Make *fCapitalizationBrkIter const, eliminating a data race in SimpleDateFormat::format. 2019-09-25 16:30:15 -07:00
Adam Sitnik 1f4a77cbc1 ICU-20832 use uint32_t instead of uint16_t to avoid overflows for very long strings 2019-09-25 14:20:56 -07:00
Markus Scherer 5f443972ec ICU-20814 new tool for checking API tags vs. ifdef guards; add FORCE guards, and move some guards, to make this work 2019-09-23 17:04:53 -07:00
Peter Edberg 6d14ff6e1f ICU-20796 integrate CLDR release-36-alpha3 2019-09-20 16:08:49 -07:00
Jeff Genovy e472e46a60 ICU-20825 Add ARM64 to distrelease.ps1 script, and run in the CI builds 2019-09-18 10:53:13 -07:00
Daniel Ju 8b0cd535f9 ICU-20796 BRS65GA Update version numbers and README 2019-09-17 11:48:55 -07:00
Yoshito Umaoka a5e2945eb0 ICU-20823 ICU time zone data update for 2019c 2019-09-16 23:03:45 -04:00
Shane Carr 1d40b8f5e8 ICU-20811 Add fields required for locale inheritance to additive mode. 2019-09-13 15:38:38 -07:00
Peter Edberg c4ea7681ee ICU-20796 BRS 65 update C API guard macros (manual version) (#827) 2019-09-13 10:56:25 -07:00
yumaoka f894302ebe ICU-20815 Fixed a build problem with test jar causing release build target to fail. 2019-09-12 13:00:37 -04:00
Jeff Genovy 5464f3482f ICU-20804 OOM not handled in selectForMask 2019-09-11 18:15:39 -07:00
Peter Edberg c98e90c670 ICU-20396 add RelativeDateTimeFormatter test for af 2019-09-11 17:32:06 -07:00
Peter Edberg 7814980f51 ICU-20749 add ອາແມນ to laodict.txt 2019-09-11 14:46:40 -07:00
Steven R. Loomis 417254f66a ICU-20795 ICU4C 65.1 API promotion - locid.h
- fixup some functions in locid.h that were incorrectly guarded as draft
- Error was in:
   - 5a3ea669aa
   - https://github.com/unicode-org/icu/pull/808
2019-09-10 11:31:54 -07:00
Steven R. Loomis 5a3ea669aa ICU-20795 ICU4C 65.1 API promotion draft
- includes new APIChangeReport.md
- the 'simplification' section is no longer new
- uses tools from [ICU-20162] #807

Includes non-promotion fixes:
- utrace.h: UTRACE_UDATA_BUNDLE
2019-09-09 21:41:04 -07:00
David Beaumont a4cab7947e ICU-20693 Basic Eclipse settings
See #772
2019-09-09 18:58:08 -04:00
Steven R. Loomis 099ed49976 ICU-20162 use maven to build icu4c api change tool
- removes three .jar files from git-lfs
- make calls ant calls maven
- have travis verify buildability
- support APIChangeReport.md (markdown)
- 'signature simplification' is no longer new, do not mark it as new.
- change (c) to © in output
2019-09-09 18:39:51 -04:00
Peter Edberg 84d16d8c6c ICU-20795 BRS 65 update urename.h 2019-09-09 10:45:06 -07:00
Peter Edberg e25796f6e5 ICU-20801 integrate CLDR release-36-alpha2, update MeasureUnits (#809) 2019-09-06 14:07:36 -07:00
Jeff Genovy f82e4c4401 ICU-20795 BRS65 ICU4C Samples: case sample should use DLL runtime to prevent assertion failures. 2019-09-06 13:44:14 -07:00
gnrunge 66b8b4c8ce ICU-20795 BRS test without data task: Adds a status check after PluralRules
instance creation. Test causes segmentation fault later if instance creation
fails.
2019-09-06 11:32:48 -07:00
gnrunge 5e3f472c67 ICU-20795 BRS test without data task: Adds a status check after Locale instance
creation. Test causes segmentation fault if it tries to continue beyond failed
instance creation.
segmentation fault if instance creation fails
2019-09-06 09:43:30 -07:00
Markus Scherer 611a659d4c ICU-20795 add LocaleMatcher to API docs index 2019-09-05 14:15:59 -07:00
Jeff Genovy b851c53b91 ICU-20807 BRS65: Environment test failure in cintltst-timezone
The test fails for "America/Argentina/ComodRivadavia", which has length
of 32, the same as the buffer. The results in the string being not
terminated with a NUL.

This increases the buffer size used by the test, and also checks for the
string not terminated warning.
2019-09-05 14:12:57 -07:00
younies 28196f6245 ICU-20793 ignore binary file from git
See #816
2019-09-05 18:04:59 +02:00
Yoshito Umaoka b263cbbd1a ICU-20795 BRS65 ICU4J 65 API signature file
Deleted ICU4J 55 API signature file
2019-09-05 09:37:23 -04:00
Yoshito Umaoka 75a284c22c ICU-20795 BRS65 ICU4J serialization test data
- Added 65.1 serialization test data
- Deleted 60.1 serialization test data
2019-09-05 13:15:35 +02:00
Yoshito Umaoka 4e525e105a ICU-20795 BRS65 ICU4J API status promotion
- Updating API status version for ICU4J 65 release
- Fixed a few minor API doc issues in DecimalFormat and LocaleMatcher
- Update ICU4J API change report
2019-09-04 18:16:00 -04:00
Steven R. Loomis ddadc9427b ICU-13745 fix undefined behavior: GregorianCalendar::setGregorianChange()
- Julian days outside of INT32_MIN..INT32_MAX are normalized
- Add a test case
2019-09-04 23:20:31 +02:00
Markus Scherer 0b5b3bcdb1 ICU-11976 test & fix ByteArrayWrapper.hashCode() 2019-09-04 11:12:45 -07:00
Yoshito Umaoka 710b6e1421 ICU-20795 BRS65 Clean up import statements 2019-09-03 16:51:28 +02:00
David Beaumont de527610d3 ICU-20693 Fix weird bug in Maven pom file and add comments 2019-09-03 11:38:06 +02:00
Jeff Genovy d89c4909f8 ICU-20802 Need to use LocalMemory in uloc_openKeywordList, not LocalPointer 2019-08-31 00:30:12 -07:00
Markus Scherer 616b3c5647 ICU-13647 fix SearchIterator docs sample: getMatchedLength() not getMatchLength() 2019-08-30 23:12:29 -07:00
Jeff Genovy ebb374ae30 ICU-20269 Update the CI badges in the top-level README file. 2019-08-30 18:15:02 -07:00
Markus Scherer e9285d9675 ICU-20518 update u_isbase() reference to Unicode Standard Base character 2019-08-30 17:06:33 -07:00
Jeff Genovy 973a96785e ICU-20802 OOM not handled in uloc_openKeywordList.
Also change to use LocalPointer and nullptr instead of NULL.
2019-08-30 16:35:26 -07:00
Markus Scherer c4f68c3790 ICU-13649 UnicodeString docs: mention std::string clear() to make remove() easier to find 2019-08-30 16:24:10 -07:00
Jeff Genovy 543495da74 ICU-20368 OOM not handled in NumberFormatterImpl::macrosToMicroGenerator 2019-08-30 16:00:06 -07:00
Peter Edberg 0801dd0bdd ICU-20577 Restore C MeasureFormat ability to adopt non-decimal number formatter (#789) 2019-08-30 15:53:05 -07:00
Markus Scherer 7237fc58b4 ICU-12086 ICU-12165 Currency.getName() param isChoiceFormat can be null, make it so, document, use null in library code 2019-08-30 14:47:19 -07:00
Victor Chang 6ff43608d2 ICU-20589 Fix EraRulesTest#testAPIs failure on 1 May 2019 2019-08-30 17:21:25 -04:00
Jeff Genovy 3d9914be47 ICU-20795 Added comment to ICU4C Readme.html about U_SHOW_CPLUSPLUS_API. 2019-08-30 10:35:40 -07:00
David Beaumont e984474ee5 ICU-20693 Removing unused code, fixing IDE warnings and preparing for unit tests
See #773
2019-08-30 10:34:01 -07:00
Peter Edberg f46b567ba3 ICU-20701 Add more PluralRules tests for locales with keywords 2019-08-30 10:06:21 -07:00
Daniel Ju cfe093e945 ICU-20795 BRS65RC Update version numbers and readme files, regenerate JARs 2019-08-30 17:58:24 +02:00
Jeff Genovy 4ef40f7774 ICU-13764 Add a MacOSX CI build with Warnings-as-Errors 2019-08-29 17:12:25 -07:00
Peter Edberg 62914d1f07 ICU-20620 cap UNUM_MAX_FRACTION_DIGITS setting at 999 2019-08-29 16:12:09 -07:00
Norbert Runge 15aa50bd3c ICU-20732 Adds instruction how to develop an ICU fuzzer target and how to
reproduce fuzzer findings.

ICU-20732 Addresses review comments.

Update fuzzer_targets.md
2019-08-29 16:05:16 -07:00
Frank Tang eeb759063b ICU-20799 delete calendarToAdopt upon error
ICU-20799 add unit tests

ICU-20799 initialize error and add comments.
2019-08-29 15:49:37 -07:00
Jeff Genovy c28505caaa ICU-20555 Fix Windows build failures with long paths: Use PowerShell when command length exceeds CMD's limit. 2019-08-29 12:22:56 -07:00
David Beaumont cf4ce53541 ICU-20693 Adding Ant support for configuration of ICU data builds.
See #771
2019-08-29 09:29:56 -07:00
Jeff Genovy b702db31df ICU-20680 Add comments about UPRV_UNREACHABLE to u_UCharsToChars and CEIBuffer::get[Previous]. 2019-08-28 17:22:15 -07:00
Jeff Genovy ed99298431 ICU-20794 Fix typo in ucurr.h 2019-08-28 13:24:48 -07:00
Jeff Genovy 552b01f611 ICU-20606 Add 32-bit Windows binaries to CI for Distrelease. 2019-08-28 12:34:25 -07:00
Jeff Genovy 1573018e5e ICU-20789 Clean-up the VS "clean" target for the Makedata project. 2019-08-28 12:32:42 -07:00
Peter Edberg 141884a85c ICU-20680 revert use of UPRV_UNREACHABLE in places actually reached in production code 2019-08-27 23:23:36 -07:00
Jeff Genovy 4b6eb7236a ICU-20782 Enable Windows icucheck.bat script for ARM/ARM64. 2019-08-27 18:29:12 -07:00
David Beaumont 2528d0bec1 ICU-20693 New LDML to ICU tooling.
See #721
2019-08-27 10:28:01 -07:00
Jeff Genovy 97516f58b1 ICU-20782 Extend CI build timeout for Windows ARM/ARM64. 2019-08-26 22:50:31 -07:00
Jeff Genovy f7abe8c1c1 ICU-20782 Add support for cross-compiling Windows ARM/ARM64 data DLL from the x64 bits. 2019-08-26 22:50:31 -07:00
Jeff Genovy 408752ec49 ICU-20782 Enable Windows desktop ARM and ARM64 builds of ICU4C.
This enables "classic" desktop builds of ICU4C for both ARM (32-bit)
and ARM64 (64-bit) on Windows.

All but the two samples "cal" and "date" in the "allinone" project now
have ARM and ARM64 project configurations, and build for Windows Desktop
ARM/ARM64.

Note: In order to build the ARM/ARM64 data DLL, you need to first build
x64/Release, as the ARM/ARM build uses the x64 bits in order to be able
to cross-compile for ARM/ARM64. This allows for completely building
ARM/ARM64 binaries using only x64 hardware.

The ARM/ARM64 builds require using a newer version of the Windows SDK
than 8.1, so they have a separate WindowsTargetPlatformVersion which
uses Windows 10 SDK version 10.0.16299.0 (aka RS3), which is the first
version of the Windows SDK to support building ARM64 desktop applications.

In addition this also greatly cleans-up the ICU4C ".vcxproj" files, in
order to remove redundant parts, fix inconsistencies, and make them more
readable. This introduces two new variables in the shared `*.props`
files: `IcuBinOutputDir` and `IcuLibOutputDir` in order to further
reduce the amount of duplicated lines in the individual ".vcxproj"
files themselves.
2019-08-26 22:50:31 -07:00
Jose Dapena Paz 407442dec7 ICU-20784 Do not override clang compiler internal builtins
In the case several internal builtins defined by clang were not available,
ICU was replacing them by a stub implementation. But that was breaking
detection of availability of same methods in other parts of Chromium
(specifically in base/location.h).

Instead of that, this change creates ICU specific macros that will
map to those builtins when available, or to stub implementation if
not.

I.e. for the case of __has_builtin, previous implementation was
defining __has_builtin(x) as 0 in case it was not declared. With
new implementation, there is a macro UPRV_HAS_BUILTIN that maps
to __has_builtin if available, or 0 if not.
2019-08-26 09:14:01 -07:00
Markus Scherer d3315d98ef ICU-20783 use C++ covariant return types 2019-08-23 11:45:36 -07:00
Markus Scherer f02b496494 ICU-20783 C++ covariant return types: clone(), freeze() & friends 2019-08-22 16:24:41 -07:00
Markus Scherer deec7ef683 ICU-20646 make Edits::copyErrorTo() const 2019-08-22 13:25:01 -07:00
Filip Filmar 0a01b29005 ICU-20776 Checks for nullness in UMutex::lock()
Adds `U_ASSERT` check before using `m->lock()` to make allocation issues
more apparent at least in debug builds.

There is probably quite a few places like this, but let's try fixing
broken windows.
2019-08-21 11:21:24 -07:00
3570 changed files with 100538 additions and 43919 deletions
+62 -8
View File
@@ -44,7 +44,7 @@ jobs:
vmImage: 'Ubuntu 16.04'
steps:
- script: |
export CPPFLAGS="-Werror -Wall -Wextra -Wextra-semi" && cd icu4c/source && ./runConfigureICU Linux && make -j2 tests
export CPPFLAGS="-Werror -Wall -Wextra -Wextra-semi -Wundef -Wnon-virtual-dtor" && cd icu4c/source && ./runConfigureICU Linux && make -j2 tests
displayName: 'Build only (WarningsAsErrors)'
env:
CC: clang
@@ -63,8 +63,8 @@ jobs:
CC: clang
CXX: clang++
#-------------------------------------------------------------------------
- job: ICU4C_MSVC_x64_Release
displayName: 'C: MSVC 64-bit Release (VS 2017)'
- job: ICU4C_MSVC_x64_Release_Distrelease
displayName: 'C: MSVC 64-bit Release (VS 2017) + Distrelease'
timeoutInMinutes: 30
pool:
vmImage: 'vs2017-win2016'
@@ -85,21 +85,50 @@ jobs:
filename: icu4c/source/allinone/icucheck.bat
arguments: 'x64 Release'
- task: PowerShell@2
displayName: 'PowerShell: Distrelease script'
displayName: 'PowerShell: Distrelease script (x64)'
inputs:
targetType: filePath
filePath: 'icu4c/packaging/distrelease.ps1'
arguments: '-arch x64'
workingDirectory: icu4c
- task: PublishBuildArtifacts@1
displayName: 'Publish Artifacts: icu-windows.zip'
displayName: 'Publish x64 Artifacts: icu-windows.zip'
inputs:
PathtoPublish: 'icu4c/source/dist/icu-windows.zip'
ArtifactName: '$(Build.BuildNumber)_ICU4C_MSVC_x64_Release'
#-------------------------------------------------------------------------
- job: ICU4C_MSVC_x64_ARM32_ARM64_Release
displayName: 'C: MSVC x64 ARM32 ARM64 Release (VS 2017)'
- job: ICU4C_MSVC_x86_Release_Distrelease
displayName: 'C: MSVC 32-bit Release (VS 2017) + Distrelease'
timeoutInMinutes: 30
pool:
vmImage: 'vs2017-win2016'
demands:
- msbuild
- visualstudio
- Cmd
steps:
- task: VSBuild@1
displayName: 'Build Solution'
inputs:
solution: icu4c/source/allinone/allinone.sln
platform: Win32
configuration: Release
- task: PowerShell@2
displayName: 'PowerShell: Distrelease script (x86)'
inputs:
targetType: filePath
filePath: 'icu4c/packaging/distrelease.ps1'
arguments: '-arch x86'
workingDirectory: icu4c
- task: PublishBuildArtifacts@1
displayName: 'Publish x86 Artifacts: icu-windows.zip'
inputs:
PathtoPublish: 'icu4c/source/dist/icu-windows.zip'
ArtifactName: '$(Build.BuildNumber)_ICU4C_MSVC_x86_Release'
#-------------------------------------------------------------------------
- job: ICU4C_MSVC_x64_ARM32_ARM64_Release_Distrelease
displayName: 'C: MSVC x64 ARM32 ARM64 Release (VS 2017) + Distrelease ARM64'
timeoutInMinutes: 60
pool:
vmImage: 'vs2017-win2016'
demands:
@@ -125,6 +154,18 @@ jobs:
solution: icu4c/source/allinone/allinone.sln
platform: ARM64
configuration: Release
- task: PowerShell@2
displayName: 'PowerShell: Distrelease script (ARM64)'
inputs:
targetType: filePath
filePath: 'icu4c/packaging/distrelease.ps1'
arguments: '-arch ARM64'
workingDirectory: icu4c
- task: PublishBuildArtifacts@1
displayName: 'Publish ARM64 Artifacts: icu-windows.zip'
inputs:
PathtoPublish: 'icu4c/source/dist/icu-windows.zip'
ArtifactName: '$(Build.BuildNumber)_ICU4C_MSVC_ARM64_Release'
#-------------------------------------------------------------------------
- job: ICU4C_MSVC_x64_Release_DataFilter
displayName: 'C: MSVC 64-bit Release DataFilter (VS 2017)'
@@ -150,7 +191,7 @@ jobs:
#-------------------------------------------------------------------------
- job: ICU4C_MSVC_x86_Debug
displayName: 'C: MSVC 32-bit Debug (VS 2017)'
timeoutInMinutes: 45
timeoutInMinutes: 60
pool:
vmImage: 'vs2017-win2016'
demands:
@@ -227,3 +268,16 @@ jobs:
set MSYSTEM=MINGW64
c:\tools\msys64\usr\bin\bash.exe -lc "cd $BUILD_SOURCESDIRECTORY && cd icu4c/source && ./runConfigureICU MinGW && make -j2 check"
displayName: 'Build and Test ICU4C'
#-------------------------------------------------------------------------
- job: ICU4C_Clang_MacOSX_WarningsAsErrors
displayName: 'C: macOSX Clang WarningsAsErrors (Mojave 10.14)'
timeoutInMinutes: 30
pool:
vmImage: 'macOS-10.14'
steps:
- script: |
export CPPFLAGS="-Werror -Wall -Wextra -Wextra-semi -Wundef -Wnon-virtual-dtor" && cd icu4c/source && ./runConfigureICU MacOSX && make -j2 tests
displayName: 'Build only (WarningsAsErrors)'
env:
CC: clang
CXX: clang++
+46
View File
@@ -99,8 +99,10 @@ icu4c/source/doc
icu4c/source/extra/Makefile
icu4c/source/extra/scrptrun/Makefile
icu4c/source/extra/scrptrun/scrptrun.d
icu4c/source/extra/scrptrun/scrptrun.o
icu4c/source/extra/scrptrun/srtest
icu4c/source/extra/scrptrun/srtest.d
icu4c/source/extra/scrptrun/srtest.o
icu4c/source/extra/uconv/*.d
icu4c/source/extra/uconv/*.o
icu4c/source/extra/uconv/*.vcxproj.user
@@ -121,6 +123,8 @@ icu4c/source/extra/uconv/uconv.vcproj.*.*.user
icu4c/source/extra/uconv/uconvmsg
icu4c/source/extra/uconv/x64
icu4c/source/extra/uconv/x86
icu4c/source/extra/uconv/ARM
icu4c/source/extra/uconv/ARM64
icu4c/source/i18n/*.ao
icu4c/source/i18n/*.d
icu4c/source/i18n/*.o
@@ -139,6 +143,8 @@ icu4c/source/i18n/i18n.vcproj.*.*.user
icu4c/source/i18n/release
icu4c/source/i18n/x64
icu4c/source/i18n/x86
icu4c/source/i18n/ARM
icu4c/source/i18n/ARM64
icu4c/source/icudefs.local
icu4c/source/icudefs.mk
icu4c/source/io/*.ao
@@ -154,6 +160,8 @@ icu4c/source/io/io.vcproj.*.*.user
icu4c/source/io/release
icu4c/source/io/x64
icu4c/source/io/x86
icu4c/source/io/ARM
icu4c/source/io/ARM64
icu4c/source/layoutex/*.ao
icu4c/source/layoutex/*.d
icu4c/source/layoutex/*.o
@@ -439,6 +447,8 @@ icu4c/source/test/cintltst/debug
icu4c/source/test/cintltst/release
icu4c/source/test/cintltst/x64
icu4c/source/test/cintltst/x86
icu4c/source/test/cintltst/ARM
icu4c/source/test/cintltst/ARM64
icu4c/source/test/compat/Makefile
icu4c/source/test/fuzzer/Makefile
icu4c/source/test/fuzzer/*.d
@@ -460,6 +470,8 @@ icu4c/source/test/intltest/intltest.vcproj.*.*.user
icu4c/source/test/intltest/release
icu4c/source/test/intltest/x64
icu4c/source/test/intltest/x86
icu4c/source/test/intltest/ARM
icu4c/source/test/intltest/ARM64
icu4c/source/test/iotest/*.d
icu4c/source/test/iotest/*.dSYM
icu4c/source/test/iotest/*.o
@@ -474,6 +486,8 @@ icu4c/source/test/iotest/iotest.vcproj.*.*.user
icu4c/source/test/iotest/release
icu4c/source/test/iotest/x64
icu4c/source/test/iotest/x86
icu4c/source/test/iotest/ARM
icu4c/source/test/iotest/ARM64
icu4c/source/test/letest/*.d
icu4c/source/test/letest/*.o
icu4c/source/test/letest/*.opensdf
@@ -670,6 +684,8 @@ icu4c/source/tools/ctestfw/libsicutest*
icu4c/source/tools/ctestfw/release
icu4c/source/tools/ctestfw/x64
icu4c/source/tools/ctestfw/x86
icu4c/source/tools/ctestfw/ARM
icu4c/source/tools/ctestfw/ARM64
icu4c/source/tools/escapesrc/*.d
icu4c/source/tools/escapesrc/*.o
icu4c/source/tools/escapesrc/Makefile
@@ -689,6 +705,8 @@ icu4c/source/tools/genbrk/genbrk.vcproj.*.*.user
icu4c/source/tools/genbrk/release
icu4c/source/tools/genbrk/x64
icu4c/source/tools/genbrk/x86
icu4c/source/tools/genbrk/ARM
icu4c/source/tools/genbrk/ARM64
icu4c/source/tools/genccode/*.d
icu4c/source/tools/genccode/*.o
icu4c/source/tools/genccode/*.pdb
@@ -704,6 +722,8 @@ icu4c/source/tools/genccode/genccode.vcproj.*.*.user
icu4c/source/tools/genccode/release
icu4c/source/tools/genccode/x64
icu4c/source/tools/genccode/x86
icu4c/source/tools/genccode/ARM
icu4c/source/tools/genccode/ARM64
icu4c/source/tools/gencfu/*.d
icu4c/source/tools/gencfu/*.o
icu4c/source/tools/gencfu/*.pdb
@@ -719,6 +739,8 @@ icu4c/source/tools/gencfu/gencfu.vcproj.*.*.user
icu4c/source/tools/gencfu/release
icu4c/source/tools/gencfu/x64
icu4c/source/tools/gencfu/x86
icu4c/source/tools/gencfu/ARM
icu4c/source/tools/gencfu/ARM64
icu4c/source/tools/gencmn/*.d
icu4c/source/tools/gencmn/*.o
icu4c/source/tools/gencmn/*.pdb
@@ -735,6 +757,8 @@ icu4c/source/tools/gencmn/gencmn.vcproj.*.*.user
icu4c/source/tools/gencmn/release
icu4c/source/tools/gencmn/x64
icu4c/source/tools/gencmn/x86
icu4c/source/tools/gencmn/ARM
icu4c/source/tools/gencmn/ARM64
icu4c/source/tools/gencnval/*.d
icu4c/source/tools/gencnval/*.ncb
icu4c/source/tools/gencnval/*.o
@@ -753,6 +777,8 @@ icu4c/source/tools/gencnval/gencnval.vcproj.*.*.user
icu4c/source/tools/gencnval/release
icu4c/source/tools/gencnval/x64
icu4c/source/tools/gencnval/x86
icu4c/source/tools/gencnval/ARM
icu4c/source/tools/gencnval/ARM64
icu4c/source/tools/gencolusb/Makefile.local
icu4c/source/tools/gencolusb/extract_unsafe_backwards
icu4c/source/tools/gencolusb/verify_uset
@@ -767,6 +793,8 @@ icu4c/source/tools/gendict/Makefile
icu4c/source/tools/gendict/Release
icu4c/source/tools/gendict/x64
icu4c/source/tools/gendict/x86
icu4c/source/tools/gendict/ARM
icu4c/source/tools/gendict/ARM64
icu4c/source/tools/gennorm2/*.d
icu4c/source/tools/gennorm2/*.o
icu4c/source/tools/gennorm2/*.pdb
@@ -782,6 +810,8 @@ icu4c/source/tools/gennorm2/gennorm2.vcproj.*.*.user
icu4c/source/tools/gennorm2/release
icu4c/source/tools/gennorm2/x64
icu4c/source/tools/gennorm2/x86
icu4c/source/tools/gennorm2/ARM
icu4c/source/tools/gennorm2/ARM64
icu4c/source/tools/genrb/*.1
icu4c/source/tools/genrb/*.d
icu4c/source/tools/genrb/*.o
@@ -804,6 +834,8 @@ icu4c/source/tools/genrb/release
icu4c/source/tools/genrb/temp
icu4c/source/tools/genrb/x64
icu4c/source/tools/genrb/x86
icu4c/source/tools/genrb/ARM
icu4c/source/tools/genrb/ARM64
icu4c/source/tools/genren/ICUunrenamed
icu4c/source/tools/genren/Makefile.local
icu4c/source/tools/genren/urename.*
@@ -823,6 +855,8 @@ icu4c/source/tools/gensprep/gensprep.vcproj.*.*.user
icu4c/source/tools/gensprep/release
icu4c/source/tools/gensprep/x64
icu4c/source/tools/gensprep/x86
icu4c/source/tools/gensprep/ARM
icu4c/source/tools/gensprep/ARM64
icu4c/source/tools/gentest/*.d
icu4c/source/tools/gentest/*.o
icu4c/source/tools/gentest/*.pdb
@@ -837,6 +871,8 @@ icu4c/source/tools/gentest/gentest.vcproj.*.*.user
icu4c/source/tools/gentest/release
icu4c/source/tools/gentest/x64
icu4c/source/tools/gentest/x86
icu4c/source/tools/gentest/ARM
icu4c/source/tools/gentest/ARM64
icu4c/source/tools/icuinfo/*.d
icu4c/source/tools/icuinfo/*.dSYM
icu4c/source/tools/icuinfo/*.dylib
@@ -853,6 +889,8 @@ icu4c/source/tools/icuinfo/icuplugins*.txt
!icu4c/source/tools/icuinfo/icuplugins_windows_sample.txt
icu4c/source/tools/icuinfo/x64
icu4c/source/tools/icuinfo/x86
icu4c/source/tools/icuinfo/ARM
icu4c/source/tools/icuinfo/ARM64
icu4c/source/tools/icupkg/*.8
icu4c/source/tools/icupkg/*.d
icu4c/source/tools/icupkg/*.ncb
@@ -871,6 +909,8 @@ icu4c/source/tools/icupkg/icupkg.vcproj.*.*.user
icu4c/source/tools/icupkg/release
icu4c/source/tools/icupkg/x64
icu4c/source/tools/icupkg/x86
icu4c/source/tools/icupkg/ARM
icu4c/source/tools/icupkg/ARM64
icu4c/source/tools/icuswap/*.d
icu4c/source/tools/icuswap/*.ncb
icu4c/source/tools/icuswap/*.o
@@ -901,6 +941,8 @@ icu4c/source/tools/makeconv/makeconv.vcproj.*.*.user
icu4c/source/tools/makeconv/release
icu4c/source/tools/makeconv/x64
icu4c/source/tools/makeconv/x86
icu4c/source/tools/makeconv/ARM
icu4c/source/tools/makeconv/ARM64
icu4c/source/tools/pkgdata/*.1
icu4c/source/tools/pkgdata/*.d
icu4c/source/tools/pkgdata/*.ncb
@@ -919,6 +961,8 @@ icu4c/source/tools/pkgdata/pkgdata.vcproj.*.*.user
icu4c/source/tools/pkgdata/release
icu4c/source/tools/pkgdata/x64
icu4c/source/tools/pkgdata/x86
icu4c/source/tools/pkgdata/ARM
icu4c/source/tools/pkgdata/ARM64
icu4c/source/tools/toolutil/*.ao
icu4c/source/tools/toolutil/*.d
icu4c/source/tools/toolutil/*.ncb
@@ -936,6 +980,8 @@ icu4c/source/tools/toolutil/release
icu4c/source/tools/toolutil/toolutil.vcproj.*.*.user
icu4c/source/tools/toolutil/x64
icu4c/source/tools/toolutil/x86
icu4c/source/tools/toolutil/ARM
icu4c/source/tools/toolutil/ARM64
icu4c/source/tools/tzcode/*.ao
icu4c/source/tools/tzcode/*.o
icu4c/source/tools/tzcode/.vs
+14
View File
@@ -66,6 +66,11 @@ matrix:
- PATH="${PREFIX}/bin:$PATH" make -C test/hdrtst check
# clang release build with some options to enforce useful constraints.
# Includes dependency checker on an in-source, optimized build.
# Includes checking @draft etc. API tags vs. ifndef guards like
# U_HIDE_DRAFT_API and U_FORCE_HIDE_DRAFT_API.
# (FORCE guards make this tool pass but won't compile to working code.
# See the testtagsguards.sh script for details.)
- name: "c: linux clang"
dist: xenial
language: cpp
@@ -81,6 +86,7 @@ matrix:
script:
- make -j2 check
- ( cd test/depstest && python3 depstest.py ../../../source/ )
- ( cd .. && source/test/hdrtst/testtagsguards.sh )
- name: "c: osx clang"
language: cpp
@@ -134,3 +140,11 @@ matrix:
- name: "lint"
script:
- perl tools/scripts/cpysearch/cpyscan.pl
- name: "j: icu4c release tools"
language: "java"
script:
- mvn -f tools/release/java/pom.xml package dependency:analyze
cache:
directories:
- $HOME/.m2
+4 -3
View File
@@ -8,13 +8,14 @@ The ICU project is under the stewardship of [The Unicode Consortium](https://www
![ICU Logo](./tools/images/iculogo_64.png)
### Build Status
### Build Status (master branch)
Build | Status
------|-------
TravisCI | [![Build Status](https://travis-ci.org/unicode-org/icu.svg?branch=master)](https://travis-ci.org/unicode-org/icu)
Win x64 Release | [![Build status](https://unicode-icu.visualstudio.com/ICU/_apis/build/status/ICU4C%20Build%20and%20Test%20%5Bx64%20Release%5D%20(CI))](https://unicode-icu.visualstudio.com/ICU/_build/latest?definitionId=8)
Win x86 Release | [![Build status](https://unicode-icu.visualstudio.com/ICU/_apis/build/status/ICU4C%20Build%20and%20Test%20%5Bx86%20Release%5D%20(CI))](https://unicode-icu.visualstudio.com/ICU/_build/latest?definitionId=7)
Azure Pipelines | [![Build Status](https://unicode-icu.visualstudio.com/ICU/_apis/build/status/Azure%20CI?branchName=master)](https://unicode-icu.visualstudio.com/ICU/_build/latest?definitionId=21&branchName=master)
Azure Pipelines (Exhaustive Tests) | [![Build Status](https://unicode-icu.visualstudio.com/ICU/_apis/build/status/Azure%20CI%20%5BExhaustive%20Tests%5D?branchName=master)](https://unicode-icu.visualstudio.com/ICU/_build/latest?definitionId=24&branchName=master)
AppVeyor | [![Build status](https://ci.appveyor.com/api/projects/status/6ev1ssb6efahsvs2?svg=true)](https://ci.appveyor.com/project/unicode-org/icu)
### Subdirectories and Information
+156
View File
@@ -0,0 +1,156 @@
<!--
© 2019 and later: Unicode, Inc. and others.
License & terms of use: http://www.unicode.org/copyright.html
-->
Developing Fuzzer Targets for ICU APIs
======================================
This documents describes how to develop a [fuzzer](https://opensource.google.com/projects/oss-fuzz)
target for an ICU API and its integration into the ICU build process.
### Directory and naming conventions
Fuzzer targets are exclusively in directory
[`source/test/fuzzer/`](https://github.com/unicode-org/icu/tree/master/icu4c/source/test/fuzzer)
and end with `_fuzzer.cpp`. Only files with such ending are recognized and executed as fuzzer
targets by the OSS-Fuzz system.
### General structure of a fuzzer target
As a minimum, a fuzzer target contains the function
```
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
...
}
```
This function is expected and invoked by the fuzzer system. The `data` parameter contains the
fuzzer-controlled data of size `size` bytes. Part or all of this data is then passed into the
ICU API under test.
Fuzzer target
[`collator_rulebased_fuzzer.cpp`](https://github.com/unicode-org/icu/blob/master/icu4c/source/test/fuzzer/collator_rulebased_fuzzer.cpp)
illustrates the basic elements.
```
// © 2019 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html
#include <cstring>
#include "fuzzer_utils.h"
#include "unicode/coll.h"
#include "unicode/localpointer.h"
#include "unicode/locid.h"
#include "unicode/tblcoll.h"
IcuEnvironment* env = new IcuEnvironment();
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
UErrorCode status = U_ZERO_ERROR;
size_t unistr_size = size/2;
std::unique_ptr<char16_t[]> fuzzbuff(new char16_t[unistr_size]);
std::memcpy(fuzzbuff.get(), data, unistr_size * 2);
icu::UnicodeString fuzzstr(false, fuzzbuff.get(), unistr_size);
icu::LocalPointer<icu::RuleBasedCollator> col1(
new icu::RuleBasedCollator(fuzzstr, status));
return 0;
}
```
The ICU API under test is the `RuleBasedCollator(const UnicodeString &rules, UErrorCode &status)`
constructor. The code interprets the fuzzer data as UnicodeString and passes it to the constructor.
And that is all. Specific error handling or return value verification is not required because the
fuzzer will detect all memory issues by means of memory/address sanitizer findings.
### Makefile.in changes
ICU fuzzer targets are built and executed by the OSS-Fuzz project. On side of ICU they are compiled
to assure that the code is syntactically correct and, as a sanity check, executed in the most basic
manner, i.e. with minimal testdata and without ASAN or MSAN analysis.
Add the new fuzzer target to the list of targets in the `FUZZER_TARGETS` variable in
[`Makefile.in`](https://github.com/unicode-org/icu/blob/master/icu4c/source/test/fuzzer/Makefile.in).
The new fuzzer target will then be built and executed as part of a normal ICU4C unit test run. Note
that each fuzzer target becomes executable on its own. As such it is linked with the code in
`fuzzer_driver.cpp`, which contains the `main()` function.
### Fuzzer seed corpus
Any fuzzer seed data for a fuzzer target goes into a file with name `<fuzzer_target>_seed_corpus.txt`.
In many cases the input parameter of the ICU API under test is of type `UnicodeString`, in case
of which the seed data should be in UTF-16 format. As an example,see
[collator_rulebased_fuzzer_seed_corpus.txt](https://github.com/unicode-org/icu/blob/master/icu4c/source/test/fuzzer/collator_rulebased_fuzzer_seed_corpus.txt).
### Guidelines and tips
* Leave all randomness to the fuzzer. If a random selection of any kind is needed (e.g., of a
locale), then use bytes from the fuzzer data to make the selection
([example](https://github.com/unicode-org/icu/blob/master/icu4c/source/test/fuzzer/break_iterator_fuzzer.cpp)).
* In many cases ICU unit tests can provide seed data or at least ideas for seed data. If the API
under test requires a Unicode string then make sure that the seed data is in UTF-16 encoding.
This can be achieved with e.g. the 'iconv' command or using an editor that saves text in UTF-16.
### How to locally reproduce fuzzer findings
At this time reproduction of fuzzer findings requires Docker installed on the local machine and the
OSS-Fuzz project downloaded in a local git client.
1. Install Docker (Ubuntu):
```
sudo apt install docker
```
2. Download OSS-Fuzz, switch into directory oss-fuzz/
In a git client directory, download the fuzzer system.
```
git clone https://github.com/google/oss-fuzz.git
cd oss-fuzz/
```
3. Build the Docker image for ICU.
In some setups root permissions may be required to connect to the Docker.
```
[sudo] python infra/helper.py build_image icu
```
A prompt will appear: `Pull latest base images (compiler/runtime)? (y/N)`
Respond: 'N'. If you are curious then respond with 'y' (won't hurt).
4. Build the ICU fuzzers:
```
[sudo] python infra/helper.py build_fuzzers --sanitizer [address | memory | undefined] icu
```
Check that the fuzzer targets were built successfully: ```ls -l build/out/icu```
5. Reproduce the fuzzer finding.
First, get the testdata the fuzzer used when finding the issue. In the fuzzer bug report look
for 'Reproducer Testcase', a click on the link will download the testdata. Then execute
```
[sudo] python infra/helper.py reproduce icu <icu_fuzzer> <testdata>
```
Concrete example:
```
sudo python infra/helper.py reproduce icu uregex_open_fuzzer ~/Downloads/clusterfuzz-testcase-minimized-uregex_open_fuzzer-5732067058384896
```
**Limitations:** When reproducing a fuzzer finding in the way outlined above the fuzzer environment
will use the current ICU trunk from https://github.com/unicode-org/icu.git. Thus it is not possible
to modify the code to try out a possible fix. What can be done is to redirect Docker to download ICU
from a forked ICU repository. Open the file oss-fuzz/projects/icu/Dockerfile and adjust the line
with `git clone --depth 1 https://github.com/unicode-org/icu.git icu` accordingly. Then modify
the code in the forked repository and follow the steps above beginning with step 3, create a Docker
image.
This of course is still a tedious way of reproducing and working on a fuzzer finding. Ticket
[ICU-20734](https://unicode-org.atlassian.net/browse/ICU-20734) aims to introduce a fuzzer driver
that can reproduce certain fuzzer findings in a local ICU workspace.
+6 -1
View File
@@ -222,12 +222,17 @@ There are two concrete differences between additive and subtractive mode:
| | Additive | Subtractive |
|-------------------------|-------------|-------------|
| Default Feature Filter | `"exclude"` | `"include"` |
| Default Resource Filter | `"-/"` | `"+/"` |
| Default Resource Filter | `"-/"`, `"+/%%ALIAS"`, `"+/%%Parent"` | `"+/"` |
To enable additive mode, add the following setting to your filter file:
strategy: "additive"
**Caution:** If using `"-/"` or similar top-level exclusion rules, be aware of
the fields `"+/%%Parent"` and `"+/%%ALIAS"`, which are required in locale tree
resource bundles. Excluding these paths may cause unexpected locale fallback
behavior.
#### Filter Types
You may list *filters* for each category in the *featureFilters* section of
+2546 -1944
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+6 -1
View File
@@ -13,7 +13,7 @@
# (bring up Powershell ISE)
# cd C:\icu\icu4c\
# Set-ExecutionPolicy -Scope Process Unrestricted
# .\packaging\distrelease.ps1 -arch "x64 or x86"
# .\packaging\distrelease.ps1 -arch "x64 or x86 or ARM64"
#
# Will emit: c:\icu4c\icu\source\dist\icu-windows.zip
#
@@ -48,6 +48,11 @@ elseif ($arch -eq "x86")
Copy-Item -Path "$icuDir\lib" -Destination $source -Recurse
Copy-Item -Path "$icuDir\bin" -Destination $source -Recurse
}
elseif ($arch -eq "ARM64")
{
Copy-Item -Path "$icuDir\libARM64" -Destination $source -Recurse
Copy-Item -Path "$icuDir\binARM64" -Destination $source -Recurse
}
else
{
$filename = $MyInvocation.MyCommand.Name;
+6 -5
View File
@@ -3,7 +3,7 @@
<html lang="en-US" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
<title>ReadMe for ICU 64.2</title>
<title>ReadMe for ICU 65.1</title>
<meta name="COPYRIGHT" content=
"Copyright (C) 2016 and later: Unicode, Inc. and others. License &amp; terms of use: http://www.unicode.org/copyright.html"/>
<!-- meta name="COPYRIGHT" content=
@@ -32,7 +32,7 @@
International Components for Unicode<br/>
<span class="only-rc">Release Candidate</span>
<span class="only-milestone">(Milestone Release)</span>
<abbr title="International Components for Unicode">ICU</abbr> 64.2 ReadMe
<abbr title="International Components for Unicode">ICU</abbr> 65.1 ReadMe
</h1>
<!-- Shouldn't need to comment/uncomment this paragraph, just change the body class -->
@@ -44,7 +44,7 @@
<p class="note only-rc">This is a release candidate version of ICU4C.
It is not recommended for production use.</p>
<p>Last updated: 2019-Apr-04<br/>
<p>Last updated: 2019-Sept-16<br/>
Copyright &copy; 2016 and later: Unicode, Inc. and others. License &amp; terms of use:
<a href="http://www.unicode.org/copyright.html">http://www.unicode.org/copyright.html</a><br/>
Copyright &copy; 1997-2016 International Business Machines Corporation and others.
@@ -233,7 +233,7 @@
<h2><a name="News" href="#News" id="News">What Is New In This Release?</a></h2>
<p>See the <a href="http://site.icu-project.org/download/64">ICU 64 download page</a>
<p>See the <a href="http://site.icu-project.org/download/65">ICU 65 download page</a>
for an overview of this release, important changes, new features, bug fixes, known issues,
changes to supported platforms and build environments,
and migration issues for existing applications migrating from previous ICU releases.</p>
@@ -744,7 +744,8 @@
across library and compiler versions is very hard to achieve.
Most ICU C++ APIs are in header files that contain a comment with
<code>\brief C++ API</code>.
Consider not installing these header files.</li>
Consider not installing these header files, or define <code>U_SHOW_CPLUSPLUS_API</code>
to be <code>0</code> by modifying unicode/utypes.h before installing it.</li>
<li><b>Disable renaming:</b> By default, ICU library entry point names
have an ICU version suffix. Turn this off for a system-level installation,
to enable upgrading ICU without breaking applications. For example:<br />
@@ -12,6 +12,14 @@
<Configuration>Debug</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM">
<Configuration>Debug</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Debug|ARM64">
<Configuration>Debug</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
@@ -20,15 +28,52 @@
<Configuration>Release</Configuration>
<Platform>x64</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM">
<Configuration>Release</Configuration>
<Platform>ARM</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|ARM64">
<Configuration>Release</Configuration>
<Platform>ARM64</Platform>
</ProjectConfiguration>
</ItemGroup>
<!-- The following import will set the PlatformToolset configuration. -->
<Import Project="Build.Windows.PlatformToolset.props" />
<!-- The following PropertyGroups are used to set the binary and lib output locations -->
<PropertyGroup Condition="'$(Platform)'=='Win32'">
<IcuBinOutputDir>bin</IcuBinOutputDir>
<IcuLibOutputDir>lib</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='x64'">
<IcuBinOutputDir>bin64</IcuBinOutputDir>
<IcuLibOutputDir>lib64</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM'">
<IcuBinOutputDir>binARM</IcuBinOutputDir>
<IcuLibOutputDir>libARM</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
<IcuBinOutputDir>binARM64</IcuBinOutputDir>
<IcuLibOutputDir>libARM64</IcuLibOutputDir>
</PropertyGroup>
<!-- This is the default SDK target. -->
<PropertyGroup>
<!-- This is the default SDK target. -->
<!-- Note that the Windows 8.1 SDK is backwards compatible down-level to Windows 7, so
setting this to 8.1 does not actually imply targeting Windows 8.1. -->
<WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
</PropertyGroup>
<!-- Desktop ARM/ARM64 support requires a newer version of the Windows SDK than 8.1 -->
<!--
Note: This version must match the version below in the ARM64 section for AdditionalLibraryDirectories
-->
<PropertyGroup Condition="'$(Platform)'=='ARM'">
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsSDKDesktopARMSupport>true</WindowsSDKDesktopARMSupport>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
<WindowsSDKDesktopARM64Support>true</WindowsSDKDesktopARM64Support>
</PropertyGroup>
<PropertyGroup>
<!-- We need to explicitly set the target version to Windows 7. -->
<Win32_WinNTVersion>0x0601</Win32_WinNTVersion>
@@ -72,12 +117,15 @@
<ClCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<WholeProgramOptimization>true</WholeProgramOptimization>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ResourceCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
</Link>
</ItemDefinitionGroup>
<!-- Options that are common to all 'Debug' configurations for *all* projects. -->
@@ -123,4 +171,36 @@
<TargetMachine>MachineX64</TargetMachine>
</Link>
</ItemDefinitionGroup>
<!-- Options that are common to all ARM 32-bit configurations for *all* projects. -->
<ItemDefinitionGroup Condition="'$(Platform)'=='ARM'">
<Midl>
<TargetEnvironment>ARM</TargetEnvironment>
</Midl>
<ClCompile>
<PreprocessorDefinitions>ARM;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<TargetMachine>MachineARM</TargetMachine>
<!-- The ARM64 Desktop SDK doesn't include this by default -->
<AdditionalDependencies>kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<!-- Note: This needs to match the same version as WindowsTargetPlatformVersion for ARM -->
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<!-- Options that are common to all ARM 64-bit configurations for *all* projects. -->
<ItemDefinitionGroup Condition="'$(Platform)'=='ARM64'">
<Midl>
<TargetEnvironment>ARM64</TargetEnvironment>
</Midl>
<ClCompile>
<PreprocessorDefinitions>ARM64;WIN32;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<TargetMachine>MachineARM64</TargetMachine>
<!-- The ARM64 Desktop SDK doesn't include this by default -->
<AdditionalDependencies>kernel32.lib;%(AdditionalDependencies)</AdditionalDependencies>
<!-- Note: This needs to match the same version as WindowsTargetPlatformVersion for ARM64 -->
<AdditionalLibraryDirectories>C:\Program Files (x86)\Windows Kits\10\Lib\10.0.16299.0\um\arm64</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
</Project>
@@ -24,6 +24,23 @@
</PropertyGroup>
<!-- The following import will set the PlatformToolset configuration. -->
<Import Project="..\allinone\Build.Windows.PlatformToolset.props" />
<!-- The following PropertyGroups are used to set the binary and lib output locations -->
<PropertyGroup Condition="'$(Platform)'=='Win32'">
<IcuBinOutputDir>bin32uwp</IcuBinOutputDir>
<IcuLibOutputDir>lib32uwp</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='x64'">
<IcuBinOutputDir>bin64uwp</IcuBinOutputDir>
<IcuLibOutputDir>lib64uwp</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM'">
<IcuBinOutputDir>binARMuwp</IcuBinOutputDir>
<IcuLibOutputDir>libARMuwp</IcuLibOutputDir>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)'=='ARM64'">
<IcuBinOutputDir>binARM64uwp</IcuBinOutputDir>
<IcuLibOutputDir>libARM64uwp</IcuLibOutputDir>
</PropertyGroup>
<ItemDefinitionGroup>
<Midl>
<PreprocessorDefinitions>
+208 -104
View File
@@ -218,38 +218,50 @@ Global
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64
{F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.ActiveCfg = Debug|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM64.ActiveCfg = Debug|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.ActiveCfg = Debug|ARM
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM.Build.0 = Debug|ARM
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM64.ActiveCfg = Debug|ARM64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|ARM64.Build.0 = Debug|ARM64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.ActiveCfg = Debug|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|Win32.Build.0 = Debug|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.ActiveCfg = Debug|x64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Debug|x64.Build.0 = Debug|x64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM.ActiveCfg = Release|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM64.ActiveCfg = Release|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM.ActiveCfg = Release|ARM
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM.Build.0 = Release|ARM
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM64.ActiveCfg = Release|ARM64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|ARM64.Build.0 = Release|ARM64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.ActiveCfg = Release|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|Win32.Build.0 = Release|Win32
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.ActiveCfg = Release|x64
{3D1246AE-1B32-479B-BECA-AEFA97BE2321}.Release|x64.Build.0 = Release|x64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM.ActiveCfg = Debug|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM64.ActiveCfg = Debug|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM.ActiveCfg = Debug|ARM
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM.Build.0 = Debug|ARM
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM64.ActiveCfg = Debug|ARM64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|ARM64.Build.0 = Debug|ARM64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.ActiveCfg = Debug|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|Win32.Build.0 = Debug|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.ActiveCfg = Debug|x64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Debug|x64.Build.0 = Debug|x64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM.ActiveCfg = Release|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM64.ActiveCfg = Release|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM.ActiveCfg = Release|ARM
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM.Build.0 = Release|ARM
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM64.ActiveCfg = Release|ARM64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|ARM64.Build.0 = Release|ARM64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.ActiveCfg = Release|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|Win32.Build.0 = Release|Win32
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.ActiveCfg = Release|x64
{73C0A65B-D1F2-4DE1-B3A6-15DAD2C23F3D}.Release|x64.Build.0 = Release|x64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM.ActiveCfg = Debug|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM64.ActiveCfg = Debug|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM.ActiveCfg = Debug|ARM
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM.Build.0 = Debug|ARM
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM64.ActiveCfg = Debug|ARM64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|ARM64.Build.0 = Debug|ARM64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.ActiveCfg = Debug|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|Win32.Build.0 = Debug|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.ActiveCfg = Debug|x64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Debug|x64.Build.0 = Debug|x64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM.ActiveCfg = Release|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM64.ActiveCfg = Release|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM.ActiveCfg = Release|ARM
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM.Build.0 = Release|ARM
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM64.ActiveCfg = Release|ARM64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|ARM64.Build.0 = Release|ARM64
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.ActiveCfg = Release|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|Win32.Build.0 = Release|Win32
{ECA6B435-B4FA-4F9F-BF95-F451D078FC47}.Release|x64.ActiveCfg = Release|x64
@@ -266,146 +278,194 @@ Global
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64
{38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.ActiveCfg = Debug|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM64.ActiveCfg = Debug|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.ActiveCfg = Debug|ARM
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM.Build.0 = Debug|ARM
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM64.ActiveCfg = Debug|ARM64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|ARM64.Build.0 = Debug|ARM64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.ActiveCfg = Debug|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|Win32.Build.0 = Debug|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.ActiveCfg = Debug|x64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Debug|x64.Build.0 = Debug|x64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM.ActiveCfg = Release|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM64.ActiveCfg = Release|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM.ActiveCfg = Release|ARM
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM.Build.0 = Release|ARM
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM64.ActiveCfg = Release|ARM64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|ARM64.Build.0 = Release|ARM64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.ActiveCfg = Release|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|Win32.Build.0 = Release|Win32
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.ActiveCfg = Release|x64
{D3065ADB-8820-4CC7-9B6C-9510833961A3}.Release|x64.Build.0 = Release|x64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM.ActiveCfg = Debug|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM64.ActiveCfg = Debug|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM.ActiveCfg = Debug|ARM
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM.Build.0 = Debug|ARM
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|ARM64.Build.0 = Debug|ARM64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.ActiveCfg = Debug|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|Win32.Build.0 = Debug|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.ActiveCfg = Debug|x64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Debug|x64.Build.0 = Debug|x64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM.ActiveCfg = Release|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM64.ActiveCfg = Release|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM.ActiveCfg = Release|ARM
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM.Build.0 = Release|ARM
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM64.ActiveCfg = Release|ARM64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|ARM64.Build.0 = Release|ARM64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.ActiveCfg = Release|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|Win32.Build.0 = Release|Win32
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.ActiveCfg = Release|x64
{C2BE5000-7501-4E87-9724-B8D82494FAE6}.Release|x64.Build.0 = Release|x64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM.ActiveCfg = Debug|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM64.ActiveCfg = Debug|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM.ActiveCfg = Debug|ARM
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM.Build.0 = Debug|ARM
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM64.ActiveCfg = Debug|ARM64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|ARM64.Build.0 = Debug|ARM64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.ActiveCfg = Debug|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|Win32.Build.0 = Debug|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.ActiveCfg = Debug|x64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Debug|x64.Build.0 = Debug|x64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM.ActiveCfg = Release|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM64.ActiveCfg = Release|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM.ActiveCfg = Release|ARM
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM.Build.0 = Release|ARM
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM64.ActiveCfg = Release|ARM64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|ARM64.Build.0 = Release|ARM64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.ActiveCfg = Release|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|Win32.Build.0 = Release|Win32
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.ActiveCfg = Release|x64
{FDD3C4F2-9805-44EB-9A77-BC1C1C95B547}.Release|x64.Build.0 = Release|x64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM.ActiveCfg = Debug|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM64.ActiveCfg = Debug|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM.ActiveCfg = Debug|ARM
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM.Build.0 = Debug|ARM
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM64.ActiveCfg = Debug|ARM64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|ARM64.Build.0 = Debug|ARM64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.ActiveCfg = Debug|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|Win32.Build.0 = Debug|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.ActiveCfg = Debug|x64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Debug|x64.Build.0 = Debug|x64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM.ActiveCfg = Release|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM64.ActiveCfg = Release|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM.ActiveCfg = Release|ARM
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM.Build.0 = Release|ARM
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM64.ActiveCfg = Release|ARM64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|ARM64.Build.0 = Release|ARM64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.ActiveCfg = Release|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|Win32.Build.0 = Release|Win32
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.ActiveCfg = Release|x64
{A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F}.Release|x64.Build.0 = Release|x64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM.ActiveCfg = Debug|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM64.ActiveCfg = Debug|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM.ActiveCfg = Debug|ARM
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM.Build.0 = Debug|ARM
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM64.ActiveCfg = Debug|ARM64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|ARM64.Build.0 = Debug|ARM64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.ActiveCfg = Debug|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|Win32.Build.0 = Debug|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.ActiveCfg = Debug|x64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Debug|x64.Build.0 = Debug|x64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM.ActiveCfg = Release|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM64.ActiveCfg = Release|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM.ActiveCfg = Release|ARM
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM.Build.0 = Release|ARM
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM64.ActiveCfg = Release|ARM64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|ARM64.Build.0 = Release|ARM64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.ActiveCfg = Release|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|Win32.Build.0 = Release|Win32
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.ActiveCfg = Release|x64
{8B41752B-5A52-41E4-B7E0-07921C0CC6BF}.Release|x64.Build.0 = Release|x64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.ActiveCfg = Debug|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM64.ActiveCfg = Debug|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.ActiveCfg = Debug|ARM
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM.Build.0 = Debug|ARM
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|ARM64.Build.0 = Debug|ARM64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.ActiveCfg = Debug|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|Win32.Build.0 = Debug|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.ActiveCfg = Debug|x64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Debug|x64.Build.0 = Debug|x64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM.ActiveCfg = Release|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM64.ActiveCfg = Release|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM.ActiveCfg = Release|ARM
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM.Build.0 = Release|ARM
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM64.ActiveCfg = Release|ARM64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|ARM64.Build.0 = Release|ARM64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.ActiveCfg = Release|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|Win32.Build.0 = Release|Win32
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.ActiveCfg = Release|x64
{97521D06-EC47-45D4-8BD0-9E16B3F93B2A}.Release|x64.Build.0 = Release|x64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM.ActiveCfg = Debug|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM64.ActiveCfg = Debug|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM.ActiveCfg = Debug|ARM
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM.Build.0 = Debug|ARM
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM64.ActiveCfg = Debug|ARM64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|ARM64.Build.0 = Debug|ARM64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.ActiveCfg = Debug|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|Win32.Build.0 = Debug|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.ActiveCfg = Debug|x64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Debug|x64.Build.0 = Debug|x64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM.ActiveCfg = Release|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM64.ActiveCfg = Release|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM.ActiveCfg = Release|ARM
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM.Build.0 = Release|ARM
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM64.ActiveCfg = Release|ARM64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|ARM64.Build.0 = Release|ARM64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.ActiveCfg = Release|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|Win32.Build.0 = Release|Win32
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.ActiveCfg = Release|x64
{77C78066-746F-4EA6-B3FE-B8C8A4A97891}.Release|x64.Build.0 = Release|x64
{0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.ActiveCfg = Debug|Win32
{0178B127-6269-407D-B112-93877BB62776}.Debug|ARM64.ActiveCfg = Debug|Win32
{0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.ActiveCfg = Debug|ARM
{0178B127-6269-407D-B112-93877BB62776}.Debug|ARM.Build.0 = Debug|ARM
{0178B127-6269-407D-B112-93877BB62776}.Debug|ARM64.ActiveCfg = Debug|ARM64
{0178B127-6269-407D-B112-93877BB62776}.Debug|ARM64.Build.0 = Debug|ARM64
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.ActiveCfg = Debug|Win32
{0178B127-6269-407D-B112-93877BB62776}.Debug|Win32.Build.0 = Debug|Win32
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.ActiveCfg = Debug|x64
{0178B127-6269-407D-B112-93877BB62776}.Debug|x64.Build.0 = Debug|x64
{0178B127-6269-407D-B112-93877BB62776}.Release|ARM.ActiveCfg = Release|Win32
{0178B127-6269-407D-B112-93877BB62776}.Release|ARM64.ActiveCfg = Release|Win32
{0178B127-6269-407D-B112-93877BB62776}.Release|ARM.ActiveCfg = Release|ARM
{0178B127-6269-407D-B112-93877BB62776}.Release|ARM.Build.0 = Release|ARM
{0178B127-6269-407D-B112-93877BB62776}.Release|ARM64.ActiveCfg = Release|ARM64
{0178B127-6269-407D-B112-93877BB62776}.Release|ARM64.Build.0 = Release|ARM64
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.ActiveCfg = Release|Win32
{0178B127-6269-407D-B112-93877BB62776}.Release|Win32.Build.0 = Release|Win32
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.ActiveCfg = Release|x64
{0178B127-6269-407D-B112-93877BB62776}.Release|x64.Build.0 = Release|x64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM.ActiveCfg = Debug|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM64.ActiveCfg = Debug|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM.ActiveCfg = Debug|ARM
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM.Build.0 = Debug|ARM
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM64.ActiveCfg = Debug|ARM64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|ARM64.Build.0 = Debug|ARM64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.ActiveCfg = Debug|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|Win32.Build.0 = Debug|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.ActiveCfg = Debug|x64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Debug|x64.Build.0 = Debug|x64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM.ActiveCfg = Release|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM64.ActiveCfg = Release|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM.ActiveCfg = Release|ARM
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM.Build.0 = Release|ARM
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM64.ActiveCfg = Release|ARM64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|ARM64.Build.0 = Release|ARM64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.ActiveCfg = Release|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|Win32.Build.0 = Release|Win32
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.ActiveCfg = Release|x64
{73632960-B3A6-464D-83A3-4B43365F19B8}.Release|x64.Build.0 = Release|x64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.ActiveCfg = Debug|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM64.ActiveCfg = Debug|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.ActiveCfg = Debug|ARM
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM.Build.0 = Debug|ARM
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM64.ActiveCfg = Debug|ARM64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|ARM64.Build.0 = Debug|ARM64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.ActiveCfg = Debug|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|Win32.Build.0 = Debug|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.ActiveCfg = Debug|x64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Debug|x64.Build.0 = Debug|x64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM.ActiveCfg = Release|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM64.ActiveCfg = Release|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM.ActiveCfg = Release|ARM
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM.Build.0 = Release|ARM
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM64.ActiveCfg = Release|ARM64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|ARM64.Build.0 = Release|ARM64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.ActiveCfg = Release|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|Win32.Build.0 = Release|Win32
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.ActiveCfg = Release|x64
{F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C}.Release|x64.Build.0 = Release|x64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM.ActiveCfg = Debug|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM64.ActiveCfg = Debug|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM.ActiveCfg = Debug|ARM
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM.Build.0 = Debug|ARM
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM64.ActiveCfg = Debug|ARM64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|ARM64.Build.0 = Debug|ARM64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.ActiveCfg = Debug|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|Win32.Build.0 = Debug|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.ActiveCfg = Debug|x64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Debug|x64.Build.0 = Debug|x64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM.ActiveCfg = Release|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM64.ActiveCfg = Release|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM.ActiveCfg = Release|ARM
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM.Build.0 = Release|ARM
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM64.ActiveCfg = Release|ARM64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|ARM64.Build.0 = Release|ARM64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.ActiveCfg = Release|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|Win32.Build.0 = Release|Win32
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.ActiveCfg = Release|x64
{D9DF7F2F-93B7-4810-B5CD-96F4F33C079B}.Release|x64.Build.0 = Release|x64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM.ActiveCfg = Debug|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM64.ActiveCfg = Debug|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM.ActiveCfg = Debug|ARM
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM.Build.0 = Debug|ARM
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM64.ActiveCfg = Debug|ARM64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|ARM64.Build.0 = Debug|ARM64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.ActiveCfg = Debug|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|Win32.Build.0 = Debug|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.ActiveCfg = Debug|x64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Debug|x64.Build.0 = Debug|x64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM.ActiveCfg = Release|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM64.ActiveCfg = Release|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM.ActiveCfg = Release|ARM
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM.Build.0 = Release|ARM
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM64.ActiveCfg = Release|ARM64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|ARM64.Build.0 = Release|ARM64
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.ActiveCfg = Release|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|Win32.Build.0 = Release|Win32
{4C8454FE-81D3-4CA3-9927-29BA96F03DAC}.Release|x64.ActiveCfg = Release|x64
@@ -426,134 +486,178 @@ Global
{203EC78A-0531-43F0-A636-285439BDE025}.Release|Win32.Build.0 = Release|Win32
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.ActiveCfg = Release|x64
{203EC78A-0531-43F0-A636-285439BDE025}.Release|x64.Build.0 = Release|x64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM.ActiveCfg = Debug|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM64.ActiveCfg = Debug|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM.ActiveCfg = Debug|ARM
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM.Build.0 = Debug|ARM
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM64.ActiveCfg = Debug|ARM64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|ARM64.Build.0 = Debug|ARM64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.ActiveCfg = Debug|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|Win32.Build.0 = Debug|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.ActiveCfg = Debug|x64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Debug|x64.Build.0 = Debug|x64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM.ActiveCfg = Release|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM64.ActiveCfg = Release|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM.ActiveCfg = Release|ARM
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM.Build.0 = Release|ARM
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM64.ActiveCfg = Release|ARM64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|ARM64.Build.0 = Release|ARM64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.ActiveCfg = Release|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|Win32.Build.0 = Release|Win32
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.ActiveCfg = Release|x64
{6B231032-3CB5-4EED-9210-810D666A23A0}.Release|x64.Build.0 = Release|x64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM.ActiveCfg = Debug|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM64.ActiveCfg = Debug|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM.ActiveCfg = Debug|ARM
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM.Build.0 = Debug|ARM
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM64.ActiveCfg = Debug|ARM64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|ARM64.Build.0 = Debug|ARM64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.ActiveCfg = Debug|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|Win32.Build.0 = Debug|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.ActiveCfg = Debug|x64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Debug|x64.Build.0 = Debug|x64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM.ActiveCfg = Release|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM64.ActiveCfg = Release|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM.ActiveCfg = Release|ARM
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM.Build.0 = Release|ARM
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM64.ActiveCfg = Release|ARM64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|ARM64.Build.0 = Release|ARM64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.ActiveCfg = Release|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|Win32.Build.0 = Release|Win32
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.ActiveCfg = Release|x64
{DBA4088D-F6F9-4F8F-8820-082A4765C16C}.Release|x64.Build.0 = Release|x64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM.ActiveCfg = Debug|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM64.ActiveCfg = Debug|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM.ActiveCfg = Debug|ARM
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM.Build.0 = Debug|ARM
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|ARM64.Build.0 = Debug|ARM64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.ActiveCfg = Debug|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|Win32.Build.0 = Debug|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.ActiveCfg = Debug|x64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Debug|x64.Build.0 = Debug|x64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM.ActiveCfg = Release|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM64.ActiveCfg = Release|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM.ActiveCfg = Release|ARM
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM.Build.0 = Release|ARM
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM64.ActiveCfg = Release|ARM64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|ARM64.Build.0 = Release|ARM64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.ActiveCfg = Release|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|Win32.Build.0 = Release|Win32
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.ActiveCfg = Release|x64
{C2B04507-2521-4801-BF0D-5FD79D6D518C}.Release|x64.Build.0 = Release|x64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM.ActiveCfg = Debug|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM64.ActiveCfg = Debug|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM.ActiveCfg = Debug|ARM
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM.Build.0 = Debug|ARM
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM64.ActiveCfg = Debug|ARM64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|ARM64.Build.0 = Debug|ARM64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.ActiveCfg = Debug|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|Win32.Build.0 = Debug|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.ActiveCfg = Debug|x64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Debug|x64.Build.0 = Debug|x64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM.ActiveCfg = Release|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM64.ActiveCfg = Release|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM.ActiveCfg = Release|ARM
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM.Build.0 = Release|ARM
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM64.ActiveCfg = Release|ARM64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|ARM64.Build.0 = Release|ARM64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.ActiveCfg = Release|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|Win32.Build.0 = Release|Win32
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.ActiveCfg = Release|x64
{631C23CE-6C1D-4875-88F0-85E0A42B36EA}.Release|x64.Build.0 = Release|x64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM.ActiveCfg = Debug|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM64.ActiveCfg = Debug|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM.ActiveCfg = Debug|ARM
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM.Build.0 = Debug|ARM
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM64.ActiveCfg = Debug|ARM64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|ARM64.Build.0 = Debug|ARM64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.ActiveCfg = Debug|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|Win32.Build.0 = Debug|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.ActiveCfg = Debug|x64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Debug|x64.Build.0 = Debug|x64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM.ActiveCfg = Release|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM64.ActiveCfg = Release|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM.ActiveCfg = Release|ARM
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM.Build.0 = Release|ARM
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM64.ActiveCfg = Release|ARM64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|ARM64.Build.0 = Release|ARM64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.ActiveCfg = Release|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|Win32.Build.0 = Release|Win32
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.ActiveCfg = Release|x64
{E4993E82-D68A-46CA-BAE0-9D35E172E46F}.Release|x64.Build.0 = Release|x64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.ActiveCfg = Debug|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM64.ActiveCfg = Debug|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.ActiveCfg = Debug|ARM
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM.Build.0 = Debug|ARM
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM64.ActiveCfg = Debug|ARM64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|ARM64.Build.0 = Debug|ARM64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.ActiveCfg = Debug|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|Win32.Build.0 = Debug|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.ActiveCfg = Debug|x64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Debug|x64.Build.0 = Debug|x64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM.ActiveCfg = Release|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM64.ActiveCfg = Release|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM.ActiveCfg = Release|ARM
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM.Build.0 = Release|ARM
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM64.ActiveCfg = Release|ARM64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|ARM64.Build.0 = Release|ARM64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.ActiveCfg = Release|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|Win32.Build.0 = Release|Win32
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.ActiveCfg = Release|x64
{62D4B15D-7A90-4ECB-BA19-5E021D6A21BC}.Release|x64.Build.0 = Release|x64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM.ActiveCfg = Debug|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM64.ActiveCfg = Debug|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM.ActiveCfg = Debug|ARM
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM.Build.0 = Debug|ARM
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM64.ActiveCfg = Debug|ARM64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|ARM64.Build.0 = Debug|ARM64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.ActiveCfg = Debug|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|Win32.Build.0 = Debug|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.ActiveCfg = Debug|x64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Debug|x64.Build.0 = Debug|x64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM.ActiveCfg = Release|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM64.ActiveCfg = Release|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM.ActiveCfg = Release|ARM
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM.Build.0 = Release|ARM
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM64.ActiveCfg = Release|ARM64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|ARM64.Build.0 = Release|ARM64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.ActiveCfg = Release|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|Win32.Build.0 = Release|Win32
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.ActiveCfg = Release|x64
{9D4211F7-2C77-439C-82F0-30A4E43BA569}.Release|x64.Build.0 = Release|x64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.ActiveCfg = Debug|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM64.ActiveCfg = Debug|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.ActiveCfg = Debug|ARM
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM.Build.0 = Debug|ARM
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM64.ActiveCfg = Debug|ARM64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|ARM64.Build.0 = Debug|ARM64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.ActiveCfg = Debug|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|Win32.Build.0 = Debug|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.ActiveCfg = Debug|x64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Debug|x64.Build.0 = Debug|x64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM.ActiveCfg = Release|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM64.ActiveCfg = Release|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM.ActiveCfg = Release|ARM
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM.Build.0 = Release|ARM
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM64.ActiveCfg = Release|ARM64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|ARM64.Build.0 = Release|ARM64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.ActiveCfg = Release|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|Win32.Build.0 = Release|Win32
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.ActiveCfg = Release|x64
{691EE0C0-DC57-4A48-8AEE-8ED75EB3A057}.Release|x64.Build.0 = Release|x64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.ActiveCfg = Debug|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM64.ActiveCfg = Debug|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.ActiveCfg = Debug|ARM
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM.Build.0 = Debug|ARM
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM64.ActiveCfg = Debug|ARM64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|ARM64.Build.0 = Debug|ARM64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.ActiveCfg = Debug|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|Win32.Build.0 = Debug|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.ActiveCfg = Debug|x64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Debug|x64.Build.0 = Debug|x64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.ActiveCfg = Release|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM64.ActiveCfg = Release|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.ActiveCfg = Release|ARM
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM.Build.0 = Release|ARM
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM64.ActiveCfg = Release|ARM64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|ARM64.Build.0 = Release|ARM64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.ActiveCfg = Release|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|Win32.Build.0 = Release|Win32
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.ActiveCfg = Release|x64
{C7891A65-80AB-4245-912E-5F1E17B0E6C4}.Release|x64.Build.0 = Release|x64
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.ActiveCfg = Debug|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM64.ActiveCfg = Debug|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.ActiveCfg = Debug|ARM
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM.Build.0 = Debug|ARM
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM64.ActiveCfg = Debug|ARM64
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|ARM64.Build.0 = Debug|ARM64
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.ActiveCfg = Debug|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|Win32.Build.0 = Debug|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.ActiveCfg = Debug|x64
{E7611F49-F088-4175-9446-6111444E72C8}.Debug|x64.Build.0 = Debug|x64
{E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.ActiveCfg = Release|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM64.ActiveCfg = Release|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.ActiveCfg = Release|ARM
{E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM.Build.0 = Release|ARM
{E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM64.ActiveCfg = Release|ARM64
{E7611F49-F088-4175-9446-6111444E72C8}.Release|ARM64.Build.0 = Release|ARM64
{E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.ActiveCfg = Release|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Release|Win32.Build.0 = Release|Win32
{E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.ActiveCfg = Release|x64
{E7611F49-F088-4175-9446-6111444E72C8}.Release|x64.Build.0 = Release|x64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.ActiveCfg = Debug|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM64.ActiveCfg = Debug|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.ActiveCfg = Debug|ARM
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM.Build.0 = Debug|ARM
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM64.ActiveCfg = Debug|ARM64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|ARM64.Build.0 = Debug|ARM64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.ActiveCfg = Debug|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|Win32.Build.0 = Debug|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.ActiveCfg = Debug|x64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Debug|x64.Build.0 = Debug|x64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.ActiveCfg = Release|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM64.ActiveCfg = Release|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.ActiveCfg = Release|ARM
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM.Build.0 = Release|ARM
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM64.ActiveCfg = Release|ARM64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|ARM64.Build.0 = Release|ARM64
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.ActiveCfg = Release|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|Win32.Build.0 = Release|Win32
{659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A}.Release|x64.ActiveCfg = Release|x64
+7 -3
View File
@@ -11,7 +11,7 @@ set ICU_ARCH=%1
set ICU_DBRL=%2
if "%1" == "" (
echo Usage: %0 "x86 or x64" "Debug or Release"
echo Usage: %0 "x86 or x64 or ARM or ARM64" "Debug or Release"
exit /b 1
)
@@ -25,9 +25,13 @@ set ICU_OPATH=%PATH%
set ICU_ICUDIR="%~dp0"\..\..
if "%ICU_ARCH%" == "x64" (
set ICU_BINDIR=%~dp0\..\..\bin64
set ICU_BINDIR=%~dp0\..\..\bin64
) else if "%ICU_ARCH%" == "ARM64" (
set ICU_BINDIR=%~dp0\..\..\binARM64
) else if "%ICU_ARCH%" == "ARM" (
set ICU_BINDIR=%~dp0\..\..\binARM
) else (
set ICU_BINDIR=%~dp0\..\..\bin
set ICU_BINDIR=%~dp0\..\..\bin
)
set PATH=%ICU_BINDIR%;%PATH%
+26 -84
View File
@@ -35,29 +35,35 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\..\..\lib\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\Release\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\..\..\lib\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\Debug\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\Release\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\Debug\</IntDir>
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</LinkIncremental>
<OutDir>.\$(Platform)\$(Configuration)\</OutDir>
<IntDir>.\$(Platform)\$(Configuration)\</IntDir>
<!-- The ICU projects use "Win32" to mean "x86", so we need to special case it. -->
<OutDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)\</OutDir>
<IntDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)\</IntDir>
<!-- Disable Incremental Linking for Release builds as it prevents Link-time Code Generation -->
<LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
</PropertyGroup>
<!-- Options that are common to *all* "common" project configurations -->
<ItemDefinitionGroup>
<Midl>
<TypeLibraryName>$(OutDir)\icuuc.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PreprocessorDefinitions>U_ATTRIBUTE_DEPRECATED=;U_COMMON_IMPLEMENTATION;U_PLATFORM_USES_ONLY_WIN32_API=1;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<DisableLanguageExtensions>false</DisableLanguageExtensions>
<WarningLevel>Level3</WarningLevel>
<CompileAs>Default</CompileAs>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<PrecompiledHeaderOutputFile>$(OutDir)/icuuc.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
<ObjectFileName>$(OutDir)/</ObjectFileName>
<ProgramDataBaseFileName>$(OutDir)/icuuc.pdb</ProgramDataBaseFileName>
</ClCompile>
<Link>
<!-- The icudt.lib is for U_ICUDATA_ENTRY_POINT -->
<AdditionalDependencies>icudt.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>.\..\..\$(IcuLibOutputDir);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<!-- Options that are common to all 'Debug' project configurations -->
@@ -67,6 +73,11 @@
<BrowseInformation>true</BrowseInformation>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
</ClCompile>
<Link>
<OutputFile>..\..\$(IcuBinOutputDir)\icuuc65d.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuucd.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\$(IcuLibOutputDir)\icuucd.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<!-- Options that are common to all 'Release' project configurations -->
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
@@ -74,79 +85,10 @@
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
<FunctionLevelLinking>true</FunctionLevelLinking>
</ClCompile>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
<TypeLibraryName>.\..\..\lib\icuuc.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\x86\Release/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x86\Release/</AssemblerListingLocation>
<ObjectFileName>.\x86\Release/</ObjectFileName>
<ProgramDataBaseFileName>.\x86\Release/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\bin\icuuc64.dll</OutputFile>
<AdditionalLibraryDirectories>.\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ProgramDatabaseFile>.\..\..\lib\icuuc.pdb</ProgramDatabaseFile>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>..\..\lib\icuuc.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
<TypeLibraryName>.\..\..\lib\icuucd.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\x86\Debug/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x86\Debug/</AssemblerListingLocation>
<ObjectFileName>.\x86\Debug/</ObjectFileName>
<ProgramDataBaseFileName>.\x86\Debug/</ProgramDataBaseFileName>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\..\bin\icuuc64d.dll</OutputFile>
<AdditionalLibraryDirectories>.\..\..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ProgramDatabaseFile>.\..\..\lib\icuucd.pdb</ProgramDatabaseFile>
<DataExecutionPrevention>
</DataExecutionPrevention>
<ImportLibrary>..\..\lib\icuucd.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TypeLibraryName>.\..\..\lib64\icuuc.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\x64\Release/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x64\Release/</AssemblerListingLocation>
<ObjectFileName>.\x64\Release/</ObjectFileName>
<ProgramDataBaseFileName>.\x64\Release/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\bin64\icuuc64.dll</OutputFile>
<AdditionalLibraryDirectories>.\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ProgramDatabaseFile>.\..\..\lib64\icuuc.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\lib64\icuuc.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TypeLibraryName>.\..\..\lib64\icuucd.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\x64\Debug/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x64\Debug/</AssemblerListingLocation>
<ObjectFileName>.\x64\Debug/</ObjectFileName>
<ProgramDataBaseFileName>.\x64\Debug/</ProgramDataBaseFileName>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<Link>
<OutputFile>..\..\bin64\icuuc64d.dll</OutputFile>
<AdditionalLibraryDirectories>.\..\..\lib64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<ProgramDatabaseFile>.\..\..\lib64\icuucd.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\lib64\icuucd.lib</ImportLibrary>
<OutputFile>..\..\$(IcuBinOutputDir)\icuuc65.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuuc.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\$(IcuLibOutputDir)\icuuc.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
+19 -147
View File
@@ -59,30 +59,21 @@
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\ReleaseUWP\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">.\x86\ReleaseUWP\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\DebugUWP\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">.\x86\DebugUWP\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\ReleaseUWP\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\x64\ReleaseUWP\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\DebugUWP\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\x64\DebugUWP\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\arm\ReleaseUWP\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\arm\ReleaseUWP\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\arm\DebugUWP\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\arm\DebugUWP\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">.\arm64\ReleaseUWP\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">.\arm64\ReleaseUWP\</IntDir>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">.\arm64\DebugUWP\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">.\arm64\DebugUWP\</IntDir>
<LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
<OutDir>.\$(Platform)\$(Configuration)UWP\</OutDir>
<IntDir>.\$(Platform)\$(Configuration)UWP\</IntDir>
<!-- The ICU projects use "Win32" to mean "x86", so we need to special case it. -->
<OutDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)UWP\</OutDir>
<IntDir Condition="'$(Platform)'=='Win32'">.\x86\$(Configuration)UWP\</IntDir>
<!-- Disable Incremental Linking for Release builds as it prevents Link-time Code Generation -->
<LinkIncremental Condition="'$(Configuration)'=='Debug'">true</LinkIncremental>
<LinkIncremental Condition="'$(Configuration)'=='Release'">false</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup>
<!-- Options that are common to *all* configurations -->
<Midl>
<MkTypLibCompatible>true</MkTypLibCompatible>
<SuppressStartupBanner>true</SuppressStartupBanner>
<TypeLibraryName>$(OutDir)\icuuc.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<AdditionalIncludeDirectories>..\..\include;..\common;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
@@ -101,6 +92,11 @@
<PrecompiledHeader>NotUsing</PrecompiledHeader>
<CompileAsWinRT>false</CompileAsWinRT>
<AdditionalOptions>/utf-8 %(AdditionalOptions)</AdditionalOptions>
<PrecompiledHeaderOutputFile>$(OutDir)/icuuc.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>$(OutDir)/</AssemblerListingLocation>
<ObjectFileName>$(OutDir)/</ObjectFileName>
<ProgramDataBaseFileName>$(OutDir)/icuuc.pdb</ProgramDataBaseFileName>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<Culture>0x0409</Culture>
@@ -133,6 +129,9 @@
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<AdditionalDependencies>vccorlib.lib;msvcrt.lib;vcruntime.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\..\$(IcuBinOutputDir)\icuuc65.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuuc.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\$(IcuLibOutputDir)\icuuc.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
@@ -146,7 +145,6 @@
<Optimization>Disabled</Optimization>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<BufferSecurityCheck>true</BufferSecurityCheck>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
</ClCompile>
<ResourceCompile>
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
@@ -154,6 +152,9 @@
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalDependencies>vccorlibd.lib;msvcrtd.lib;vcruntimed.lib;%(AdditionalDependencies)</AdditionalDependencies>
<OutputFile>..\..\$(IcuBinOutputDir)\icuuc65d.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\$(IcuLibOutputDir)\icuucd.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\$(IcuLibOutputDir)\icuucd.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Platform)'=='Win32'">
@@ -211,135 +212,6 @@
<AdditionalLibraryDirectories>.\..\..\libARM64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
<!-- Options that are specific to a particular configuration -->
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Midl>
<TypeLibraryName>.\..\..\lib32uwp\icuuc.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\x86\ReleaseUWP/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x86\ReleaseUWP/</AssemblerListingLocation>
<ObjectFileName>.\x86\ReleaseUWP/</ObjectFileName>
<ProgramDataBaseFileName>.\x86\ReleaseUWP/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\bin32uwp\icuuc64.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\lib32uwp\icuuc.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\lib32uwp\icuuc.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl>
<TypeLibraryName>.\..\..\lib32uwp\icuucd.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\x86\DebugUWP/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x86\DebugUWP/</AssemblerListingLocation>
<ObjectFileName>.\x86\DebugUWP/</ObjectFileName>
<ProgramDataBaseFileName>.\x86\DebugUWP/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\bin32uwp\icuuc64d.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\lib32uwp\icuucd.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\lib32uwp\icuucd.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl>
<TypeLibraryName>.\..\..\lib64uwp\icuuc.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\x64\ReleaseUWP/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x64\ReleaseUWP/</AssemblerListingLocation>
<ObjectFileName>.\x64\ReleaseUWP/</ObjectFileName>
<ProgramDataBaseFileName>.\x64\ReleaseUWP/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\bin64uwp\icuuc64.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\lib64uwp\icuuc.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\lib64uwp\icuuc.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl>
<TypeLibraryName>.\..\..\lib64uwp\icuucd.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\x64\DebugUWP/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\x64\DebugUWP/</AssemblerListingLocation>
<ObjectFileName>.\x64\DebugUWP/</ObjectFileName>
<ProgramDataBaseFileName>.\x64\DebugUWP/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\bin64uwp\icuuc64d.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\lib64uwp\icuucd.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\lib64uwp\icuucd.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<Midl>
<TypeLibraryName>.\..\..\libARMuwp\icuuc.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\ARM\ReleaseUWP/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\ARM\ReleaseUWP/</AssemblerListingLocation>
<ObjectFileName>.\ARM\ReleaseUWP/</ObjectFileName>
<ProgramDataBaseFileName>.\ARM\ReleaseUWP/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\binARMuwp\icuuc64.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\libARMuwp\icuuc.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\libARMuwp\icuuc.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
<Midl>
<TypeLibraryName>.\..\..\libARMuwp\icuucd.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\ARM\DebugUWP/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\ARM\DebugUWP/</AssemblerListingLocation>
<ObjectFileName>.\ARM\DebugUWP/</ObjectFileName>
<ProgramDataBaseFileName>.\ARM\DebugUWP/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\binARMuwp\icuuc64d.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\libARMuwp\icuucd.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\libARMuwp\icuucd.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
<Midl>
<TypeLibraryName>.\..\..\libARM64uwp\icuuc.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\ARM64\ReleaseUWP/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\ARM64\ReleaseUWP/</AssemblerListingLocation>
<ObjectFileName>.\ARM64\ReleaseUWP/</ObjectFileName>
<ProgramDataBaseFileName>.\ARM64\ReleaseUWP/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\binARM64uwp\icuuc62.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\libARM64uwp\icuuc.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\libARM64uwp\icuuc.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM64'">
<Midl>
<TypeLibraryName>.\..\..\libARM64uwp\icuucd.tlb</TypeLibraryName>
</Midl>
<ClCompile>
<PrecompiledHeaderOutputFile>.\ARM64\DebugUWP/common.pch</PrecompiledHeaderOutputFile>
<AssemblerListingLocation>.\ARM64\DebugUWP/</AssemblerListingLocation>
<ObjectFileName>.\ARM64\DebugUWP/</ObjectFileName>
<ProgramDataBaseFileName>.\ARM64\DebugUWP/</ProgramDataBaseFileName>
</ClCompile>
<Link>
<OutputFile>..\..\binARM64uwp\icuuc62d.dll</OutputFile>
<ProgramDatabaseFile>.\..\..\libARM64uwp\icuucd.pdb</ProgramDatabaseFile>
<ImportLibrary>..\..\libARM64uwp\icuucd.lib</ImportLibrary>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="edits.cpp" />
<ClCompile Include="filteredbrk.cpp" />
+1 -1
View File
@@ -243,7 +243,7 @@ UBool Edits::growArray() {
return TRUE;
}
UBool Edits::copyErrorTo(UErrorCode &outErrorCode) {
UBool Edits::copyErrorTo(UErrorCode &outErrorCode) const {
if (U_FAILURE(outErrorCode)) { return TRUE; }
if (U_SUCCESS(errorCode_)) { return FALSE; }
outErrorCode = errorCode_;
+1 -1
View File
@@ -173,7 +173,7 @@ public:
status = U_SAFECLONE_ALLOCATED_WARNING;
return clone();
}
virtual BreakIterator* clone(void) const { return new SimpleFilteredSentenceBreakIterator(*this); }
virtual SimpleFilteredSentenceBreakIterator* clone() const { return new SimpleFilteredSentenceBreakIterator(*this); }
virtual UClassID getDynamicClassID(void) const { return NULL; }
virtual UBool operator==(const BreakIterator& o) const { if(this==&o) return true; return false; }
+1 -2
View File
@@ -853,9 +853,8 @@ LocaleDisplayNamesImpl::keyValueDisplayName(const char* key,
UErrorCode sts = U_ZERO_ERROR;
UnicodeString ustrValue(value, -1, US_INV);
int32_t len;
UBool isChoice = FALSE;
const UChar *currencyName = ucurr_getName(ustrValue.getTerminatedBuffer(),
locale.getBaseName(), UCURR_LONG_NAME, &isChoice, &len, &sts);
locale.getBaseName(), UCURR_LONG_NAME, nullptr /* isChoiceFormat */, &len, &sts);
if (U_FAILURE(sts)) {
// Return the value as is on failure
result = ustrValue;
+4 -6
View File
@@ -323,8 +323,8 @@ void RuleBasedBreakIterator::init(UErrorCode &status) {
// Virtual function: does the right thing with subclasses.
//
//-----------------------------------------------------------------------------
BreakIterator*
RuleBasedBreakIterator::clone(void) const {
RuleBasedBreakIterator*
RuleBasedBreakIterator::clone() const {
return new RuleBasedBreakIterator(*this);
}
@@ -1079,10 +1079,8 @@ const uint8_t *RuleBasedBreakIterator::getBinaryRules(uint32_t &length) {
}
BreakIterator * RuleBasedBreakIterator::createBufferClone(void * /*stackBuffer*/,
int32_t &bufferSize,
UErrorCode &status)
{
RuleBasedBreakIterator *RuleBasedBreakIterator::createBufferClone(
void * /*stackBuffer*/, int32_t &bufferSize, UErrorCode &status) {
if (U_FAILURE(status)){
return NULL;
}
+1 -1
View File
@@ -101,7 +101,7 @@ StringCharacterIterator::operator==(const ForwardCharacterIterator& that) const
&& end == realThat.end;
}
CharacterIterator*
StringCharacterIterator*
StringCharacterIterator::clone() const {
return new StringCharacterIterator(*this);
}
+1 -1
View File
@@ -89,7 +89,7 @@ UCharCharacterIterator::hashCode() const {
return ustr_hashUCharsN(text, textLength) ^ pos ^ begin ^ end;
}
CharacterIterator*
UCharCharacterIterator*
UCharCharacterIterator::clone() const {
return new UCharCharacterIterator(*this);
}
+19 -19
View File
@@ -691,36 +691,36 @@ static int16_t countOnes(uint32_t* mask, int32_t len) {
/* internal function! */
static UEnumeration *selectForMask(const UConverterSelector* sel,
uint32_t *mask, UErrorCode *status) {
uint32_t *theMask, UErrorCode *status) {
LocalMemory<uint32_t> mask(theMask);
// this is the context we will use. Store a table of indices to which
// encodings are legit.
struct Enumerator* result = (Enumerator*)uprv_malloc(sizeof(Enumerator));
if (result == NULL) {
uprv_free(mask);
LocalMemory<Enumerator> result(static_cast<Enumerator *>(uprv_malloc(sizeof(Enumerator))));
if (result.isNull()) {
*status = U_MEMORY_ALLOCATION_ERROR;
return NULL;
return nullptr;
}
result->index = NULL; // this will be allocated later!
result->index = nullptr; // this will be allocated later!
result->length = result->cur = 0;
result->sel = sel;
UEnumeration *en = (UEnumeration *)uprv_malloc(sizeof(UEnumeration));
if (en == NULL) {
LocalMemory<UEnumeration> en(static_cast<UEnumeration *>(uprv_malloc(sizeof(UEnumeration))));
if (en.isNull()) {
// TODO(markus): Combine Enumerator and UEnumeration into one struct.
uprv_free(mask);
uprv_free(result);
*status = U_MEMORY_ALLOCATION_ERROR;
return NULL;
return nullptr;
}
memcpy(en, &defaultEncodings, sizeof(UEnumeration));
en->context = result;
memcpy(en.getAlias(), &defaultEncodings, sizeof(UEnumeration));
int32_t columns = (sel->encodingsCount+31)/32;
int16_t numOnes = countOnes(mask, columns);
int16_t numOnes = countOnes(mask.getAlias(), columns);
// now, we know the exact space we need for index
if (numOnes > 0) {
result->index = (int16_t*) uprv_malloc(numOnes * sizeof(int16_t));
result->index = static_cast<int16_t*>(uprv_malloc(numOnes * sizeof(int16_t)));
if (result->index == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
return nullptr;
}
int32_t i, j;
int16_t k = 0;
for (j = 0 ; j < columns; j++) {
@@ -734,8 +734,8 @@ static UEnumeration *selectForMask(const UConverterSelector* sel,
}
} //otherwise, index will remain NULL (and will never be touched by
//the enumerator code anyway)
uprv_free(mask);
return en;
en->context = result.orphan();
return en.orphan();
}
/* check a string against the selector - UTF16 version */
+4 -3
View File
@@ -713,7 +713,9 @@ ucurr_getName(const UChar* currency,
// We no longer support choice format data in names. Data should not contain
// choice patterns.
*isChoiceFormat = FALSE;
if (isChoiceFormat != NULL) {
*isChoiceFormat = FALSE;
}
if (U_SUCCESS(ec2)) {
U_ASSERT(s != NULL);
return s;
@@ -1595,10 +1597,9 @@ uprv_getStaticCurrencyName(const UChar* iso, const char* loc,
{
U_NAMESPACE_USE
UBool isChoiceFormat;
int32_t len;
const UChar* currname = ucurr_getName(iso, loc, UCURR_SYMBOL_NAME,
&isChoiceFormat, &len, &ec);
nullptr /* isChoiceFormat */, &len, &ec);
if (U_SUCCESS(ec)) {
result.setTo(currname, len);
}
+2 -1
View File
@@ -207,7 +207,8 @@ u_UCharsToChars(const UChar *us, char *cs, int32_t length) {
while(length>0) {
u=*us++;
if(!UCHAR_IS_INVARIANT(u)) {
UPRV_UNREACHABLE; /* Variant characters were used. These are not portable in ICU. */
U_ASSERT(FALSE); /* Variant characters were used. These are not portable in ICU. */
u=0;
}
*cs++=(char)UCHAR_TO_CHAR(u);
--length;
+14 -16
View File
@@ -1457,31 +1457,29 @@ static const UEnumeration gKeywordsEnum = {
U_CAPI UEnumeration* U_EXPORT2
uloc_openKeywordList(const char *keywordList, int32_t keywordListSize, UErrorCode* status)
{
UKeywordsContext *myContext = NULL;
UEnumeration *result = NULL;
LocalMemory<UKeywordsContext> myContext;
LocalMemory<UEnumeration> result;
if(U_FAILURE(*status)) {
return NULL;
if (U_FAILURE(*status)) {
return nullptr;
}
result = (UEnumeration *)uprv_malloc(sizeof(UEnumeration));
/* Null pointer test */
if (result == NULL) {
myContext.adoptInstead(static_cast<UKeywordsContext *>(uprv_malloc(sizeof(UKeywordsContext))));
result.adoptInstead(static_cast<UEnumeration *>(uprv_malloc(sizeof(UEnumeration))));
if (myContext.isNull() || result.isNull()) {
*status = U_MEMORY_ALLOCATION_ERROR;
return NULL;
return nullptr;
}
uprv_memcpy(result, &gKeywordsEnum, sizeof(UEnumeration));
myContext = static_cast<UKeywordsContext *>(uprv_malloc(sizeof(UKeywordsContext)));
if (myContext == NULL) {
uprv_memcpy(result.getAlias(), &gKeywordsEnum, sizeof(UEnumeration));
myContext->keywords = static_cast<char *>(uprv_malloc(keywordListSize+1));
if (myContext->keywords == nullptr) {
*status = U_MEMORY_ALLOCATION_ERROR;
uprv_free(result);
return NULL;
return nullptr;
}
myContext->keywords = (char *)uprv_malloc(keywordListSize+1);
uprv_memcpy(myContext->keywords, keywordList, keywordListSize);
myContext->keywords[keywordListSize] = 0;
myContext->current = myContext->keywords;
result->context = myContext;
return result;
result->context = myContext.orphan();
return result.orphan();
}
U_CAPI UEnumeration* U_EXPORT2
+3 -10
View File
@@ -36,15 +36,6 @@ U_NAMESPACE_BEGIN
#error U_USER_MUTEX_CPP not supported
#endif
// Check that UMutex is trivially constructable & destructable, which ensures that
// static instances are not running static constructors or destructors.
#if (defined(__GNUG__) && __GNUC__ < 5) || (defined(__clang__) && __clang_major__ < 5)
// skip
#else
static_assert(std::is_trivially_constructible<UMutex>::value, "UMutex not trivially constructable.");
static_assert(std::is_trivially_destructible<UMutex>::value, "UMutex not trivially destructable.");
#endif
/*************************************************************************************************
*
@@ -56,7 +47,8 @@ namespace {
std::mutex *initMutex;
std::condition_variable *initCondition;
// The ICU global mutex. Used when ICU implementation code passes NULL for the mutex pointer.
// The ICU global mutex.
// Used when ICU implementation code passes nullptr for the mutex pointer.
UMutex globalMutex;
std::once_flag initFlag;
@@ -98,6 +90,7 @@ std::mutex *UMutex::getMutex() {
gListHead = this;
}
}
U_ASSERT(retPtr != nullptr);
return retPtr;
}
+16 -5
View File
@@ -184,6 +184,16 @@ template<class T> void umtx_initOnce(UInitOnce &uio, void (U_CALLCONV *fp)(T, UE
}
}
// UMutex should be constexpr-constructible, so that no initialization code
// is run during startup.
// This works on all C++ libraries except MS VS before VS2019.
#if (defined(_CPPLIB_VER) && !defined(_MSVC_STL_VERSION)) || \
(defined(_MSVC_STL_VERSION) && _MSVC_STL_VERSION < 142)
// (VS std lib older than VS2017) || (VS std lib version < VS2019)
# define UMUTEX_CONSTEXPR
#else
# define UMUTEX_CONSTEXPR constexpr
#endif
/**
* UMutex - ICU Mutex class.
@@ -212,7 +222,7 @@ template<class T> void umtx_initOnce(UInitOnce &uio, void (U_CALLCONV *fp)(T, UE
class U_COMMON_API UMutex {
public:
UMutex() = default;
UMUTEX_CONSTEXPR UMutex() {}
~UMutex() = default;
UMutex(const UMutex &other) = delete;
@@ -230,17 +240,18 @@ public:
static void cleanup();
private:
alignas(std::mutex) char fStorage[sizeof(std::mutex)];
std::atomic<std::mutex *> fMutex;
alignas(std::mutex) char fStorage[sizeof(std::mutex)] {};
std::atomic<std::mutex *> fMutex { nullptr };
/** All initialized UMutexes are kept in a linked list, so that they can be found,
* and the underlying std::mutex destructed, by u_cleanup().
*/
UMutex *fListLink;
UMutex *fListLink { nullptr };
static UMutex *gListHead;
/** Out-of-line function to lazily initialize a UMutex on first use.
* Initial fast check is inline, in lock().
* Initial fast check is inline, in lock(). The returned value may never
* be nullptr.
*/
std::mutex *getMutex();
};
+3 -1
View File
@@ -139,7 +139,7 @@ public:
* method which subclasses implement.
* @stable ICU 2.0
*/
virtual BreakIterator* clone(void) const = 0;
virtual BreakIterator* clone() const = 0;
/**
* Return a polymorphic class ID for this object. Different subclasses
@@ -497,6 +497,7 @@ public:
static UnicodeString& U_EXPORT2 getDisplayName(const Locale& objectLocale,
UnicodeString& name);
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
* Deprecated functionality. Use clone() instead.
*
@@ -519,6 +520,7 @@ public:
virtual BreakIterator * createBufferClone(void *stackBuffer,
int32_t &BufferSize,
UErrorCode &status) = 0;
#endif // U_FORCE_HIDE_DEPRECATED_API
#ifndef U_HIDE_DEPRECATED_API
+2
View File
@@ -97,6 +97,7 @@ public:
return *this;
}
#ifndef U_HIDE_DRAFT_API
/**
* Returns the state of this trie as a 64-bit integer.
* The state value is never 0.
@@ -129,6 +130,7 @@ public:
pos_ = bytes_ + (state & kState64PosMask);
return *this;
}
#endif /* U_HIDE_DRAFT_API */
/**
* BytesTrie state object, for saving a trie's current state
+1 -1
View File
@@ -380,7 +380,7 @@ public:
* @return a pointer to a new CharacterIterator
* @stable ICU 2.0
*/
virtual CharacterIterator* clone(void) const = 0;
virtual CharacterIterator* clone() const = 0;
/**
* Sets the iterator to refer to the first code unit in its
+2 -2
View File
@@ -99,7 +99,7 @@
* </tr>
* <tr>
* <td>Codepage Conversion</td>
* <td>ucnv.h, ucnvsel.hb</td>
* <td>ucnv.h, ucnvsel.h</td>
* <td>C API</td>
* </tr>
* <tr>
@@ -115,7 +115,7 @@
* <tr>
* <td>Locales </td>
* <td>uloc.h</a></td>
* <td>icu::Locale, icu::LocaleBuilder</td>
* <td>icu::Locale, icu::LocaleBuilder, icu::LocaleMatcher</td>
* </tr>
* <tr>
* <td>Resource Bundles</td>
+1 -1
View File
@@ -162,7 +162,7 @@ public:
* @return TRUE if U_FAILURE(outErrorCode)
* @stable ICU 59
*/
UBool copyErrorTo(UErrorCode &outErrorCode);
UBool copyErrorTo(UErrorCode &outErrorCode) const;
/**
* How much longer is the new text compared with the old text?
@@ -104,6 +104,7 @@ class U_COMMON_API FilteredBreakIteratorBuilder : public UObject {
*/
virtual UBool unsuppressBreakAfter(const UnicodeString& string, UErrorCode& status) = 0;
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
* This function has been deprecated in favor of wrapIteratorWithFilter()
* The behavior is identical.
@@ -114,6 +115,7 @@ class U_COMMON_API FilteredBreakIteratorBuilder : public UObject {
* @see wrapBreakIteratorWithFilter()
*/
virtual BreakIterator *build(BreakIterator* adoptBreakIterator, UErrorCode& status) = 0;
#endif // U_FORCE_HIDE_DEPRECATED_API
/**
* Wrap (adopt) an existing break iterator in a new filtered instance.
@@ -279,6 +279,7 @@ public:
*/
Locale build(UErrorCode& status);
#ifndef U_HIDE_DRAFT_API
/**
* Sets the UErrorCode if an error occurred while recording sets.
* Preserves older error codes in the outErrorCode.
@@ -289,6 +290,7 @@ public:
* @draft ICU 65
*/
UBool copyErrorTo(UErrorCode &outErrorCode) const;
#endif /* U_HIDE_DRAFT_API */
private:
friend class LocaleMatcher::Result;
+16 -38
View File
@@ -287,16 +287,14 @@ public:
*/
Locale(const Locale& other);
#ifndef U_HIDE_DRAFT_API
/**
* Move constructor; might leave source in bogus state.
* This locale will have the same contents that the source locale had.
*
* @param other The Locale object being moved in.
* @draft ICU 63
* @stable ICU 63
*/
Locale(Locale&& other) U_NOEXCEPT;
#endif // U_HIDE_DRAFT_API
/**
* Destructor
@@ -313,7 +311,6 @@ public:
*/
Locale& operator=(const Locale& other);
#ifndef U_HIDE_DRAFT_API
/**
* Move assignment operator; might leave source in bogus state.
* This locale will have the same contents that the source locale had.
@@ -321,10 +318,9 @@ public:
*
* @param other The Locale object being moved in.
* @return *this
* @draft ICU 63
* @stable ICU 63
*/
Locale& operator=(Locale&& other) U_NOEXCEPT;
#endif // U_HIDE_DRAFT_API
/**
* Checks if two locale keys are the same.
@@ -392,7 +388,6 @@ public:
UErrorCode& success);
#endif /* U_HIDE_SYSTEM_API */
#ifndef U_HIDE_DRAFT_API
/**
* Returns a Locale for the specified BCP47 language tag string.
* If the specified language tag contains any ill-formed subtags,
@@ -408,7 +403,7 @@ public:
* @param tag the input BCP47 language tag.
* @param status error information if creating the Locale failed.
* @return the Locale for the specified BCP47 language tag.
* @draft ICU 63
* @stable ICU 63
*/
static Locale U_EXPORT2 forLanguageTag(StringPiece tag, UErrorCode& status);
@@ -423,7 +418,7 @@ public:
* @param sink the output sink receiving the BCP47 language
* tag for this Locale.
* @param status error information if creating the language tag failed.
* @draft ICU 63
* @stable ICU 63
*/
void toLanguageTag(ByteSink& sink, UErrorCode& status) const;
@@ -435,11 +430,10 @@ public:
*
* @param status error information if creating the language tag failed.
* @return the BCP47 language tag for this Locale.
* @draft ICU 63
* @stable ICU 63
*/
template<typename StringClass>
inline StringClass toLanguageTag(UErrorCode& status) const;
#endif // U_HIDE_DRAFT_API
/**
* Creates a locale which has had minimal canonicalization
@@ -511,7 +505,6 @@ public:
*/
const char * getBaseName() const;
#ifndef U_HIDE_DRAFT_API
/**
* Add the likely subtags for this Locale, per the algorithm described
* in the following CLDR technical report:
@@ -539,7 +532,7 @@ public:
* @param status error information if maximizing this Locale failed.
* If this Locale is not well-formed, the error code is
* U_ILLEGAL_ARGUMENT_ERROR.
* @draft ICU 63
* @stable ICU 63
*/
void addLikelySubtags(UErrorCode& status);
@@ -570,10 +563,9 @@ public:
* @param status error information if maximizing this Locale failed.
* If this Locale is not well-formed, the error code is
* U_ILLEGAL_ARGUMENT_ERROR.
* @draft ICU 63
* @stable ICU 63
*/
void minimizeSubtags(UErrorCode& status);
#endif // U_HIDE_DRAFT_API
/**
* Gets the list of keywords for the specified locale.
@@ -586,8 +578,6 @@ public:
*/
StringEnumeration * createKeywords(UErrorCode &status) const;
#ifndef U_HIDE_DRAFT_API
/**
* Gets the list of Unicode keywords for the specified locale.
*
@@ -595,7 +585,7 @@ public:
* @return pointer to StringEnumeration class, or NULL if there are no keywords.
* Client must dispose of it by calling delete.
* @see getUnicodeKeywords
* @draft ICU 63
* @stable ICU 63
*/
StringEnumeration * createUnicodeKeywords(UErrorCode &status) const;
@@ -608,7 +598,7 @@ public:
*
* @param iterator an STL style output iterator to write the keywords to.
* @param status error information if creating set of keywords failed.
* @draft ICU 63
* @stable ICU 63
*/
template<typename StringClass, typename OutputIterator>
inline void getKeywords(OutputIterator iterator, UErrorCode& status) const;
@@ -622,13 +612,11 @@ public:
*
* @param iterator an STL style output iterator to write the keywords to.
* @param status error information if creating set of keywords failed.
* @draft ICU 63
* @stable ICU 63
*/
template<typename StringClass, typename OutputIterator>
inline void getUnicodeKeywords(OutputIterator iterator, UErrorCode& status) const;
#endif // U_HIDE_DRAFT_API
/**
* Gets the value for a keyword.
*
@@ -647,7 +635,6 @@ public:
*/
int32_t getKeywordValue(const char* keywordName, char *buffer, int32_t bufferCapacity, UErrorCode &status) const;
#ifndef U_HIDE_DRAFT_API
/**
* Gets the value for a keyword.
*
@@ -659,7 +646,7 @@ public:
* @param keywordName name of the keyword for which we want the value.
* @param sink the sink to receive the keyword value.
* @param status error information if getting the value failed.
* @draft ICU 63
* @stable ICU 63
*/
void getKeywordValue(StringPiece keywordName, ByteSink& sink, UErrorCode& status) const;
@@ -674,7 +661,7 @@ public:
* @param keywordName name of the keyword for which we want the value.
* @param status error information if getting the value failed.
* @return the keyword value.
* @draft ICU 63
* @stable ICU 63
*/
template<typename StringClass>
inline StringClass getKeywordValue(StringPiece keywordName, UErrorCode& status) const;
@@ -690,7 +677,7 @@ public:
* @param keywordName name of the keyword for which we want the value.
* @param sink the sink to receive the keyword value.
* @param status error information if getting the value failed.
* @draft ICU 63
* @stable ICU 63
*/
void getUnicodeKeywordValue(StringPiece keywordName, ByteSink& sink, UErrorCode& status) const;
@@ -705,11 +692,10 @@ public:
* @param keywordName name of the keyword for which we want the value.
* @param status error information if getting the value failed.
* @return the keyword value.
* @draft ICU 63
* @stable ICU 63
*/
template<typename StringClass>
inline StringClass getUnicodeKeywordValue(StringPiece keywordName, UErrorCode& status) const;
#endif // U_HIDE_DRAFT_API
/**
* Sets or removes the value for a keyword.
@@ -732,7 +718,6 @@ public:
*/
void setKeywordValue(const char* keywordName, const char* keywordValue, UErrorCode &status);
#ifndef U_HIDE_DRAFT_API
/**
* Sets or removes the value for a keyword.
*
@@ -749,7 +734,7 @@ public:
* NULL, will result in the keyword being removed. No error is given if
* that keyword does not exist.
* @param status Returns any error information while performing this operation.
* @draft ICU 63
* @stable ICU 63
*/
void setKeywordValue(StringPiece keywordName, StringPiece keywordValue, UErrorCode& status);
@@ -769,10 +754,9 @@ public:
* NULL, will result in the keyword being removed. No error is given if
* that keyword does not exist.
* @param status Returns any error information while performing this operation.
* @draft ICU 63
* @stable ICU 63
*/
void setUnicodeKeywordValue(StringPiece keywordName, StringPiece keywordValue, UErrorCode& status);
#endif // U_HIDE_DRAFT_API
/**
* returns the locale's three-letter language code, as specified
@@ -1175,7 +1159,6 @@ Locale::operator!=(const Locale& other) const
return !operator==(other);
}
#ifndef U_HIDE_DRAFT_API
template<typename StringClass> inline StringClass
Locale::toLanguageTag(UErrorCode& status) const
{
@@ -1184,7 +1167,6 @@ Locale::toLanguageTag(UErrorCode& status) const
toLanguageTag(sink, status);
return result;
}
#endif // U_HIDE_DRAFT_API
inline const char *
Locale::getCountry() const
@@ -1216,8 +1198,6 @@ Locale::getName() const
return fullName;
}
#ifndef U_HIDE_DRAFT_API
template<typename StringClass, typename OutputIterator> inline void
Locale::getKeywords(OutputIterator iterator, UErrorCode& status) const
{
@@ -1270,8 +1250,6 @@ Locale::getUnicodeKeywordValue(StringPiece keywordName, UErrorCode& status) cons
return result;
}
#endif // U_HIDE_DRAFT_API
inline UBool
Locale::isBogus(void) const {
return fIsBogus;
+5 -2
View File
@@ -185,6 +185,7 @@ public:
Normalizer(const CharacterIterator& iter, UNormalizationMode mode);
#endif /* U_HIDE_DEPRECATED_API */
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
* Copy constructor.
* @param copy The object to be copied.
@@ -197,7 +198,7 @@ public:
* @deprecated ICU 56 Use Normalizer2 instead.
*/
virtual ~Normalizer();
#endif // U_FORCE_HIDE_DEPRECATED_API
//-------------------------------------------------------------------------
// Static utility methods
@@ -601,7 +602,7 @@ public:
* @return a pointer to a new Normalizer
* @deprecated ICU 56 Use Normalizer2 instead.
*/
Normalizer* clone(void) const;
Normalizer* clone() const;
/**
* Generates a hash code for this iterator.
@@ -725,12 +726,14 @@ public:
static UClassID U_EXPORT2 getStaticClassID();
#endif /* U_HIDE_DEPRECATED_API */
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
* ICU "poor man's RTTI", returns a UClassID for the actual class.
* @return a UClassID for the actual class.
* @deprecated ICU 56 Use Normalizer2 instead.
*/
virtual UClassID getDynamicClassID() const;
#endif // U_FORCE_HIDE_DEPRECATED_API
private:
//-------------------------------------------------------------------------
+39 -20
View File
@@ -424,26 +424,40 @@
#endif
/* Compatibility with compilers other than clang: http://clang.llvm.org/docs/LanguageExtensions.html */
#ifndef __has_attribute
# define __has_attribute(x) 0
#ifdef __has_attribute
# define UPRV_HAS_ATTRIBUTE(x) __has_attribute(x)
#else
# define UPRV_HAS_ATTRIBUTE(x) 0
#endif
#ifndef __has_cpp_attribute
# define __has_cpp_attribute(x) 0
#ifdef __has_cpp_attribute
# define UPRV_HAS_CPP_ATTRIBUTE(x) __has_cpp_attribute(x)
#else
# define UPRV_HAS_CPP_ATTRIBUTE(x) 0
#endif
#ifndef __has_declspec_attribute
# define __has_declspec_attribute(x) 0
#ifdef __has_declspec_attribute
# define UPRV_HAS_DECLSPEC_ATTRIBUTE(x) __has_declspec_attribute(x)
#else
# define UPRV_HAS_DECLSPEC_ATTRIBUTE(x) 0
#endif
#ifndef __has_builtin
# define __has_builtin(x) 0
#ifdef __has_builtin
# define UPRV_HAS_BUILTIN(x) __has_builtin(x)
#else
# define UPRV_HAS_BUILTIN(x) 0
#endif
#ifndef __has_feature
# define __has_feature(x) 0
#ifdef __has_feature
# define UPRV_HAS_FEATURE(x) __has_feature(x)
#else
# define UPRV_HAS_FEATURE(x) 0
#endif
#ifndef __has_extension
# define __has_extension(x) 0
#ifdef __has_extension
# define UPRV_HAS_EXTENSION(x) __has_extension(x)
#else
# define UPRV_HAS_EXTENSION(x) 0
#endif
#ifndef __has_warning
# define __has_warning(x) 0
#ifdef __has_warning
# define UPRV_HAS_WARNING(x) __has_warning(x)
#else
# define UPRV_HAS_WARNING(x) 0
#endif
/**
@@ -462,7 +476,9 @@
* 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)
#if (defined(__GNUC__) && \
(__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))) || \
UPRV_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
@@ -526,8 +542,9 @@ namespace std {
#elif defined(__clang__)
// Test for compiler vs. feature separately.
// Other compilers might choke on the feature test.
# if __has_cpp_attribute(clang::fallthrough) || \
(__has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough"))
# if UPRV_HAS_CPP_ATTRIBUTE(clang::fallthrough) || \
(UPRV_HAS_FEATURE(cxx_attributes) && \
UPRV_HAS_WARNING("-Wimplicit-fallthrough"))
# define U_FALLTHROUGH [[clang::fallthrough]]
# endif
#elif defined(__GNUC__) && (__GNUC__ >= 7)
@@ -797,7 +814,8 @@ namespace std {
/* Use the predefined value. */
#elif defined(U_STATIC_IMPLEMENTATION)
# define U_EXPORT
#elif defined(_MSC_VER) || (__has_declspec_attribute(dllexport) && __has_declspec_attribute(dllimport))
#elif defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(dllexport) && \
UPRV_HAS_DECLSPEC_ATTRIBUTE(dllimport))
# define U_EXPORT __declspec(dllexport)
#elif defined(__GNUC__)
# define U_EXPORT __attribute__((visibility("default")))
@@ -821,7 +839,8 @@ namespace std {
#ifdef U_IMPORT
/* Use the predefined value. */
#elif defined(_MSC_VER) || (__has_declspec_attribute(dllexport) && __has_declspec_attribute(dllimport))
#elif defined(_MSC_VER) || (UPRV_HAS_DECLSPEC_ATTRIBUTE(dllexport) && \
UPRV_HAS_DECLSPEC_ATTRIBUTE(dllimport))
/* Windows needs to export/import data. */
# define U_IMPORT __declspec(dllimport)
#else
@@ -863,4 +882,4 @@ namespace std {
#endif
/* @} */
#endif
#endif // _PLATFORM_H
+6 -5
View File
@@ -274,7 +274,7 @@ public:
* @return a newly-constructed RuleBasedBreakIterator
* @stable ICU 2.0
*/
virtual BreakIterator* clone() const;
virtual RuleBasedBreakIterator* clone() const;
/**
* Compute a hash code for this BreakIterator
@@ -538,6 +538,7 @@ public:
*/
static UClassID U_EXPORT2 getStaticClassID(void);
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
* Deprecated functionality. Use clone() instead.
*
@@ -564,10 +565,10 @@ public:
* or if the stackBuffer was too small to hold the clone.
* @deprecated ICU 52. Use clone() instead.
*/
virtual BreakIterator * createBufferClone(void *stackBuffer,
int32_t &BufferSize,
UErrorCode &status);
virtual RuleBasedBreakIterator *createBufferClone(void *stackBuffer,
int32_t &BufferSize,
UErrorCode &status);
#endif // U_FORCE_HIDE_DEPRECATED_API
/**
* Return the binary form of compiled break rules,
-3
View File
@@ -193,9 +193,6 @@ public:
* Clones can be used concurrently in multiple threads.
* If a subclass does not implement clone(), or if an error occurs,
* then NULL is returned.
* The clone functions in all subclasses return a pointer to a Replaceable
* because some compilers do not support covariant (same-as-this)
* return types; cast to the appropriate subclass if necessary.
* The caller must delete the clone.
*
* @return a clone of this object
+1 -1
View File
@@ -133,7 +133,7 @@ public:
* @return the newly cloned object.
* @stable ICU 2.0
*/
virtual CharacterIterator* clone(void) const;
virtual StringCharacterIterator* clone() const;
/**
* Sets the iterator to iterate over the provided string.
-3
View File
@@ -71,9 +71,6 @@ public:
* Clones can be used concurrently in multiple threads.
* If a subclass does not implement clone(), or if an error occurs,
* then NULL is returned.
* The clone functions in all subclasses return a base class pointer
* because some compilers do not support covariant (same-as-this)
* return types; cast to the appropriate subclass if necessary.
* The caller must delete the clone.
*
* @return a clone of this object
+7 -16
View File
@@ -2578,8 +2578,6 @@ typedef enum UVerticalOrientation {
U_STABLE UBool U_EXPORT2
u_hasBinaryProperty(UChar32 c, UProperty which);
#ifndef U_HIDE_DRAFT_API
/**
* Returns a frozen USet for a binary property.
* The library retains ownership over the returned object.
@@ -2593,13 +2591,11 @@ u_hasBinaryProperty(UChar32 c, UProperty which);
* @see UProperty
* @see u_hasBinaryProperty
* @see Unicode::fromUSet
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI const USet * U_EXPORT2
u_getBinaryPropertySet(UProperty property, UErrorCode *pErrorCode);
#endif // U_HIDE_DRAFT_API
/**
* Check if a code point has the Alphabetic Unicode property.
* Same as u_hasBinaryProperty(c, UCHAR_ALPHABETIC).
@@ -2757,8 +2753,6 @@ u_getIntPropertyMinValue(UProperty which);
U_STABLE int32_t U_EXPORT2
u_getIntPropertyMaxValue(UProperty which);
#ifndef U_HIDE_DRAFT_API
/**
* Returns an immutable UCPMap for an enumerated/catalog/int-valued property.
* The library retains ownership over the returned object.
@@ -2772,13 +2766,11 @@ u_getIntPropertyMaxValue(UProperty which);
* @return the property as a map
* @see UProperty
* @see u_getIntPropertyValue
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI const UCPMap * U_EXPORT2
u_getIntPropertyMap(UProperty property, UErrorCode *pErrorCode);
#endif // U_HIDE_DRAFT_API
/**
* Get the numeric value for a Unicode code point as defined in the
* Unicode Character Database.
@@ -3197,15 +3189,14 @@ U_STABLE UBool U_EXPORT2
u_isprint(UChar32 c);
/**
* Determines whether the specified code point is a base character.
* Non-standard: 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.
* Note that this is different from the Unicode Standard definition in
* chapter 3.6, conformance clause D51 “Base character”,
* which defines base characters as the code points with general categories
* Letter (L), Number (N), Punctuation (P), Symbol (S), or Space Separator (Zs).
*
* @param c the code point to be tested
* @return TRUE if the code point is a base character according to this function
+2
View File
@@ -97,6 +97,7 @@ public:
return *this;
}
#ifndef U_HIDE_DRAFT_API
/**
* Returns the state of this trie as a 64-bit integer.
* The state value is never 0.
@@ -129,6 +130,7 @@ public:
pos_ = uchars_ + (state & kState64PosMask);
return *this;
}
#endif /* U_HIDE_DRAFT_API */
/**
* UCharsTrie state object, for saving a trie's current state
+1 -1
View File
@@ -135,7 +135,7 @@ public:
* @return the CharacterIterator newly created
* @stable ICU 2.0
*/
virtual CharacterIterator* clone(void) const;
virtual UCharCharacterIterator* clone() const;
/**
* Sets the iterator to refer to the first code unit in its
+1 -1
View File
@@ -453,4 +453,4 @@
# define UCONFIG_NO_FILTERED_BREAK_ITERATION 0
#endif
#endif
#endif // __UCONFIG_H__
+8 -11
View File
@@ -9,8 +9,6 @@
#include "unicode/utypes.h"
#ifndef U_HIDE_DRAFT_API
U_CDECL_BEGIN
/**
@@ -28,7 +26,7 @@ U_CDECL_BEGIN
*
* @see UCPTrie
* @see UMutableCPTrie
* @draft ICU 63
* @stable ICU 63
*/
typedef struct UCPMap UCPMap;
@@ -39,13 +37,13 @@ typedef struct UCPMap UCPMap;
* @see ucpmap_getRange
* @see ucptrie_getRange
* @see umutablecptrie_getRange
* @draft ICU 63
* @stable ICU 63
*/
enum UCPMapRangeOption {
/**
* ucpmap_getRange() enumerates all same-value ranges as stored in the map.
* Most users should use this option.
* @draft ICU 63
* @stable ICU 63
*/
UCPMAP_RANGE_NORMAL,
/**
@@ -61,7 +59,7 @@ enum UCPMapRangeOption {
* special values optimized for UTF-16 string processing
* or for special error behavior for unpaired surrogates,
* but those values are not to be associated with the lead surrogate code *points*.
* @draft ICU 63
* @stable ICU 63
*/
UCPMAP_RANGE_FIXED_LEAD_SURROGATES,
/**
@@ -77,7 +75,7 @@ enum UCPMapRangeOption {
* special values optimized for UTF-16 string processing
* or for special error behavior for unpaired surrogates,
* but those values are not to be associated with the lead surrogate code *points*.
* @draft ICU 63
* @stable ICU 63
*/
UCPMAP_RANGE_FIXED_ALL_SURROGATES
};
@@ -93,7 +91,7 @@ typedef enum UCPMapRangeOption UCPMapRangeOption;
* @param c the code point
* @return the map value,
* or an implementation-defined error value if the code point is not in the range 0..U+10FFFF
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI uint32_t U_EXPORT2
ucpmap_get(const UCPMap *map, UChar32 c);
@@ -110,7 +108,7 @@ ucpmap_get(const UCPMap *map, UChar32 c);
* @param context an opaque pointer, as passed into the getRange function
* @param value a value from the map
* @return the modified value
* @draft ICU 63
* @stable ICU 63
*/
typedef uint32_t U_CALLCONV
UCPMapValueFilter(const void *context, uint32_t value);
@@ -149,7 +147,7 @@ UCPMapValueFilter(const void *context, uint32_t value);
* may have been modified by filter(context, map value)
* if that function pointer is not NULL
* @return the range end code point, or -1 if start is not a valid code point
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UChar32 U_EXPORT2
ucpmap_getRange(const UCPMap *map, UChar32 start,
@@ -158,5 +156,4 @@ ucpmap_getRange(const UCPMap *map, UChar32 start,
U_CDECL_END
#endif // U_HIDE_DRAFT_API
#endif
+30 -33
View File
@@ -9,8 +9,6 @@
#include "unicode/utypes.h"
#ifndef U_HIDE_DRAFT_API
#include "unicode/localpointer.h"
#include "unicode/ucpmap.h"
#include "unicode/utf8.h"
@@ -55,7 +53,7 @@ typedef union UCPTrieData {
* The macros will return bogus values, or may crash, if used on the wrong type or value width.
*
* @see UMutableCPTrie
* @draft ICU 63
* @stable ICU 63
*/
struct UCPTrie {
#ifndef U_IN_DOXYGEN
@@ -115,23 +113,23 @@ typedef struct UCPTrie UCPTrie;
* @see umutablecptrie_buildImmutable
* @see ucptrie_openFromBinary
* @see ucptrie_getType
* @draft ICU 63
* @stable ICU 63
*/
enum UCPTrieType {
/**
* For ucptrie_openFromBinary() to accept any type.
* ucptrie_getType() will return the actual type.
* @draft ICU 63
* @stable ICU 63
*/
UCPTRIE_TYPE_ANY = -1,
/**
* Fast/simple/larger BMP data structure. Use functions and "fast" macros.
* @draft ICU 63
* @stable ICU 63
*/
UCPTRIE_TYPE_FAST,
/**
* Small/slower BMP data structure. Use functions and "small" macros.
* @draft ICU 63
* @stable ICU 63
*/
UCPTRIE_TYPE_SMALL
};
@@ -145,30 +143,30 @@ typedef enum UCPTrieType UCPTrieType;
* @see umutablecptrie_buildImmutable
* @see ucptrie_openFromBinary
* @see ucptrie_getValueWidth
* @draft ICU 63
* @stable ICU 63
*/
enum UCPTrieValueWidth {
/**
* For ucptrie_openFromBinary() to accept any data value width.
* ucptrie_getValueWidth() will return the actual data value width.
* @draft ICU 63
* @stable ICU 63
*/
UCPTRIE_VALUE_BITS_ANY = -1,
/**
* The trie stores 16 bits per data value.
* It returns them as unsigned values 0..0xffff=65535.
* @draft ICU 63
* @stable ICU 63
*/
UCPTRIE_VALUE_BITS_16,
/**
* The trie stores 32 bits per data value.
* @draft ICU 63
* @stable ICU 63
*/
UCPTRIE_VALUE_BITS_32,
/**
* The trie stores 8 bits per data value.
* It returns them as unsigned values 0..0xff=255.
* @draft ICU 63
* @stable ICU 63
*/
UCPTRIE_VALUE_BITS_8
};
@@ -200,7 +198,7 @@ typedef enum UCPTrieValueWidth UCPTrieValueWidth;
* @see umutablecptrie_open
* @see umutablecptrie_buildImmutable
* @see ucptrie_toBinary
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UCPTrie * U_EXPORT2
ucptrie_openFromBinary(UCPTrieType type, UCPTrieValueWidth valueWidth,
@@ -211,7 +209,7 @@ ucptrie_openFromBinary(UCPTrieType type, UCPTrieValueWidth valueWidth,
* Closes a trie and releases associated memory.
*
* @param trie the trie
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI void U_EXPORT2
ucptrie_close(UCPTrie *trie);
@@ -223,7 +221,7 @@ ucptrie_close(UCPTrie *trie);
* @return the trie type
* @see ucptrie_openFromBinary
* @see UCPTRIE_TYPE_ANY
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UCPTrieType U_EXPORT2
ucptrie_getType(const UCPTrie *trie);
@@ -235,7 +233,7 @@ ucptrie_getType(const UCPTrie *trie);
* @return the number of bits in a trie data value
* @see ucptrie_openFromBinary
* @see UCPTRIE_VALUE_BITS_ANY
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UCPTrieValueWidth U_EXPORT2
ucptrie_getValueWidth(const UCPTrie *trie);
@@ -252,7 +250,7 @@ ucptrie_getValueWidth(const UCPTrie *trie);
* @param c the code point
* @return the trie value,
* or the trie error value if the code point is not in the range 0..U+10FFFF
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI uint32_t U_EXPORT2
ucptrie_get(const UCPTrie *trie, UChar32 c);
@@ -291,7 +289,7 @@ ucptrie_get(const UCPTrie *trie, UChar32 c);
* may have been modified by filter(context, trie value)
* if that function pointer is not NULL
* @return the range end code point, or -1 if start is not a valid code point
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UChar32 U_EXPORT2
ucptrie_getRange(const UCPTrie *trie, UChar32 start,
@@ -311,7 +309,7 @@ ucptrie_getRange(const UCPTrie *trie, UChar32 start,
* @return the number of bytes written or (if buffer overflow) needed for the trie
*
* @see ucptrie_openFromBinary()
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI int32_t U_EXPORT2
ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *pErrorCode);
@@ -322,7 +320,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* Do not use this macro in any other way.
*
* @see UCPTRIE_VALUE_BITS_16
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_16(trie, i) ((trie)->data.ptr16[i])
@@ -332,7 +330,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* Do not use this macro in any other way.
*
* @see UCPTRIE_VALUE_BITS_32
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_32(trie, i) ((trie)->data.ptr32[i])
@@ -342,7 +340,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* Do not use this macro in any other way.
*
* @see UCPTRIE_VALUE_BITS_8
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_8(trie, i) ((trie)->data.ptr8[i])
@@ -354,7 +352,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width
* @param c (UChar32, in) the input code point
* @return The code point's trie value.
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_FAST_GET(trie, dataAccess, c) dataAccess(trie, _UCPTRIE_CP_INDEX(trie, 0xffff, c))
@@ -366,7 +364,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width
* @param c (UChar32, in) the input code point
* @return The code point's trie value.
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_SMALL_GET(trie, dataAccess, c) \
dataAccess(trie, _UCPTRIE_CP_INDEX(trie, UCPTRIE_SMALL_MAX, c))
@@ -382,7 +380,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param limit (const UChar *, in) the limit pointer for the text, or NULL if NUL-terminated
* @param c (UChar32, out) variable for the code point
* @param result (out) variable for the trie lookup result
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_FAST_U16_NEXT(trie, dataAccess, src, limit, c, result) UPRV_BLOCK_MACRO_BEGIN { \
(c) = *(src)++; \
@@ -413,7 +411,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param src (const UChar *, in/out) the source text pointer
* @param c (UChar32, out) variable for the code point
* @param result (out) variable for the trie lookup result
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_FAST_U16_PREV(trie, dataAccess, start, src, c, result) UPRV_BLOCK_MACRO_BEGIN { \
(c) = *--(src); \
@@ -447,7 +445,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param src (const char *, in/out) the source text pointer
* @param limit (const char *, in) the limit pointer for the text (must not be NULL)
* @param result (out) variable for the trie lookup result
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_FAST_U8_NEXT(trie, dataAccess, src, limit, result) UPRV_BLOCK_MACRO_BEGIN { \
int32_t __lead = (uint8_t)*(src)++; \
@@ -493,7 +491,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param start (const char *, in) the start pointer for the text
* @param src (const char *, in/out) the source text pointer
* @param result (out) variable for the trie lookup result
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_FAST_U8_PREV(trie, dataAccess, start, src, result) UPRV_BLOCK_MACRO_BEGIN { \
int32_t __index = (uint8_t)*--(src); \
@@ -513,7 +511,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width
* @param c (UChar32, in) the input code point; must be U+0000..U+007F
* @return The ASCII code point's trie value.
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_ASCII_GET(trie, dataAccess, c) dataAccess(trie, c)
@@ -526,7 +524,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width
* @param c (UChar32, in) the input code point, must be U+0000..U+FFFF
* @return The BMP code point's trie value.
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_FAST_BMP_GET(trie, dataAccess, c) dataAccess(trie, _UCPTRIE_FAST_INDEX(trie, c))
@@ -538,7 +536,7 @@ ucptrie_toBinary(const UCPTrie *trie, void *data, int32_t capacity, UErrorCode *
* @param dataAccess UCPTRIE_16, UCPTRIE_32, or UCPTRIE_8 according to the trie’s value width
* @param c (UChar32, in) the input code point, must be U+10000..U+10FFFF
* @return The supplementary code point's trie value.
* @draft ICU 63
* @stable ICU 63
*/
#define UCPTRIE_FAST_SUPP_GET(trie, dataAccess, c) dataAccess(trie, _UCPTRIE_SMALL_INDEX(trie, c))
@@ -635,7 +633,7 @@ U_NAMESPACE_BEGIN
*
* @see LocalPointerBase
* @see LocalPointer
* @draft ICU 63
* @stable ICU 63
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUCPTriePointer, UCPTrie, ucptrie_close);
@@ -643,5 +641,4 @@ U_NAMESPACE_END
#endif // U_SHOW_CPLUSPLUS_API
#endif // U_HIDE_DRAFT_API
#endif
+9 -8
View File
@@ -159,14 +159,14 @@ ucurr_unregister(UCurrRegistryKey key, UErrorCode* status);
* @param currency null-terminated 3-letter ISO 4217 code
* @param locale locale in which to display currency
* @param nameStyle selector for which kind of name to return
* @param isChoiceFormat fill-in set to TRUE if the returned value
* is a ChoiceFormat pattern; otherwise it is a static string
* @param isChoiceFormat always set to FALSE, or can be NULL;
* display names are static strings;
* since ICU 4.4, ChoiceFormat patterns are no longer supported
* @param len fill-in parameter to receive length of result
* @param ec error code
* @return pointer to display string of 'len' UChars. If the resource
* data contains no entry for 'currency', then 'currency' itself is
* returned. If *isChoiceFormat is TRUE, then the result is a
* ChoiceFormat pattern. Otherwise it is a static string.
* returned.
* @stable ICU 2.6
*/
U_STABLE const UChar* U_EXPORT2
@@ -183,14 +183,15 @@ ucurr_getName(const UChar* currency,
* currency object in the en_US locale is "US dollar" or "US dollars".
* @param currency null-terminated 3-letter ISO 4217 code
* @param locale locale in which to display currency
* @param isChoiceFormat fill-in set to TRUE if the returned value
* is a ChoiceFormat pattern; otherwise it is a static string
* @param isChoiceFormat always set to FALSE, or can be NULL;
* display names are static strings;
* since ICU 4.4, ChoiceFormat patterns are no longer supported
* @param pluralCount plural count
* @param len fill-in parameter to receive length of result
* @param ec error code
* @return pointer to display string of 'len' UChars. If the resource
* data contains no entry for 'currency', then 'currency' itself is
* returned.
* returned.
* @stable ICU 4.2
*/
U_STABLE const UChar* U_EXPORT2
@@ -320,7 +321,7 @@ typedef enum UCurrCurrencyType {
* Provides a UEnumeration object for listing ISO-4217 codes.
* @param currType You can use one of several UCurrCurrencyType values for this
* variable. You can also | (or) them together to get a specific list of
* currencies. Most people will want to use the (UCURR_CURRENCY|UCURR_NON_DEPRECATED) value to
* currencies. Most people will want to use the (UCURR_COMMON|UCURR_NON_DEPRECATED) value to
* get a list of current currencies.
* @param pErrorCode Error code
* @stable ICU 3.2
+2 -1
View File
@@ -155,8 +155,9 @@
// such code the wrapper is itself defined as macros so that it's possible to
// build ICU 65 and later with the old macro behaviour, like this:
//
// CPPFLAGS='-DUPRV_BLOCK_MACRO_BEGIN="" -DUPRV_BLOCK_MACRO_END=""' \
// export CPPFLAGS='-DUPRV_BLOCK_MACRO_BEGIN="" -DUPRV_BLOCK_MACRO_END=""'
// runConfigureICU ...
//
/**
* \def UPRV_BLOCK_MACRO_BEGIN
+12 -15
View File
@@ -9,8 +9,6 @@
#include "unicode/utypes.h"
#ifndef U_HIDE_DRAFT_API
#include "unicode/localpointer.h"
#include "unicode/ucpmap.h"
#include "unicode/ucptrie.h"
@@ -44,7 +42,7 @@ U_CDECL_BEGIN
*
* @see UCPTrie
* @see umutablecptrie_buildImmutable
* @draft ICU 63
* @stable ICU 63
*/
typedef struct UMutableCPTrie UMutableCPTrie;
@@ -59,7 +57,7 @@ typedef struct UMutableCPTrie UMutableCPTrie;
* @param errorValue the value for out-of-range code points and ill-formed UTF-8/16
* @param pErrorCode an in/out ICU UErrorCode
* @return the trie
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UMutableCPTrie * U_EXPORT2
umutablecptrie_open(uint32_t initialValue, uint32_t errorValue, UErrorCode *pErrorCode);
@@ -71,7 +69,7 @@ umutablecptrie_open(uint32_t initialValue, uint32_t errorValue, UErrorCode *pErr
* @param other the trie to clone
* @param pErrorCode an in/out ICU UErrorCode
* @return the trie clone
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UMutableCPTrie * U_EXPORT2
umutablecptrie_clone(const UMutableCPTrie *other, UErrorCode *pErrorCode);
@@ -80,7 +78,7 @@ umutablecptrie_clone(const UMutableCPTrie *other, UErrorCode *pErrorCode);
* Closes a mutable trie and releases associated memory.
*
* @param trie the trie
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI void U_EXPORT2
umutablecptrie_close(UMutableCPTrie *trie);
@@ -96,7 +94,7 @@ U_NAMESPACE_BEGIN
*
* @see LocalPointerBase
* @see LocalPointer
* @draft ICU 63
* @stable ICU 63
*/
U_DEFINE_LOCAL_OPEN_POINTER(LocalUMutableCPTriePointer, UMutableCPTrie, umutablecptrie_close);
@@ -111,7 +109,7 @@ U_NAMESPACE_END
* @param map the source map
* @param pErrorCode an in/out ICU UErrorCode
* @return the mutable trie
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UMutableCPTrie * U_EXPORT2
umutablecptrie_fromUCPMap(const UCPMap *map, UErrorCode *pErrorCode);
@@ -123,7 +121,7 @@ umutablecptrie_fromUCPMap(const UCPMap *map, UErrorCode *pErrorCode);
* @param trie the immutable trie
* @param pErrorCode an in/out ICU UErrorCode
* @return the mutable trie
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UMutableCPTrie * U_EXPORT2
umutablecptrie_fromUCPTrie(const UCPTrie *trie, UErrorCode *pErrorCode);
@@ -134,7 +132,7 @@ umutablecptrie_fromUCPTrie(const UCPTrie *trie, UErrorCode *pErrorCode);
* @param trie the trie
* @param c the code point
* @return the value
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI uint32_t U_EXPORT2
umutablecptrie_get(const UMutableCPTrie *trie, UChar32 c);
@@ -166,7 +164,7 @@ umutablecptrie_get(const UMutableCPTrie *trie, UChar32 c);
* may have been modified by filter(context, trie value)
* if that function pointer is not NULL
* @return the range end code point, or -1 if start is not a valid code point
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UChar32 U_EXPORT2
umutablecptrie_getRange(const UMutableCPTrie *trie, UChar32 start,
@@ -180,7 +178,7 @@ umutablecptrie_getRange(const UMutableCPTrie *trie, UChar32 start,
* @param c the code point
* @param value the value
* @param pErrorCode an in/out ICU UErrorCode
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI void U_EXPORT2
umutablecptrie_set(UMutableCPTrie *trie, UChar32 c, uint32_t value, UErrorCode *pErrorCode);
@@ -194,7 +192,7 @@ umutablecptrie_set(UMutableCPTrie *trie, UChar32 c, uint32_t value, UErrorCode *
* @param end the last code point to get the value (inclusive)
* @param value the value
* @param pErrorCode an in/out ICU UErrorCode
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI void U_EXPORT2
umutablecptrie_setRange(UMutableCPTrie *trie,
@@ -229,7 +227,7 @@ umutablecptrie_setRange(UMutableCPTrie *trie,
* @param pErrorCode an in/out ICU UErrorCode
*
* @see umutablecptrie_fromUCPTrie
* @draft ICU 63
* @stable ICU 63
*/
U_CAPI UCPTrie * U_EXPORT2
umutablecptrie_buildImmutable(UMutableCPTrie *trie, UCPTrieType type, UCPTrieValueWidth valueWidth,
@@ -237,5 +235,4 @@ umutablecptrie_buildImmutable(UMutableCPTrie *trie, UCPTrieType type, UCPTrieVal
U_CDECL_END
#endif // U_HIDE_DRAFT_API
#endif
+8
View File
@@ -71,6 +71,14 @@ public:
*/
virtual ~UnicodeFilter();
/**
* Clones this object polymorphically.
* The caller owns the result and should delete it when done.
* @return clone, or nullptr if an error occurred
* @stable ICU 2.4
*/
virtual UnicodeFilter* clone() const = 0;
/**
* Returns <tt>true</tt> for characters that are in the selected
* subset. In other words, if a character is <b>to be
+4 -5
View File
@@ -505,7 +505,7 @@ public:
* @see cloneAsThawed
* @stable ICU 2.0
*/
virtual UnicodeFunctor* clone() const;
virtual UnicodeSet* clone() const;
/**
* Returns the hash code value for this set.
@@ -583,7 +583,7 @@ public:
* @see cloneAsThawed
* @stable ICU 3.8
*/
UnicodeFunctor *freeze();
UnicodeSet *freeze();
/**
* Clone the set and make the clone mutable.
@@ -593,7 +593,7 @@ public:
* @see isFrozen
* @stable ICU 3.8
*/
UnicodeFunctor *cloneAsThawed() const;
UnicodeSet *cloneAsThawed() const;
//----------------------------------------------------------------
// Public API
@@ -1655,11 +1655,10 @@ private:
const UnicodeSet* inclusions,
UErrorCode &status);
#ifndef U_HIDE_DRAFT_API // Skipped: ucpmap.h is draft only.
// UCPMap is now stable ICU 63
void applyIntPropertyValue(const UCPMap *map,
UCPMapValueFilter *filter, const void *context,
UErrorCode &errorCode);
#endif /* U_HIDE_DRAFT_API */
/**
* Set the new pattern to cache.
+10 -9
View File
@@ -212,7 +212,9 @@ class UnicodeStringAppendable; // unicode/appendable.h
* similar functionality as the Java String and StringBuffer/StringBuilder classes.
* It is a concrete implementation of the abstract class Replaceable (for transliteration).
*
* A UnicodeString may also "alias" an external array of characters
* The UnicodeString equivalent of std::string’s clear() is remove().
*
* A UnicodeString may "alias" an external array of characters
* (that is, point to it, rather than own the array)
* whose lifetime must then at least match the lifetime of the aliasing object.
* This aliasing may be preserved when returning a UnicodeString by value,
@@ -2095,8 +2097,7 @@ public:
* s.truncate(0); // set to an empty string (complete truncation), or
* s=UnicodeString(); // assign an empty string, or
* s.setTo((UChar32)-1); // set to a pseudo code point that is out of range, or
* static const char16_t nul=0;
* s.setTo(&nul, 0); // set to an empty C Unicode string
* s.setTo(u"", 0); // set to an empty C Unicode string
* }
* \endcode
*
@@ -2537,11 +2538,14 @@ public:
/* Remove operations */
/**
* Remove all characters from the UnicodeString object.
* Removes all characters from the UnicodeString object and clears the bogus flag.
* This is the UnicodeString equivalent of std::string’s clear().
*
* @return a reference to this
* @see setToBogus
* @stable ICU 2.0
*/
inline UnicodeString& remove(void);
inline UnicodeString& remove();
/**
* Remove the characters in the range
@@ -3326,9 +3330,6 @@ public:
* Clones can be used concurrently in multiple threads.
* If a subclass does not implement clone(), or if an error occurs,
* then NULL is returned.
* The clone functions in all subclasses return a pointer to a Replaceable
* because some compilers do not support covariant (same-as-this)
* return types; cast to the appropriate subclass if necessary.
* The caller must delete the clone.
*
* @return a clone of this object
@@ -3337,7 +3338,7 @@ public:
* @see getDynamicClassID
* @stable ICU 2.6
*/
virtual Replaceable *clone() const;
virtual UnicodeString *clone() const;
/** Destructor.
* @stable ICU 2.0
+4
View File
@@ -131,6 +131,8 @@
// Do not conditionalize the following enum with #ifndef U_HIDE_DEPRECATED_API,
// it is needed for layout of Normalizer object.
#ifndef U_FORCE_HIDE_DEPRECATED_API
/**
* Constants for normalization modes.
* @deprecated ICU 56 Use unorm2.h instead.
@@ -155,6 +157,8 @@ typedef enum {
UNORM_MODE_COUNT
} UNormalizationMode;
#endif // U_FORCE_HIDE_DEPRECATED_API
#ifndef U_HIDE_DEPRECATED_API
/**
+1 -4
View File
@@ -215,11 +215,8 @@ public:
* The clone() function is not available in UObject because it is not
* implemented by all ICU classes.
* Many ICU services provide a clone() function for their class trees,
* defined on the service's C++ base class, and all subclasses within that
* service class tree return a pointer to the service base class
* defined on the service's C++ base class
* (which itself is a subclass of UObject).
* This is because some compilers do not support covariant (same-as-this)
* return types; cast to the appropriate subclass if necessary.
*
* @stable ICU 2.2
*/
+8 -16
View File
@@ -193,10 +193,13 @@
#define res_getAlias U_ICU_ENTRY_POINT_RENAME(res_getAlias)
#define res_getArrayItem U_ICU_ENTRY_POINT_RENAME(res_getArrayItem)
#define res_getBinary U_ICU_ENTRY_POINT_RENAME(res_getBinary)
#define res_getBinaryNoTrace U_ICU_ENTRY_POINT_RENAME(res_getBinaryNoTrace)
#define res_getIntVector U_ICU_ENTRY_POINT_RENAME(res_getIntVector)
#define res_getIntVectorNoTrace U_ICU_ENTRY_POINT_RENAME(res_getIntVectorNoTrace)
#define res_getPublicType U_ICU_ENTRY_POINT_RENAME(res_getPublicType)
#define res_getResource U_ICU_ENTRY_POINT_RENAME(res_getResource)
#define res_getString U_ICU_ENTRY_POINT_RENAME(res_getString)
#define res_getStringNoTrace U_ICU_ENTRY_POINT_RENAME(res_getStringNoTrace)
#define res_getTableItemByIndex U_ICU_ENTRY_POINT_RENAME(res_getTableItemByIndex)
#define res_getTableItemByKey U_ICU_ENTRY_POINT_RENAME(res_getTableItemByKey)
#define res_load U_ICU_ENTRY_POINT_RENAME(res_load)
@@ -523,6 +526,7 @@
#define ucal_getDefaultTimeZone U_ICU_ENTRY_POINT_RENAME(ucal_getDefaultTimeZone)
#define ucal_getFieldDifference U_ICU_ENTRY_POINT_RENAME(ucal_getFieldDifference)
#define ucal_getGregorianChange U_ICU_ENTRY_POINT_RENAME(ucal_getGregorianChange)
#define ucal_getHostTimeZone U_ICU_ENTRY_POINT_RENAME(ucal_getHostTimeZone)
#define ucal_getKeywordValuesForLocale U_ICU_ENTRY_POINT_RENAME(ucal_getKeywordValuesForLocale)
#define ucal_getLimit U_ICU_ENTRY_POINT_RENAME(ucal_getLimit)
#define ucal_getLocaleByType U_ICU_ENTRY_POINT_RENAME(ucal_getLocaleByType)
@@ -575,7 +579,6 @@
#define ucasemap_getLocale U_ICU_ENTRY_POINT_RENAME(ucasemap_getLocale)
#define ucasemap_getOptions U_ICU_ENTRY_POINT_RENAME(ucasemap_getOptions)
#define ucasemap_internalUTF8ToTitle U_ICU_ENTRY_POINT_RENAME(ucasemap_internalUTF8ToTitle)
#define ucasemap_mapUTF8 U_ICU_ENTRY_POINT_RENAME(ucasemap_mapUTF8)
#define ucasemap_open U_ICU_ENTRY_POINT_RENAME(ucasemap_open)
#define ucasemap_setBreakIterator U_ICU_ENTRY_POINT_RENAME(ucasemap_setBreakIterator)
#define ucasemap_setLocale U_ICU_ENTRY_POINT_RENAME(ucasemap_setLocale)
@@ -930,16 +933,9 @@
#define ufieldpositer_close U_ICU_ENTRY_POINT_RENAME(ufieldpositer_close)
#define ufieldpositer_next U_ICU_ENTRY_POINT_RENAME(ufieldpositer_next)
#define ufieldpositer_open U_ICU_ENTRY_POINT_RENAME(ufieldpositer_open)
#define ufile_close_translit U_ICU_ENTRY_POINT_RENAME(ufile_close_translit)
#define ufile_fill_uchar_buffer U_ICU_ENTRY_POINT_RENAME(ufile_fill_uchar_buffer)
#define ufile_flush_io U_ICU_ENTRY_POINT_RENAME(ufile_flush_io)
#define ufile_flush_translit U_ICU_ENTRY_POINT_RENAME(ufile_flush_translit)
#define ufile_getch U_ICU_ENTRY_POINT_RENAME(ufile_getch)
#define ufile_getch32 U_ICU_ENTRY_POINT_RENAME(ufile_getch32)
#define ufmt_64tou U_ICU_ENTRY_POINT_RENAME(ufmt_64tou)
#define ufmt_close U_ICU_ENTRY_POINT_RENAME(ufmt_close)
#define ufmt_defaultCPToUnicode U_ICU_ENTRY_POINT_RENAME(ufmt_defaultCPToUnicode)
#define ufmt_digitvalue U_ICU_ENTRY_POINT_RENAME(ufmt_digitvalue)
#define ufmt_getArrayItemByIndex U_ICU_ENTRY_POINT_RENAME(ufmt_getArrayItemByIndex)
#define ufmt_getArrayLength U_ICU_ENTRY_POINT_RENAME(ufmt_getArrayLength)
#define ufmt_getDate U_ICU_ENTRY_POINT_RENAME(ufmt_getDate)
@@ -951,11 +947,7 @@
#define ufmt_getType U_ICU_ENTRY_POINT_RENAME(ufmt_getType)
#define ufmt_getUChars U_ICU_ENTRY_POINT_RENAME(ufmt_getUChars)
#define ufmt_isNumeric U_ICU_ENTRY_POINT_RENAME(ufmt_isNumeric)
#define ufmt_isdigit U_ICU_ENTRY_POINT_RENAME(ufmt_isdigit)
#define ufmt_open U_ICU_ENTRY_POINT_RENAME(ufmt_open)
#define ufmt_ptou U_ICU_ENTRY_POINT_RENAME(ufmt_ptou)
#define ufmt_uto64 U_ICU_ENTRY_POINT_RENAME(ufmt_uto64)
#define ufmt_utop U_ICU_ENTRY_POINT_RENAME(ufmt_utop)
#define ufmtval_getString U_ICU_ENTRY_POINT_RENAME(ufmtval_getString)
#define ufmtval_nextPosition U_ICU_ENTRY_POINT_RENAME(ufmtval_nextPosition)
#define ugender_getInstance U_ICU_ENTRY_POINT_RENAME(ugender_getInstance)
@@ -1103,6 +1095,7 @@
#define uloc_getVariant U_ICU_ENTRY_POINT_RENAME(uloc_getVariant)
#define uloc_isRightToLeft U_ICU_ENTRY_POINT_RENAME(uloc_isRightToLeft)
#define uloc_minimizeSubtags U_ICU_ENTRY_POINT_RENAME(uloc_minimizeSubtags)
#define uloc_openAvailableByType U_ICU_ENTRY_POINT_RENAME(uloc_openAvailableByType)
#define uloc_openKeywordList U_ICU_ENTRY_POINT_RENAME(uloc_openKeywordList)
#define uloc_openKeywords U_ICU_ENTRY_POINT_RENAME(uloc_openKeywords)
#define uloc_setDefault U_ICU_ENTRY_POINT_RENAME(uloc_setDefault)
@@ -1159,9 +1152,6 @@
#define umsg_toPattern U_ICU_ENTRY_POINT_RENAME(umsg_toPattern)
#define umsg_vformat U_ICU_ENTRY_POINT_RENAME(umsg_vformat)
#define umsg_vparse U_ICU_ENTRY_POINT_RENAME(umsg_vparse)
#define umtx_condBroadcast U_ICU_ENTRY_POINT_RENAME(umtx_condBroadcast)
#define umtx_condSignal U_ICU_ENTRY_POINT_RENAME(umtx_condSignal)
#define umtx_condWait U_ICU_ENTRY_POINT_RENAME(umtx_condWait)
#define umtx_lock U_ICU_ENTRY_POINT_RENAME(umtx_lock)
#define umtx_unlock U_ICU_ENTRY_POINT_RENAME(umtx_unlock)
#define umutablecptrie_buildImmutable U_ICU_ENTRY_POINT_RENAME(umutablecptrie_buildImmutable)
@@ -1327,7 +1317,6 @@
#define uprv_decNumberAbs U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAbs)
#define uprv_decNumberAdd U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAdd)
#define uprv_decNumberAnd U_ICU_ENTRY_POINT_RENAME(uprv_decNumberAnd)
#define uprv_decNumberClass U_ICU_ENTRY_POINT_RENAME(uprv_decNumberClass)
#define uprv_decNumberClassToString U_ICU_ENTRY_POINT_RENAME(uprv_decNumberClassToString)
#define uprv_decNumberCompare U_ICU_ENTRY_POINT_RENAME(uprv_decNumberCompare)
#define uprv_decNumberCompareSignal U_ICU_ENTRY_POINT_RENAME(uprv_decNumberCompareSignal)
@@ -1393,6 +1382,7 @@
#define uprv_dlsym_func U_ICU_ENTRY_POINT_RENAME(uprv_dlsym_func)
#define uprv_eastrncpy U_ICU_ENTRY_POINT_RENAME(uprv_eastrncpy)
#define uprv_ebcdicFromAscii U_ICU_ENTRY_POINT_RENAME(uprv_ebcdicFromAscii)
#define uprv_ebcdicToAscii U_ICU_ENTRY_POINT_RENAME(uprv_ebcdicToAscii)
#define uprv_ebcdicToLowercaseAscii U_ICU_ENTRY_POINT_RENAME(uprv_ebcdicToLowercaseAscii)
#define uprv_ebcdictolower U_ICU_ENTRY_POINT_RENAME(uprv_ebcdictolower)
#define uprv_fabs U_ICU_ENTRY_POINT_RENAME(uprv_fabs)
@@ -1412,6 +1402,7 @@
#define uprv_getUTCtime U_ICU_ENTRY_POINT_RENAME(uprv_getUTCtime)
#define uprv_int32Comparator U_ICU_ENTRY_POINT_RENAME(uprv_int32Comparator)
#define uprv_isASCIILetter U_ICU_ENTRY_POINT_RENAME(uprv_isASCIILetter)
#define uprv_isEbcdicAtSign U_ICU_ENTRY_POINT_RENAME(uprv_isEbcdicAtSign)
#define uprv_isInfinite U_ICU_ENTRY_POINT_RENAME(uprv_isInfinite)
#define uprv_isInvariantString U_ICU_ENTRY_POINT_RENAME(uprv_isInvariantString)
#define uprv_isInvariantUString U_ICU_ENTRY_POINT_RENAME(uprv_isInvariantUString)
@@ -1579,6 +1570,7 @@
#define ures_getUTF8String U_ICU_ENTRY_POINT_RENAME(ures_getUTF8String)
#define ures_getUTF8StringByIndex U_ICU_ENTRY_POINT_RENAME(ures_getUTF8StringByIndex)
#define ures_getUTF8StringByKey U_ICU_ENTRY_POINT_RENAME(ures_getUTF8StringByKey)
#define ures_getValueWithFallback U_ICU_ENTRY_POINT_RENAME(ures_getValueWithFallback)
#define ures_getVersion U_ICU_ENTRY_POINT_RENAME(ures_getVersion)
#define ures_getVersionByKey U_ICU_ENTRY_POINT_RENAME(ures_getVersionByKey)
#define ures_getVersionNumber U_ICU_ENTRY_POINT_RENAME(ures_getVersionNumber)
+5 -8
View File
@@ -19,9 +19,6 @@
/**
* \file
* \brief C API: Deprecated macros for Unicode string handling
*/
/**
*
* The macros in utf_old.h are all deprecated and their use discouraged.
* Some of the design principles behind the set of UTF macros
@@ -139,12 +136,16 @@
*
* <hr>
*
* @deprecated ICU 2.4. Use the macros in utf.h, utf16.h, utf8.h instead.
* Deprecated ICU 2.4. Use the macros in utf.h, utf16.h, utf8.h instead.
*/
#ifndef __UTF_OLD_H__
#define __UTF_OLD_H__
#include "unicode/utf.h"
#include "unicode/utf8.h"
#include "unicode/utf16.h"
/**
* \def U_HIDE_OBSOLETE_UTF_OLD_H
*
@@ -162,10 +163,6 @@
#if !defined(U_HIDE_DEPRECATED_API) && !U_HIDE_OBSOLETE_UTF_OLD_H
#include "unicode/utf.h"
#include "unicode/utf8.h"
#include "unicode/utf16.h"
/* Formerly utf.h, part 1 --------------------------------------------------- */
#ifdef U_USE_UTF_DEPRECATES
+1
View File
@@ -141,6 +141,7 @@ typedef enum UTraceFunctionNumber {
* Indicates that a resource bundle was opened.
*
* Provides one C-style string to UTraceData: file name.
* @draft ICU 65
*/
UTRACE_UDATA_BUNDLE,
+6 -6
View File
@@ -60,13 +60,13 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
#define U_ICU_VERSION_MAJOR_NUM 64
#define U_ICU_VERSION_MAJOR_NUM 65
/** The current ICU minor version as an integer.
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
#define U_ICU_VERSION_MINOR_NUM 2
#define U_ICU_VERSION_MINOR_NUM 1
/** The current ICU patchlevel version as an integer.
* This value will change in the subsequent releases of ICU
@@ -86,7 +86,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.6
*/
#define U_ICU_VERSION_SUFFIX _64
#define U_ICU_VERSION_SUFFIX _65
/**
* \def U_DEF2_ICU_ENTRY_POINT_RENAME
@@ -139,7 +139,7 @@
* This value will change in the subsequent releases of ICU
* @stable ICU 2.4
*/
#define U_ICU_VERSION "64.2"
#define U_ICU_VERSION "65.1"
/**
* The current ICU library major version number as a string, for library name suffixes.
@@ -152,13 +152,13 @@
*
* @stable ICU 2.6
*/
#define U_ICU_VERSION_SHORT "64"
#define U_ICU_VERSION_SHORT "65"
#ifndef U_HIDE_INTERNAL_API
/** Data version in ICU4C.
* @internal ICU 4.4 Internal Use Only
**/
#define U_ICU_DATA_VERSION "64.2"
#define U_ICU_DATA_VERSION "65.1"
#endif /* U_HIDE_INTERNAL_API */
/*===========================================================================
+3 -3
View File
@@ -278,11 +278,11 @@ UnicodeSet& UnicodeSet::copyFrom(const UnicodeSet& o, UBool asThawed) {
* to support cloning in order to allow classes using
* UnicodeMatchers, such as Transliterator, to implement cloning.
*/
UnicodeFunctor* UnicodeSet::clone() const {
UnicodeSet* UnicodeSet::clone() const {
return new UnicodeSet(*this);
}
UnicodeFunctor *UnicodeSet::cloneAsThawed() const {
UnicodeSet *UnicodeSet::cloneAsThawed() const {
return new UnicodeSet(*this, TRUE);
}
@@ -2172,7 +2172,7 @@ void UnicodeSet::setPattern(const char16_t *newPat, int32_t newPatLen) {
// We can regenerate an equivalent pattern later when requested.
}
UnicodeFunctor *UnicodeSet::freeze() {
UnicodeSet *UnicodeSet::freeze() {
if(!isFrozen() && !isBogus()) {
compact();
+2 -2
View File
@@ -400,7 +400,7 @@ UnicodeSetStringSpan::UnicodeSetStringSpan(const UnicodeSetStringSpan &otherStri
if(otherStringSpan.pSpanNotSet==&otherStringSpan.spanSet) {
pSpanNotSet=&spanSet;
} else {
pSpanNotSet=(UnicodeSet *)otherStringSpan.pSpanNotSet->clone();
pSpanNotSet=otherStringSpan.pSpanNotSet->clone();
}
// Allocate a block of meta data.
@@ -436,7 +436,7 @@ void UnicodeSetStringSpan::addToSpanNotSet(UChar32 c) {
if(spanSet.contains(c)) {
return; // Nothing to do.
}
UnicodeSet *newSet=(UnicodeSet *)spanSet.cloneAsThawed();
UnicodeSet *newSet=spanSet.cloneAsThawed();
if(newSet==NULL) {
return; // Out of memory.
} else {
+1 -1
View File
@@ -332,7 +332,7 @@ Replaceable::clone() const {
}
// UnicodeString overrides clone() with a real implementation
Replaceable *
UnicodeString *
UnicodeString::clone() const {
return new UnicodeString(*this);
}
@@ -45,7 +45,7 @@ public:
WholeStringBreakIterator() : BreakIterator(), length(0) {}
~WholeStringBreakIterator() U_OVERRIDE;
UBool operator==(const BreakIterator&) const U_OVERRIDE;
BreakIterator *clone() const U_OVERRIDE;
WholeStringBreakIterator *clone() const U_OVERRIDE;
static UClassID U_EXPORT2 getStaticClassID();
UClassID getDynamicClassID() const U_OVERRIDE;
CharacterIterator &getText() const U_OVERRIDE;
@@ -62,9 +62,9 @@ public:
int32_t preceding(int32_t offset) U_OVERRIDE;
UBool isBoundary(int32_t offset) U_OVERRIDE;
int32_t next(int32_t n) U_OVERRIDE;
BreakIterator *createBufferClone(void *stackBuffer, int32_t &BufferSize,
UErrorCode &errorCode) U_OVERRIDE;
BreakIterator &refreshInputText(UText *input, UErrorCode &errorCode) U_OVERRIDE;
WholeStringBreakIterator *createBufferClone(void *stackBuffer, int32_t &BufferSize,
UErrorCode &errorCode) U_OVERRIDE;
WholeStringBreakIterator &refreshInputText(UText *input, UErrorCode &errorCode) U_OVERRIDE;
private:
int32_t length;
@@ -74,7 +74,7 @@ UOBJECT_DEFINE_RTTI_IMPLEMENTATION(WholeStringBreakIterator)
WholeStringBreakIterator::~WholeStringBreakIterator() {}
UBool WholeStringBreakIterator::operator==(const BreakIterator&) const { return FALSE; }
BreakIterator *WholeStringBreakIterator::clone() const { return nullptr; }
WholeStringBreakIterator *WholeStringBreakIterator::clone() const { return nullptr; }
CharacterIterator &WholeStringBreakIterator::getText() const {
UPRV_UNREACHABLE; // really should not be called
@@ -113,14 +113,14 @@ int32_t WholeStringBreakIterator::preceding(int32_t /*offset*/) { return 0; }
UBool WholeStringBreakIterator::isBoundary(int32_t /*offset*/) { return FALSE; }
int32_t WholeStringBreakIterator::next(int32_t /*n*/) { return length; }
BreakIterator *WholeStringBreakIterator::createBufferClone(
WholeStringBreakIterator *WholeStringBreakIterator::createBufferClone(
void * /*stackBuffer*/, int32_t & /*BufferSize*/, UErrorCode &errorCode) {
if (U_SUCCESS(errorCode)) {
errorCode = U_UNSUPPORTED_ERROR;
}
return nullptr;
}
BreakIterator &WholeStringBreakIterator::refreshInputText(
WholeStringBreakIterator &WholeStringBreakIterator::refreshInputText(
UText * /*input*/, UErrorCode &errorCode) {
if (U_SUCCESS(errorCode)) {
errorCode = U_UNSUPPORTED_ERROR;
+9 -9
View File
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for ICU 64.2.
# Generated by GNU Autoconf 2.69 for ICU 65.1.
#
# Report bugs to <http://icu-project.org/bugs>.
#
@@ -582,8 +582,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='ICU'
PACKAGE_TARNAME='International Components for Unicode'
PACKAGE_VERSION='64.2'
PACKAGE_STRING='ICU 64.2'
PACKAGE_VERSION='65.1'
PACKAGE_STRING='ICU 65.1'
PACKAGE_BUGREPORT='http://icu-project.org/bugs'
PACKAGE_URL='http://icu-project.org'
@@ -1362,7 +1362,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures ICU 64.2 to adapt to many kinds of systems.
\`configure' configures ICU 65.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1428,7 +1428,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of ICU 64.2:";;
short | recursive ) echo "Configuration of ICU 65.1:";;
esac
cat <<\_ACEOF
@@ -1566,7 +1566,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
ICU configure 64.2
ICU configure 65.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2312,7 +2312,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by ICU $as_me 64.2, which was
It was created by ICU $as_me 65.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -8532,7 +8532,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by ICU $as_me 64.2, which was
This file was extended by ICU $as_me 65.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -8586,7 +8586,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
ICU config.status 64.2
ICU config.status 65.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
de{
Version{"2.1.19.14"}
Version{"36"}
exceptions{
SentenceBreak:array{
"Port.",
@@ -370,6 +370,7 @@
ອາທາລີຢາ
ອາທາຣີມ
ອາແຖນ
ອາແມນ
ອັດລາຍ
ອັດຕະໂຣດເບັດໂຢອາບ
ອາດໂຣດໂຊຟັນ
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
el{
Version{"2.1.19.14"}
Version{"36"}
boundaries{
sentence:process(dependency){"sent_el.brk"}
}
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
en{
Version{"2.1.19.14"}
Version{"36"}
exceptions{
SentenceBreak:array{
"L.P.",
+1 -1
View File
@@ -1,5 +1,5 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
en_US{
Version{"2.1.19.14"}
Version{"36"}
}
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
en_US_POSIX{
Version{"2.1.29.25"}
Version{"36"}
boundaries{
word:process(dependency){"word_POSIX.brk"}
}
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
es{
Version{"2.1.19.14"}
Version{"36"}
exceptions{
SentenceBreak:array{
"Rdos.",
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
fr{
Version{"2.1.19.14"}
Version{"36"}
exceptions{
SentenceBreak:array{
"aux.",
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
it{
Version{"2.1.19.14"}
Version{"36"}
exceptions{
SentenceBreak:array{
"N.B.",
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
ja{
Version{"2.1.44.56"}
Version{"36"}
boundaries{
line:process(dependency){"line_normal.brk"}
line_loose:process(dependency){"line_loose_cj.brk"}
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
pt{
Version{"2.1.19.14"}
Version{"36"}
exceptions{
SentenceBreak:array{
"psicol.",
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
root{
Version{"2.1.49.32"}
Version{"36"}
boundaries{
grapheme:process(dependency){"char.brk"}
line:process(dependency){"line.brk"}
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
ru{
Version{"2.1.19.14"}
Version{"36"}
exceptions{
SentenceBreak:array{
"\u0440\u0443\u0431.",
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
zh{
Version{"2.1.19.14"}
Version{"36"}
boundaries{
line:process(dependency){"line_cj.brk"}
line_loose:process(dependency){"line_loose_cj.brk"}
+1 -1
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
zh_Hant{
Version{"2.1.36.98"}
Version{"36"}
boundaries{
line:process(dependency){"line_cj.brk"}
line_loose:process(dependency){"line_loose_cj.brk"}
+63 -38
View File
@@ -43,13 +43,17 @@
</condition>
<fail unless="is.cldr.classes.set" message="CLDR classes not found in ${cldrtools.dir}. Please either set the CLDR_CLASSES environment variable or build cldr.jar."/>
<echo message="java home: ${java.home}"/>
<property name="env.CLDR_TMP_DIR" location="${env.CLDR_DIR}/../cldr-aux" /> <!-- Hack: see CLDRPaths -->
<property name="cldr.prod.dir" location="${env.CLDR_TMP_DIR}/production/" />
<echo message="java home: ${java.home}"/>
<echo message="java version: ${java.version}"/>
<echo message="ant java version: ${ant.java.version}"/>
<echo message="${ant.version}"/>
<echo message="cldr tools dir: ${cldrtools.dir}"/>
<echo message="cldr tools jar: ${cldrtools.jar}"/>
<echo message="cldr tools classes: ${env.CLDR_CLASSES}"/>
<echo message="CLDR_TMP_DIR: ${env.CLDR_TMP_DIR} "/>
<echo message="cldr.prod.dir (production data): ${cldr.prod.dir}"/>
</target>
<target name="setup" depends="init">
<taskdef name="cldr-build" classname="org.unicode.cldr.ant.CLDRBuild">
@@ -60,11 +64,31 @@
<fileset dir="${cldrtools.dir}/libs" includes="*.jar"/>
</classpath>
</taskdef>
<mkdir dir="${env.CLDR_TMP_DIR}"/> <!-- make sure parent dir exists -->
<condition property="cldrprod.exists">
<available file="${cldr.prod.dir}" type="dir"/>
</condition>
</target>
<target name="cleanprod" depends="init, setup" if="cldrprod.exists">
<delete dir="${cldr.prod.dir}" />
</target>
<target name="proddata" depends="init,setup" unless="cldrprod.exists">
<echo message="Rebuilding ${cldr.prod.dir} - takes a while!"/>
<!-- setup prod data -->
<java fork="true" jar="${cldrtools.jar}">
<arg value="org.unicode.cldr.tool.GenerateProductionData" /> <!-- change to short alias 'proddata' or similar when annotated -->
<arg value="-v" />
<!-- TODO: for now, we just let the default source/target paths used.
could set '-s' / '-d' for explicit source/dest -->
</java>
</target>
<!-- target for generating ICU data -->
<target name="all" depends="locales, collation, rbnf, supplementalData, metadata, metaZones, windowsZones, likelySubtags, plurals, pluralRanges, numberingSystems, translit, brkitr, keyTypeData, genderList, dayPeriods" />
<!-- parallel target -->
<target name="pall" depends="init">
<target name="pall" depends="init,setup,proddata">
<parallel threadsPerProcessor ="1">
<sequential>
<ant target='locales' />
@@ -101,15 +125,15 @@
</parallel>
</target>
<target name="locales" depends="init,setup" description="builds locale files in ICU text format">
<target name="locales" depends="init,setup,proddata" description="builds locale files in ICU text format">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" srcFile=".*xml" destFile=".*txt">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="--sourcedir" value="${env.CLDR_DIR}/common/main" />
<arg name="--sourcedir" value="${cldr.prod.dir}/common/main" />
<arg name="--destdir" value="${env.ICU4C_DIR}/source/data/locales"/>
<arg name="--specialsdir" value="${env.ICU4C_DIR}/source/data/xml/main"/>
<arg name="--supplementaldir" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="--supplementaldir" value="${cldr.prod.dir}/common/supplemental" />
<arg name="--type" value="locales"/>
<arg name="--depgraphfile" value="../../python/icutools/databuilder/locale_dependencies.py"/>
</args>
@@ -117,6 +141,7 @@
<remap sourcePath="/Keys" targetDir="lang" />
<remap sourcePath="/Languages" targetDir="lang" />
<remap sourcePath="/Languages%long" targetDir="lang" />
<remap sourcePath="/Languages%menu" targetDir="lang" />
<remap sourcePath="/Languages%short" targetDir="lang" />
<remap sourcePath="/Languages%secondary" targetDir="lang" />
<remap sourcePath="/Languages%variant" targetDir="lang" />
@@ -154,11 +179,11 @@
</run>
</cldr-build>
</target>
<target name="collation" depends="init,setup" description="builds collation files in ICU text format">
<target name="collation" depends="init,setup,proddata" description="builds collation files in ICU text format">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" srcFile=".*xml" destFile=".*txt">
<run>
<args>
<arg name="--sourcedir" value="${env.CLDR_DIR}/common/collation" />
<arg name="--sourcedir" value="${cldr.prod.dir}/common/collation" />
<arg name="--destdir" value="${env.ICU4C_DIR}/source/data/coll"/>
<arg name="--specialsdir" value="${env.ICU4C_DIR}/source/data/xml/collation"/>
<arg name="--type" value="collation"/>
@@ -169,11 +194,11 @@
</run>
</cldr-build>
</target>
<target name="rbnf" depends="init,setup" description="builds rbnf files in ICU text format">
<target name="rbnf" depends="init,setup,proddata" description="builds rbnf files in ICU text format">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" srcFile=".*xml" destFile=".*txt">
<run>
<args>
<arg name="--sourcedir" value="${env.CLDR_DIR}/common/rbnf" />
<arg name="--sourcedir" value="${cldr.prod.dir}/common/rbnf" />
<arg name="--destdir" value="${env.ICU4C_DIR}/source/data/rbnf"/>
<arg name="--specialsdir" value="${env.ICU4C_DIR}/source/data/xml/rbnf"/>
<arg name="--type" value="rbnf" />
@@ -184,12 +209,12 @@
</run>
</cldr-build>
</target>
<target name="supplementalData" depends="init,setup" description="builds supplementalData.txt from supplementalData.xml">
<target name="supplementalData" depends="init,setup,proddata" description="builds supplementalData.txt from supplementalData.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="supplementalData.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="supplementalData"/>
</args>
@@ -200,119 +225,119 @@
</run>
</cldr-build>
</target>
<target name="metadata" depends="init,setup" description="builds metadata.txt from supplementalMetadata.xml">
<target name="metadata" depends="init,setup,proddata" description="builds metadata.txt from supplementalMetadata.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="metadata.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="metadata"/>
</args>
</run>
</cldr-build>
</target>
<target name="metaZones" depends="init,setup" description="builds metaZones.txt from metaZones.xml">
<target name="metaZones" depends="init,setup,proddata" description="builds metaZones.txt from metaZones.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="metaZones.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="metaZones"/>
</args>
</run>
</cldr-build>
</target>
<target name="windowsZones" depends="init,setup" description="builds windowsZones.txt from windowsZones.xml">
<target name="windowsZones" depends="init,setup,proddata" description="builds windowsZones.txt from windowsZones.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="windowsZones.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="windowsZones"/>
</args>
</run>
</cldr-build>
</target>
<target name="likelySubtags" depends="init,setup" description="builds likelySubtags.txt from likelySubtags.xml">
<target name="likelySubtags" depends="init,setup,proddata" description="builds likelySubtags.txt from likelySubtags.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="likelySubtags.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="likelySubtags"/>
</args>
</run>
</cldr-build>
</target>
<target name="plurals" depends="init,setup" description="builds plurals.txt from plurals.xml">
<target name="plurals" depends="init,setup,proddata" description="builds plurals.txt from plurals.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="plurals.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="plurals"/>
</args>
</run>
</cldr-build>
</target>
<target name="pluralRanges" depends="init,setup" description="builds pluralRanges.txt from pluralRanges.xml">
<target name="pluralRanges" depends="init,setup,proddata" description="builds pluralRanges.txt from pluralRanges.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="pluralRanges.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="pluralRanges"/>
</args>
</run>
</cldr-build>
</target>
<target name="numberingSystems" depends="init,setup" description="builds numberingSystems.txt from numberingSystems.xml">
<target name="numberingSystems" depends="init,setup,proddata" description="builds numberingSystems.txt from numberingSystems.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="numberingSystems.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="numberingSystems"/>
</args>
</run>
</cldr-build>
</target>
<target name="genderList" depends="init,setup" description="builds genderList.txt from genderList.xml">
<target name="genderList" depends="init,setup,proddata" description="builds genderList.txt from genderList.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="genderList.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="genderList"/>
</args>
</run>
</cldr-build>
</target>
<target name="dayPeriods" depends="init,setup" description="builds dayPeriods.txt from dayPeriods.xml">
<target name="dayPeriods" depends="init,setup,proddata" description="builds dayPeriods.txt from dayPeriods.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" destFile="dayPeriods.txt" noArgs="true">
<!-- launch the tool and generate the data after reading the config file -->
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/supplemental" />
<arg name="-s" value="${cldr.prod.dir}/common/supplemental" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="dayPeriods"/>
</args>
</run>
</cldr-build>
</target>
<target name="brkitr" depends="init,setup" description="builds break iterator files in ICU text format">
<target name="brkitr" depends="init,setup,proddata" description="builds break iterator files in ICU text format">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" srcFile=".*xml" destFile=".*txt">
<run>
<args>
<arg name="--sourcedir" value="${env.CLDR_DIR}/common/segments"/>
<arg name="--sourcedir" value="${cldr.prod.dir}/common/segments"/>
<arg name="--specialsdir" value="${env.ICU4C_DIR}/source/data/xml/brkitr"/>
<arg name="--destdir" value="${env.ICU4C_DIR}/source/data/brkitr"/>
<arg name="--type" value="brkitr" />
@@ -325,11 +350,11 @@
</cldr-build>
</target>
<target name="keyTypeData" depends="init,setup" description="builds keyTypeData.txt and timezoneTypes.txt from bcp47/*.xml">
<target name="keyTypeData" depends="init,setup,proddata" description="builds keyTypeData.txt and timezoneTypes.txt from bcp47/*.xml">
<cldr-build toolName="org.unicode.cldr.icu.NewLdml2IcuConverter" noArgs="true">
<run>
<args>
<arg name="-s" value="${env.CLDR_DIR}/common/bcp47" />
<arg name="-s" value="${cldr.prod.dir}/common/bcp47" />
<arg name="-d" value="${env.ICU4C_DIR}/source/data/misc"/>
<arg name="-t" value="keyTypeData"/>
</args>
@@ -337,12 +362,12 @@
</cldr-build>
</target>
<target name="translit" depends="init,setup" description="builds collation files in ICU text format">
<target name="translit" depends="init,setup,proddata" description="builds collation files in ICU text format">
<cldr-build toolName="org.unicode.cldr.icu.ConvertTransforms" srcFile=".*xml" destFile=".*txt">
<run>
<args>
<arg name="-m" value="((?!.*(Canadian|Ethiopic|ug-Latin).*).*)" />
<arg name="--sourcedir" value="${env.CLDR_DIR}/common/transforms" />
<arg name="--sourcedir" value="${cldr.prod.dir}/common/transforms" />
<arg name="--destdir" value="${env.ICU4C_DIR}/source/data/translit"/>
<arg name="--commentSkip"/>
<arg name="--approvedOnly"/>
@@ -354,11 +379,11 @@
</target>
<!-- we don't generate en.txt or el.txt - so don't change trnsfiles.mk for now. -->
<!--
<target name="trnsfiles" depends="init, setup" description="builds trnsfiles.mk">
<target name="trnsfiles" depends="init, setup,proddata" description="builds trnsfiles.mk">
<cldr-build toolName="org.unicode.cldr.icu.ConvertTransforms" srcFile=".*xml" destFile="trnsfiles.mk" noArgs="true">
<run>
<args> [ double hyphen not allowed in comments - transpose -" to fix below ]
<arg name=-"-sourcedir" value="${env.CLDR_DIR}/common/transforms" />
<arg name=-"-sourcedir" value="${cldr.prod.dir}/common/transforms" />
<arg name=-"-destdir" value="${env.ICU4C_DIR}/source/data/translit"/>
<arg name=-"-commentSkip"/>
<arg name=-"-writeIndex"/>
@@ -366,7 +391,7 @@
</run>
</cldr-build>
</target> -->
<target name="clean" depends="init, setup" description="deletes all txt files and mk files from coll and locales directories">
<target name="clean" depends="init, setup, cleanprod" description="deletes all txt files and mk files from coll and locales directories">
<delete>
<fileset id="locales" dir="${env.ICU4C_DIR}/source/data/locales">
<include name="*.txt" />
+36 -50
View File
@@ -35,21 +35,6 @@
#
#----
#
# CLDR dtd caching
#
# Parts of the build process (notably building the new ICU data files in step 4)
# require http: access to files in the CLDR repository; for example, processing
# the files in icu4c/source/data/xml/ may require access to
# http://www.unicode.org/repos/cldr/trunk/common/dtd/ldml.dtd
#
# Unless you cache the dtds locally by
# 1. creating a temp directory e.g. ~/.cldrdtd
# 2. setting CLDR_DTD_CACHE to it e.g. -DCLDR_DTD_CACHE=~/.cldrdtd
# your system will make excessive network requests, which will result in the
# Unicode server blocking access.
#
#----
#
# There are several environment variables that need to be defined.
#
# a) Java- and ant-related variables
@@ -62,9 +47,6 @@
#
# -Xmx4096m, to give Java more memory; otherwise it may run out
# of heap.
# -DCLDR_DTD_CACHE=~/.cldrdtd (or some other temp directory
# that already exists), to reduce frequent http: access to dtds
# and consequent blockage by Unicode server.
#
# b) CLDR-related variables
#
@@ -73,6 +55,16 @@
# CLDR_CLASSES: Path to the CLDR Tools classes directory. If not set, defaults
# to $CLDR_DIR/tools/java/classes
#
# CLDR_TMP_DIR: Parent of temporary CLDR production data.
# Defaults to $CLDR_DIR/../cldr-aux (sibling to CLDR_DIR).
#
# *** NOTE ***: In CLDR release-36-beta, the GenerateProductionData
# tool no longer generates data into $CLDR_TMP_DIR/production; instead
# it generates data into $CLDR_DIR/../cldr-staging/production. However
# the rest of the build still assumes that the generated data is in
# $CLDR_TMP_DIR/production. So CLDR_TMP_DIR must be defined to be
# $CLDR_DIR/../cldr-staging
#
# c) ICU-related variables
# These variables only need to be set if you're directly reusing the
# commands below.
@@ -140,38 +132,23 @@
# 1a. Java and ant variables, adjust for your system
export JAVA_HOME=`/usr/libexec/java_home`
export ANT_OPTS="-Xmx4096m -DCLDR_DTD_CACHE=~/.cldrdtd"
export ANT_OPTS="-Xmx4096m
# 1b. CLDR variables, adjust for your setup; with cygwin it might be e.g.
# CLDR_DIR=`cygpath -wp /build/cldr`
export CLDR_DIR=$HOME/cldr/trunk
export CLDR_DIR=$HOME/cldr-myfork
# 1c. ICU variables
export ICU4C_DIR=$HOME/icu/icu4c
export ICU4J_ROOT=$HOME/icu/icu4j
export ICU4C_DIR=$HOME/icu-myfork/icu4c
export ICU4J_ROOT=$HOME/icu-myfork/icu4j
# 1d. Pre-populate your CLDR DTD cache. You need to do this only once.
mkdir ~/.cldrdtd
cd ~/.cldrdtd
curl http://www.unicode.org/repos/cldr/trunk/common/dtd/ldml.dtd \
-o http___www.unicode.org_repos_cldr_trunk_common_dtd_ldml.dtd
# WAIT before hitting the server again; it WILL NOT give you a second chance!
sleep 5
curl http://www.unicode.org/repos/cldr/trunk/common/dtd/ldmlICU.dtd \
-o http___www.unicode.org_repos_cldr_trunk_common_dtd_ldmlICU.dtd
sleep 5
curl http://www.unicode.org/repos/cldr/trunk/common/dtd/ldmlSupplemental.dtd \
-o http___www.unicode.org_repos_cldr_trunk_common_dtd_ldmlSupplemental.dtd
# 2. Build the CLDR Java tools
# Optionally build the jar, but ant will look inside the classes directory anyway
# 2. Build the CLDR Java tools and jar
cd $CLDR_DIR/tools/java
ant all
#ant jar
ant jar
# 3. Configure ICU4C, build and test without new data first, to verify that
# there are no pre-existing errors. Here <platform> is the runConfigureICU
@@ -182,7 +159,7 @@ cd $ICU4C_DIR/source
make all 2>&1 | tee /tmp/icu4c-oldData-makeAll.txt
make check 2>&1 | tee /tmp/icu4c-oldData-makeCheck.txt
# 4. Build the new ICU4C data files; these include .txt files and .mk files.
# 4. Build the new ICU4C data files; these include .txt files and .py files.
# These new files will replace whatever was already present in the ICU4C sources.
# This process uses ant with ICU's data/build.xml and data/icu-config.xml to
# operate (via CLDR's ant/CLDRConverterTool.java and ant/CLDRBuild.java) the
@@ -193,22 +170,15 @@ make check 2>&1 | tee /tmp/icu4c-oldData-makeCheck.txt
# Running "ant setup" is not required, but it will print useful errors to
# debug issues with your path when it fails.
#
# If you see timeout errors when building the rbnf data, for example, then you are
# likely not using a CLDR dtd cache; see "CLDR dtd caching" above. If you are using
# a dtd cache and are still having timeout problems, the IP address of your system
# may have been blocked due to previous excessive access. In this case you may need
# to contact a Unicode sysadmin to restore access.
#
# Unfortunately, even if you have your DTD cache variable enabled, you may still
# get blocked and unable to populate your cache because of multiple successive
# requests to download the required DTD files. It is recommended that you
# pre-populate your cache as shown above in step 1d.
cd $ICU4C_DIR/source/data
ant setup
ant clean
ant all 2>&1 | tee /tmp/cldr-newData-buildLog.txt
# NOTE: if you change the CLDR data, please run "ant cleanprod" to clean out the
# temporary production data directory (usually $CLDR_DIR/../cldr-aux/production )
# 5. Check which data files have modifications, which have been added or removed
# (if there are no changes, you may not need to proceed further). Make sure the
# list seems reasonable.
@@ -291,6 +261,22 @@ ant check 2>&1 | tee /tmp/icu4j-newData-antCheck.txt
# more failures in ICU4C or ICU4J (except failures that were present before you
# began testing the new CLDR data).
# Note that certain data changes and related test failures may require the
# rebuilding of other kinds of data. For example:
# a) Changes to locale matching data may cause failures in e.g. the following:
# com.ibm.icu.dev.test.util.LocaleDistanceTest (testLoadedDataSameAsBuiltFromScratch)
# com.ibm.icu.dev.test.util.LocaleMatcherTest (testLikelySubtagsLoadedDataSameAsBuiltFromScratch)
# To address these requires building and running the tool
# icu4j/tools/misc/src/com/ibm/icu/dev/tool/locale/LocaleDistanceBuilder.java
# to regenerate the file icu4c/source/data/misc/langInfo.txt and then regenerating
# the ICU4J data jars.
# b) Changes to plurals data may cause failures in e.g. the following
# com.ibm.icu.dev.test.format.PluralRulesTest (TestLocales)
# To address these requires updating the LOCALE_SNAPSHOT data in
# icu4j/main/tests/core/src/com/ibm/icu/dev/test/format/PluralRulesTest.java
# by modifying the TestLocales() test there to run generateLOCALE_SNAPSHOT() and then
# copying in the updated data.
# 15. Check the file changes; then git add or git rm as necessary, and
# commit the changes.
+2 -2
View File
@@ -1,11 +1,11 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
af{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{"&N<<<ʼn"}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,11 +1,11 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
am{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{"[reorder Ethi]"}
Version{"35.1"}
Version{"36"}
}
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
ar{
Version{"2.1.19.14"}
Version{"36"}
collations{
compat{
Sequence{
@@ -9,7 +9,7 @@ ar{
"&ت<<ة<<<ﺔ<<<ﺓ"
"&ي<<ى<<<ﯨ<<<ﯩ<<<ﻰ<<<ﻯ<<<ﲐ<<<ﱝ"
}
Version{"35.1"}
Version{"36"}
}
standard{
Sequence{
@@ -397,7 +397,7 @@ ar{
"‎&ۓ‎=ﮰ‎=ﮱ"
"‎&ۀ‎=ﮤ‎=ﮥ"
}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
as{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{
@@ -11,7 +11,7 @@ as{
"&[before 1]ত<ৎ=ত্\u200D"
"&হ<ক্ষ"
}
Version{"35.1"}
Version{"36"}
}
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
az{
Version{"2.1.19.14"}
Version{"36"}
collations{
search{
Sequence{
@@ -9,7 +9,7 @@ az{
"[import az-u-co-standard]"
"[reorder others]"
}
Version{"35.1"}
Version{"36"}
}
standard{
Sequence{
@@ -26,7 +26,7 @@ az{
"&H<x<<<X"
"&Z<w<<<W"
}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
be{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{
@@ -9,7 +9,7 @@ be{
"&Е<ё<<<Ё"
"&у<ў<<<Ў"
}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,11 +1,11 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
bg{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{"[reorder Cyrl]"}
Version{"35.1"}
Version{"36"}
}
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
bn{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{
@@ -9,7 +9,7 @@ bn{
"[reorder Beng Deva Guru Gujr Orya Taml Telu Knda Mlym Sinh]"
"&ঔ<ং<ঃ<ঁ"
}
Version{"35.1"}
Version{"36"}
}
traditional{
Sequence{
@@ -629,7 +629,7 @@ bn{
"&যৌ<<<য়ৌ"
"&য্<<<য়্"
}
Version{"35.1"}
Version{"36"}
}
}
}
+1 -1
View File
@@ -1,5 +1,5 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
bo{
Version{"2.1.23.47"}
Version{"36"}
}
+3 -3
View File
@@ -1,15 +1,15 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
bs{
Version{"2.1.19.14"}
Version{"36"}
collations{
search{
Sequence{"[import hr-u-co-search]"}
Version{"35.1"}
Version{"36"}
}
standard{
Sequence{"[import hr]"}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,11 +1,11 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
bs_Cyrl{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{"[import sr]"}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,14 +1,14 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
ca{
Version{"2.1.19.14"}
Version{"36"}
collations{
search{
Sequence{
"[import und-u-co-search]"
"&L<ŀ=l·<<<Ŀ=L·"
}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,11 +1,11 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
ceb{
Version{"2.1.48.67"}
Version{"36"}
collations{
standard{
Sequence{"&N<ñ<<<Ñ<ng<<<Ng<<<NG"}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,11 +1,11 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
chr{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{"[reorder Cher]"}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
cs{
Version{"2.1.28.26"}
Version{"36"}
collations{
standard{
Sequence{
@@ -11,7 +11,7 @@ cs{
"&S<š<<<Š"
"&Z<ž<<<Ž"
}
Version{"35.1"}
Version{"36"}
}
}
}
+2 -2
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
cy{
Version{"2.1.19.14"}
Version{"36"}
collations{
standard{
Sequence{
@@ -14,7 +14,7 @@ cy{
"&R<rh<<<Rh<<<RH"
"&T<th<<<Th<<<TH"
}
Version{"35.1"}
Version{"36"}
}
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
da{
Version{"2.1.34.8"}
Version{"36"}
collations{
search{
Sequence{
@@ -9,7 +9,7 @@ da{
"[import da-u-co-standard]"
"[caseFirst off]"
}
Version{"35.1"}
Version{"36"}
}
standard{
Sequence{
@@ -21,7 +21,7 @@ da{
"&[before 1]ǀ<æ<<<Æ<<ä<<<Ä<ø<<<Ø<<ö<<<Ö<<ő<<<Ő<å<<<Å<<<aa<<<Aa<<<AA"
"&oe<<œ<<<Œ"
}
Version{"35.1"}
Version{"36"}
}
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
// © 2016 and later: Unicode, Inc. and others.
// License & terms of use: http://www.unicode.org/copyright.html#License
de{
Version{"2.1.19.14"}
Version{"36"}
collations{
phonebook{
Sequence{
@@ -9,14 +9,14 @@ de{
"&OE<<ö<<<Ö"
"&UE<<ü<<<Ü"
}
Version{"35.1"}
Version{"36"}
}
search{
Sequence{
"[import und-u-co-search]"
"[import de-u-co-phonebk]"
}
Version{"35.1"}
Version{"36"}
}
}
}

Some files were not shown because too many files have changed in this diff Show More