From d7b1900ab5314b3fdaa673be70ebf6d61107250c Mon Sep 17 00:00:00 2001 From: Hyunjee Kim Date: Tue, 23 Oct 2018 15:36:52 +0900 Subject: [PATCH] Imported Upstream version 61.1 Change-Id: I1dfc7067dcc5f3c47e1057a93679cebb372607d1 Signed-off-by: Hyunjee Kim --- APIChangeReport.html | 1099 ++-- LICENSE | 33 +- as_is/bomlist.txt | 317 +- icu4c.css | 4 +- packaging/distrelease.ps1 | 54 + packaging/rpm/icu.spec | 230 - readme.html | 241 +- .../Build.Windows.ProjectConfiguration.props | 129 + .../Build.Windows.UWP.ProjectConfiguration.props | 41 + .../Windows.CopyUnicodeHeaderFiles.targets | 27 + source/allinone/allinone.sln | 132 +- source/common/bmpset.cpp | 4 +- source/common/brkeng.cpp | 65 +- source/common/brkeng.h | 33 +- source/common/brkiter.cpp | 13 +- source/common/bytesinkutil.cpp | 28 +- source/common/bytesinkutil.h | 10 +- source/common/cmemory.cpp | 24 - source/common/cmemory.h | 21 - source/common/common.vcxproj | 1630 +----- source/common/common_uwp.vcxproj | 392 +- source/common/cstring.h | 18 - source/common/dictbe.cpp | 29 +- source/common/dictbe.h | 31 +- source/common/filteredbrk.cpp | 5 + source/common/rbbi.cpp | 195 +- source/common/rbbi_cache.cpp | 47 +- source/common/rbbi_cache.h | 2 +- source/common/rbbidata.cpp | 4 +- source/common/rbbidata.h | 16 +- source/common/rbbirb.cpp | 45 +- source/common/rbbirb.h | 9 + source/common/rbbiscan.cpp | 31 +- source/common/rbbisetb.cpp | 55 +- source/common/rbbisetb.h | 10 +- source/common/rbbitblb.cpp | 144 +- source/common/rbbitblb.h | 45 +- source/common/sharedobject.cpp | 69 +- source/common/sharedobject.h | 116 +- source/common/sprpimpl.h | 1 - source/common/ubidi.cpp | 7 +- source/common/ubidi_props.cpp | 105 +- source/common/ubidi_props.h | 28 +- source/common/ubidiimp.h | 2 - source/common/ucase.cpp | 165 +- source/common/ucase.h | 35 + source/common/ucasemap.cpp | 272 +- source/common/ucasemap_imp.h | 9 - source/common/uchar.cpp | 8 - source/common/ucmndata.cpp | 6 +- source/common/ucmndata.h | 6 +- source/common/ucnv2022.cpp | 4 +- source/common/ucnv_err.cpp | 32 +- source/common/ucnv_u32.cpp | 8 +- source/common/ucnv_u8.cpp | 54 +- source/common/ucnvlat1.cpp | 8 +- source/common/ucnvmbcs.cpp | 10 +- source/common/ucurr.cpp | 29 +- source/common/unicode/brkiter.h | 15 +- source/common/unicode/bytestriebuilder.h | 1 - source/common/unicode/casemap.h | 24 +- source/common/unicode/char16ptr.h | 44 +- source/common/unicode/chariter.h | 2 +- source/common/unicode/dtintrv.h | 2 +- source/common/unicode/edits.h | 58 +- source/common/unicode/filteredbrk.h | 6 +- source/common/unicode/locid.h | 4 +- source/common/unicode/parseerr.h | 4 +- source/common/unicode/platform.h | 12 +- source/common/unicode/putil.h | 6 +- source/common/unicode/rbbi.h | 124 +- source/common/unicode/resbund.h | 2 +- source/common/unicode/schriter.h | 2 +- source/common/unicode/ubidi.h | 4 +- source/common/unicode/ubrk.h | 18 +- source/common/unicode/uchar.h | 7 +- source/common/unicode/uclean.h | 16 +- source/common/unicode/ucnv.h | 8 +- source/common/unicode/ucnv_err.h | 12 +- source/common/unicode/ucurr.h | 13 + source/common/unicode/umachine.h | 6 +- source/common/unicode/uniset.h | 1 + source/common/unicode/unistr.h | 54 +- source/common/unicode/urename.h | 5 +- source/common/unicode/ures.h | 16 +- source/common/unicode/uscript.h | 2 +- source/common/unicode/ushape.h | 2 +- source/common/unicode/usprep.h | 10 +- source/common/unicode/ustring.h | 4 +- source/common/unicode/utext.h | 8 +- source/common/unicode/utf8.h | 166 +- source/common/unicode/utrace.h | 4 +- source/common/unicode/utypes.h | 17 +- source/common/unicode/uvernum.h | 25 +- source/common/unicode/uversion.h | 10 +- source/common/unifiedcache.cpp | 318 +- source/common/unifiedcache.h | 210 +- source/common/uniset_closure.cpp | 2 +- source/common/uniset_props.cpp | 28 +- source/common/uprops.cpp | 16 +- source/common/ushape.cpp | 6 +- source/common/usprep.cpp | 6 +- source/common/ustr_wcs.cpp | 2 +- source/common/ustrcase.cpp | 305 +- source/common/utf_impl.cpp | 87 +- source/common/utrie.h | 2 +- source/common/uts46.cpp | 5 +- source/common/utypes.cpp | 3 +- source/config.guess | 417 +- source/config.sub | 130 +- source/config/dist.mk | 14 +- source/configure | 18 +- source/data/Makefile.in | 38 +- source/data/brkitr/brkfiles.mk | 2 +- source/data/cldr-icu-readme.txt | 23 +- source/data/coll/af.txt | 2 +- source/data/coll/am.txt | 2 +- source/data/coll/ar.txt | 4 +- source/data/coll/as.txt | 2 +- source/data/coll/az.txt | 4 +- source/data/coll/be.txt | 2 +- source/data/coll/bg.txt | 2 +- source/data/coll/bn.txt | 4 +- source/data/coll/bs.txt | 4 +- source/data/coll/bs_Cyrl.txt | 2 +- source/data/coll/ca.txt | 2 +- source/data/coll/chr.txt | 2 +- source/data/coll/colfiles.mk | 2 +- source/data/coll/cs.txt | 2 +- source/data/coll/cy.txt | 2 +- source/data/coll/da.txt | 4 +- source/data/coll/de.txt | 4 +- source/data/coll/de_AT.txt | 2 +- source/data/coll/dsb.txt | 2 +- source/data/coll/ee.txt | 2 +- source/data/coll/el.txt | 2 +- source/data/coll/en_US_POSIX.txt | 2 +- source/data/coll/eo.txt | 2 +- source/data/coll/es.txt | 6 +- source/data/coll/et.txt | 2 +- source/data/coll/fa.txt | 2 +- source/data/coll/fa_AF.txt | 2 +- source/data/coll/fi.txt | 6 +- source/data/coll/fil.txt | 2 +- source/data/coll/fo.txt | 4 +- source/data/coll/fr_CA.txt | 2 +- source/data/coll/gl.txt | 4 +- source/data/coll/gu.txt | 2 +- source/data/coll/ha.txt | 2 +- source/data/coll/haw.txt | 2 +- source/data/coll/he.txt | 4 +- source/data/coll/hi.txt | 2 +- source/data/coll/hr.txt | 4 +- source/data/coll/hsb.txt | 2 +- source/data/coll/hu.txt | 2 +- source/data/coll/hy.txt | 2 +- source/data/coll/ig.txt | 2 +- source/data/coll/is.txt | 4 +- source/data/coll/ja.txt | 6 +- source/data/coll/ka.txt | 2 +- source/data/coll/kk.txt | 2 +- source/data/coll/kl.txt | 4 +- source/data/coll/km.txt | 2 +- source/data/coll/kn.txt | 4 +- source/data/coll/ko.txt | 8 +- source/data/coll/kok.txt | 2 +- source/data/coll/ky.txt | 2 +- source/data/coll/lkt.txt | 2 +- source/data/coll/ln.txt | 4 +- source/data/coll/lo.txt | 2 +- source/data/coll/lt.txt | 2 +- source/data/coll/lv.txt | 2 +- source/data/coll/mk.txt | 2 +- source/data/coll/ml.txt | 2 +- source/data/coll/mn.txt | 2 +- source/data/coll/mr.txt | 2 +- source/data/coll/mt.txt | 2 +- source/data/coll/my.txt | 2 +- source/data/coll/nb.txt | 4 +- source/data/coll/ne.txt | 2 +- source/data/coll/nn.txt | 4 +- source/data/coll/om.txt | 2 +- source/data/coll/or.txt | 2 +- source/data/coll/pa.txt | 2 +- source/data/coll/pl.txt | 2 +- source/data/coll/ps.txt | 2 +- source/data/coll/ro.txt | 2 +- source/data/coll/root.txt | 10 +- source/data/coll/ru.txt | 2 +- source/data/coll/se.txt | 4 +- source/data/coll/si.txt | 4 +- source/data/coll/sk.txt | 4 +- source/data/coll/sl.txt | 2 +- source/data/coll/smn.txt | 4 +- source/data/coll/sq.txt | 2 +- source/data/coll/sr.txt | 2 +- source/data/coll/sr_Latn.txt | 4 +- source/data/coll/sv.txt | 6 +- source/data/coll/ta.txt | 2 +- source/data/coll/te.txt | 2 +- source/data/coll/th.txt | 2 +- source/data/coll/to.txt | 2 +- source/data/coll/tr.txt | 4 +- source/data/coll/ug.txt | 2 +- source/data/coll/uk.txt | 2 +- source/data/coll/ur.txt | 2 +- source/data/coll/uz.txt | 2 +- source/data/coll/vi.txt | 4 +- source/data/coll/wo.txt | 2 +- source/data/coll/yi.txt | 4 +- source/data/coll/yo.txt | 2 +- source/data/coll/zh.txt | 14 +- source/data/curr/af.txt | 20 +- source/data/curr/af_NA.txt | 2 +- source/data/curr/agq.txt | 10 +- source/data/curr/ak.txt | 10 +- source/data/curr/am.txt | 20 +- source/data/curr/ar.txt | 28 +- source/data/curr/ar_AE.txt | 2 +- source/data/curr/ar_DJ.txt | 2 +- source/data/curr/ar_ER.txt | 2 +- source/data/curr/ar_KM.txt | 2 +- source/data/curr/ar_LB.txt | 2 +- source/data/curr/ar_SO.txt | 2 +- source/data/curr/ar_SS.txt | 2 +- source/data/curr/as.txt | 952 +++- source/data/curr/asa.txt | 10 +- source/data/curr/ast.txt | 20 +- source/data/curr/az.txt | 26 +- source/data/curr/az_Cyrl.txt | 2 +- source/data/curr/az_Latn.txt | 2 +- source/data/curr/bas.txt | 10 +- source/data/curr/be.txt | 24 +- source/data/curr/bem.txt | 2 +- source/data/curr/bez.txt | 10 +- source/data/curr/bg.txt | 20 +- source/data/curr/bm.txt | 10 +- source/data/curr/bn.txt | 20 +- source/data/curr/bo.txt | 2 +- source/data/curr/bo_IN.txt | 2 +- source/data/curr/br.txt | 26 +- source/data/curr/brx.txt | 10 +- source/data/curr/bs.txt | 22 +- source/data/curr/bs_Cyrl.txt | 20 +- source/data/curr/bs_Latn.txt | 2 +- source/data/curr/ca.txt | 20 +- source/data/curr/ca_FR.txt | 2 +- source/data/curr/ccp.txt | 20 +- source/data/curr/ce.txt | 20 +- source/data/curr/cgg.txt | 10 +- source/data/curr/chr.txt | 34 +- source/data/curr/ckb.txt | 2 +- source/data/curr/cs.txt | 24 +- source/data/curr/cy.txt | 28 +- source/data/curr/da.txt | 20 +- source/data/curr/dav.txt | 10 +- source/data/curr/de.txt | 20 +- source/data/curr/de_CH.txt | 10 +- source/data/curr/de_LI.txt | 2 +- source/data/curr/de_LU.txt | 2 +- source/data/curr/dje.txt | 10 +- source/data/curr/dsb.txt | 22 +- source/data/curr/dua.txt | 2 +- source/data/curr/dyo.txt | 6 +- source/data/curr/dz.txt | 2 +- source/data/curr/ebu.txt | 10 +- source/data/curr/ee.txt | 18 +- source/data/curr/el.txt | 20 +- source/data/curr/en.txt | 22 +- source/data/curr/en_001.txt | 2 +- source/data/curr/en_150.txt | 2 +- source/data/curr/en_AG.txt | 2 +- source/data/curr/en_AI.txt | 2 +- source/data/curr/en_AT.txt | 2 +- source/data/curr/en_AU.txt | 2 +- source/data/curr/en_BB.txt | 2 +- source/data/curr/en_BE.txt | 2 +- source/data/curr/en_BI.txt | 2 +- source/data/curr/en_BM.txt | 2 +- source/data/curr/en_BS.txt | 2 +- source/data/curr/en_BW.txt | 2 +- source/data/curr/en_BZ.txt | 2 +- source/data/curr/en_CA.txt | 2 +- source/data/curr/en_CC.txt | 2 +- source/data/curr/en_CH.txt | 2 +- source/data/curr/en_CK.txt | 2 +- source/data/curr/en_CM.txt | 2 +- source/data/curr/en_CX.txt | 2 +- source/data/curr/en_CY.txt | 2 +- source/data/curr/en_DE.txt | 2 +- source/data/curr/en_DG.txt | 2 +- source/data/curr/en_DK.txt | 2 +- source/data/curr/en_DM.txt | 2 +- source/data/curr/en_ER.txt | 2 +- source/data/curr/en_FI.txt | 2 +- source/data/curr/en_FJ.txt | 2 +- source/data/curr/en_FK.txt | 2 +- source/data/curr/en_FM.txt | 2 +- source/data/curr/en_GB.txt | 2 +- source/data/curr/en_GD.txt | 2 +- source/data/curr/en_GG.txt | 2 +- source/data/curr/en_GH.txt | 2 +- source/data/curr/en_GI.txt | 2 +- source/data/curr/en_GM.txt | 2 +- source/data/curr/en_GY.txt | 2 +- source/data/curr/en_HK.txt | 2 +- source/data/curr/en_IE.txt | 2 +- source/data/curr/en_IL.txt | 2 +- source/data/curr/en_IM.txt | 2 +- source/data/curr/en_IN.txt | 2 +- source/data/curr/en_IO.txt | 2 +- source/data/curr/en_JE.txt | 2 +- source/data/curr/en_JM.txt | 2 +- source/data/curr/en_KE.txt | 2 +- source/data/curr/en_KI.txt | 2 +- source/data/curr/en_KN.txt | 2 +- source/data/curr/en_KY.txt | 2 +- source/data/curr/en_LC.txt | 2 +- source/data/curr/en_LR.txt | 2 +- source/data/curr/en_LS.txt | 2 +- source/data/curr/en_MG.txt | 2 +- source/data/curr/en_MO.txt | 2 +- source/data/curr/en_MS.txt | 2 +- source/data/curr/en_MT.txt | 2 +- source/data/curr/en_MU.txt | 2 +- source/data/curr/en_MW.txt | 2 +- source/data/curr/en_MY.txt | 2 +- source/data/curr/en_NA.txt | 2 +- source/data/curr/en_NF.txt | 2 +- source/data/curr/en_NG.txt | 2 +- source/data/curr/en_NL.txt | 2 +- source/data/curr/en_NR.txt | 2 +- source/data/curr/en_NU.txt | 2 +- source/data/curr/en_NZ.txt | 2 +- source/data/curr/en_PG.txt | 2 +- source/data/curr/en_PH.txt | 2 +- source/data/curr/en_PK.txt | 2 +- source/data/curr/en_PN.txt | 2 +- source/data/curr/en_PW.txt | 2 +- source/data/curr/en_RW.txt | 2 +- source/data/curr/en_SB.txt | 2 +- source/data/curr/en_SC.txt | 2 +- source/data/curr/en_SD.txt | 2 +- source/data/curr/en_SE.txt | 2 +- source/data/curr/en_SG.txt | 2 +- source/data/curr/en_SH.txt | 2 +- source/data/curr/en_SI.txt | 2 +- source/data/curr/en_SL.txt | 2 +- source/data/curr/en_SS.txt | 2 +- source/data/curr/en_SX.txt | 2 +- source/data/curr/en_SZ.txt | 2 +- source/data/curr/en_TC.txt | 2 +- source/data/curr/en_TK.txt | 2 +- source/data/curr/en_TO.txt | 2 +- source/data/curr/en_TT.txt | 2 +- source/data/curr/en_TV.txt | 2 +- source/data/curr/en_TZ.txt | 2 +- source/data/curr/en_UG.txt | 2 +- source/data/curr/en_VC.txt | 2 +- source/data/curr/en_VG.txt | 2 +- source/data/curr/en_VU.txt | 2 +- source/data/curr/en_WS.txt | 2 +- source/data/curr/en_ZA.txt | 2 +- source/data/curr/en_ZM.txt | 2 +- source/data/curr/en_ZW.txt | 2 +- source/data/curr/eo.txt | 2 +- source/data/curr/es.txt | 20 +- source/data/curr/es_419.txt | 2 +- source/data/curr/es_AR.txt | 2 +- source/data/curr/es_BO.txt | 2 +- source/data/curr/es_BR.txt | 2 +- source/data/curr/es_BZ.txt | 2 +- source/data/curr/es_CL.txt | 2 +- source/data/curr/es_CO.txt | 2 +- source/data/curr/es_CR.txt | 2 +- source/data/curr/es_CU.txt | 2 +- source/data/curr/es_DO.txt | 2 +- source/data/curr/es_EC.txt | 2 +- source/data/curr/es_GQ.txt | 2 +- source/data/curr/es_GT.txt | 2 +- source/data/curr/es_HN.txt | 2 +- source/data/curr/es_MX.txt | 10 +- source/data/curr/es_NI.txt | 2 +- source/data/curr/es_PA.txt | 2 +- source/data/curr/es_PE.txt | 2 +- source/data/curr/es_PH.txt | 2 +- source/data/curr/es_PR.txt | 2 +- source/data/curr/es_PY.txt | 2 +- source/data/curr/es_SV.txt | 2 +- source/data/curr/es_US.txt | 10 +- source/data/curr/es_UY.txt | 2 +- source/data/curr/es_VE.txt | 2 +- source/data/curr/et.txt | 18 +- source/data/curr/eu.txt | 20 +- source/data/curr/ewo.txt | 10 +- source/data/curr/fa.txt | 20 +- source/data/curr/fa_AF.txt | 2 +- source/data/curr/ff.txt | 10 +- source/data/curr/ff_GN.txt | 2 +- source/data/curr/ff_MR.txt | 4 +- source/data/curr/fi.txt | 26 +- source/data/curr/fil.txt | 20 +- source/data/curr/fo.txt | 34 +- source/data/curr/fo_DK.txt | 2 +- source/data/curr/fr.txt | 20 +- source/data/curr/fr_BI.txt | 2 +- source/data/curr/fr_CA.txt | 2 +- source/data/curr/fr_CD.txt | 2 +- source/data/curr/fr_DJ.txt | 2 +- source/data/curr/fr_DZ.txt | 2 +- source/data/curr/fr_GN.txt | 2 +- source/data/curr/fr_HT.txt | 2 +- source/data/curr/fr_KM.txt | 2 +- source/data/curr/fr_LU.txt | 2 +- source/data/curr/fr_MG.txt | 2 +- source/data/curr/fr_MR.txt | 4 +- source/data/curr/fr_MU.txt | 2 +- source/data/curr/fr_RW.txt | 2 +- source/data/curr/fr_SC.txt | 2 +- source/data/curr/fr_SY.txt | 2 +- source/data/curr/fr_TN.txt | 2 +- source/data/curr/fr_VU.txt | 2 +- source/data/curr/fur.txt | 2 +- source/data/curr/fy.txt | 18 +- source/data/curr/ga.txt | 26 +- source/data/curr/gd.txt | 24 +- source/data/curr/gl.txt | 20 +- source/data/curr/gsw.txt | 18 +- source/data/curr/gu.txt | 20 +- source/data/curr/guz.txt | 10 +- source/data/curr/gv.txt | 2 +- source/data/curr/ha.txt | 10 +- source/data/curr/ha_GH.txt | 2 +- source/data/curr/haw.txt | 2 +- source/data/curr/he.txt | 24 +- source/data/curr/hi.txt | 20 +- source/data/curr/hr.txt | 22 +- source/data/curr/hr_BA.txt | 2 +- source/data/curr/hsb.txt | 22 +- source/data/curr/hu.txt | 20 +- source/data/curr/hy.txt | 20 +- source/data/curr/id.txt | 18 +- source/data/curr/ig.txt | 2 +- source/data/curr/ii.txt | 2 +- source/data/curr/is.txt | 20 +- source/data/curr/it.txt | 20 +- source/data/curr/ja.txt | 18 +- source/data/curr/jgo.txt | 2 +- source/data/curr/jmc.txt | 10 +- source/data/curr/ka.txt | 20 +- source/data/curr/kab.txt | 10 +- source/data/curr/kam.txt | 10 +- source/data/curr/kde.txt | 10 +- source/data/curr/kea.txt | 16 +- source/data/curr/khq.txt | 10 +- source/data/curr/ki.txt | 10 +- source/data/curr/kk.txt | 20 +- source/data/curr/kkj.txt | 2 +- source/data/curr/kl.txt | 2 +- source/data/curr/kln.txt | 10 +- source/data/curr/km.txt | 18 +- source/data/curr/kn.txt | 20 +- source/data/curr/ko.txt | 18 +- source/data/curr/kok.txt | 2 +- source/data/curr/ks.txt | 6 +- source/data/curr/ksb.txt | 10 +- source/data/curr/ksf.txt | 10 +- source/data/curr/ksh.txt | 15 +- source/data/curr/kw.txt | 2 +- source/data/curr/ky.txt | 20 +- source/data/curr/lag.txt | 10 +- source/data/curr/lb.txt | 18 +- source/data/curr/lg.txt | 10 +- source/data/curr/lkt.txt | 2 +- source/data/curr/ln.txt | 10 +- source/data/curr/ln_AO.txt | 2 +- source/data/curr/lo.txt | 18 +- source/data/curr/lrc.txt | 2 +- source/data/curr/lt.txt | 24 +- source/data/curr/lu.txt | 10 +- source/data/curr/luo.txt | 10 +- source/data/curr/luy.txt | 10 +- source/data/curr/lv.txt | 22 +- source/data/curr/mas.txt | 10 +- source/data/curr/mas_TZ.txt | 2 +- source/data/curr/mer.txt | 10 +- source/data/curr/mfe.txt | 10 +- source/data/curr/mg.txt | 10 +- source/data/curr/mgh.txt | 2 +- source/data/curr/mgo.txt | 2 +- source/data/curr/mk.txt | 20 +- source/data/curr/ml.txt | 20 +- source/data/curr/mn.txt | 32 +- source/data/curr/mr.txt | 20 +- source/data/curr/ms.txt | 18 +- source/data/curr/ms_BN.txt | 2 +- source/data/curr/ms_SG.txt | 2 +- source/data/curr/mt.txt | 24 +- source/data/curr/mua.txt | 10 +- source/data/curr/my.txt | 22 +- source/data/curr/mzn.txt | 18 +- source/data/curr/naq.txt | 10 +- source/data/curr/nb.txt | 20 +- source/data/curr/nd.txt | 10 +- source/data/curr/nds.txt | 2 +- source/data/curr/ne.txt | 20 +- source/data/curr/nl.txt | 20 +- source/data/curr/nl_AW.txt | 2 +- source/data/curr/nl_BQ.txt | 2 +- source/data/curr/nl_CW.txt | 2 +- source/data/curr/nl_SR.txt | 2 +- source/data/curr/nl_SX.txt | 2 +- source/data/curr/nmg.txt | 10 +- source/data/curr/nn.txt | 22 +- source/data/curr/nnh.txt | 2 +- source/data/curr/nus.txt | 2 +- source/data/curr/nyn.txt | 10 +- source/data/curr/om.txt | 2 +- source/data/curr/om_KE.txt | 2 +- source/data/curr/or.txt | 678 +-- source/data/curr/os.txt | 2 +- source/data/curr/os_RU.txt | 2 +- source/data/curr/pa.txt | 20 +- source/data/curr/pa_Arab.txt | 2 +- source/data/curr/pa_Guru.txt | 2 +- source/data/curr/pl.txt | 24 +- source/data/curr/pool.res | Bin 175528 -> 178128 bytes source/data/curr/ps.txt | 20 +- source/data/curr/pt.txt | 20 +- source/data/curr/pt_AO.txt | 2 +- source/data/curr/pt_CH.txt | 2 +- source/data/curr/pt_CV.txt | 2 +- source/data/curr/pt_GQ.txt | 2 +- source/data/curr/pt_GW.txt | 2 +- source/data/curr/pt_LU.txt | 2 +- source/data/curr/pt_MO.txt | 2 +- source/data/curr/pt_MZ.txt | 2 +- source/data/curr/pt_PT.txt | 18 +- source/data/curr/pt_ST.txt | 6 +- source/data/curr/pt_TL.txt | 2 +- source/data/curr/qu.txt | 2 +- source/data/curr/qu_BO.txt | 2 +- source/data/curr/qu_EC.txt | 2 +- source/data/curr/resfiles.mk | 2 +- source/data/curr/rm.txt | 10 +- source/data/curr/rn.txt | 10 +- source/data/curr/ro.txt | 22 +- source/data/curr/ro_MD.txt | 2 +- source/data/curr/rof.txt | 10 +- source/data/curr/root.txt | 4 +- source/data/curr/ru.txt | 24 +- source/data/curr/ru_BY.txt | 2 +- source/data/curr/ru_KG.txt | 2 +- source/data/curr/ru_KZ.txt | 2 +- source/data/curr/ru_MD.txt | 2 +- source/data/curr/rw.txt | 2 +- source/data/curr/rwk.txt | 10 +- source/data/curr/sah.txt | 2 +- source/data/curr/saq.txt | 10 +- source/data/curr/sbp.txt | 10 +- source/data/curr/se.txt | 2 +- source/data/curr/se_SE.txt | 2 +- source/data/curr/seh.txt | 10 +- source/data/curr/ses.txt | 10 +- source/data/curr/sg.txt | 10 +- source/data/curr/shi.txt | 10 +- source/data/curr/shi_Latn.txt | 10 +- source/data/curr/shi_Tfng.txt | 2 +- source/data/curr/si.txt | 20 +- source/data/curr/sk.txt | 24 +- source/data/curr/sl.txt | 24 +- source/data/curr/smn.txt | 2 +- source/data/curr/sn.txt | 10 +- source/data/curr/so.txt | 2 +- source/data/curr/so_DJ.txt | 2 +- source/data/curr/so_ET.txt | 2 +- source/data/curr/so_KE.txt | 2 +- source/data/curr/sq.txt | 56 +- source/data/curr/sq_MK.txt | 2 +- source/data/curr/sr.txt | 36 +- source/data/curr/sr_Cyrl.txt | 2 +- source/data/curr/sr_Latn.txt | 36 +- source/data/curr/supplementalData.txt | 11 + source/data/curr/sv.txt | 20 +- source/data/curr/sw.txt | 20 +- source/data/curr/sw_CD.txt | 6 +- source/data/curr/sw_UG.txt | 2 +- source/data/curr/ta.txt | 20 +- source/data/curr/ta_LK.txt | 2 +- source/data/curr/ta_MY.txt | 2 +- source/data/curr/ta_SG.txt | 2 +- source/data/curr/te.txt | 20 +- source/data/curr/teo.txt | 10 +- source/data/curr/teo_KE.txt | 2 +- source/data/curr/tg.txt | 2 +- source/data/curr/th.txt | 18 +- source/data/curr/ti.txt | 2 +- source/data/curr/ti_ER.txt | 2 +- source/data/curr/to.txt | 2 +- source/data/curr/tr.txt | 20 +- source/data/curr/tt.txt | 2 +- source/data/curr/twq.txt | 10 +- source/data/curr/tzm.txt | 10 +- source/data/curr/ug.txt | 18 +- source/data/curr/uk.txt | 24 +- source/data/curr/ur.txt | 20 +- source/data/curr/ur_IN.txt | 2 +- source/data/curr/uz.txt | 20 +- source/data/curr/uz_Arab.txt | 2 +- source/data/curr/uz_Cyrl.txt | 2 +- source/data/curr/uz_Latn.txt | 2 +- source/data/curr/vai.txt | 10 +- source/data/curr/vai_Latn.txt | 10 +- source/data/curr/vai_Vaii.txt | 2 +- source/data/curr/vi.txt | 18 +- source/data/curr/vun.txt | 10 +- source/data/curr/wae.txt | 2 +- source/data/curr/wo.txt | 2 +- source/data/curr/xog.txt | 10 +- source/data/curr/yav.txt | 2 +- source/data/curr/yi.txt | 2 +- source/data/curr/yo.txt | 10 +- source/data/curr/yo_BJ.txt | 10 +- source/data/curr/yue.txt | 18 +- source/data/curr/yue_Hans.txt | 18 +- source/data/curr/yue_Hant.txt | 2 +- source/data/curr/zgh.txt | 10 +- source/data/curr/zh.txt | 18 +- source/data/curr/zh_Hans.txt | 2 +- source/data/curr/zh_Hans_HK.txt | 2 +- source/data/curr/zh_Hans_MO.txt | 2 +- source/data/curr/zh_Hans_SG.txt | 2 +- source/data/curr/zh_Hant.txt | 18 +- source/data/curr/zh_Hant_HK.txt | 16 +- source/data/curr/zh_Hant_MO.txt | 2 +- source/data/curr/zu.txt | 20 +- source/data/icu4j-readme.txt | 7 +- source/data/in/icudt61l.dat | Bin 0 -> 26888544 bytes source/data/lang/af.txt | 4 +- source/data/lang/agq.txt | 2 +- source/data/lang/ak.txt | 2 +- source/data/lang/am.txt | 2 +- source/data/lang/ar.txt | 8 +- source/data/lang/ar_EG.txt | 2 +- source/data/lang/ar_LY.txt | 2 +- source/data/lang/ar_SA.txt | 2 +- source/data/lang/as.txt | 553 +- source/data/lang/asa.txt | 2 +- source/data/lang/ast.txt | 2 +- source/data/lang/az.txt | 8 +- source/data/lang/az_Cyrl.txt | 2 +- source/data/lang/az_Latn.txt | 2 +- source/data/lang/bas.txt | 2 +- source/data/lang/be.txt | 10 +- source/data/lang/bem.txt | 2 +- source/data/lang/bez.txt | 2 +- source/data/lang/bg.txt | 2 +- source/data/lang/bm.txt | 2 +- source/data/lang/bn.txt | 2 +- source/data/lang/bn_IN.txt | 2 +- source/data/lang/bo.txt | 2 +- source/data/lang/br.txt | 109 +- source/data/lang/brx.txt | 2 +- source/data/lang/bs.txt | 2 +- source/data/lang/bs_Cyrl.txt | 2 +- source/data/lang/bs_Latn.txt | 2 +- source/data/lang/ca.txt | 3 +- source/data/lang/ccp.txt | 2 +- source/data/lang/ce.txt | 2 +- source/data/lang/cgg.txt | 2 +- source/data/lang/chr.txt | 2 +- source/data/lang/ckb.txt | 2 +- source/data/lang/cs.txt | 3 +- source/data/lang/cy.txt | 2 +- source/data/lang/da.txt | 4 +- source/data/lang/dav.txt | 2 +- source/data/lang/de.txt | 3 +- source/data/lang/de_AT.txt | 2 +- source/data/lang/de_CH.txt | 2 +- source/data/lang/de_LU.txt | 2 +- source/data/lang/dje.txt | 2 +- source/data/lang/dsb.txt | 2 +- source/data/lang/dua.txt | 2 +- source/data/lang/dyo.txt | 2 +- source/data/lang/dz.txt | 2 +- source/data/lang/ebu.txt | 2 +- source/data/lang/ee.txt | 2 +- source/data/lang/el.txt | 5 +- source/data/lang/en.txt | 3 +- source/data/lang/en_001.txt | 2 +- source/data/lang/en_150.txt | 2 +- source/data/lang/en_AG.txt | 2 +- source/data/lang/en_AI.txt | 2 +- source/data/lang/en_AT.txt | 2 +- source/data/lang/en_AU.txt | 2 +- source/data/lang/en_BB.txt | 2 +- source/data/lang/en_BE.txt | 2 +- source/data/lang/en_BM.txt | 2 +- source/data/lang/en_BS.txt | 2 +- source/data/lang/en_BW.txt | 2 +- source/data/lang/en_BZ.txt | 2 +- source/data/lang/en_CA.txt | 9 +- source/data/lang/en_CC.txt | 2 +- source/data/lang/en_CH.txt | 2 +- source/data/lang/en_CK.txt | 2 +- source/data/lang/en_CM.txt | 2 +- source/data/lang/en_CX.txt | 2 +- source/data/lang/en_CY.txt | 2 +- source/data/lang/en_DE.txt | 2 +- source/data/lang/en_DG.txt | 2 +- source/data/lang/en_DK.txt | 2 +- source/data/lang/en_DM.txt | 2 +- source/data/lang/en_ER.txt | 2 +- source/data/lang/en_FI.txt | 2 +- source/data/lang/en_FJ.txt | 2 +- source/data/lang/en_FK.txt | 2 +- source/data/lang/en_FM.txt | 2 +- source/data/lang/en_GB.txt | 2 +- source/data/lang/en_GD.txt | 2 +- source/data/lang/en_GG.txt | 2 +- source/data/lang/en_GH.txt | 2 +- source/data/lang/en_GI.txt | 2 +- source/data/lang/en_GM.txt | 2 +- source/data/lang/en_GY.txt | 2 +- source/data/lang/en_HK.txt | 2 +- source/data/lang/en_IE.txt | 2 +- source/data/lang/en_IL.txt | 2 +- source/data/lang/en_IM.txt | 2 +- source/data/lang/en_IN.txt | 3 +- source/data/lang/en_IO.txt | 2 +- source/data/lang/en_JE.txt | 2 +- source/data/lang/en_JM.txt | 2 +- source/data/lang/en_KE.txt | 2 +- source/data/lang/en_KI.txt | 2 +- source/data/lang/en_KN.txt | 2 +- source/data/lang/en_KY.txt | 2 +- source/data/lang/en_LC.txt | 2 +- source/data/lang/en_LR.txt | 2 +- source/data/lang/en_LS.txt | 2 +- source/data/lang/en_MG.txt | 2 +- source/data/lang/en_MO.txt | 2 +- source/data/lang/en_MS.txt | 2 +- source/data/lang/en_MT.txt | 2 +- source/data/lang/en_MU.txt | 2 +- source/data/lang/en_MW.txt | 2 +- source/data/lang/en_MY.txt | 2 +- source/data/lang/en_NA.txt | 2 +- source/data/lang/en_NF.txt | 2 +- source/data/lang/en_NG.txt | 2 +- source/data/lang/en_NL.txt | 2 +- source/data/lang/en_NR.txt | 2 +- source/data/lang/en_NU.txt | 2 +- source/data/lang/en_NZ.txt | 2 +- source/data/lang/en_PG.txt | 2 +- source/data/lang/en_PH.txt | 2 +- source/data/lang/en_PK.txt | 2 +- source/data/lang/en_PN.txt | 2 +- source/data/lang/en_PW.txt | 2 +- source/data/lang/en_RW.txt | 2 +- source/data/lang/en_SB.txt | 2 +- source/data/lang/en_SC.txt | 2 +- source/data/lang/en_SD.txt | 2 +- source/data/lang/en_SE.txt | 2 +- source/data/lang/en_SG.txt | 2 +- source/data/lang/en_SH.txt | 2 +- source/data/lang/en_SI.txt | 2 +- source/data/lang/en_SL.txt | 2 +- source/data/lang/en_SS.txt | 2 +- source/data/lang/en_SX.txt | 2 +- source/data/lang/en_SZ.txt | 2 +- source/data/lang/en_TC.txt | 2 +- source/data/lang/en_TK.txt | 2 +- source/data/lang/en_TO.txt | 2 +- source/data/lang/en_TT.txt | 2 +- source/data/lang/en_TV.txt | 2 +- source/data/lang/en_TZ.txt | 2 +- source/data/lang/en_UG.txt | 2 +- source/data/lang/en_VC.txt | 2 +- source/data/lang/en_VG.txt | 2 +- source/data/lang/en_VU.txt | 2 +- source/data/lang/en_WS.txt | 2 +- source/data/lang/en_ZA.txt | 2 +- source/data/lang/en_ZM.txt | 2 +- source/data/lang/en_ZW.txt | 2 +- source/data/lang/eo.txt | 2 +- source/data/lang/es.txt | 3 +- source/data/lang/es_419.txt | 3 +- source/data/lang/es_AR.txt | 2 +- source/data/lang/es_BO.txt | 2 +- source/data/lang/es_BR.txt | 2 +- source/data/lang/es_BZ.txt | 2 +- source/data/lang/es_CL.txt | 2 +- source/data/lang/es_CO.txt | 2 +- source/data/lang/es_CR.txt | 2 +- source/data/lang/es_CU.txt | 2 +- source/data/lang/es_DO.txt | 2 +- source/data/lang/es_EC.txt | 2 +- source/data/lang/es_GT.txt | 2 +- source/data/lang/es_HN.txt | 2 +- source/data/lang/es_MX.txt | 2 +- source/data/lang/es_NI.txt | 2 +- source/data/lang/es_PA.txt | 2 +- source/data/lang/es_PE.txt | 2 +- source/data/lang/es_PR.txt | 2 +- source/data/lang/es_PY.txt | 2 +- source/data/lang/es_SV.txt | 2 +- source/data/lang/es_US.txt | 2 +- source/data/lang/es_UY.txt | 2 +- source/data/lang/es_VE.txt | 2 +- source/data/lang/et.txt | 2 +- source/data/lang/eu.txt | 6 +- source/data/lang/ewo.txt | 2 +- source/data/lang/fa.txt | 2 +- source/data/lang/fa_AF.txt | 2 +- source/data/lang/ff.txt | 2 +- source/data/lang/fi.txt | 3 +- source/data/lang/fil.txt | 2 +- source/data/lang/fo.txt | 16 +- source/data/lang/fr.txt | 3 +- source/data/lang/fr_BE.txt | 2 +- source/data/lang/fr_CA.txt | 2 +- source/data/lang/fr_CH.txt | 2 +- source/data/lang/fur.txt | 2 +- source/data/lang/fy.txt | 2 +- source/data/lang/ga.txt | 2 +- source/data/lang/gd.txt | 2 +- source/data/lang/gl.txt | 2 +- source/data/lang/gsw.txt | 2 +- source/data/lang/gu.txt | 2 +- source/data/lang/guz.txt | 2 +- source/data/lang/gv.txt | 2 +- source/data/lang/ha.txt | 2 +- source/data/lang/haw.txt | 2 +- source/data/lang/he.txt | 3 +- source/data/lang/hi.txt | 4 +- source/data/lang/hr.txt | 3 +- source/data/lang/hsb.txt | 2 +- source/data/lang/hu.txt | 3 +- source/data/lang/hy.txt | 2 +- source/data/lang/id.txt | 3 +- source/data/lang/ig.txt | 2 +- source/data/lang/ii.txt | 2 +- source/data/lang/is.txt | 2 +- source/data/lang/it.txt | 3 +- source/data/lang/ja.txt | 3 +- source/data/lang/jgo.txt | 2 +- source/data/lang/jmc.txt | 2 +- source/data/lang/ka.txt | 2 +- source/data/lang/kab.txt | 2 +- source/data/lang/kam.txt | 2 +- source/data/lang/kde.txt | 2 +- source/data/lang/kea.txt | 2 +- source/data/lang/khq.txt | 2 +- source/data/lang/ki.txt | 2 +- source/data/lang/kk.txt | 2 +- source/data/lang/kkj.txt | 2 +- source/data/lang/kl.txt | 2 +- source/data/lang/kln.txt | 2 +- source/data/lang/km.txt | 2 +- source/data/lang/kn.txt | 2 +- source/data/lang/ko.txt | 3 +- source/data/lang/kok.txt | 2 +- source/data/lang/ks.txt | 2 +- source/data/lang/ksb.txt | 2 +- source/data/lang/ksf.txt | 2 +- source/data/lang/ksh.txt | 2 +- source/data/lang/kw.txt | 2 +- source/data/lang/ky.txt | 18 +- source/data/lang/lag.txt | 2 +- source/data/lang/lb.txt | 2 +- source/data/lang/lg.txt | 2 +- source/data/lang/lkt.txt | 2 +- source/data/lang/ln.txt | 2 +- source/data/lang/lo.txt | 2 +- source/data/lang/lrc.txt | 2 +- source/data/lang/lt.txt | 2 +- source/data/lang/lu.txt | 2 +- source/data/lang/luo.txt | 2 +- source/data/lang/luy.txt | 2 +- source/data/lang/lv.txt | 2 +- source/data/lang/mas.txt | 2 +- source/data/lang/mer.txt | 2 +- source/data/lang/mfe.txt | 2 +- source/data/lang/mg.txt | 2 +- source/data/lang/mgh.txt | 2 +- source/data/lang/mgo.txt | 2 +- source/data/lang/mk.txt | 2 +- source/data/lang/ml.txt | 2 +- source/data/lang/mn.txt | 11 +- source/data/lang/mr.txt | 2 +- source/data/lang/ms.txt | 3 +- source/data/lang/mt.txt | 2 +- source/data/lang/mua.txt | 2 +- source/data/lang/my.txt | 2 +- source/data/lang/mzn.txt | 2 +- source/data/lang/naq.txt | 2 +- source/data/lang/nb.txt | 3 +- source/data/lang/nd.txt | 2 +- source/data/lang/nds.txt | 2 +- source/data/lang/ne.txt | 4 +- source/data/lang/nl.txt | 3 +- source/data/lang/nmg.txt | 2 +- source/data/lang/nn.txt | 2 +- source/data/lang/nnh.txt | 2 +- source/data/lang/nus.txt | 2 +- source/data/lang/nyn.txt | 2 +- source/data/lang/om.txt | 2 +- source/data/lang/or.txt | 138 +- source/data/lang/os.txt | 2 +- source/data/lang/pa.txt | 3 +- source/data/lang/pa_Arab.txt | 2 +- source/data/lang/pa_Guru.txt | 2 +- source/data/lang/pl.txt | 3 +- source/data/lang/pool.res | Bin 113016 -> 113536 bytes source/data/lang/ps.txt | 10 +- source/data/lang/pt.txt | 3 +- source/data/lang/pt_AO.txt | 2 +- source/data/lang/pt_CH.txt | 2 +- source/data/lang/pt_CV.txt | 2 +- source/data/lang/pt_GQ.txt | 2 +- source/data/lang/pt_GW.txt | 2 +- source/data/lang/pt_LU.txt | 2 +- source/data/lang/pt_MO.txt | 2 +- source/data/lang/pt_MZ.txt | 2 +- source/data/lang/pt_PT.txt | 4 +- source/data/lang/pt_ST.txt | 2 +- source/data/lang/pt_TL.txt | 2 +- source/data/lang/qu.txt | 2 +- source/data/lang/resfiles.mk | 2 +- source/data/lang/rm.txt | 2 +- source/data/lang/rn.txt | 2 +- source/data/lang/ro.txt | 3 +- source/data/lang/ro_MD.txt | 2 +- source/data/lang/rof.txt | 2 +- source/data/lang/root.txt | 2 +- source/data/lang/ru.txt | 23 +- source/data/lang/rw.txt | 2 +- source/data/lang/rwk.txt | 2 +- source/data/lang/sah.txt | 2 +- source/data/lang/saq.txt | 2 +- source/data/lang/sbp.txt | 2 +- source/data/lang/se.txt | 2 +- source/data/lang/se_FI.txt | 2 +- source/data/lang/seh.txt | 2 +- source/data/lang/ses.txt | 2 +- source/data/lang/sg.txt | 2 +- source/data/lang/shi.txt | 2 +- source/data/lang/shi_Latn.txt | 2 +- source/data/lang/shi_Tfng.txt | 2 +- source/data/lang/si.txt | 2 +- source/data/lang/sk.txt | 3 +- source/data/lang/sl.txt | 3 +- source/data/lang/smn.txt | 2 +- source/data/lang/sn.txt | 2 +- source/data/lang/so.txt | 2 +- source/data/lang/sq.txt | 2 +- source/data/lang/sr.txt | 2 +- source/data/lang/sr_Cyrl.txt | 2 +- source/data/lang/sr_Cyrl_BA.txt | 2 +- source/data/lang/sr_Cyrl_ME.txt | 2 +- source/data/lang/sr_Cyrl_XK.txt | 2 +- source/data/lang/sr_Latn.txt | 2 +- source/data/lang/sr_Latn_BA.txt | 2 +- source/data/lang/sr_Latn_ME.txt | 2 +- source/data/lang/sr_Latn_XK.txt | 2 +- source/data/lang/sv.txt | 3 +- source/data/lang/sv_FI.txt | 2 +- source/data/lang/sw.txt | 2 +- source/data/lang/sw_CD.txt | 2 +- source/data/lang/sw_KE.txt | 2 +- source/data/lang/ta.txt | 2 +- source/data/lang/te.txt | 2 +- source/data/lang/teo.txt | 2 +- source/data/lang/tg.txt | 2 +- source/data/lang/th.txt | 3 +- source/data/lang/ti.txt | 2 +- source/data/lang/to.txt | 2 +- source/data/lang/tr.txt | 3 +- source/data/lang/tt.txt | 2 +- source/data/lang/twq.txt | 2 +- source/data/lang/tzm.txt | 2 +- source/data/lang/ug.txt | 2 +- source/data/lang/uk.txt | 3 +- source/data/lang/ur.txt | 2 +- source/data/lang/ur_IN.txt | 2 +- source/data/lang/uz.txt | 6 +- source/data/lang/uz_Arab.txt | 2 +- source/data/lang/uz_Cyrl.txt | 2 +- source/data/lang/uz_Latn.txt | 2 +- source/data/lang/vai.txt | 2 +- source/data/lang/vai_Latn.txt | 2 +- source/data/lang/vai_Vaii.txt | 2 +- source/data/lang/vi.txt | 3 +- source/data/lang/vun.txt | 2 +- source/data/lang/wae.txt | 2 +- source/data/lang/wo.txt | 2 +- source/data/lang/xog.txt | 2 +- source/data/lang/yav.txt | 2 +- source/data/lang/yi.txt | 2 +- source/data/lang/yo.txt | 2 +- source/data/lang/yo_BJ.txt | 2 +- source/data/lang/yue.txt | 2 +- source/data/lang/yue_Hans.txt | 2 +- source/data/lang/yue_Hant.txt | 2 +- source/data/lang/zgh.txt | 2 +- source/data/lang/zh.txt | 7 +- source/data/lang/zh_Hans.txt | 2 +- source/data/lang/zh_Hant.txt | 3 +- source/data/lang/zh_Hant_HK.txt | 2 +- source/data/lang/zh_Hant_MO.txt | 2 +- source/data/lang/zu.txt | 2 +- source/data/locales/af.txt | 2 +- source/data/locales/af_NA.txt | 2 +- source/data/locales/af_ZA.txt | 2 +- source/data/locales/agq.txt | 2 +- source/data/locales/agq_CM.txt | 2 +- source/data/locales/ak.txt | 2 +- source/data/locales/ak_GH.txt | 2 +- source/data/locales/am.txt | 52 +- source/data/locales/am_ET.txt | 2 +- source/data/locales/ar.txt | 5 +- source/data/locales/ar_001.txt | 2 +- source/data/locales/ar_AE.txt | 5 +- source/data/locales/ar_BH.txt | 5 +- source/data/locales/ar_DJ.txt | 5 +- source/data/locales/ar_DZ.txt | 2 +- source/data/locales/ar_EG.txt | 5 +- source/data/locales/ar_EH.txt | 2 +- source/data/locales/ar_ER.txt | 5 +- source/data/locales/ar_IL.txt | 5 +- source/data/locales/ar_IQ.txt | 5 +- source/data/locales/ar_JO.txt | 5 +- source/data/locales/ar_KM.txt | 5 +- source/data/locales/ar_KW.txt | 5 +- source/data/locales/ar_LB.txt | 3 +- source/data/locales/ar_LY.txt | 2 +- source/data/locales/ar_MA.txt | 2 +- source/data/locales/ar_MR.txt | 3 +- source/data/locales/ar_OM.txt | 5 +- source/data/locales/ar_PS.txt | 5 +- source/data/locales/ar_QA.txt | 5 +- source/data/locales/ar_SA.txt | 3 +- source/data/locales/ar_SD.txt | 5 +- source/data/locales/ar_SO.txt | 3 +- source/data/locales/ar_SS.txt | 5 +- source/data/locales/ar_SY.txt | 5 +- source/data/locales/ar_TD.txt | 5 +- source/data/locales/ar_TN.txt | 2 +- source/data/locales/ar_YE.txt | 5 +- source/data/locales/as.txt | 411 +- source/data/locales/as_IN.txt | 2 +- source/data/locales/asa.txt | 2 +- source/data/locales/asa_TZ.txt | 2 +- source/data/locales/ast.txt | 33 +- source/data/locales/ast_ES.txt | 2 +- source/data/locales/az.txt | 2 +- source/data/locales/az_Cyrl.txt | 2 +- source/data/locales/az_Cyrl_AZ.txt | 2 +- source/data/locales/az_Latn.txt | 2 +- source/data/locales/az_Latn_AZ.txt | 2 +- source/data/locales/bas.txt | 2 +- source/data/locales/bas_CM.txt | 2 +- source/data/locales/be.txt | 2 +- source/data/locales/be_BY.txt | 2 +- source/data/locales/bem.txt | 2 +- source/data/locales/bem_ZM.txt | 2 +- source/data/locales/bez.txt | 2 +- source/data/locales/bez_TZ.txt | 2 +- source/data/locales/bg.txt | 2 +- source/data/locales/bg_BG.txt | 2 +- source/data/locales/bm.txt | 2 +- source/data/locales/bm_ML.txt | 2 +- source/data/locales/bn.txt | 2 +- source/data/locales/bn_BD.txt | 2 +- source/data/locales/bn_IN.txt | 2 +- source/data/locales/bo.txt | 2 +- source/data/locales/bo_CN.txt | 2 +- source/data/locales/bo_IN.txt | 2 +- source/data/locales/br.txt | 5410 ++++++++++++++++++-- source/data/locales/br_FR.txt | 2 +- source/data/locales/brx.txt | 2 +- source/data/locales/brx_IN.txt | 2 +- source/data/locales/bs.txt | 16 +- source/data/locales/bs_Cyrl.txt | 7 +- source/data/locales/bs_Cyrl_BA.txt | 2 +- source/data/locales/bs_Latn.txt | 2 +- source/data/locales/bs_Latn_BA.txt | 2 +- source/data/locales/ca.txt | 8 +- source/data/locales/ca_AD.txt | 2 +- source/data/locales/ca_ES.txt | 2 +- source/data/locales/ca_FR.txt | 2 +- source/data/locales/ca_IT.txt | 2 +- source/data/locales/ccp.txt | 2 +- source/data/locales/ccp_BD.txt | 2 +- source/data/locales/ccp_IN.txt | 2 +- source/data/locales/ce.txt | 185 +- source/data/locales/ce_RU.txt | 2 +- source/data/locales/cgg.txt | 2 +- source/data/locales/cgg_UG.txt | 2 +- source/data/locales/chr.txt | 31 +- source/data/locales/chr_US.txt | 2 +- source/data/locales/ckb.txt | 6 +- source/data/locales/ckb_IQ.txt | 2 +- source/data/locales/ckb_IR.txt | 2 +- source/data/locales/cs.txt | 6 +- source/data/locales/cs_CZ.txt | 2 +- source/data/locales/cy.txt | 26 +- source/data/locales/cy_GB.txt | 2 +- source/data/locales/da.txt | 6 +- source/data/locales/da_DK.txt | 2 +- source/data/locales/da_GL.txt | 2 +- source/data/locales/dav.txt | 2 +- source/data/locales/dav_KE.txt | 2 +- source/data/locales/de.txt | 34 +- source/data/locales/de_AT.txt | 2 +- source/data/locales/de_BE.txt | 2 +- source/data/locales/de_CH.txt | 2 +- source/data/locales/de_DE.txt | 2 +- source/data/locales/de_IT.txt | 2 +- source/data/locales/de_LI.txt | 2 +- source/data/locales/de_LU.txt | 2 +- source/data/locales/dje.txt | 2 +- source/data/locales/dje_NE.txt | 2 +- source/data/locales/dsb.txt | 2 +- source/data/locales/dsb_DE.txt | 2 +- source/data/locales/dua.txt | 2 +- source/data/locales/dua_CM.txt | 2 +- source/data/locales/dyo.txt | 2 +- source/data/locales/dyo_SN.txt | 2 +- source/data/locales/dz.txt | 2 +- source/data/locales/dz_BT.txt | 2 +- source/data/locales/ebu.txt | 2 +- source/data/locales/ebu_KE.txt | 2 +- source/data/locales/ee.txt | 11 +- source/data/locales/ee_GH.txt | 2 +- source/data/locales/ee_TG.txt | 2 +- source/data/locales/el.txt | 2 +- source/data/locales/el_CY.txt | 2 +- source/data/locales/el_GR.txt | 2 +- source/data/locales/en.txt | 6 +- source/data/locales/en_001.txt | 2 +- source/data/locales/en_150.txt | 2 +- source/data/locales/en_AG.txt | 2 +- source/data/locales/en_AI.txt | 2 +- source/data/locales/en_AS.txt | 2 +- source/data/locales/en_AT.txt | 2 +- source/data/locales/en_AU.txt | 25 +- source/data/locales/en_BB.txt | 2 +- source/data/locales/en_BE.txt | 2 +- source/data/locales/en_BI.txt | 2 +- source/data/locales/en_BM.txt | 2 +- source/data/locales/en_BS.txt | 2 +- source/data/locales/en_BW.txt | 2 +- source/data/locales/en_BZ.txt | 2 +- source/data/locales/en_CA.txt | 7 +- source/data/locales/en_CC.txt | 2 +- source/data/locales/en_CH.txt | 2 +- source/data/locales/en_CK.txt | 2 +- source/data/locales/en_CM.txt | 2 +- source/data/locales/en_CX.txt | 2 +- source/data/locales/en_CY.txt | 2 +- source/data/locales/en_DE.txt | 2 +- source/data/locales/en_DG.txt | 2 +- source/data/locales/en_DK.txt | 2 +- source/data/locales/en_DM.txt | 2 +- source/data/locales/en_ER.txt | 2 +- source/data/locales/en_FI.txt | 2 +- source/data/locales/en_FJ.txt | 2 +- source/data/locales/en_FK.txt | 2 +- source/data/locales/en_FM.txt | 2 +- source/data/locales/en_GB.txt | 9 +- source/data/locales/en_GD.txt | 2 +- source/data/locales/en_GG.txt | 2 +- source/data/locales/en_GH.txt | 2 +- source/data/locales/en_GI.txt | 2 +- source/data/locales/en_GM.txt | 2 +- source/data/locales/en_GU.txt | 2 +- source/data/locales/en_GY.txt | 2 +- source/data/locales/en_HK.txt | 2 +- source/data/locales/en_IE.txt | 2 +- source/data/locales/en_IL.txt | 2 +- source/data/locales/en_IM.txt | 2 +- source/data/locales/en_IN.txt | 2 +- source/data/locales/en_IO.txt | 2 +- source/data/locales/en_JE.txt | 2 +- source/data/locales/en_JM.txt | 2 +- source/data/locales/en_KE.txt | 2 +- source/data/locales/en_KI.txt | 2 +- source/data/locales/en_KN.txt | 2 +- source/data/locales/en_KY.txt | 2 +- source/data/locales/en_LC.txt | 2 +- source/data/locales/en_LR.txt | 2 +- source/data/locales/en_LS.txt | 2 +- source/data/locales/en_MG.txt | 2 +- source/data/locales/en_MH.txt | 2 +- source/data/locales/en_MO.txt | 2 +- source/data/locales/en_MP.txt | 2 +- source/data/locales/en_MS.txt | 2 +- source/data/locales/en_MT.txt | 2 +- source/data/locales/en_MU.txt | 2 +- source/data/locales/en_MW.txt | 2 +- source/data/locales/en_MY.txt | 2 +- source/data/locales/en_NA.txt | 2 +- source/data/locales/en_NF.txt | 2 +- source/data/locales/en_NG.txt | 2 +- source/data/locales/en_NL.txt | 2 +- source/data/locales/en_NR.txt | 2 +- source/data/locales/en_NU.txt | 2 +- source/data/locales/en_NZ.txt | 2 +- source/data/locales/en_PG.txt | 2 +- source/data/locales/en_PH.txt | 2 +- source/data/locales/en_PK.txt | 2 +- source/data/locales/en_PN.txt | 2 +- source/data/locales/en_PR.txt | 2 +- source/data/locales/en_PW.txt | 2 +- source/data/locales/en_RW.txt | 2 +- source/data/locales/en_SB.txt | 2 +- source/data/locales/en_SC.txt | 2 +- source/data/locales/en_SD.txt | 2 +- source/data/locales/en_SE.txt | 2 +- source/data/locales/en_SG.txt | 2 +- source/data/locales/en_SH.txt | 2 +- source/data/locales/en_SI.txt | 2 +- source/data/locales/en_SL.txt | 2 +- source/data/locales/en_SS.txt | 2 +- source/data/locales/en_SX.txt | 2 +- source/data/locales/en_SZ.txt | 2 +- source/data/locales/en_TC.txt | 2 +- source/data/locales/en_TK.txt | 2 +- source/data/locales/en_TO.txt | 2 +- source/data/locales/en_TT.txt | 2 +- source/data/locales/en_TV.txt | 2 +- source/data/locales/en_TZ.txt | 2 +- source/data/locales/en_UG.txt | 2 +- source/data/locales/en_UM.txt | 2 +- source/data/locales/en_US.txt | 2 +- source/data/locales/en_US_POSIX.txt | 2 +- source/data/locales/en_VC.txt | 2 +- source/data/locales/en_VG.txt | 2 +- source/data/locales/en_VI.txt | 2 +- source/data/locales/en_VU.txt | 2 +- source/data/locales/en_WS.txt | 2 +- source/data/locales/en_ZA.txt | 2 +- source/data/locales/en_ZM.txt | 2 +- source/data/locales/en_ZW.txt | 2 +- source/data/locales/eo.txt | 2 +- source/data/locales/es.txt | 10 +- source/data/locales/es_419.txt | 6 +- source/data/locales/es_AR.txt | 2 +- source/data/locales/es_BO.txt | 2 +- source/data/locales/es_BR.txt | 2 +- source/data/locales/es_BZ.txt | 2 +- source/data/locales/es_CL.txt | 2 +- source/data/locales/es_CO.txt | 2 +- source/data/locales/es_CR.txt | 2 +- source/data/locales/es_CU.txt | 2 +- source/data/locales/es_DO.txt | 2 +- source/data/locales/es_EA.txt | 2 +- source/data/locales/es_EC.txt | 2 +- source/data/locales/es_ES.txt | 2 +- source/data/locales/es_GQ.txt | 2 +- source/data/locales/es_GT.txt | 2 +- source/data/locales/es_HN.txt | 2 +- source/data/locales/es_IC.txt | 2 +- source/data/locales/es_MX.txt | 4 +- source/data/locales/es_NI.txt | 2 +- source/data/locales/es_PA.txt | 2 +- source/data/locales/es_PE.txt | 2 +- source/data/locales/es_PH.txt | 2 +- source/data/locales/es_PR.txt | 2 +- source/data/locales/es_PY.txt | 2 +- source/data/locales/es_SV.txt | 2 +- source/data/locales/es_US.txt | 22 +- source/data/locales/es_UY.txt | 2 +- source/data/locales/es_VE.txt | 2 +- source/data/locales/et.txt | 2 +- source/data/locales/et_EE.txt | 2 +- source/data/locales/eu.txt | 2 +- source/data/locales/eu_ES.txt | 2 +- source/data/locales/ewo.txt | 2 +- source/data/locales/ewo_CM.txt | 2 +- source/data/locales/fa.txt | 21 +- source/data/locales/fa_AF.txt | 2 +- source/data/locales/fa_IR.txt | 2 +- source/data/locales/ff.txt | 2 +- source/data/locales/ff_CM.txt | 2 +- source/data/locales/ff_GN.txt | 2 +- source/data/locales/ff_MR.txt | 2 +- source/data/locales/ff_SN.txt | 2 +- source/data/locales/fi.txt | 8 +- source/data/locales/fi_FI.txt | 2 +- source/data/locales/fil.txt | 2 +- source/data/locales/fil_PH.txt | 2 +- source/data/locales/fo.txt | 29 +- source/data/locales/fo_DK.txt | 2 +- source/data/locales/fo_FO.txt | 2 +- source/data/locales/fr.txt | 6 +- source/data/locales/fr_BE.txt | 2 +- source/data/locales/fr_BF.txt | 2 +- source/data/locales/fr_BI.txt | 2 +- source/data/locales/fr_BJ.txt | 2 +- source/data/locales/fr_BL.txt | 2 +- source/data/locales/fr_CA.txt | 2 +- source/data/locales/fr_CD.txt | 2 +- source/data/locales/fr_CF.txt | 2 +- source/data/locales/fr_CG.txt | 2 +- source/data/locales/fr_CH.txt | 4 +- source/data/locales/fr_CI.txt | 2 +- source/data/locales/fr_CM.txt | 2 +- source/data/locales/fr_DJ.txt | 2 +- source/data/locales/fr_DZ.txt | 2 +- source/data/locales/fr_FR.txt | 2 +- source/data/locales/fr_GA.txt | 2 +- source/data/locales/fr_GF.txt | 2 +- source/data/locales/fr_GN.txt | 2 +- source/data/locales/fr_GP.txt | 2 +- source/data/locales/fr_GQ.txt | 2 +- source/data/locales/fr_HT.txt | 2 +- source/data/locales/fr_KM.txt | 2 +- source/data/locales/fr_LU.txt | 2 +- source/data/locales/fr_MA.txt | 2 +- source/data/locales/fr_MC.txt | 2 +- source/data/locales/fr_MF.txt | 2 +- source/data/locales/fr_MG.txt | 2 +- source/data/locales/fr_ML.txt | 2 +- source/data/locales/fr_MQ.txt | 2 +- source/data/locales/fr_MR.txt | 2 +- source/data/locales/fr_MU.txt | 2 +- source/data/locales/fr_NC.txt | 2 +- source/data/locales/fr_NE.txt | 2 +- source/data/locales/fr_PF.txt | 2 +- source/data/locales/fr_PM.txt | 2 +- source/data/locales/fr_RE.txt | 2 +- source/data/locales/fr_RW.txt | 2 +- source/data/locales/fr_SC.txt | 2 +- source/data/locales/fr_SN.txt | 2 +- source/data/locales/fr_SY.txt | 2 +- source/data/locales/fr_TD.txt | 2 +- source/data/locales/fr_TG.txt | 2 +- source/data/locales/fr_TN.txt | 2 +- source/data/locales/fr_VU.txt | 2 +- source/data/locales/fr_WF.txt | 2 +- source/data/locales/fr_YT.txt | 2 +- source/data/locales/fur.txt | 2 +- source/data/locales/fur_IT.txt | 2 +- source/data/locales/fy.txt | 2 +- source/data/locales/fy_NL.txt | 2 +- source/data/locales/ga.txt | 30 +- source/data/locales/ga_IE.txt | 2 +- source/data/locales/gd.txt | 10 +- source/data/locales/gd_GB.txt | 2 +- source/data/locales/gl.txt | 6 +- source/data/locales/gl_ES.txt | 2 +- source/data/locales/gsw.txt | 2 +- source/data/locales/gsw_CH.txt | 2 +- source/data/locales/gsw_FR.txt | 2 +- source/data/locales/gsw_LI.txt | 2 +- source/data/locales/gu.txt | 2 +- source/data/locales/gu_IN.txt | 2 +- source/data/locales/guz.txt | 2 +- source/data/locales/guz_KE.txt | 2 +- source/data/locales/gv.txt | 2 +- source/data/locales/gv_IM.txt | 2 +- source/data/locales/ha.txt | 2 +- source/data/locales/ha_GH.txt | 2 +- source/data/locales/ha_NE.txt | 14 +- source/data/locales/ha_NG.txt | 2 +- source/data/locales/haw.txt | 2 +- source/data/locales/haw_US.txt | 2 +- source/data/locales/he.txt | 32 +- source/data/locales/he_IL.txt | 2 +- source/data/locales/hi.txt | 2 +- source/data/locales/hi_IN.txt | 2 +- source/data/locales/hr.txt | 12 +- source/data/locales/hr_BA.txt | 2 +- source/data/locales/hr_HR.txt | 2 +- source/data/locales/hsb.txt | 2 +- source/data/locales/hsb_DE.txt | 2 +- source/data/locales/hu.txt | 8 +- source/data/locales/hu_HU.txt | 2 +- source/data/locales/hy.txt | 2 +- source/data/locales/hy_AM.txt | 2 +- source/data/locales/id.txt | 6 +- source/data/locales/id_ID.txt | 2 +- source/data/locales/ig.txt | 4 +- source/data/locales/ig_NG.txt | 2 +- source/data/locales/ii.txt | 2 +- source/data/locales/ii_CN.txt | 2 +- source/data/locales/is.txt | 2 +- source/data/locales/is_IS.txt | 2 +- source/data/locales/it.txt | 2 +- source/data/locales/it_CH.txt | 2 +- source/data/locales/it_IT.txt | 2 +- source/data/locales/it_SM.txt | 2 +- source/data/locales/it_VA.txt | 2 +- source/data/locales/ja.txt | 2 +- source/data/locales/ja_JP.txt | 2 +- source/data/locales/jgo.txt | 2 +- source/data/locales/jgo_CM.txt | 2 +- source/data/locales/jmc.txt | 2 +- source/data/locales/jmc_TZ.txt | 2 +- source/data/locales/ka.txt | 2 +- source/data/locales/ka_GE.txt | 2 +- source/data/locales/kab.txt | 2 +- source/data/locales/kab_DZ.txt | 2 +- source/data/locales/kam.txt | 2 +- source/data/locales/kam_KE.txt | 2 +- source/data/locales/kde.txt | 2 +- source/data/locales/kde_TZ.txt | 2 +- source/data/locales/kea.txt | 2 +- source/data/locales/kea_CV.txt | 2 +- source/data/locales/khq.txt | 2 +- source/data/locales/khq_ML.txt | 2 +- source/data/locales/ki.txt | 2 +- source/data/locales/ki_KE.txt | 2 +- source/data/locales/kk.txt | 6 +- source/data/locales/kk_KZ.txt | 2 +- source/data/locales/kkj.txt | 2 +- source/data/locales/kkj_CM.txt | 2 +- source/data/locales/kl.txt | 2 +- source/data/locales/kl_GL.txt | 2 +- source/data/locales/kln.txt | 2 +- source/data/locales/kln_KE.txt | 2 +- source/data/locales/km.txt | 2 +- source/data/locales/km_KH.txt | 2 +- source/data/locales/kn.txt | 6 +- source/data/locales/kn_IN.txt | 2 +- source/data/locales/ko.txt | 2 +- source/data/locales/ko_KP.txt | 2 +- source/data/locales/ko_KR.txt | 2 +- source/data/locales/kok.txt | 4 +- source/data/locales/kok_IN.txt | 2 +- source/data/locales/ks.txt | 2 +- source/data/locales/ks_IN.txt | 2 +- source/data/locales/ksb.txt | 2 +- source/data/locales/ksb_TZ.txt | 2 +- source/data/locales/ksf.txt | 2 +- source/data/locales/ksf_CM.txt | 2 +- source/data/locales/ksh.txt | 2 +- source/data/locales/ksh_DE.txt | 2 +- source/data/locales/kw.txt | 2 +- source/data/locales/kw_GB.txt | 2 +- source/data/locales/ky.txt | 48 +- source/data/locales/ky_KG.txt | 2 +- source/data/locales/lag.txt | 2 +- source/data/locales/lag_TZ.txt | 2 +- source/data/locales/lb.txt | 2 +- source/data/locales/lb_LU.txt | 2 +- source/data/locales/lg.txt | 2 +- source/data/locales/lg_UG.txt | 2 +- source/data/locales/lkt.txt | 2 +- source/data/locales/lkt_US.txt | 2 +- source/data/locales/ln.txt | 2 +- source/data/locales/ln_AO.txt | 2 +- source/data/locales/ln_CD.txt | 2 +- source/data/locales/ln_CF.txt | 2 +- source/data/locales/ln_CG.txt | 2 +- source/data/locales/lo.txt | 2 +- source/data/locales/lo_LA.txt | 2 +- source/data/locales/lrc.txt | 2 +- source/data/locales/lrc_IQ.txt | 2 +- source/data/locales/lrc_IR.txt | 2 +- source/data/locales/lt.txt | 29 +- source/data/locales/lt_LT.txt | 2 +- source/data/locales/lu.txt | 2 +- source/data/locales/lu_CD.txt | 2 +- source/data/locales/luo.txt | 2 +- source/data/locales/luo_KE.txt | 2 +- source/data/locales/luy.txt | 2 +- source/data/locales/luy_KE.txt | 2 +- source/data/locales/lv.txt | 2 +- source/data/locales/lv_LV.txt | 2 +- source/data/locales/mas.txt | 2 +- source/data/locales/mas_KE.txt | 2 +- source/data/locales/mas_TZ.txt | 2 +- source/data/locales/mer.txt | 2 +- source/data/locales/mer_KE.txt | 2 +- source/data/locales/mfe.txt | 2 +- source/data/locales/mfe_MU.txt | 2 +- source/data/locales/mg.txt | 2 +- source/data/locales/mg_MG.txt | 2 +- source/data/locales/mgh.txt | 2 +- source/data/locales/mgh_MZ.txt | 2 +- source/data/locales/mgo.txt | 2 +- source/data/locales/mgo_CM.txt | 2 +- source/data/locales/mk.txt | 2 +- source/data/locales/mk_MK.txt | 2 +- source/data/locales/ml.txt | 2 +- source/data/locales/ml_IN.txt | 2 +- source/data/locales/mn.txt | 6 +- source/data/locales/mn_MN.txt | 2 +- source/data/locales/mr.txt | 2 +- source/data/locales/mr_IN.txt | 2 +- source/data/locales/ms.txt | 2 +- source/data/locales/ms_BN.txt | 2 +- source/data/locales/ms_MY.txt | 2 +- source/data/locales/ms_SG.txt | 2 +- source/data/locales/mt.txt | 2 +- source/data/locales/mt_MT.txt | 2 +- source/data/locales/mua.txt | 2 +- source/data/locales/mua_CM.txt | 2 +- source/data/locales/my.txt | 4 +- source/data/locales/my_MM.txt | 2 +- source/data/locales/mzn.txt | 2 +- source/data/locales/mzn_IR.txt | 2 +- source/data/locales/naq.txt | 2 +- source/data/locales/naq_NA.txt | 2 +- source/data/locales/nb.txt | 8 +- source/data/locales/nb_NO.txt | 2 +- source/data/locales/nb_SJ.txt | 2 +- source/data/locales/nd.txt | 2 +- source/data/locales/nd_ZW.txt | 2 +- source/data/locales/nds.txt | 2 +- source/data/locales/nds_DE.txt | 2 +- source/data/locales/nds_NL.txt | 2 +- source/data/locales/ne.txt | 6 +- source/data/locales/ne_IN.txt | 2 +- source/data/locales/ne_NP.txt | 2 +- source/data/locales/nl.txt | 6 +- source/data/locales/nl_AW.txt | 2 +- source/data/locales/nl_BE.txt | 2 +- source/data/locales/nl_BQ.txt | 2 +- source/data/locales/nl_CW.txt | 2 +- source/data/locales/nl_NL.txt | 2 +- source/data/locales/nl_SR.txt | 2 +- source/data/locales/nl_SX.txt | 2 +- source/data/locales/nmg.txt | 2 +- source/data/locales/nmg_CM.txt | 2 +- source/data/locales/nn.txt | 2 +- source/data/locales/nn_NO.txt | 2 +- source/data/locales/nnh.txt | 2 +- source/data/locales/nnh_CM.txt | 2 +- source/data/locales/nus.txt | 2 +- source/data/locales/nus_SS.txt | 2 +- source/data/locales/nyn.txt | 2 +- source/data/locales/nyn_UG.txt | 2 +- source/data/locales/om.txt | 2 +- source/data/locales/om_ET.txt | 2 +- source/data/locales/om_KE.txt | 2 +- source/data/locales/or.txt | 84 +- source/data/locales/or_IN.txt | 2 +- source/data/locales/os.txt | 2 +- source/data/locales/os_GE.txt | 2 +- source/data/locales/os_RU.txt | 2 +- source/data/locales/pa.txt | 2 +- source/data/locales/pa_Arab.txt | 2 +- source/data/locales/pa_Arab_PK.txt | 2 +- source/data/locales/pa_Guru.txt | 2 +- source/data/locales/pa_Guru_IN.txt | 2 +- source/data/locales/pl.txt | 6 +- source/data/locales/pl_PL.txt | 2 +- source/data/locales/pool.res | Bin 126048 -> 126056 bytes source/data/locales/ps.txt | 2 +- source/data/locales/ps_AF.txt | 2 +- source/data/locales/pt.txt | 6 +- source/data/locales/pt_AO.txt | 2 +- source/data/locales/pt_BR.txt | 2 +- source/data/locales/pt_CH.txt | 2 +- source/data/locales/pt_CV.txt | 2 +- source/data/locales/pt_GQ.txt | 2 +- source/data/locales/pt_GW.txt | 2 +- source/data/locales/pt_LU.txt | 2 +- source/data/locales/pt_MO.txt | 2 +- source/data/locales/pt_MZ.txt | 2 +- source/data/locales/pt_PT.txt | 2 +- source/data/locales/pt_ST.txt | 2 +- source/data/locales/pt_TL.txt | 2 +- source/data/locales/qu.txt | 2 +- source/data/locales/qu_BO.txt | 2 +- source/data/locales/qu_EC.txt | 2 +- source/data/locales/qu_PE.txt | 2 +- source/data/locales/resfiles.mk | 2 +- source/data/locales/rm.txt | 2 +- source/data/locales/rm_CH.txt | 2 +- source/data/locales/rn.txt | 2 +- source/data/locales/rn_BI.txt | 2 +- source/data/locales/ro.txt | 8 +- source/data/locales/ro_MD.txt | 2 +- source/data/locales/ro_RO.txt | 2 +- source/data/locales/rof.txt | 2 +- source/data/locales/rof_TZ.txt | 2 +- source/data/locales/root.txt | 4 +- source/data/locales/ru.txt | 30 +- source/data/locales/ru_BY.txt | 2 +- source/data/locales/ru_KG.txt | 2 +- source/data/locales/ru_KZ.txt | 2 +- source/data/locales/ru_MD.txt | 2 +- source/data/locales/ru_RU.txt | 2 +- source/data/locales/ru_UA.txt | 2 +- source/data/locales/rw.txt | 4 +- source/data/locales/rw_RW.txt | 2 +- source/data/locales/rwk.txt | 2 +- source/data/locales/rwk_TZ.txt | 2 +- source/data/locales/sah.txt | 2 +- source/data/locales/sah_RU.txt | 2 +- source/data/locales/saq.txt | 2 +- source/data/locales/saq_KE.txt | 2 +- source/data/locales/sbp.txt | 2 +- source/data/locales/sbp_TZ.txt | 2 +- source/data/locales/se.txt | 2 +- source/data/locales/se_FI.txt | 155 +- source/data/locales/se_NO.txt | 2 +- source/data/locales/se_SE.txt | 2 +- source/data/locales/seh.txt | 2 +- source/data/locales/seh_MZ.txt | 2 +- source/data/locales/ses.txt | 2 +- source/data/locales/ses_ML.txt | 2 +- source/data/locales/sg.txt | 2 +- source/data/locales/sg_CF.txt | 2 +- source/data/locales/shi.txt | 2 +- source/data/locales/shi_Latn.txt | 2 +- source/data/locales/shi_Latn_MA.txt | 2 +- source/data/locales/shi_Tfng.txt | 2 +- source/data/locales/shi_Tfng_MA.txt | 2 +- source/data/locales/si.txt | 2 +- source/data/locales/si_LK.txt | 2 +- source/data/locales/sk.txt | 16 +- source/data/locales/sk_SK.txt | 2 +- source/data/locales/sl.txt | 2 +- source/data/locales/sl_SI.txt | 2 +- source/data/locales/smn.txt | 2 +- source/data/locales/smn_FI.txt | 2 +- source/data/locales/sn.txt | 2 +- source/data/locales/sn_ZW.txt | 2 +- source/data/locales/so.txt | 2 +- source/data/locales/so_DJ.txt | 2 +- source/data/locales/so_ET.txt | 2 +- source/data/locales/so_KE.txt | 2 +- source/data/locales/so_SO.txt | 2 +- source/data/locales/sq.txt | 4 +- source/data/locales/sq_AL.txt | 2 +- source/data/locales/sq_MK.txt | 2 +- source/data/locales/sq_XK.txt | 2 +- source/data/locales/sr.txt | 12 +- source/data/locales/sr_Cyrl.txt | 2 +- source/data/locales/sr_Cyrl_BA.txt | 2 +- source/data/locales/sr_Cyrl_ME.txt | 2 +- source/data/locales/sr_Cyrl_RS.txt | 2 +- source/data/locales/sr_Cyrl_XK.txt | 2 +- source/data/locales/sr_Latn.txt | 12 +- source/data/locales/sr_Latn_BA.txt | 2 +- source/data/locales/sr_Latn_ME.txt | 2 +- source/data/locales/sr_Latn_RS.txt | 2 +- source/data/locales/sr_Latn_XK.txt | 2 +- source/data/locales/sv.txt | 6 +- source/data/locales/sv_AX.txt | 2 +- source/data/locales/sv_FI.txt | 2 +- source/data/locales/sv_SE.txt | 2 +- source/data/locales/sw.txt | 16 +- source/data/locales/sw_CD.txt | 2 +- source/data/locales/sw_KE.txt | 2 +- source/data/locales/sw_TZ.txt | 2 +- source/data/locales/sw_UG.txt | 2 +- source/data/locales/ta.txt | 2 +- source/data/locales/ta_IN.txt | 2 +- source/data/locales/ta_LK.txt | 2 +- source/data/locales/ta_MY.txt | 2 +- source/data/locales/ta_SG.txt | 2 +- source/data/locales/te.txt | 2 +- source/data/locales/te_IN.txt | 2 +- source/data/locales/teo.txt | 2 +- source/data/locales/teo_KE.txt | 2 +- source/data/locales/teo_UG.txt | 2 +- source/data/locales/tg.txt | 4 +- source/data/locales/tg_TJ.txt | 2 +- source/data/locales/th.txt | 2 +- source/data/locales/th_TH.txt | 2 +- source/data/locales/ti.txt | 6 +- source/data/locales/ti_ER.txt | 2 +- source/data/locales/ti_ET.txt | 2 +- source/data/locales/to.txt | 2 +- source/data/locales/to_TO.txt | 2 +- source/data/locales/tr.txt | 11 +- source/data/locales/tr_CY.txt | 2 +- source/data/locales/tr_TR.txt | 2 +- source/data/locales/tt.txt | 4 +- source/data/locales/tt_RU.txt | 2 +- source/data/locales/twq.txt | 2 +- source/data/locales/twq_NE.txt | 2 +- source/data/locales/tzm.txt | 2 +- source/data/locales/tzm_MA.txt | 2 +- source/data/locales/ug.txt | 6 +- source/data/locales/ug_CN.txt | 2 +- source/data/locales/uk.txt | 6 +- source/data/locales/uk_UA.txt | 2 +- source/data/locales/ur.txt | 14 +- source/data/locales/ur_IN.txt | 2 +- source/data/locales/ur_PK.txt | 2 +- source/data/locales/uz.txt | 15 +- source/data/locales/uz_Arab.txt | 2 +- source/data/locales/uz_Arab_AF.txt | 2 +- source/data/locales/uz_Cyrl.txt | 2 +- source/data/locales/uz_Cyrl_UZ.txt | 2 +- source/data/locales/uz_Latn.txt | 2 +- source/data/locales/uz_Latn_UZ.txt | 2 +- source/data/locales/vai.txt | 18 +- source/data/locales/vai_Latn.txt | 2 +- source/data/locales/vai_Latn_LR.txt | 2 +- source/data/locales/vai_Vaii.txt | 2 +- source/data/locales/vai_Vaii_LR.txt | 2 +- source/data/locales/vi.txt | 15 +- source/data/locales/vi_VN.txt | 2 +- source/data/locales/vun.txt | 2 +- source/data/locales/vun_TZ.txt | 2 +- source/data/locales/wae.txt | 2 +- source/data/locales/wae_CH.txt | 2 +- source/data/locales/wo.txt | 2 +- source/data/locales/wo_SN.txt | 2 +- source/data/locales/xog.txt | 2 +- source/data/locales/xog_UG.txt | 2 +- source/data/locales/yav.txt | 2 +- source/data/locales/yav_CM.txt | 2 +- source/data/locales/yi.txt | 2 +- source/data/locales/yi_001.txt | 2 +- source/data/locales/yo.txt | 4 +- source/data/locales/yo_BJ.txt | 2 +- source/data/locales/yo_NG.txt | 2 +- source/data/locales/yue.txt | 12 +- source/data/locales/yue_Hans.txt | 2 +- source/data/locales/yue_Hans_CN.txt | 2 +- source/data/locales/yue_Hant.txt | 2 +- source/data/locales/yue_Hant_HK.txt | 2 +- source/data/locales/zgh.txt | 2 +- source/data/locales/zgh_MA.txt | 2 +- source/data/locales/zh.txt | 2 +- source/data/locales/zh_Hans.txt | 2 +- source/data/locales/zh_Hans_CN.txt | 2 +- source/data/locales/zh_Hans_HK.txt | 2 +- source/data/locales/zh_Hans_MO.txt | 2 +- source/data/locales/zh_Hans_SG.txt | 2 +- source/data/locales/zh_Hant.txt | 2 +- source/data/locales/zh_Hant_HK.txt | 2 +- source/data/locales/zh_Hant_MO.txt | 2 +- source/data/locales/zh_Hant_TW.txt | 2 +- source/data/locales/zu.txt | 6 +- source/data/locales/zu_ZA.txt | 2 +- source/data/makedata.mak | 6 +- source/data/makedata.vcxproj | 22 +- source/data/makedata_uwp.vcxproj | 8 +- source/data/misc/currencyNumericCodes.txt | 6 +- source/data/misc/icuver.txt | 4 +- source/data/misc/keyTypeData.txt | 1 + source/data/misc/likelySubtags.txt | 2 +- source/data/misc/metaZones.txt | 10 +- source/data/misc/metadata.txt | 221 + source/data/misc/plurals.txt | 14 +- source/data/misc/supplementalData.txt | 537 +- source/data/misc/windowsZones.txt | 7 +- source/data/misc/zoneinfo64.txt | 31 +- source/data/rbnf/ccp.txt | 55 + source/data/rbnf/ff.txt | 89 + source/data/rbnf/he.txt | 16 +- source/data/rbnf/lb.txt | 205 + source/data/rbnf/qu.txt | 46 + source/data/rbnf/rbnffiles.mk | 29 +- source/data/rbnf/sw.txt | 52 + source/data/region/af.txt | 3 +- source/data/region/agq.txt | 2 +- source/data/region/ak.txt | 2 +- source/data/region/am.txt | 3 +- source/data/region/ar.txt | 3 +- source/data/region/ar_AE.txt | 2 +- source/data/region/ar_LY.txt | 2 +- source/data/region/ar_SA.txt | 2 +- source/data/region/as.txt | 451 +- source/data/region/asa.txt | 2 +- source/data/region/ast.txt | 2 +- source/data/region/az.txt | 3 +- source/data/region/az_Cyrl.txt | 2 +- source/data/region/az_Latn.txt | 2 +- source/data/region/bas.txt | 2 +- source/data/region/be.txt | 3 +- source/data/region/bem.txt | 2 +- source/data/region/bez.txt | 2 +- source/data/region/bg.txt | 3 +- source/data/region/bm.txt | 2 +- source/data/region/bn.txt | 3 +- source/data/region/bn_IN.txt | 2 +- source/data/region/bo.txt | 2 +- source/data/region/bo_IN.txt | 2 +- source/data/region/br.txt | 8 +- source/data/region/brx.txt | 2 +- source/data/region/bs.txt | 3 +- source/data/region/bs_Cyrl.txt | 2 +- source/data/region/bs_Latn.txt | 2 +- source/data/region/ca.txt | 3 +- source/data/region/ccp.txt | 2 +- source/data/region/ce.txt | 2 +- source/data/region/cgg.txt | 2 +- source/data/region/chr.txt | 9 +- source/data/region/ckb.txt | 2 +- source/data/region/cs.txt | 3 +- source/data/region/cy.txt | 5 +- source/data/region/da.txt | 3 +- source/data/region/dav.txt | 2 +- source/data/region/de.txt | 2 +- source/data/region/de_AT.txt | 2 +- source/data/region/de_CH.txt | 2 +- source/data/region/dje.txt | 2 +- source/data/region/dsb.txt | 2 +- source/data/region/dua.txt | 2 +- source/data/region/dyo.txt | 2 +- source/data/region/dz.txt | 2 +- source/data/region/ebu.txt | 2 +- source/data/region/ee.txt | 2 +- source/data/region/el.txt | 4 +- source/data/region/en.txt | 2 +- source/data/region/en_150.txt | 2 +- source/data/region/en_AG.txt | 2 +- source/data/region/en_AI.txt | 2 +- source/data/region/en_AT.txt | 2 +- source/data/region/en_AU.txt | 2 +- source/data/region/en_BB.txt | 2 +- source/data/region/en_BE.txt | 2 +- source/data/region/en_BM.txt | 2 +- source/data/region/en_BS.txt | 2 +- source/data/region/en_BW.txt | 2 +- source/data/region/en_BZ.txt | 2 +- source/data/region/en_CA.txt | 2 +- source/data/region/en_CC.txt | 2 +- source/data/region/en_CH.txt | 2 +- source/data/region/en_CK.txt | 2 +- source/data/region/en_CM.txt | 2 +- source/data/region/en_CX.txt | 2 +- source/data/region/en_CY.txt | 2 +- source/data/region/en_DE.txt | 2 +- source/data/region/en_DG.txt | 2 +- source/data/region/en_DK.txt | 2 +- source/data/region/en_DM.txt | 2 +- source/data/region/en_ER.txt | 2 +- source/data/region/en_FI.txt | 2 +- source/data/region/en_FJ.txt | 2 +- source/data/region/en_FK.txt | 2 +- source/data/region/en_FM.txt | 2 +- source/data/region/en_GB.txt | 2 +- source/data/region/en_GD.txt | 2 +- source/data/region/en_GG.txt | 2 +- source/data/region/en_GH.txt | 2 +- source/data/region/en_GI.txt | 2 +- source/data/region/en_GM.txt | 2 +- source/data/region/en_GY.txt | 2 +- source/data/region/en_HK.txt | 2 +- source/data/region/en_IE.txt | 2 +- source/data/region/en_IL.txt | 2 +- source/data/region/en_IM.txt | 2 +- source/data/region/en_IN.txt | 2 +- source/data/region/en_IO.txt | 2 +- source/data/region/en_JE.txt | 2 +- source/data/region/en_JM.txt | 2 +- source/data/region/en_KE.txt | 2 +- source/data/region/en_KI.txt | 2 +- source/data/region/en_KN.txt | 2 +- source/data/region/en_KY.txt | 2 +- source/data/region/en_LC.txt | 2 +- source/data/region/en_LR.txt | 2 +- source/data/region/en_LS.txt | 2 +- source/data/region/en_MG.txt | 2 +- source/data/region/en_MO.txt | 2 +- source/data/region/en_MS.txt | 2 +- source/data/region/en_MT.txt | 2 +- source/data/region/en_MU.txt | 2 +- source/data/region/en_MW.txt | 2 +- source/data/region/en_MY.txt | 2 +- source/data/region/en_NA.txt | 2 +- source/data/region/en_NF.txt | 2 +- source/data/region/en_NG.txt | 2 +- source/data/region/en_NL.txt | 2 +- source/data/region/en_NR.txt | 2 +- source/data/region/en_NU.txt | 2 +- source/data/region/en_NZ.txt | 2 +- source/data/region/en_PG.txt | 2 +- source/data/region/en_PH.txt | 2 +- source/data/region/en_PK.txt | 2 +- source/data/region/en_PN.txt | 2 +- source/data/region/en_PW.txt | 2 +- source/data/region/en_RW.txt | 2 +- source/data/region/en_SB.txt | 2 +- source/data/region/en_SC.txt | 2 +- source/data/region/en_SD.txt | 2 +- source/data/region/en_SE.txt | 2 +- source/data/region/en_SG.txt | 2 +- source/data/region/en_SH.txt | 2 +- source/data/region/en_SI.txt | 2 +- source/data/region/en_SL.txt | 2 +- source/data/region/en_SS.txt | 2 +- source/data/region/en_SX.txt | 2 +- source/data/region/en_SZ.txt | 2 +- source/data/region/en_TC.txt | 2 +- source/data/region/en_TK.txt | 2 +- source/data/region/en_TO.txt | 2 +- source/data/region/en_TT.txt | 2 +- source/data/region/en_TV.txt | 2 +- source/data/region/en_TZ.txt | 2 +- source/data/region/en_UG.txt | 2 +- source/data/region/en_VC.txt | 2 +- source/data/region/en_VG.txt | 2 +- source/data/region/en_VU.txt | 2 +- source/data/region/en_WS.txt | 2 +- source/data/region/en_ZA.txt | 2 +- source/data/region/en_ZM.txt | 2 +- source/data/region/en_ZW.txt | 2 +- source/data/region/eo.txt | 2 +- source/data/region/es.txt | 3 +- source/data/region/es_419.txt | 2 +- source/data/region/es_AR.txt | 2 +- source/data/region/es_BO.txt | 2 +- source/data/region/es_BR.txt | 2 +- source/data/region/es_BZ.txt | 2 +- source/data/region/es_CL.txt | 2 +- source/data/region/es_CO.txt | 2 +- source/data/region/es_CR.txt | 2 +- source/data/region/es_CU.txt | 2 +- source/data/region/es_DO.txt | 2 +- source/data/region/es_EC.txt | 2 +- source/data/region/es_GT.txt | 2 +- source/data/region/es_HN.txt | 2 +- source/data/region/es_MX.txt | 2 +- source/data/region/es_NI.txt | 2 +- source/data/region/es_PA.txt | 2 +- source/data/region/es_PE.txt | 2 +- source/data/region/es_PR.txt | 2 +- source/data/region/es_PY.txt | 2 +- source/data/region/es_SV.txt | 2 +- source/data/region/es_US.txt | 2 +- source/data/region/es_UY.txt | 2 +- source/data/region/es_VE.txt | 2 +- source/data/region/et.txt | 3 +- source/data/region/eu.txt | 5 +- source/data/region/ewo.txt | 2 +- source/data/region/fa.txt | 3 +- source/data/region/fa_AF.txt | 2 +- source/data/region/ff.txt | 2 +- source/data/region/fi.txt | 3 +- source/data/region/fil.txt | 3 +- source/data/region/fo.txt | 10 +- source/data/region/fr.txt | 3 +- source/data/region/fr_BE.txt | 2 +- source/data/region/fr_CA.txt | 2 +- source/data/region/fur.txt | 2 +- source/data/region/fy.txt | 2 +- source/data/region/ga.txt | 4 +- source/data/region/gd.txt | 2 +- source/data/region/gl.txt | 3 +- source/data/region/gsw.txt | 2 +- source/data/region/gu.txt | 3 +- source/data/region/guz.txt | 2 +- source/data/region/gv.txt | 2 +- source/data/region/ha.txt | 2 +- source/data/region/haw.txt | 2 +- source/data/region/he.txt | 3 +- source/data/region/hi.txt | 3 +- source/data/region/hr.txt | 5 +- source/data/region/hsb.txt | 2 +- source/data/region/hu.txt | 3 +- source/data/region/hy.txt | 3 +- source/data/region/id.txt | 3 +- source/data/region/ig.txt | 2 +- source/data/region/ii.txt | 2 +- source/data/region/is.txt | 6 +- source/data/region/it.txt | 3 +- source/data/region/ja.txt | 3 +- source/data/region/jgo.txt | 2 +- source/data/region/jmc.txt | 2 +- source/data/region/ka.txt | 3 +- source/data/region/kab.txt | 2 +- source/data/region/kam.txt | 2 +- source/data/region/kde.txt | 2 +- source/data/region/kea.txt | 2 +- source/data/region/khq.txt | 2 +- source/data/region/ki.txt | 2 +- source/data/region/kk.txt | 4 +- source/data/region/kkj.txt | 2 +- source/data/region/kl.txt | 2 +- source/data/region/kln.txt | 2 +- source/data/region/km.txt | 4 +- source/data/region/kn.txt | 2 +- source/data/region/ko.txt | 4 +- source/data/region/ko_KP.txt | 2 +- source/data/region/kok.txt | 2 +- source/data/region/ks.txt | 2 +- source/data/region/ksb.txt | 2 +- source/data/region/ksf.txt | 2 +- source/data/region/ksh.txt | 2 +- source/data/region/kw.txt | 2 +- source/data/region/ky.txt | 2 +- source/data/region/lag.txt | 2 +- source/data/region/lb.txt | 2 +- source/data/region/lg.txt | 2 +- source/data/region/lkt.txt | 2 +- source/data/region/ln.txt | 2 +- source/data/region/lo.txt | 3 +- source/data/region/lrc.txt | 2 +- source/data/region/lt.txt | 3 +- source/data/region/lu.txt | 2 +- source/data/region/luo.txt | 2 +- source/data/region/luy.txt | 2 +- source/data/region/lv.txt | 3 +- source/data/region/mas.txt | 2 +- source/data/region/mer.txt | 2 +- source/data/region/mfe.txt | 2 +- source/data/region/mg.txt | 2 +- source/data/region/mgh.txt | 2 +- source/data/region/mgo.txt | 2 +- source/data/region/mk.txt | 3 +- source/data/region/ml.txt | 3 +- source/data/region/mn.txt | 5 +- source/data/region/mr.txt | 3 +- source/data/region/ms.txt | 3 +- source/data/region/mt.txt | 2 +- source/data/region/mua.txt | 2 +- source/data/region/my.txt | 3 +- source/data/region/mzn.txt | 2 +- source/data/region/naq.txt | 2 +- source/data/region/nb.txt | 3 +- source/data/region/nd.txt | 2 +- source/data/region/nds.txt | 2 +- source/data/region/ne.txt | 3 +- source/data/region/nl.txt | 3 +- source/data/region/nmg.txt | 2 +- source/data/region/nn.txt | 2 +- source/data/region/nnh.txt | 2 +- source/data/region/nus.txt | 2 +- source/data/region/nyn.txt | 2 +- source/data/region/om.txt | 2 +- source/data/region/or.txt | 11 +- source/data/region/os.txt | 2 +- source/data/region/pa.txt | 3 +- source/data/region/pa_Arab.txt | 2 +- source/data/region/pa_Guru.txt | 2 +- source/data/region/pl.txt | 4 +- source/data/region/pool.res | Bin 79236 -> 78060 bytes source/data/region/ps.txt | 3 +- source/data/region/pt.txt | 2 +- source/data/region/pt_AO.txt | 2 +- source/data/region/pt_CH.txt | 2 +- source/data/region/pt_CV.txt | 2 +- source/data/region/pt_GQ.txt | 2 +- source/data/region/pt_GW.txt | 2 +- source/data/region/pt_LU.txt | 2 +- source/data/region/pt_MO.txt | 2 +- source/data/region/pt_MZ.txt | 2 +- source/data/region/pt_PT.txt | 3 +- source/data/region/pt_ST.txt | 2 +- source/data/region/pt_TL.txt | 2 +- source/data/region/qu.txt | 2 +- source/data/region/resfiles.mk | 2 +- source/data/region/rm.txt | 2 +- source/data/region/rn.txt | 2 +- source/data/region/ro.txt | 4 +- source/data/region/ro_MD.txt | 2 +- source/data/region/rof.txt | 2 +- source/data/region/root.txt | 2 +- source/data/region/ru.txt | 5 +- source/data/region/ru_UA.txt | 2 +- source/data/region/rw.txt | 2 +- source/data/region/rwk.txt | 2 +- source/data/region/sah.txt | 2 +- source/data/region/saq.txt | 2 +- source/data/region/sbp.txt | 2 +- source/data/region/se.txt | 2 +- source/data/region/se_FI.txt | 2 +- source/data/region/seh.txt | 2 +- source/data/region/ses.txt | 2 +- source/data/region/sg.txt | 2 +- source/data/region/shi.txt | 2 +- source/data/region/shi_Latn.txt | 2 +- source/data/region/shi_Tfng.txt | 2 +- source/data/region/si.txt | 2 +- source/data/region/sk.txt | 3 +- source/data/region/sl.txt | 3 +- source/data/region/smn.txt | 2 +- source/data/region/sn.txt | 2 +- source/data/region/so.txt | 2 +- source/data/region/sq.txt | 13 +- source/data/region/sr.txt | 3 +- source/data/region/sr_Cyrl.txt | 2 +- source/data/region/sr_Cyrl_BA.txt | 2 +- source/data/region/sr_Cyrl_ME.txt | 2 +- source/data/region/sr_Cyrl_XK.txt | 2 +- source/data/region/sr_Latn.txt | 3 +- source/data/region/sr_Latn_BA.txt | 2 +- source/data/region/sr_Latn_ME.txt | 2 +- source/data/region/sr_Latn_XK.txt | 2 +- source/data/region/sv.txt | 7 +- source/data/region/sw.txt | 2 +- source/data/region/sw_CD.txt | 2 +- source/data/region/sw_KE.txt | 2 +- source/data/region/ta.txt | 3 +- source/data/region/te.txt | 3 +- source/data/region/teo.txt | 2 +- source/data/region/tg.txt | 2 +- source/data/region/th.txt | 3 +- source/data/region/ti.txt | 2 +- source/data/region/to.txt | 2 +- source/data/region/tr.txt | 3 +- source/data/region/tt.txt | 2 +- source/data/region/twq.txt | 2 +- source/data/region/tzm.txt | 2 +- source/data/region/ug.txt | 2 +- source/data/region/uk.txt | 3 +- source/data/region/ur.txt | 3 +- source/data/region/ur_IN.txt | 2 +- source/data/region/uz.txt | 3 +- source/data/region/uz_Arab.txt | 2 +- source/data/region/uz_Cyrl.txt | 2 +- source/data/region/uz_Latn.txt | 2 +- source/data/region/vai.txt | 2 +- source/data/region/vai_Latn.txt | 2 +- source/data/region/vai_Vaii.txt | 2 +- source/data/region/vi.txt | 5 +- source/data/region/vun.txt | 2 +- source/data/region/wae.txt | 2 +- source/data/region/wo.txt | 2 +- source/data/region/xog.txt | 2 +- source/data/region/yav.txt | 2 +- source/data/region/yi.txt | 2 +- source/data/region/yo.txt | 2 +- source/data/region/yo_BJ.txt | 2 +- source/data/region/yue.txt | 2 +- source/data/region/yue_Hans.txt | 2 +- source/data/region/yue_Hant.txt | 2 +- source/data/region/zgh.txt | 2 +- source/data/region/zh.txt | 3 +- source/data/region/zh_Hans.txt | 2 +- source/data/region/zh_Hant.txt | 3 +- source/data/region/zh_Hant_HK.txt | 2 +- source/data/region/zh_Hant_MO.txt | 2 +- source/data/region/zu.txt | 3 +- source/data/translit/Syrc_Latn.txt | 58 + source/data/translit/fa_fa_FONIPA.txt | 82 + source/data/translit/ha_ha_NE.txt | 12 + source/data/translit/ja_Hrkt_ja_Latn_BGN.txt | 116 +- source/data/translit/nv_nv_FONIPA.txt | 80 + source/data/translit/root.txt | 65 + source/data/translit/vec_vec_FONIPA.txt | 91 + source/data/unit/af.txt | 2 +- source/data/unit/agq.txt | 2 +- source/data/unit/ak.txt | 2 +- source/data/unit/am.txt | 2 +- source/data/unit/ar.txt | 2 +- source/data/unit/as.txt | 1486 +++--- source/data/unit/asa.txt | 2 +- source/data/unit/ast.txt | 2 +- source/data/unit/az.txt | 2 +- source/data/unit/az_Cyrl.txt | 2 +- source/data/unit/az_Latn.txt | 2 +- source/data/unit/bas.txt | 2 +- source/data/unit/be.txt | 2 +- source/data/unit/bem.txt | 2 +- source/data/unit/bez.txt | 2 +- source/data/unit/bg.txt | 2 +- source/data/unit/bm.txt | 2 +- source/data/unit/bn.txt | 2 +- source/data/unit/bo.txt | 2 +- source/data/unit/br.txt | 154 +- source/data/unit/brx.txt | 2 +- source/data/unit/bs.txt | 2 +- source/data/unit/bs_Cyrl.txt | 2 +- source/data/unit/bs_Latn.txt | 2 +- source/data/unit/ca.txt | 2 +- source/data/unit/ccp.txt | 2 +- source/data/unit/ce.txt | 2 +- source/data/unit/cgg.txt | 2 +- source/data/unit/chr.txt | 18 +- source/data/unit/ckb.txt | 2 +- source/data/unit/cs.txt | 2 +- source/data/unit/cy.txt | 2 +- source/data/unit/da.txt | 2 +- source/data/unit/dav.txt | 2 +- source/data/unit/de.txt | 2 +- source/data/unit/de_CH.txt | 2 +- source/data/unit/dje.txt | 2 +- source/data/unit/dsb.txt | 2 +- source/data/unit/dua.txt | 2 +- source/data/unit/dyo.txt | 2 +- source/data/unit/dz.txt | 2 +- source/data/unit/ebu.txt | 2 +- source/data/unit/ee.txt | 2 +- source/data/unit/el.txt | 2 +- source/data/unit/en.txt | 2 +- source/data/unit/en_001.txt | 2 +- source/data/unit/en_150.txt | 2 +- source/data/unit/en_AG.txt | 2 +- source/data/unit/en_AI.txt | 2 +- source/data/unit/en_AT.txt | 2 +- source/data/unit/en_AU.txt | 11 +- source/data/unit/en_BB.txt | 2 +- source/data/unit/en_BE.txt | 2 +- source/data/unit/en_BM.txt | 2 +- source/data/unit/en_BS.txt | 2 +- source/data/unit/en_BW.txt | 2 +- source/data/unit/en_BZ.txt | 2 +- source/data/unit/en_CA.txt | 2 +- source/data/unit/en_CC.txt | 2 +- source/data/unit/en_CH.txt | 2 +- source/data/unit/en_CK.txt | 2 +- source/data/unit/en_CM.txt | 2 +- source/data/unit/en_CX.txt | 2 +- source/data/unit/en_CY.txt | 2 +- source/data/unit/en_DE.txt | 2 +- source/data/unit/en_DG.txt | 2 +- source/data/unit/en_DK.txt | 2 +- source/data/unit/en_DM.txt | 2 +- source/data/unit/en_ER.txt | 2 +- source/data/unit/en_FI.txt | 2 +- source/data/unit/en_FJ.txt | 2 +- source/data/unit/en_FK.txt | 2 +- source/data/unit/en_FM.txt | 2 +- source/data/unit/en_GB.txt | 2 +- source/data/unit/en_GD.txt | 2 +- source/data/unit/en_GG.txt | 2 +- source/data/unit/en_GH.txt | 2 +- source/data/unit/en_GI.txt | 2 +- source/data/unit/en_GM.txt | 2 +- source/data/unit/en_GY.txt | 2 +- source/data/unit/en_HK.txt | 2 +- source/data/unit/en_IE.txt | 2 +- source/data/unit/en_IL.txt | 2 +- source/data/unit/en_IM.txt | 2 +- source/data/unit/en_IN.txt | 2 +- source/data/unit/en_IO.txt | 2 +- source/data/unit/en_JE.txt | 2 +- source/data/unit/en_JM.txt | 2 +- source/data/unit/en_KE.txt | 2 +- source/data/unit/en_KI.txt | 2 +- source/data/unit/en_KN.txt | 2 +- source/data/unit/en_KY.txt | 2 +- source/data/unit/en_LC.txt | 2 +- source/data/unit/en_LR.txt | 2 +- source/data/unit/en_LS.txt | 2 +- source/data/unit/en_MG.txt | 2 +- source/data/unit/en_MO.txt | 2 +- source/data/unit/en_MS.txt | 2 +- source/data/unit/en_MT.txt | 2 +- source/data/unit/en_MU.txt | 2 +- source/data/unit/en_MW.txt | 2 +- source/data/unit/en_MY.txt | 2 +- source/data/unit/en_NA.txt | 2 +- source/data/unit/en_NF.txt | 2 +- source/data/unit/en_NG.txt | 2 +- source/data/unit/en_NL.txt | 2 +- source/data/unit/en_NR.txt | 2 +- source/data/unit/en_NU.txt | 2 +- source/data/unit/en_NZ.txt | 2 +- source/data/unit/en_PG.txt | 2 +- source/data/unit/en_PH.txt | 2 +- source/data/unit/en_PK.txt | 2 +- source/data/unit/en_PN.txt | 2 +- source/data/unit/en_PW.txt | 2 +- source/data/unit/en_RW.txt | 2 +- source/data/unit/en_SB.txt | 2 +- source/data/unit/en_SC.txt | 2 +- source/data/unit/en_SD.txt | 2 +- source/data/unit/en_SE.txt | 2 +- source/data/unit/en_SG.txt | 2 +- source/data/unit/en_SH.txt | 2 +- source/data/unit/en_SI.txt | 2 +- source/data/unit/en_SL.txt | 2 +- source/data/unit/en_SS.txt | 2 +- source/data/unit/en_SX.txt | 2 +- source/data/unit/en_SZ.txt | 2 +- source/data/unit/en_TC.txt | 2 +- source/data/unit/en_TK.txt | 2 +- source/data/unit/en_TO.txt | 2 +- source/data/unit/en_TT.txt | 2 +- source/data/unit/en_TV.txt | 2 +- source/data/unit/en_TZ.txt | 2 +- source/data/unit/en_UG.txt | 2 +- source/data/unit/en_VC.txt | 2 +- source/data/unit/en_VG.txt | 2 +- source/data/unit/en_VU.txt | 2 +- source/data/unit/en_WS.txt | 2 +- source/data/unit/en_ZA.txt | 2 +- source/data/unit/en_ZM.txt | 2 +- source/data/unit/en_ZW.txt | 2 +- source/data/unit/eo.txt | 2 +- source/data/unit/es.txt | 2 +- source/data/unit/es_419.txt | 2 +- source/data/unit/es_AR.txt | 2 +- source/data/unit/es_BO.txt | 2 +- source/data/unit/es_BR.txt | 2 +- source/data/unit/es_BZ.txt | 2 +- source/data/unit/es_CL.txt | 2 +- source/data/unit/es_CO.txt | 2 +- source/data/unit/es_CR.txt | 2 +- source/data/unit/es_CU.txt | 2 +- source/data/unit/es_DO.txt | 2 +- source/data/unit/es_EC.txt | 2 +- source/data/unit/es_GT.txt | 2 +- source/data/unit/es_HN.txt | 2 +- source/data/unit/es_MX.txt | 14 +- source/data/unit/es_NI.txt | 2 +- source/data/unit/es_PA.txt | 2 +- source/data/unit/es_PE.txt | 2 +- source/data/unit/es_PR.txt | 2 +- source/data/unit/es_PY.txt | 2 +- source/data/unit/es_SV.txt | 2 +- source/data/unit/es_US.txt | 18 +- source/data/unit/es_UY.txt | 2 +- source/data/unit/es_VE.txt | 2 +- source/data/unit/et.txt | 2 +- source/data/unit/eu.txt | 2 +- source/data/unit/ewo.txt | 2 +- source/data/unit/fa.txt | 2 +- source/data/unit/ff.txt | 2 +- source/data/unit/fi.txt | 2 +- source/data/unit/fil.txt | 2 +- source/data/unit/fo.txt | 2 +- source/data/unit/fr.txt | 2 +- source/data/unit/fr_CA.txt | 16 +- source/data/unit/fr_HT.txt | 2 +- source/data/unit/fur.txt | 2 +- source/data/unit/fy.txt | 2 +- source/data/unit/ga.txt | 2 +- source/data/unit/gd.txt | 2 +- source/data/unit/gl.txt | 2 +- source/data/unit/gsw.txt | 2 +- source/data/unit/gu.txt | 2 +- source/data/unit/guz.txt | 2 +- source/data/unit/gv.txt | 2 +- source/data/unit/ha.txt | 2 +- source/data/unit/haw.txt | 2 +- source/data/unit/he.txt | 2 +- source/data/unit/hi.txt | 2 +- source/data/unit/hr.txt | 2 +- source/data/unit/hsb.txt | 2 +- source/data/unit/hu.txt | 2 +- source/data/unit/hy.txt | 2 +- source/data/unit/id.txt | 2 +- source/data/unit/ig.txt | 2 +- source/data/unit/ii.txt | 2 +- source/data/unit/is.txt | 2 +- source/data/unit/it.txt | 4 +- source/data/unit/ja.txt | 2 +- source/data/unit/jgo.txt | 2 +- source/data/unit/jmc.txt | 2 +- source/data/unit/ka.txt | 2 +- source/data/unit/kab.txt | 2 +- source/data/unit/kam.txt | 2 +- source/data/unit/kde.txt | 2 +- source/data/unit/kea.txt | 2 +- source/data/unit/khq.txt | 2 +- source/data/unit/ki.txt | 2 +- source/data/unit/kk.txt | 2 +- source/data/unit/kkj.txt | 2 +- source/data/unit/kl.txt | 2 +- source/data/unit/kln.txt | 2 +- source/data/unit/km.txt | 2 +- source/data/unit/kn.txt | 2 +- source/data/unit/ko.txt | 2 +- source/data/unit/kok.txt | 2 +- source/data/unit/ks.txt | 2 +- source/data/unit/ksb.txt | 2 +- source/data/unit/ksf.txt | 2 +- source/data/unit/ksh.txt | 2 +- source/data/unit/kw.txt | 2 +- source/data/unit/ky.txt | 2 +- source/data/unit/lag.txt | 2 +- source/data/unit/lb.txt | 2 +- source/data/unit/lg.txt | 2 +- source/data/unit/lkt.txt | 2 +- source/data/unit/ln.txt | 2 +- source/data/unit/lo.txt | 2 +- source/data/unit/lrc.txt | 2 +- source/data/unit/lt.txt | 2 +- source/data/unit/lu.txt | 2 +- source/data/unit/luo.txt | 2 +- source/data/unit/luy.txt | 2 +- source/data/unit/lv.txt | 2 +- source/data/unit/mas.txt | 2 +- source/data/unit/mer.txt | 2 +- source/data/unit/mfe.txt | 2 +- source/data/unit/mg.txt | 2 +- source/data/unit/mgh.txt | 2 +- source/data/unit/mgo.txt | 2 +- source/data/unit/mk.txt | 2 +- source/data/unit/ml.txt | 2 +- source/data/unit/mn.txt | 6 +- source/data/unit/mr.txt | 2 +- source/data/unit/ms.txt | 2 +- source/data/unit/mt.txt | 2 +- source/data/unit/mua.txt | 2 +- source/data/unit/my.txt | 4 +- source/data/unit/mzn.txt | 2 +- source/data/unit/naq.txt | 2 +- source/data/unit/nb.txt | 2 +- source/data/unit/nd.txt | 2 +- source/data/unit/nds.txt | 2 +- source/data/unit/ne.txt | 2 +- source/data/unit/nl.txt | 2 +- source/data/unit/nmg.txt | 2 +- source/data/unit/nn.txt | 2 +- source/data/unit/nnh.txt | 2 +- source/data/unit/nus.txt | 2 +- source/data/unit/nyn.txt | 2 +- source/data/unit/om.txt | 2 +- source/data/unit/or.txt | 471 +- source/data/unit/os.txt | 2 +- source/data/unit/pa.txt | 2 +- source/data/unit/pa_Arab.txt | 2 +- source/data/unit/pa_Guru.txt | 2 +- source/data/unit/pl.txt | 2 +- source/data/unit/pool.res | Bin 77544 -> 77844 bytes source/data/unit/ps.txt | 2 +- source/data/unit/pt.txt | 2 +- source/data/unit/pt_AO.txt | 2 +- source/data/unit/pt_CH.txt | 2 +- source/data/unit/pt_CV.txt | 2 +- source/data/unit/pt_GQ.txt | 2 +- source/data/unit/pt_GW.txt | 2 +- source/data/unit/pt_LU.txt | 2 +- source/data/unit/pt_MO.txt | 2 +- source/data/unit/pt_MZ.txt | 2 +- source/data/unit/pt_PT.txt | 2 +- source/data/unit/pt_ST.txt | 2 +- source/data/unit/pt_TL.txt | 2 +- source/data/unit/qu.txt | 2 +- source/data/unit/resfiles.mk | 2 +- source/data/unit/rm.txt | 2 +- source/data/unit/rn.txt | 2 +- source/data/unit/ro.txt | 2 +- source/data/unit/ro_MD.txt | 2 +- source/data/unit/rof.txt | 2 +- source/data/unit/root.txt | 2 +- source/data/unit/ru.txt | 41 +- source/data/unit/rw.txt | 2 +- source/data/unit/rwk.txt | 2 +- source/data/unit/sah.txt | 2 +- source/data/unit/saq.txt | 2 +- source/data/unit/sbp.txt | 2 +- source/data/unit/se.txt | 2 +- source/data/unit/seh.txt | 2 +- source/data/unit/ses.txt | 2 +- source/data/unit/sg.txt | 2 +- source/data/unit/shi.txt | 2 +- source/data/unit/shi_Latn.txt | 2 +- source/data/unit/shi_Tfng.txt | 2 +- source/data/unit/si.txt | 2 +- source/data/unit/sk.txt | 2 +- source/data/unit/sl.txt | 2 +- source/data/unit/smn.txt | 2 +- source/data/unit/sn.txt | 2 +- source/data/unit/so.txt | 2 +- source/data/unit/sq.txt | 8 +- source/data/unit/sr.txt | 2 +- source/data/unit/sr_Cyrl.txt | 2 +- source/data/unit/sr_Latn.txt | 2 +- source/data/unit/sv.txt | 2 +- source/data/unit/sv_FI.txt | 2 +- source/data/unit/sw.txt | 2 +- source/data/unit/ta.txt | 2 +- source/data/unit/te.txt | 2 +- source/data/unit/teo.txt | 2 +- source/data/unit/tg.txt | 2 +- source/data/unit/th.txt | 2 +- source/data/unit/ti.txt | 2 +- source/data/unit/to.txt | 2 +- source/data/unit/tr.txt | 3 +- source/data/unit/tt.txt | 2 +- source/data/unit/twq.txt | 2 +- source/data/unit/tzm.txt | 2 +- source/data/unit/ug.txt | 2 +- source/data/unit/uk.txt | 2 +- source/data/unit/ur.txt | 2 +- source/data/unit/ur_IN.txt | 2 +- source/data/unit/uz.txt | 2 +- source/data/unit/uz_Arab.txt | 2 +- source/data/unit/uz_Cyrl.txt | 2 +- source/data/unit/uz_Latn.txt | 2 +- source/data/unit/vai.txt | 2 +- source/data/unit/vai_Latn.txt | 2 +- source/data/unit/vai_Vaii.txt | 2 +- source/data/unit/vi.txt | 2 +- source/data/unit/vun.txt | 2 +- source/data/unit/wae.txt | 2 +- source/data/unit/wo.txt | 2 +- source/data/unit/xog.txt | 2 +- source/data/unit/yav.txt | 2 +- source/data/unit/yi.txt | 2 +- source/data/unit/yo.txt | 2 +- source/data/unit/yue.txt | 2 +- source/data/unit/yue_Hans.txt | 2 +- source/data/unit/yue_Hant.txt | 2 +- source/data/unit/zgh.txt | 2 +- source/data/unit/zh.txt | 2 +- source/data/unit/zh_Hans.txt | 2 +- source/data/unit/zh_Hans_HK.txt | 2 +- source/data/unit/zh_Hans_MO.txt | 2 +- source/data/unit/zh_Hans_SG.txt | 2 +- source/data/unit/zh_Hant.txt | 2 +- source/data/unit/zh_Hant_HK.txt | 2 +- source/data/unit/zh_Hant_MO.txt | 2 +- source/data/unit/zu.txt | 2 +- source/data/xml/brkitr/de.xml | 2 +- source/data/xml/brkitr/el.xml | 2 +- source/data/xml/brkitr/en.xml | 2 +- source/data/xml/brkitr/en_US.xml | 2 +- source/data/xml/brkitr/en_US_POSIX.xml | 2 +- source/data/xml/brkitr/es.xml | 2 +- source/data/xml/brkitr/fi.xml | 2 +- source/data/xml/brkitr/fr.xml | 2 +- source/data/xml/brkitr/it.xml | 2 +- source/data/xml/brkitr/ja.xml | 2 +- source/data/xml/brkitr/pt.xml | 2 +- source/data/xml/brkitr/root.xml | 2 +- source/data/xml/brkitr/ru.xml | 2 +- source/data/xml/collation/root.xml | 2 +- source/data/xml/main/root.xml | 2 +- source/data/xml/rbnf/be.xml | 2 +- source/data/xml/rbnf/bg.xml | 2 +- source/data/xml/rbnf/ca.xml | 2 +- source/data/xml/rbnf/cy.xml | 2 +- source/data/xml/rbnf/da.xml | 2 +- source/data/xml/rbnf/de.xml | 2 +- source/data/xml/rbnf/en.xml | 2 +- source/data/xml/rbnf/fo.xml | 2 +- source/data/xml/rbnf/ga.xml | 2 +- source/data/xml/rbnf/is.xml | 2 +- source/data/xml/rbnf/mk.xml | 2 +- source/data/xml/rbnf/mt.xml | 2 +- source/data/xml/rbnf/nb.xml | 2 +- source/data/xml/rbnf/nn.xml | 2 +- source/data/xml/rbnf/root.xml | 2 +- source/data/xml/rbnf/ru.xml | 2 +- source/data/xml/rbnf/sr.xml | 2 +- source/data/xml/rbnf/uk.xml | 2 +- source/data/zone/af.txt | 2 +- source/data/zone/agq.txt | 2 +- source/data/zone/ak.txt | 2 +- source/data/zone/am.txt | 2 +- source/data/zone/ar.txt | 2 +- source/data/zone/as.txt | 1855 ++++++- source/data/zone/asa.txt | 2 +- source/data/zone/ast.txt | 2 +- source/data/zone/az.txt | 2 +- source/data/zone/az_Cyrl.txt | 2 +- source/data/zone/az_Latn.txt | 2 +- source/data/zone/bas.txt | 2 +- source/data/zone/be.txt | 2 +- source/data/zone/bem.txt | 2 +- source/data/zone/bez.txt | 2 +- source/data/zone/bg.txt | 2 +- source/data/zone/bm.txt | 2 +- source/data/zone/bn.txt | 2 +- source/data/zone/bo.txt | 2 +- source/data/zone/br.txt | 2 +- source/data/zone/brx.txt | 2 +- source/data/zone/bs.txt | 2 +- source/data/zone/bs_Cyrl.txt | 2 +- source/data/zone/bs_Latn.txt | 2 +- source/data/zone/ca.txt | 2 +- source/data/zone/ccp.txt | 2 +- source/data/zone/ce.txt | 30 +- source/data/zone/cgg.txt | 2 +- source/data/zone/chr.txt | 2 +- source/data/zone/ckb.txt | 2 +- source/data/zone/cs.txt | 2 +- source/data/zone/cy.txt | 2 +- source/data/zone/da.txt | 2 +- source/data/zone/dav.txt | 2 +- source/data/zone/de.txt | 2 +- source/data/zone/de_CH.txt | 2 +- source/data/zone/dje.txt | 2 +- source/data/zone/dsb.txt | 2 +- source/data/zone/dua.txt | 2 +- source/data/zone/dyo.txt | 2 +- source/data/zone/dz.txt | 2 +- source/data/zone/ebu.txt | 2 +- source/data/zone/ee.txt | 2 +- source/data/zone/el.txt | 2 +- source/data/zone/en.txt | 4 +- source/data/zone/en_001.txt | 2 +- source/data/zone/en_150.txt | 2 +- source/data/zone/en_AG.txt | 2 +- source/data/zone/en_AI.txt | 2 +- source/data/zone/en_AT.txt | 2 +- source/data/zone/en_AU.txt | 2 +- source/data/zone/en_BB.txt | 2 +- source/data/zone/en_BE.txt | 2 +- source/data/zone/en_BM.txt | 2 +- source/data/zone/en_BS.txt | 2 +- source/data/zone/en_BW.txt | 2 +- source/data/zone/en_BZ.txt | 2 +- source/data/zone/en_CA.txt | 2 +- source/data/zone/en_CC.txt | 2 +- source/data/zone/en_CH.txt | 2 +- source/data/zone/en_CK.txt | 2 +- source/data/zone/en_CM.txt | 2 +- source/data/zone/en_CX.txt | 2 +- source/data/zone/en_CY.txt | 2 +- source/data/zone/en_DE.txt | 2 +- source/data/zone/en_DG.txt | 2 +- source/data/zone/en_DK.txt | 2 +- source/data/zone/en_DM.txt | 2 +- source/data/zone/en_ER.txt | 2 +- source/data/zone/en_FI.txt | 2 +- source/data/zone/en_FJ.txt | 2 +- source/data/zone/en_FK.txt | 2 +- source/data/zone/en_FM.txt | 2 +- source/data/zone/en_GB.txt | 2 +- source/data/zone/en_GD.txt | 2 +- source/data/zone/en_GG.txt | 2 +- source/data/zone/en_GH.txt | 2 +- source/data/zone/en_GI.txt | 2 +- source/data/zone/en_GM.txt | 2 +- source/data/zone/en_GU.txt | 2 +- source/data/zone/en_GY.txt | 2 +- source/data/zone/en_HK.txt | 2 +- source/data/zone/en_IE.txt | 2 +- source/data/zone/en_IL.txt | 2 +- source/data/zone/en_IM.txt | 2 +- source/data/zone/en_IN.txt | 2 +- source/data/zone/en_IO.txt | 2 +- source/data/zone/en_JE.txt | 2 +- source/data/zone/en_JM.txt | 2 +- source/data/zone/en_KE.txt | 2 +- source/data/zone/en_KI.txt | 2 +- source/data/zone/en_KN.txt | 2 +- source/data/zone/en_KY.txt | 2 +- source/data/zone/en_LC.txt | 2 +- source/data/zone/en_LR.txt | 2 +- source/data/zone/en_LS.txt | 2 +- source/data/zone/en_MG.txt | 2 +- source/data/zone/en_MH.txt | 2 +- source/data/zone/en_MO.txt | 2 +- source/data/zone/en_MP.txt | 2 +- source/data/zone/en_MS.txt | 2 +- source/data/zone/en_MT.txt | 2 +- source/data/zone/en_MU.txt | 2 +- source/data/zone/en_MW.txt | 2 +- source/data/zone/en_MY.txt | 2 +- source/data/zone/en_NA.txt | 2 +- source/data/zone/en_NF.txt | 2 +- source/data/zone/en_NG.txt | 2 +- source/data/zone/en_NL.txt | 2 +- source/data/zone/en_NR.txt | 2 +- source/data/zone/en_NU.txt | 2 +- source/data/zone/en_NZ.txt | 2 +- source/data/zone/en_PG.txt | 2 +- source/data/zone/en_PH.txt | 2 +- source/data/zone/en_PK.txt | 2 +- source/data/zone/en_PN.txt | 2 +- source/data/zone/en_PW.txt | 2 +- source/data/zone/en_RW.txt | 2 +- source/data/zone/en_SB.txt | 2 +- source/data/zone/en_SC.txt | 2 +- source/data/zone/en_SD.txt | 2 +- source/data/zone/en_SE.txt | 2 +- source/data/zone/en_SG.txt | 2 +- source/data/zone/en_SH.txt | 2 +- source/data/zone/en_SI.txt | 2 +- source/data/zone/en_SL.txt | 2 +- source/data/zone/en_SS.txt | 2 +- source/data/zone/en_SX.txt | 2 +- source/data/zone/en_SZ.txt | 2 +- source/data/zone/en_TC.txt | 2 +- source/data/zone/en_TK.txt | 2 +- source/data/zone/en_TO.txt | 2 +- source/data/zone/en_TT.txt | 2 +- source/data/zone/en_TV.txt | 2 +- source/data/zone/en_TZ.txt | 2 +- source/data/zone/en_UG.txt | 2 +- source/data/zone/en_VC.txt | 2 +- source/data/zone/en_VG.txt | 2 +- source/data/zone/en_VU.txt | 2 +- source/data/zone/en_WS.txt | 2 +- source/data/zone/en_ZA.txt | 2 +- source/data/zone/en_ZM.txt | 2 +- source/data/zone/en_ZW.txt | 2 +- source/data/zone/eo.txt | 2 +- source/data/zone/es.txt | 4 +- source/data/zone/es_419.txt | 2 +- source/data/zone/es_AR.txt | 2 +- source/data/zone/es_BO.txt | 2 +- source/data/zone/es_BR.txt | 2 +- source/data/zone/es_BZ.txt | 2 +- source/data/zone/es_CL.txt | 2 +- source/data/zone/es_CO.txt | 2 +- source/data/zone/es_CR.txt | 2 +- source/data/zone/es_CU.txt | 2 +- source/data/zone/es_DO.txt | 2 +- source/data/zone/es_EC.txt | 2 +- source/data/zone/es_GT.txt | 2 +- source/data/zone/es_HN.txt | 2 +- source/data/zone/es_MX.txt | 2 +- source/data/zone/es_NI.txt | 2 +- source/data/zone/es_PA.txt | 2 +- source/data/zone/es_PE.txt | 2 +- source/data/zone/es_PR.txt | 2 +- source/data/zone/es_PY.txt | 2 +- source/data/zone/es_SV.txt | 2 +- source/data/zone/es_US.txt | 2 +- source/data/zone/es_UY.txt | 2 +- source/data/zone/es_VE.txt | 2 +- source/data/zone/et.txt | 2 +- source/data/zone/eu.txt | 2 +- source/data/zone/ewo.txt | 2 +- source/data/zone/fa.txt | 2 +- source/data/zone/ff.txt | 2 +- source/data/zone/fi.txt | 2 +- source/data/zone/fil.txt | 2 +- source/data/zone/fo.txt | 6 +- source/data/zone/fr.txt | 2 +- source/data/zone/fr_CA.txt | 2 +- source/data/zone/fr_GF.txt | 2 +- source/data/zone/fur.txt | 2 +- source/data/zone/fy.txt | 2 +- source/data/zone/ga.txt | 2 +- source/data/zone/gd.txt | 2 +- source/data/zone/gl.txt | 2 +- source/data/zone/gsw.txt | 2 +- source/data/zone/gu.txt | 2 +- source/data/zone/guz.txt | 2 +- source/data/zone/gv.txt | 2 +- source/data/zone/ha.txt | 2 +- source/data/zone/haw.txt | 2 +- source/data/zone/he.txt | 8 +- source/data/zone/hi.txt | 2 +- source/data/zone/hr.txt | 2 +- source/data/zone/hsb.txt | 2 +- source/data/zone/hu.txt | 2 +- source/data/zone/hy.txt | 2 +- source/data/zone/id.txt | 2 +- source/data/zone/ig.txt | 2 +- source/data/zone/ii.txt | 2 +- source/data/zone/is.txt | 2 +- source/data/zone/it.txt | 2 +- source/data/zone/ja.txt | 2 +- source/data/zone/jgo.txt | 2 +- source/data/zone/jmc.txt | 2 +- source/data/zone/ka.txt | 2 +- source/data/zone/kab.txt | 2 +- source/data/zone/kam.txt | 2 +- source/data/zone/kde.txt | 2 +- source/data/zone/kea.txt | 2 +- source/data/zone/khq.txt | 2 +- source/data/zone/ki.txt | 2 +- source/data/zone/kk.txt | 2 +- source/data/zone/kkj.txt | 2 +- source/data/zone/kl.txt | 2 +- source/data/zone/kln.txt | 2 +- source/data/zone/km.txt | 5 +- source/data/zone/kn.txt | 2 +- source/data/zone/ko.txt | 2 +- source/data/zone/ko_KP.txt | 2 +- source/data/zone/kok.txt | 2 +- source/data/zone/ks.txt | 2 +- source/data/zone/ksb.txt | 2 +- source/data/zone/ksf.txt | 2 +- source/data/zone/ksh.txt | 2 +- source/data/zone/kw.txt | 2 +- source/data/zone/ky.txt | 2 +- source/data/zone/lag.txt | 2 +- source/data/zone/lb.txt | 2 +- source/data/zone/lg.txt | 2 +- source/data/zone/lkt.txt | 2 +- source/data/zone/ln.txt | 2 +- source/data/zone/lo.txt | 2 +- source/data/zone/lrc.txt | 2 +- source/data/zone/lt.txt | 2 +- source/data/zone/lu.txt | 2 +- source/data/zone/luo.txt | 2 +- source/data/zone/luy.txt | 2 +- source/data/zone/lv.txt | 2 +- source/data/zone/mas.txt | 2 +- source/data/zone/mer.txt | 2 +- source/data/zone/mfe.txt | 2 +- source/data/zone/mg.txt | 2 +- source/data/zone/mgh.txt | 2 +- source/data/zone/mgo.txt | 2 +- source/data/zone/mk.txt | 2 +- source/data/zone/ml.txt | 2 +- source/data/zone/mn.txt | 4 +- source/data/zone/mr.txt | 2 +- source/data/zone/ms.txt | 2 +- source/data/zone/mt.txt | 2 +- source/data/zone/mua.txt | 2 +- source/data/zone/my.txt | 2 +- source/data/zone/mzn.txt | 2 +- source/data/zone/naq.txt | 2 +- source/data/zone/nb.txt | 2 +- source/data/zone/nd.txt | 2 +- source/data/zone/nds.txt | 2 +- source/data/zone/ne.txt | 2 +- source/data/zone/ne_IN.txt | 2 +- source/data/zone/nl.txt | 2 +- source/data/zone/nl_SR.txt | 2 +- source/data/zone/nmg.txt | 2 +- source/data/zone/nn.txt | 2 +- source/data/zone/nnh.txt | 2 +- source/data/zone/nus.txt | 2 +- source/data/zone/nyn.txt | 2 +- source/data/zone/om.txt | 2 +- source/data/zone/or.txt | 71 +- source/data/zone/os.txt | 2 +- source/data/zone/pa.txt | 2 +- source/data/zone/pa_Arab.txt | 2 +- source/data/zone/pa_Guru.txt | 2 +- source/data/zone/pl.txt | 2 +- source/data/zone/pool.res | Bin 95428 -> 93188 bytes source/data/zone/ps.txt | 14 +- source/data/zone/pt.txt | 2 +- source/data/zone/pt_AO.txt | 2 +- source/data/zone/pt_CH.txt | 2 +- source/data/zone/pt_CV.txt | 2 +- source/data/zone/pt_GQ.txt | 2 +- source/data/zone/pt_GW.txt | 2 +- source/data/zone/pt_LU.txt | 2 +- source/data/zone/pt_MO.txt | 2 +- source/data/zone/pt_MZ.txt | 2 +- source/data/zone/pt_PT.txt | 2 +- source/data/zone/pt_ST.txt | 2 +- source/data/zone/pt_TL.txt | 2 +- source/data/zone/qu.txt | 2 +- source/data/zone/qu_BO.txt | 2 +- source/data/zone/qu_EC.txt | 2 +- source/data/zone/resfiles.mk | 2 +- source/data/zone/rm.txt | 2 +- source/data/zone/rn.txt | 2 +- source/data/zone/ro.txt | 2 +- source/data/zone/rof.txt | 2 +- source/data/zone/root.txt | 2 +- source/data/zone/ru.txt | 2 +- source/data/zone/rw.txt | 2 +- source/data/zone/rwk.txt | 2 +- source/data/zone/sah.txt | 2 +- source/data/zone/saq.txt | 2 +- source/data/zone/sbp.txt | 2 +- source/data/zone/se.txt | 2 +- source/data/zone/se_FI.txt | 2 +- source/data/zone/seh.txt | 2 +- source/data/zone/ses.txt | 2 +- source/data/zone/sg.txt | 2 +- source/data/zone/shi.txt | 2 +- source/data/zone/shi_Latn.txt | 2 +- source/data/zone/shi_Tfng.txt | 2 +- source/data/zone/si.txt | 2 +- source/data/zone/sk.txt | 2 +- source/data/zone/sl.txt | 2 +- source/data/zone/smn.txt | 2 +- source/data/zone/sn.txt | 2 +- source/data/zone/so.txt | 2 +- source/data/zone/sq.txt | 4 +- source/data/zone/sr.txt | 2 +- source/data/zone/sr_Cyrl.txt | 2 +- source/data/zone/sr_Latn.txt | 2 +- source/data/zone/sv.txt | 2 +- source/data/zone/sw.txt | 2 +- source/data/zone/ta.txt | 2 +- source/data/zone/ta_MY.txt | 2 +- source/data/zone/ta_SG.txt | 2 +- source/data/zone/te.txt | 2 +- source/data/zone/teo.txt | 2 +- source/data/zone/tg.txt | 2 +- source/data/zone/th.txt | 2 +- source/data/zone/ti.txt | 2 +- source/data/zone/to.txt | 2 +- source/data/zone/tr.txt | 2 +- source/data/zone/tt.txt | 2 +- source/data/zone/twq.txt | 2 +- source/data/zone/tzm.txt | 2 +- source/data/zone/ug.txt | 2 +- source/data/zone/uk.txt | 2 +- source/data/zone/ur.txt | 2 +- source/data/zone/ur_IN.txt | 2 +- source/data/zone/uz.txt | 2 +- source/data/zone/uz_Arab.txt | 2 +- source/data/zone/uz_Cyrl.txt | 2 +- source/data/zone/uz_Latn.txt | 2 +- source/data/zone/vai.txt | 2 +- source/data/zone/vai_Latn.txt | 2 +- source/data/zone/vai_Vaii.txt | 2 +- source/data/zone/vi.txt | 2 +- source/data/zone/vun.txt | 2 +- source/data/zone/wae.txt | 2 +- source/data/zone/wo.txt | 2 +- source/data/zone/xog.txt | 2 +- source/data/zone/yav.txt | 2 +- source/data/zone/yi.txt | 2 +- source/data/zone/yo.txt | 2 +- source/data/zone/yue.txt | 2 +- source/data/zone/yue_Hans.txt | 2 +- source/data/zone/yue_Hant.txt | 2 +- source/data/zone/zgh.txt | 2 +- source/data/zone/zh.txt | 2 +- source/data/zone/zh_Hans.txt | 2 +- source/data/zone/zh_Hans_SG.txt | 2 +- source/data/zone/zh_Hant.txt | 2 +- source/data/zone/zh_Hant_HK.txt | 2 +- source/data/zone/zh_Hant_MO.txt | 2 +- source/data/zone/zu.txt | 2 +- source/extra/uconv/uconv.vcxproj | 143 +- source/i18n/Makefile.in | 4 +- source/i18n/alphaindex.cpp | 13 +- source/i18n/calendar.cpp | 8 +- source/i18n/collationiterator.h | 6 +- source/i18n/dcfmtsym.cpp | 23 + source/i18n/decNumber.cpp | 4 +- source/i18n/decimalformatpattern.cpp | 10 +- source/i18n/digitlst.cpp | 50 +- source/i18n/double-conversion-bignum-dtoa.cpp | 659 +++ source/i18n/double-conversion-bignum-dtoa.h | 102 + source/i18n/double-conversion-bignum.cpp | 784 +++ source/i18n/double-conversion-bignum.h | 162 + source/i18n/double-conversion-cached-powers.cpp | 193 + source/i18n/double-conversion-cached-powers.h | 82 + source/i18n/double-conversion-diy-fp.cpp | 74 + source/i18n/double-conversion-diy-fp.h | 136 + source/i18n/double-conversion-fast-dtoa.cpp | 683 +++ source/i18n/double-conversion-fast-dtoa.h | 106 + source/i18n/double-conversion-ieee.h | 420 ++ source/i18n/double-conversion-utils.h | 358 ++ source/i18n/double-conversion.cpp | 1005 ++++ source/i18n/double-conversion.h | 566 ++ source/i18n/dtptngen.cpp | 90 +- source/i18n/i18n.vcxproj | 1328 +---- source/i18n/i18n.vcxproj.filters | 110 +- source/i18n/i18n_uwp.vcxproj | 443 +- source/i18n/islamcal.cpp | 2 +- source/i18n/measfmt.cpp | 13 +- source/i18n/measunit.cpp | 11 +- source/i18n/nfrs.cpp | 11 +- source/i18n/nfrs.h | 2 +- source/i18n/nfrule.cpp | 6 + source/i18n/nfrule.h | 2 + source/i18n/nfsubs.cpp | 21 +- source/i18n/nfsubs.h | 1 + source/i18n/number_affixutils.cpp | 1 + source/i18n/number_compact.cpp | 7 - source/i18n/number_compact.h | 1 - source/i18n/number_decimalquantity.cpp | 67 +- source/i18n/number_decimalquantity.h | 5 + source/i18n/number_decimfmtprops.h | 4 +- source/i18n/number_fluent.cpp | 31 +- source/i18n/number_formatimpl.cpp | 109 +- source/i18n/number_grouping.cpp | 60 +- source/i18n/number_integerwidth.cpp | 15 +- source/i18n/number_longnames.cpp | 150 +- source/i18n/number_longnames.h | 12 +- source/i18n/number_modifiers.cpp | 76 +- source/i18n/number_modifiers.h | 47 +- source/i18n/number_notation.cpp | 6 +- source/i18n/number_padding.cpp | 2 +- source/i18n/number_patternmodifier.cpp | 72 +- source/i18n/number_patternmodifier.h | 16 +- source/i18n/number_patternstring.cpp | 4 + source/i18n/number_patternstring.h | 2 + source/i18n/number_rounding.cpp | 96 +- source/i18n/number_stringbuilder.cpp | 37 + source/i18n/number_stringbuilder.h | 5 + source/i18n/number_types.h | 24 +- source/i18n/rbnf.cpp | 2 +- source/i18n/regexcmp.cpp | 6 +- source/i18n/rematch.cpp | 11 +- source/i18n/simpletz.cpp | 4 +- source/i18n/ucol.cpp | 1 + source/i18n/ucol_res.cpp | 1 + source/i18n/udatpg.cpp | 19 + source/i18n/unicode/compactdecimalformat.h | 10 +- source/i18n/unicode/datefmt.h | 3 +- source/i18n/unicode/dcfmtsym.h | 67 +- source/i18n/unicode/decimfmt.h | 27 +- source/i18n/unicode/dtptngen.h | 30 +- source/i18n/unicode/measfmt.h | 19 +- source/i18n/unicode/measunit.h | 8 +- source/i18n/unicode/nounit.h | 10 +- source/i18n/unicode/numberformatter.h | 418 +- source/i18n/unicode/numfmt.h | 37 +- source/i18n/unicode/simpletz.h | 6 +- source/i18n/unicode/udatpg.h | 53 +- source/i18n/unicode/unum.h | 9 +- source/i18n/unicode/upluralrules.h | 6 +- source/i18n/unicode/utrans.h | 4 +- source/i18n/uregex.cpp | 6 +- source/i18n/utrans.cpp | 10 +- source/io/io.vcxproj | 205 +- source/layoutex/layout/plruns.h | 3 + source/layoutex/layoutex.vcxproj | 165 +- source/samples/all/all.sln | 258 +- source/samples/break/break.cpp | 3 +- source/samples/break/break.sln | 8 +- source/samples/break/break.vcxproj | 114 +- source/samples/cal/cal.sln | 8 +- source/samples/cal/cal.vcxproj | 120 +- source/samples/case/case.cpp | 2 + source/samples/case/case.sln | 8 +- source/samples/case/case.vcxproj | 103 +- source/samples/case/ucase.c | 2 +- source/samples/citer/citer.cpp | 5 + source/samples/citer/citer.vcxproj | 76 +- source/samples/coll/coll.cpp | 2 +- source/samples/coll/coll.sln | 8 +- source/samples/coll/coll.vcxproj | 89 +- source/samples/csdet/csdet.vcxproj | 61 +- source/samples/date/date.sln | 8 +- source/samples/date/date.vcxproj | 116 +- source/samples/datefmt/datefmt.sln | 8 +- source/samples/datefmt/datefmt.vcxproj | 87 +- source/samples/datefmt/main.cpp | 2 + source/samples/datefmt/util.cpp | 2 + source/samples/datefmt/util.h | 2 + source/samples/dtitvfmtsample/dtitvfmtsample.cpp | 1 + .../samples/dtitvfmtsample/dtitvfmtsample.vcxproj | 116 +- source/samples/dtptngsample/dtptngsample.cpp | 1 + source/samples/dtptngsample/dtptngsample.vcxproj | 105 +- source/samples/layout/layout.vcxproj | 49 +- source/samples/legacy/legacy.sln | 8 +- source/samples/legacy/legacy.vcxproj | 24 +- source/samples/msgfmt/msgfmt.sln | 8 +- source/samples/msgfmt/msgfmt.vcxproj | 84 +- source/samples/msgfmt/util.cpp | 2 + source/samples/msgfmt/util.h | 2 + source/samples/numfmt/numfmt.sln | 8 +- source/samples/numfmt/numfmt.vcxproj | 83 +- source/samples/numfmt/util.cpp | 2 + source/samples/numfmt/util.h | 2 + source/samples/plurfmtsample/plurfmtsample.cpp | 4 +- source/samples/plurfmtsample/plurfmtsample.vcxproj | 106 +- source/samples/props/props.sln | 8 +- source/samples/props/props.vcxproj | 69 +- source/samples/strsrch/strsrch.sln | 8 +- source/samples/strsrch/strsrch.vcxproj | 82 +- source/samples/translit/translit.sln | 8 +- source/samples/translit/translit.vcxproj | 102 +- source/samples/translit/unaccent.h | 2 + source/samples/translit/util.cpp | 2 + source/samples/translit/util.h | 2 + source/samples/uciter8/uciter8.sln | 8 +- source/samples/uciter8/uciter8.vcxproj | 102 +- source/samples/uciter8/uit_len8.c | 2 +- source/samples/ucnv/convsamp.cpp | 35 +- source/samples/ucnv/ucnv.sln | 8 +- source/samples/ucnv/ucnv.vcxproj | 102 +- source/samples/udata/reader.vcxproj | 142 +- source/samples/udata/udata.sln | 16 +- source/samples/udata/writer.vcxproj | 121 +- .../ufortune/resources/fortune_resources.mak | 6 +- source/samples/ufortune/ufortune.sln | 8 +- source/samples/ufortune/ufortune.vcxproj | 170 +- source/samples/ugrep/ugrep.cpp | 13 +- source/samples/ugrep/ugrep.sln | 8 +- source/samples/ugrep/ugrep.vcxproj | 98 +- source/samples/uresb/resources.vcxproj | 36 +- source/samples/uresb/uresb.sln | 16 +- source/samples/uresb/uresb.vcxproj | 90 +- source/samples/ustring/ustring.cpp | 2 + source/samples/ustring/ustring.sln | 8 +- source/samples/ustring/ustring.vcxproj | 101 +- source/stubdata/stubdata.vcxproj | 205 +- source/test/cintltst/ccaltst.c | 2 +- source/test/cintltst/cintltst.vcxproj | 150 +- source/test/cintltst/cnumtst.c | 2 +- source/test/cintltst/creststn.c | 2 +- source/test/cintltst/cucdtst.c | 55 - source/test/cintltst/udatpg_test.c | 72 + source/test/cintltst/uregiontest.c | 16 +- source/test/cintltst/utf8tst.c | 75 + source/test/depstest/dependencies.txt | 30 +- source/test/intltest/Makefile.in | 2 +- source/test/intltest/alphaindextst.cpp | 25 + source/test/intltest/alphaindextst.h | 4 + source/test/intltest/calregts.cpp | 54 +- source/test/intltest/calregts.h | 2 + source/test/intltest/compactdecimalformattest.cpp | 2 +- source/test/intltest/convtest.cpp | 49 +- source/test/intltest/dtfmttst.cpp | 8 +- source/test/intltest/dtptngts.cpp | 49 + source/test/intltest/dtptngts.h | 1 + source/test/intltest/intltest.cpp | 29 + source/test/intltest/intltest.h | 12 +- source/test/intltest/intltest.vcxproj | 142 +- source/test/intltest/intltest.vcxproj.filters | 3 + source/test/intltest/itrbnf.cpp | 17 + source/test/intltest/itrbnf.h | 1 + source/test/intltest/measfmttest.cpp | 2 +- source/test/intltest/numberformattesttuple.cpp | 1 + source/test/intltest/numberformattesttuple.h | 3 + source/test/intltest/numbertest.h | 21 + source/test/intltest/numbertest_api.cpp | 477 +- .../test/intltest/numbertest_decimalquantity.cpp | 32 +- .../test/intltest/numbertest_doubleconversion.cpp | 45 + source/test/intltest/numbertest_modifiers.cpp | 10 +- .../test/intltest/numbertest_patternmodifier.cpp | 68 +- source/test/intltest/numbertest_stringbuilder.cpp | 53 +- source/test/intltest/numfmtst.cpp | 244 +- source/test/intltest/numfmtst.h | 2 + source/test/intltest/rbbiapts.cpp | 3 +- source/test/intltest/rbbitst.cpp | 509 +- source/test/intltest/rbbitst.h | 38 +- source/test/intltest/regextst.cpp | 45 + source/test/intltest/regextst.h | 4 +- source/test/intltest/regiontst.cpp | 16 +- source/test/intltest/tsdcfmsy.cpp | 97 + source/test/intltest/tsdcfmsy.h | 1 + source/test/intltest/tsmthred.cpp | 21 +- source/test/intltest/tzregts.cpp | 65 +- source/test/intltest/tzregts.h | 1 + source/test/intltest/ucdtest.cpp | 20 + source/test/intltest/ucdtest.h | 1 + source/test/intltest/unifiedcachetest.cpp | 62 +- source/test/intltest/usettest.cpp | 26 +- source/test/intltest/usettest.h | 1 + source/test/iotest/iotest.vcxproj | 146 +- source/test/letest/letest.vcxproj | 28 +- .../testdata/numberformattestspecification.txt | 153 +- source/test/testdata/rbbitst.txt | 22 +- source/test/testdata/root.txt | 4 +- source/test/testdata/structLocale.txt | 5 + source/tools/ctestfw/ctestfw.vcxproj | 152 +- source/tools/escapesrc/escapesrc.cpp | 138 +- source/tools/genbrk/genbrk.vcxproj | 79 +- source/tools/genccode/genccode.vcxproj | 79 +- source/tools/gencfu/gencfu.vcxproj | 83 +- source/tools/gencmn/gencmn.vcxproj | 79 +- source/tools/gencnval/gencnval.vcxproj | 79 +- source/tools/gendict/gendict.vcxproj | 79 +- source/tools/gennorm2/gennorm2.vcxproj | 127 +- source/tools/genrb/derb.vcxproj | 90 +- source/tools/genrb/genrb.vcxproj | 85 +- source/tools/gensprep/gensprep.vcxproj | 79 +- source/tools/gentest/gentest.vcxproj | 83 +- source/tools/icu-svnprops-check.py | 5 + source/tools/icuinfo/icuinfo.vcxproj | 139 +- source/tools/icuinfo/testplug.vcxproj | 79 +- source/tools/icupkg/icupkg.vcxproj | 128 +- source/tools/makeconv/makeconv.vcxproj | 129 +- source/tools/pkgdata/pkgdata.vcxproj | 127 +- source/tools/toolutil/toolutil.vcxproj | 154 +- source/tools/tzcode/Makefile.in | 4 +- source/tools/tzcode/icuzdump.cpp | 1 + source/tools/tzcode/icuzones | 49 + source/tools/tzcode/tz2icu.cpp | 87 +- 3132 files changed, 31914 insertions(+), 19050 deletions(-) create mode 100644 packaging/distrelease.ps1 delete mode 100644 packaging/rpm/icu.spec create mode 100644 source/allinone/Build.Windows.ProjectConfiguration.props create mode 100644 source/allinone/Build.Windows.UWP.ProjectConfiguration.props create mode 100644 source/allinone/Windows.CopyUnicodeHeaderFiles.targets create mode 100644 source/data/in/icudt61l.dat create mode 100644 source/data/rbnf/ccp.txt create mode 100644 source/data/rbnf/ff.txt create mode 100644 source/data/rbnf/lb.txt create mode 100644 source/data/rbnf/qu.txt create mode 100644 source/data/rbnf/sw.txt create mode 100644 source/data/translit/Syrc_Latn.txt create mode 100644 source/data/translit/fa_fa_FONIPA.txt create mode 100644 source/data/translit/ha_ha_NE.txt create mode 100644 source/data/translit/nv_nv_FONIPA.txt create mode 100644 source/data/translit/vec_vec_FONIPA.txt create mode 100644 source/i18n/double-conversion-bignum-dtoa.cpp create mode 100644 source/i18n/double-conversion-bignum-dtoa.h create mode 100644 source/i18n/double-conversion-bignum.cpp create mode 100644 source/i18n/double-conversion-bignum.h create mode 100644 source/i18n/double-conversion-cached-powers.cpp create mode 100644 source/i18n/double-conversion-cached-powers.h create mode 100644 source/i18n/double-conversion-diy-fp.cpp create mode 100644 source/i18n/double-conversion-diy-fp.h create mode 100644 source/i18n/double-conversion-fast-dtoa.cpp create mode 100644 source/i18n/double-conversion-fast-dtoa.h create mode 100644 source/i18n/double-conversion-ieee.h create mode 100644 source/i18n/double-conversion-utils.h create mode 100644 source/i18n/double-conversion.cpp create mode 100644 source/i18n/double-conversion.h create mode 100644 source/test/intltest/numbertest_doubleconversion.cpp diff --git a/APIChangeReport.html b/APIChangeReport.html index 64f4390..d17133d 100644 --- a/APIChangeReport.html +++ b/APIChangeReport.html @@ -5,31 +5,31 @@ --> -ICU4C API Comparison: ICU 59 with ICU 60 +ICU4C API Comparison: ICU 60 (update #1: 60.2) with ICU 61 -

ICU4C API Comparison: ICU 59 with ICU 60

+

ICU4C API Comparison: ICU 60 (update #1: 60.2) with ICU 61

-

Removed from ICU 59

+

Removed from ICU 60

- + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
FileAPIICU 59ICU 60FileAPIICU 60ICU 61
decimfmt.henum - icu::DecimalFormat::ERoundingMode {}Stable
ICU 2.4
(moved to numfmt.h)
measunit.hstatic MeasureUnit* icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&, const MeasureUnit&)Internal(missing)
+
decimfmt.henum - icu::DecimalFormat::ERoundingMode::kRoundCeilingStable
ICU 2.4
(moved to numfmt.h)
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(const NumberingSystem*)Draft
ICU 60
(missing)
actually, just
removed “const”
from one param
+
decimfmt.henum - icu::DecimalFormat::ERoundingMode::kRoundDownStable
ICU 2.4
(moved to numfmt.h)
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(const icu::MeasureUnit*)Draft
ICU 60
(missing)
actually, just
removed “const”
from one param
+
decimfmt.henum - icu::DecimalFormat::ERoundingMode::kRoundFloorStable
ICU 2.4
(moved to numfmt.h)
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(const Grouper&)Internal(missing)
+
decimfmt.henum - icu::DecimalFormat::ERoundingMode::kRoundHalfDownStable
ICU 2.4
(moved to numfmt.h)
numberformatter.hstatic Grouper icu::number::Grouper::defaults()Internal(missing)
+
decimfmt.henum - icu::DecimalFormat::ERoundingMode::kRoundHalfEvenStable
ICU 2.4
(moved to numfmt.h)
numberformatter.hstatic Grouper icu::number::Grouper::minTwoDigits()Internal(missing)
+
decimfmt.henum - icu::DecimalFormat::ERoundingMode::kRoundHalfUpStable
ICU 2.4
(moved to numfmt.h)
numberformatter.hstatic Grouper icu::number::Grouper::none()Internal(missing)
+
decimfmt.henum - icu::DecimalFormat::ERoundingMode::kRoundUnnecessaryStable
ICU 4.8
(moved to numfmt.h)
utrans.hvoid utrans_trans(const UTransliterator*, UReplaceable*, UReplaceableCallbacks*, int32_t, int32_t*, UErrorCode*)Stable
ICU 2.0
(missing)
actually, just
added “const”
to one param
+
decimfmt.henum - icu::DecimalFormat::ERoundingMode::kRoundUpStable
ICU 2.4
(moved to numfmt.h)
platform.h#define U_IOSTREAM_SOURCEInternal(missing)
plurrule.hUnicodeString icu::PluralRules::select(const FixedDecimal&)Internal(missing)
ucasemap.h#define U_TITLECASE_NO_BREAK_ADJUSTMENTStable
ICU 3.8
(moved to new stringoptions.h)
ucasemap.h#define U_TITLECASE_NO_LOWERCASEStable
ICU 3.8
(moved to new stringoptions.h)
ucasemap.h#define UCASEMAP_OMIT_UNCHANGED_TEXTDraft
ICU 59
(missing)
uchar.h#define U_FOLD_CASE_DEFAULTStable
ICU 2.0
(moved to new stringoptions.h)
uchar.h#define U_FOLD_CASE_EXCLUDE_SPECIAL_IStable
ICU 2.0
(moved to new stringoptions.h)
unorm2.h#define U_COMPARE_CODE_POINT_ORDERStable
ICU 2.2
(moved to new stringoptions.h)
unorm2.h#define U_COMPARE_IGNORE_CASEStable
ICU 2.2
(moved to new stringoptions.h)
unorm2.h#define UNORM_INPUT_IS_FCDStable
ICU 2.2
(moved to new stringoptions.h)
ustring.h#define U_COMPARE_CODE_POINT_ORDERStable
ICU 2.2
(moved to new stringoptions.h)
utrans.hvoid utrans_transIncremental(const UTransliterator*, UReplaceable*, UReplaceableCallbacks*, UTransPosition*, UErrorCode*)Stable
ICU 2.0
(missing)
actually, just
added “const”
to one param
+

(jump back to top)
-

Deprecated or Obsoleted in ICU 60

+

Deprecated or Obsoleted in ICU 61

- + - - - - - - - - - -
FileAPIICU 59ICU 60FileAPIICU 60ICU 61
filteredbrk.hBreakIterator* icu::FilteredBreakIteratorBuilder::build(BreakIterator*, UErrorCode&)Stable
ICU 56
Deprecated
-ICU 60
filteredbrk.hstatic FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(UErrorCode&)Stable
ICU 56
Deprecated
-ICU 60
utf_old.h#define U_HIDE_OBSOLETE_UTF_OLD_H(missing)Deprecated
-ICU 2.4
-

-(jump back to top) -
- -

Changed in ICU 60 (old, new)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
FileAPIICU 59ICU 60
filteredbrk.hBreakIterator* icu::FilteredBreakIteratorBuilder::build(BreakIterator*, UErrorCode&)Stable
ICU 56
Deprecated
-ICU 60
filteredbrk.hstatic FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createInstance(UErrorCode&)Stable
ICU 56
Deprecated
-ICU 60
measfmt.hUnicodeString icu::MeasureFormat::getUnitDisplayName(const MeasureUnit&, UErrorCode&)Draft→Stable
ICU 58
ubiditransform.hUBiDiTransform* ubiditransform_open(UErrorCode*)Draft→Stable
ICU 58
ubiditransform.henum UBiDiMirroring::UBIDI_MIRRORING_OFFDraft→Stable
ICU 58
ubiditransform.henum UBiDiMirroring::UBIDI_MIRRORING_ONDraft→Stable
ICU 58
ubiditransform.henum UBiDiOrder::UBIDI_LOGICALDraft→Stable
ICU 58
ubiditransform.henum UBiDiOrder::UBIDI_VISUALDraft→Stable
ICU 58
ubiditransform.huint32_t ubiditransform_transform(UBiDiTransform*, const UChar*, int32_t, UChar*, int32_t, UBiDiLevel, UBiDiOrder, UBiDiLevel, UBiDiOrder, UBiDiMirroring, uint32_t, UErrorCode*)Draft→Stable
ICU 58
ubiditransform.hvoid ubiditransform_close(UBiDiTransform*)Draft→Stable
ICU 58
udisplaycontext.henum UDisplayContext::UDISPCTX_NO_SUBSTITUTEDraft→Stable
ICU 58
udisplaycontext.henum UDisplayContext::UDISPCTX_SUBSTITUTEDraft→Stable
ICU 58
udisplaycontext.henum UDisplayContextType::UDISPCTX_TYPE_SUBSTITUTE_HANDLINGDraft→Stable
ICU 58
uspoof.hURestrictionLevel uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.hUSpoofCheckResult* uspoof_openCheckResult(UErrorCode*)Draft→Stable
ICU 58
uspoof.hU_NAMESPACE_END int32_t uspoof_getCheckResultChecks(const USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.hconst USet* uspoof_getCheckResultNumerics(const USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.henum USpoofChecks::USPOOF_CONFUSABLEDraft→Stable
ICU 58
uspoof.hint32_t uspoof_check2(const USpoofChecker*, const UChar*, int32_t, USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.hint32_t uspoof_check2UTF8(const USpoofChecker*, const char*, int32_t, USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.hint32_t uspoof_check2UnicodeString(const USpoofChecker*, const icu::UnicodeString&, USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.hvoid uspoof_closeCheckResult(USpoofCheckResult*)Draft→Stable
ICU 58

(jump back to top)
- -

Promoted to stable in ICU 60

+ +

Changed in ICU 61 (old, new)

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - +
FileAPIICU 59ICU 60FileAPIICU 60ICU 61
measfmt.hUnicodeString icu::MeasureFormat::getUnitDisplayName(const MeasureUnit&, UErrorCode&)Draft→Stable
ICU 58
casemap.hstatic int32_t icu::CaseMap::fold(uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode {}(moved from decimfmt.h)Stable
-ICU 2.4
casemap.hstatic int32_t icu::CaseMap::toLower(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundCeiling(moved from decimfmt.h)Stable
-ICU 2.4
casemap.hstatic int32_t icu::CaseMap::toTitle(const char*, uint32_t, BreakIterator*, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundDown(moved from decimfmt.h)Stable
-ICU 2.4
casemap.hstatic int32_t icu::CaseMap::toUpper(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundFloor(moved from decimfmt.h)Stable
-ICU 2.4
casemap.hstatic int32_t icu::CaseMap::utf8Fold(uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundHalfDown(moved from decimfmt.h)Stable
-ICU 2.4
casemap.hstatic int32_t icu::CaseMap::utf8ToLower(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundHalfEven(moved from decimfmt.h)Stable
-ICU 2.4
casemap.hstatic int32_t icu::CaseMap::utf8ToTitle(const char*, uint32_t, BreakIterator*, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundHalfUp(moved from decimfmt.h)Stable
-ICU 2.4
casemap.hstatic int32_t icu::CaseMap::utf8ToUpper(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundUnnecessary(moved from decimfmt.h)Stable
-ICU 4.8
char16ptr.hchar16_t* icu::Char16Ptr::get()Draft→Stable
ICU 59
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundUp(moved from decimfmt.h)Stable
-ICU 2.4
char16ptr.hconst char16_t* icu::ConstChar16Ptr::get()Draft→Stable
ICU 59
ubiditransform.hUBiDiTransform* ubiditransform_open(UErrorCode*)Draft→Stable
ICU 58
char16ptr.hicu::Char16Ptr::Char16Ptr(char16_t*)Draft→Stable
ICU 59
ubiditransform.henum UBiDiMirroring::UBIDI_MIRRORING_OFFDraft→Stable
ICU 58
char16ptr.hicu::Char16Ptr::Char16Ptr(std::nullptr_t)Draft→Stable
ICU 59
ubiditransform.henum UBiDiMirroring::UBIDI_MIRRORING_ONDraft→Stable
ICU 58
char16ptr.hicu::Char16Ptr::Char16Ptr(uint16_t*)Draft→Stable
ICU 59
ubiditransform.henum UBiDiOrder::UBIDI_LOGICALDraft→Stable
ICU 58
char16ptr.hicu::Char16Ptr::Char16Ptr(wchar_t*)Draft→Stable
ICU 59
ubiditransform.henum UBiDiOrder::UBIDI_VISUALDraft→Stable
ICU 58
char16ptr.hicu::Char16Ptr::operator char16_t* ()Draft→Stable
ICU 59
ubiditransform.huint32_t ubiditransform_transform(UBiDiTransform*, const UChar*, int32_t, UChar*, int32_t, UBiDiLevel, UBiDiOrder, UBiDiLevel, UBiDiOrder, UBiDiMirroring, uint32_t, UErrorCode*)Draft→Stable
ICU 58
char16ptr.hicu::Char16Ptr::~Char16Ptr()Draft→Stable
ICU 59
ubiditransform.hvoid ubiditransform_close(UBiDiTransform*)Draft→Stable
ICU 58
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const char16_t*)Draft→Stable
ICU 59
uchar.henum UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F(missing)Stable
-ICU 60
(Born Stable)char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const std::nullptr_t)Draft→Stable
ICU 59
uchar.henum UBlockCode::UBLOCK_KANA_EXTENDED_A(missing)Stable
-ICU 60
(Born Stable)char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const uint16_t*)Draft→Stable
ICU 59
uchar.henum UBlockCode::UBLOCK_MASARAM_GONDI(missing)Stable
-ICU 60
(Born Stable)char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const wchar_t*)Draft→Stable
ICU 59
uchar.henum UBlockCode::UBLOCK_NUSHU(missing)Stable
-ICU 60
(Born Stable)char16ptr.hicu::ConstChar16Ptr::operator const char16_t* ()Draft→Stable
ICU 59
uchar.henum UBlockCode::UBLOCK_SOYOMBO(missing)Stable
-ICU 60
(Born Stable)char16ptr.hicu::ConstChar16Ptr::~ConstChar16Ptr()Draft→Stable
ICU 59
uchar.henum UBlockCode::UBLOCK_SYRIAC_SUPPLEMENT(missing)Stable
-ICU 60
(Born Stable)edits.hIterator icu::Edits::getCoarseChangesIterator()Draft→Stable
ICU 59
uchar.henum UBlockCode::UBLOCK_ZANABAZAR_SQUARE(missing)Stable
-ICU 60
(Born Stable)edits.hIterator icu::Edits::getCoarseIterator()Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_BHA(missing)Stable
-ICU 60
(Born Stable)edits.hIterator icu::Edits::getFineChangesIterator()Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_JA(missing)Stable
-ICU 60
(Born Stable)edits.hIterator icu::Edits::getFineIterator()Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_LLA(missing)Stable
-ICU 60
(Born Stable)edits.hUBool icu::Edits::copyErrorTo(UErrorCode&)Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_LLLA(missing)Stable
-ICU 60
(Born Stable)edits.hUBool icu::Edits::hasChanges()Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_NGA(missing)Stable
-ICU 60
(Born Stable)edits.hicu::Edits::Edits()Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_NNA(missing)Stable
-ICU 60
(Born Stable)edits.hicu::Edits::~Edits()Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_NNNA(missing)Stable
-ICU 60
(Born Stable)edits.hint32_t icu::Edits::lengthDelta()Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_NYA(missing)Stable
-ICU 60
(Born Stable)edits.hvoid icu::Edits::addReplace(int32_t, int32_t)Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_RA(missing)Stable
-ICU 60
(Born Stable)edits.hvoid icu::Edits::addUnchanged(int32_t)Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_SSA(missing)Stable
-ICU 60
(Born Stable)edits.hvoid icu::Edits::reset()Draft→Stable
ICU 59
uchar.henum UJoiningGroup::U_JG_MALAYALAM_TTA(missing)Stable
-ICU 60
(Born Stable)measunit.hstatic MeasureUnit* icu::MeasureUnit::createPoint(UErrorCode&)Draft→Stable
ICU 59
uchar.henum UProperty::UCHAR_EMOJI_COMPONENT(missing)Stable
-ICU 60
(Born Stable)ubrk.hUBreakIterator* ubrk_openBinaryRules(const uint8_t*, int32_t, const UChar*, int32_t, UErrorCode*)Draft→Stable
ICU 59
uchar.henum UProperty::UCHAR_PREPENDED_CONCATENATION_MARK(missing)Stable
-ICU 60
(Born Stable)ubrk.hint32_t ubrk_getBinaryRules(UBreakIterator*, uint8_t*, int32_t, UErrorCode*)Draft→Stable
ICU 59
uchar.henum UProperty::UCHAR_REGIONAL_INDICATOR(missing)Stable
-ICU 60
(Born Stable)unistr.hUNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const uint16_t*)Draft→Stable
ICU 59
udisplaycontext.henum UDisplayContext::UDISPCTX_NO_SUBSTITUTEDraft→Stable
ICU 58
unistr.hUNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const wchar_t*)Draft→Stable
ICU 59
udisplaycontext.henum UDisplayContext::UDISPCTX_SUBSTITUTEDraft→Stable
ICU 58
unistr.hicu::UnicodeString::UnicodeString(const std::nullptr_t)Draft→Stable
ICU 59
udisplaycontext.henum UDisplayContextType::UDISPCTX_TYPE_SUBSTITUTE_HANDLINGDraft→Stable
ICU 58
unistr.hicu::UnicodeString::UnicodeString(const std::nullptr_t, int32_t)Draft→Stable
ICU 59
uscript.henum UScriptCode::USCRIPT_MASARAM_GONDI(missing)Stable
-ICU 60
(Born Stable)unistr.hicu::UnicodeString::UnicodeString(const uint16_t*, int32_t)Draft→Stable
ICU 59
uscript.henum UScriptCode::USCRIPT_SOYOMBO(missing)Stable
-ICU 60
(Born Stable)unistr.hicu::UnicodeString::UnicodeString(const wchar_t*, int32_t)Draft→Stable
ICU 59
uscript.henum UScriptCode::USCRIPT_ZANABAZAR_SQUARE(missing)Stable
-ICU 60
(Born Stable)unistr.hicu::UnicodeString::UnicodeString(std::nullptr_t, int32_t, int32_t)Draft→Stable
ICU 59
uspoof.hURestrictionLevel uspoof_getCheckResultRestrictionLevel(const USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
unistr.hicu::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)Draft→Stable
ICU 59
uspoof.hUSpoofCheckResult* uspoof_openCheckResult(UErrorCode*)Draft→Stable
ICU 58
unistr.hicu::UnicodeString::UnicodeString(wchar_t*, int32_t, int32_t)Draft→Stable
ICU 59
uspoof.hU_NAMESPACE_END int32_t uspoof_getCheckResultChecks(const USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
unum.hint32_t unum_formatDoubleForFields(const UNumberFormat*, double, UChar*, int32_t, UFieldPositionIterator*, UErrorCode*)Draft→Stable
ICU 59
uspoof.hconst USet* uspoof_getCheckResultNumerics(const USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.henum USpoofChecks::USPOOF_CONFUSABLEDraft→Stable
ICU 58
uspoof.hint32_t uspoof_check2(const USpoofChecker*, const UChar*, int32_t, USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.hint32_t uspoof_check2UTF8(const USpoofChecker*, const char*, int32_t, USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.hint32_t uspoof_check2UnicodeString(const USpoofChecker*, const icu::UnicodeString&, USpoofCheckResult*, UErrorCode*)Draft→Stable
ICU 58
uspoof.hvoid uspoof_closeCheckResult(USpoofCheckResult*)Draft→Stable
ICU 58
upluralrules.hUEnumeration* uplrules_getKeywords(const UPluralRules*, UErrorCode*)Draft→Stable
ICU 59

(jump back to top)
- -

Added in ICU 60

+ +

Promoted to stable in ICU 61

- + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - - +
FileAPIICU 59ICU 60FileAPIICU 60ICU 61
bytestream.hicu::StringByteSink< StringClass >::StringByteSink(StringClass*, int32_t)(missing)Draft
-ICU 60
casemap.hstatic int32_t icu::CaseMap::fold(uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
casemap.hstatic void icu::CaseMap::utf8Fold(uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)(missing)Draft
-ICU 60
casemap.hstatic int32_t icu::CaseMap::toLower(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
casemap.hstatic void icu::CaseMap::utf8ToLower(const char*, uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)(missing)Draft
-ICU 60
casemap.hstatic int32_t icu::CaseMap::toTitle(const char*, uint32_t, BreakIterator*, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
casemap.hstatic void icu::CaseMap::utf8ToTitle(const char*, uint32_t, BreakIterator*, StringPiece, ByteSink&, Edits*, UErrorCode&)(missing)Draft
-ICU 60
casemap.hstatic int32_t icu::CaseMap::toUpper(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
casemap.hstatic void icu::CaseMap::utf8ToUpper(const char*, uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)(missing)Draft
-ICU 60
casemap.hstatic int32_t icu::CaseMap::utf8Fold(uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
currunit.hicu::CurrencyUnit::CurrencyUnit()(missing)Draft
-ICU 60
casemap.hstatic int32_t icu::CaseMap::utf8ToLower(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
currunit.hicu::CurrencyUnit::CurrencyUnit(const MeasureUnit&, UErrorCode&)(missing)Draft
-ICU 60
casemap.hstatic int32_t icu::CaseMap::utf8ToTitle(const char*, uint32_t, BreakIterator*, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
dcfmtsym.hicu::DecimalFormatSymbols::DecimalFormatSymbols(const Locale&, const NumberingSystem&, UErrorCode&)(missing)Draft
-ICU 60
casemap.hstatic int32_t icu::CaseMap::utf8ToUpper(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft→Stable
ICU 59
edits.hEdits& icu::Edits::mergeAndAppend(const Edits&, const Edits&, UErrorCode&)(missing)Draft
-ICU 60
char16ptr.hchar16_t* icu::Char16Ptr::get()Draft→Stable
ICU 59
edits.hEdits& icu::Edits::operator=(Edits&&)(missing)Draft
-ICU 60
char16ptr.hconst char16_t* icu::ConstChar16Ptr::get()Draft→Stable
ICU 59
edits.hEdits& icu::Edits::operator=(const Edits&)(missing)Draft
-ICU 60
char16ptr.hicu::Char16Ptr::Char16Ptr(char16_t*)Draft→Stable
ICU 59
edits.hicu::Edits::Edits(Edits&&)(missing)Draft
-ICU 60
char16ptr.hicu::Char16Ptr::Char16Ptr(std::nullptr_t)Draft→Stable
ICU 59
edits.hicu::Edits::Edits(const Edits&)(missing)Draft
-ICU 60
char16ptr.hicu::Char16Ptr::Char16Ptr(uint16_t*)Draft→Stable
ICU 59
edits.hint32_t icu::Edits::numberOfChanges()(missing)Draft
-ICU 60
char16ptr.hicu::Char16Ptr::Char16Ptr(wchar_t*)Draft→Stable
ICU 59
filteredbrk.hBreakIterator* icu::FilteredBreakIteratorBuilder::wrapIteratorWithFilter(BreakIterator*, UErrorCode&)(missing)Draft
-ICU 60
char16ptr.hicu::Char16Ptr::operator char16_t* ()Draft→Stable
ICU 59
filteredbrk.hstatic FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createEmptyInstance(UErrorCode&)(missing)Draft
-ICU 60
char16ptr.hicu::Char16Ptr::~Char16Ptr()Draft→Stable
ICU 59
normalizer2.hUBool icu::FilteredNormalizer2::isNormalizedUTF8(StringPiece, UErrorCode&)(missing)Draft
-ICU 60
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const char16_t*)Draft→Stable
ICU 59
normalizer2.hUBool icu::Normalizer2::isNormalizedUTF8(StringPiece, UErrorCode&)(missing)Draft
-ICU 60
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const std::nullptr_t)Draft→Stable
ICU 59
normalizer2.hvoid icu::FilteredNormalizer2::normalizeUTF8(uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)(missing)Draft
-ICU 60
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const uint16_t*)Draft→Stable
ICU 59
normalizer2.hvoid icu::Normalizer2::normalizeUTF8(uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)(missing)Draft
-ICU 60
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const wchar_t*)Draft→Stable
ICU 59
nounit.hUClassID icu::NoUnit::getDynamicClassID()(missing)Draft
-ICU 60
char16ptr.hicu::ConstChar16Ptr::operator const char16_t* ()Draft→Stable
ICU 59
nounit.hUObject* icu::NoUnit::clone()(missing)Draft
-ICU 60
char16ptr.hicu::ConstChar16Ptr::~ConstChar16Ptr()Draft→Stable
ICU 59
nounit.hicu::NoUnit::NoUnit(const NoUnit&)(missing)Draft
-ICU 60
edits.hIterator icu::Edits::getCoarseChangesIterator()Draft→Stable
ICU 59
nounit.hicu::NoUnit::~NoUnit()(missing)Draft
-ICU 60
edits.hIterator icu::Edits::getCoarseIterator()Draft→Stable
ICU 59
nounit.hstatic NoUnit icu::NoUnit::base()(missing)Draft
-ICU 60
edits.hIterator icu::Edits::getFineChangesIterator()Draft→Stable
ICU 59
nounit.hstatic NoUnit icu::NoUnit::percent()(missing)Draft
-ICU 60
edits.hIterator icu::Edits::getFineIterator()Draft→Stable
ICU 59
nounit.hstatic NoUnit icu::NoUnit::permille()(missing)Draft
-ICU 60
edits.hUBool icu::Edits::copyErrorTo(UErrorCode&)Draft→Stable
ICU 59
nounit.hstatic UClassID icu::NoUnit::getStaticClassID()(missing)Draft
-ICU 60
edits.hUBool icu::Edits::hasChanges()Draft→Stable
ICU 59
numberformatter.hAppendable& icu::number::FormattedNumber::appendTo(Appendable&)(missing)Draft
-ICU 60
edits.hicu::Edits::Edits()Draft→Stable
ICU 59
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(const NumberingSystem*)(missing)Draft
-ICU 60
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(const icu::MeasureUnit*)(missing)Draft
-ICU 60
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::decimal(const UNumberDecimalSeparatorDisplay&)(missing)Draft
-ICU 60
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(const Grouper&)(missing)Internal
-
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)(missing)Draft
-ICU 60
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)(missing)Draft
-ICU 60
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::padding(const impl::Padder&)(missing)Internal
-ICU 60
edits.hicu::Edits::~Edits()Draft→Stable
ICU 59
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::rounding(const Rounder&)(missing)Draft
-ICU 60
edits.hint32_t icu::Edits::lengthDelta()Draft→Stable
ICU 59
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::sign(const UNumberSignDisplay&)(missing)Draft
-ICU 60
edits.hvoid icu::Edits::addReplace(int32_t, int32_t)Draft→Stable
ICU 59
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)(missing)Draft
-ICU 60
edits.hvoid icu::Edits::addUnchanged(int32_t)Draft→Stable
ICU 59
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::threshold(int32_t)(missing)Internal
-ICU 60
edits.hvoid icu::Edits::reset()Draft→Stable
ICU 59
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)(missing)Draft
-ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPoint(UErrorCode&)Draft→Stable
ICU 59
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unitWidth(const UNumberUnitWidth&)(missing)Draft
-ICU 60
ubrk.hUBreakIterator* ubrk_openBinaryRules(const uint8_t*, int32_t, const UChar*, int32_t, UErrorCode*)Draft→Stable
ICU 59
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&)(missing)Draft
-ICU 60
ubrk.hint32_t ubrk_getBinaryRules(UBreakIterator*, uint8_t*, int32_t, UErrorCode*)Draft→Stable
ICU 59
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&)(missing)Draft
-ICU 60
unistr.hUNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const uint16_t*)Draft→Stable
ICU 59
numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&)(missing)Draft
-ICU 60
unistr.hUNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const wchar_t*)Draft→Stable
ICU 59
numberformatter.hIntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)(missing)Draft
-ICU 60
unistr.hicu::UnicodeString::UnicodeString(const std::nullptr_t)Draft→Stable
ICU 59
numberformatter.hLocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)(missing)Draft
-ICU 60
unistr.hicu::UnicodeString::UnicodeString(const std::nullptr_t, int32_t)Draft→Stable
ICU 59
numberformatter.hRounder icu::number::CurrencyRounder::withCurrency(const CurrencyUnit&)(missing)Draft
-ICU 60
unistr.hicu::UnicodeString::UnicodeString(const uint16_t*, int32_t)Draft→Stable
ICU 59
numberformatter.hRounder icu::number::FractionRounder::withMaxDigits(int32_t)(missing)Draft
-ICU 60
unistr.hicu::UnicodeString::UnicodeString(const wchar_t*, int32_t)Draft→Stable
ICU 59
numberformatter.hRounder icu::number::FractionRounder::withMinDigits(int32_t)(missing)Draft
-ICU 60
unistr.hicu::UnicodeString::UnicodeString(std::nullptr_t, int32_t, int32_t)Draft→Stable
ICU 59
numberformatter.hRounder icu::number::IncrementRounder::withMinFraction(int32_t)(missing)Draft
-ICU 60
unistr.hicu::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)Draft→Stable
ICU 59
numberformatter.hRounder icu::number::Rounder::withMode(UNumberFormatRoundingMode)(missing)Draft
-ICU 60
unistr.hicu::UnicodeString::UnicodeString(wchar_t*, int32_t, int32_t)Draft→Stable
ICU 59
numberformatter.hScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay)(missing)Draft
-ICU 60
unum.hint32_t unum_formatDoubleForFields(const UNumberFormat*, double, UChar*, int32_t, UFieldPositionIterator*, UErrorCode*)Draft→Stable
ICU 59
numberformatter.hScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t)(missing)Draft
-ICU 60
upluralrules.hUEnumeration* uplrules_getKeywords(const UPluralRules*, UErrorCode*)Draft→Stable
ICU 59
numberformatter.hSymbolsWrapper& icu::number::impl::SymbolsWrapper::operator=(const SymbolsWrapper&)(missing)Internal
-
numberformatter.hUBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&)(missing)Draft
-ICU 60
numberformatter.hUBool icu::number::impl::SymbolsWrapper::copyErrorTo(UErrorCode&)(missing)Internal
-
numberformatter.hUnicodeString icu::number::FormattedNumber::toString()(missing)Draft
-ICU 60
numberformatter.hbool icu::number::impl::SymbolsWrapper::isDecimalFormatSymbols()(missing)Internal
-
numberformatter.hbool icu::number::impl::SymbolsWrapper::isNumberingSystem()(missing)Internal
-
numberformatter.hconst DecimalFormatSymbols* icu::number::impl::SymbolsWrapper::getDecimalFormatSymbols()(missing)Internal
-
numberformatter.hconst NumberingSystem* icu::number::impl::SymbolsWrapper::getNumberingSystem()(missing)Internal
-
numberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYS(missing)Draft
-ICU 60
numberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTO(missing)Draft
-ICU 60
numberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_COUNT(missing)Internal
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS(missing)Draft
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING(missing)Draft
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_ALWAYS(missing)Draft
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_AUTO(missing)Draft
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_COUNT(missing)Internal
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_NEVER(missing)Draft
-ICU 60
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_COUNT(missing)Internal
-ICU 60
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME(missing)Draft
-ICU 60
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDEN(missing)Draft
-ICU 60
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODE(missing)Draft
-ICU 60
utrans.hvoid utrans_trans(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, int32_t, int32_t*, UErrorCode*)(missing)
old version (stable)
lacked “const”
on one param
Stable
+ICU 2.0
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW(missing)Draft
-ICU 60
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORT(missing)Draft
-ICU 60
utrans.hvoid utrans_transIncremental(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, UTransPosition*, UErrorCode*)(missing)
old version (stable)
lacked “const”
on one param
Stable
+ICU 2.0
numberformatter.hicu::number::FormattedNumber::~FormattedNumber()(missing)Draft
-ICU 60
+

+(jump back to top) +
+ +

Added in ICU 61

+ + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - + - - +
FileAPIICU 60ICU 61
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&)(missing)Draft
-ICU 60
dcfmtsym.hUChar32 icu::DecimalFormatSymbols::getCodePointZero()(missing)Internal
+
numberformatter.hicu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter()(missing)Draft
-ICU 60
dcfmtsym.hconst UnicodeString& icu::DecimalFormatSymbols::getConstDigitSymbol(int32_t)(missing)Internal
+
numberformatter.hicu::number::NumberFormatter::NumberFormatter()=delete(missing)Draft
-ICU 60
dtptngen.hUnicodeString icu::DateTimePatternGenerator::getFieldDisplayName(UDateTimePatternField, UDateTimePGDisplayWidth)(missing)Draft
+ICU 61
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&)(missing)Draft
-ICU 60
measunit.hstatic MeasureUnit icu::MeasureUnit::resolveUnitPerUnit(const MeasureUnit&, const MeasureUnit&, bool*)(missing)Internal
+
numberformatter.hicu::number::impl::SymbolsWrapper::SymbolsWrapper()(missing)Internal
-
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptPerUnit(icu::MeasureUnit*)(missing)Draft
+ICU 61
numberformatter.hicu::number::impl::SymbolsWrapper::SymbolsWrapper(const SymbolsWrapper&)(missing)Internal
-
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)(missing)
old version
had “const”
on param
Draft
+ICU 60 +
+(should be ICU 61)
decided to keep draft ICU 60
numberformatter.hicu::number::impl::SymbolsWrapper::~SymbolsWrapper()(missing)Internal
-
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)(missing)
old version
had “const”
on param
Draft
+ICU 60 +
+(should be ICU 61)
decided to keep draft ICU 60
numberformatter.hstatic CompactNotation icu::number::Notation::compactLong()(missing)Draft
-ICU 60
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::grouping(const UGroupingStrategy&)(missing)Draft
+ICU 61
numberformatter.hstatic CompactNotation icu::number::Notation::compactShort()(missing)Draft
-ICU 60
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::perUnit(const icu::MeasureUnit&)(missing)Draft
+ICU 61
numberformatter.hstatic CurrencyRounder icu::number::Rounder::currency(UCurrencyUsage)(missing)Draft
-ICU 60
numberformatter.henum UGroupingStrategy::UNUM_GROUPING_AUTO(missing)Draft
+ICU 61
numberformatter.hstatic DigitRounder icu::number::Rounder::fixedDigits(int32_t)(missing)Draft
-ICU 60
numberformatter.henum UGroupingStrategy::UNUM_GROUPING_MIN2(missing)Draft
+ICU 61
numberformatter.hstatic DigitRounder icu::number::Rounder::maxDigits(int32_t)(missing)Draft
-ICU 60
numberformatter.henum UGroupingStrategy::UNUM_GROUPING_OFF(missing)Draft
+ICU 61
numberformatter.hstatic DigitRounder icu::number::Rounder::minDigits(int32_t)(missing)Draft
-ICU 60
numberformatter.henum UGroupingStrategy::UNUM_GROUPING_ON_ALIGNED(missing)Draft
+ICU 61
numberformatter.hstatic DigitRounder icu::number::Rounder::minMaxDigits(int32_t, int32_t)(missing)Draft
-ICU 60
numberformatter.henum UGroupingStrategy::UNUM_GROUPING_THOUSANDS(missing)Draft
+ICU 61
numberformatter.hstatic FractionRounder icu::number::Rounder::fixedFraction(int32_t)(missing)Draft
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO(missing)Draft
+ICU 61
numberformatter.hstatic FractionRounder icu::number::Rounder::integer()(missing)Draft
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO(missing)Draft
+ICU 61
numberformatter.hstatic FractionRounder icu::number::Rounder::maxFraction(int32_t)(missing)Draft
-ICU 60
numberformatter.hicu::number::impl::Grouper::Grouper(int16_t, int16_t, int16_t)(missing)Internal
+
numberformatter.hstatic FractionRounder icu::number::Rounder::minFraction(int32_t)(missing)Draft
-ICU 60
numberformatter.hstatic Grouper icu::number::impl::Grouper::forStrategy(UGroupingStrategy)(missing)Internal
+
numberformatter.hstatic FractionRounder icu::number::Rounder::minMaxFraction(int32_t, int32_t)(missing)Draft
-ICU 60
rbbi.hvoid icu::RuleBasedBreakIterator::dumpTables()(missing)Internal
+
numberformatter.hstatic Grouper icu::number::Grouper::defaults()(missing)Internal
-
ucurr.henum UCurrNameStyle::UCURR_NARROW_SYMBOL_NAME(missing)Draft
+ICU 61
numberformatter.hstatic Grouper icu::number::Grouper::minTwoDigits()(missing)Internal
-
udatpg.henum UDateTimePGDisplayWidth::UDATPG_ABBREVIATED(missing)Draft
+ICU 61
numberformatter.hstatic Grouper icu::number::Grouper::none()(missing)Internal
-
udatpg.henum UDateTimePGDisplayWidth::UDATPG_NARROW(missing)Draft
+ICU 61
numberformatter.hstatic IncrementRounder icu::number::Rounder::increment(double)(missing)Draft
-ICU 60
udatpg.henum UDateTimePGDisplayWidth::UDATPG_WIDE(missing)Draft
+ICU 61
numberformatter.hstatic IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t)(missing)Draft
-ICU 60
udatpg.hint32_t udatpg_getFieldDisplayName(const UDateTimePatternGenerator*, UDateTimePatternField, UDateTimePGDisplayWidth, UChar*, int32_t, UErrorCode*)(missing)Draft
+ICU 61
numberformatter.hstatic LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&)(missing)Draft
-ICU 60
utf8.h#define U8_INTERNAL_NEXT_OR_SUB(missing)Internal
+
numberformatter.hstatic Padder icu::number::impl::Padder::codePoints(UChar32, int32_t, UNumberFormatPadPosition)(missing)Internal
-
utf8.h#define U8_TRUNCATE_IF_INCOMPLETE(missing)Draft
+ICU 61
numberformatter.hstatic Padder icu::number::impl::Padder::none()(missing)Internal
-
utrans.hvoid utrans_trans(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, int32_t, int32_t*, UErrorCode*)(missing) old version
(stable) lacked “const”
on one parameter
Stable
+ICU 2.0
numberformatter.hstatic Rounder icu::number::Rounder::unlimited()(missing)Draft
-ICU 60
numberformatter.hstatic ScientificNotation icu::number::Notation::engineering()(missing)Draft
-ICU 60
utrans.hvoid utrans_transIncremental(const UTransliterator*, UReplaceable*, const UReplaceableCallbacks*, UTransPosition*, UErrorCode*)(missing) old version
(stable) lacked “const”
on one parameter
Stable
+ICU 2.0
numberformatter.hstatic ScientificNotation icu::number::Notation::scientific()(missing)Draft
-ICU 60
+

+(jump back to top) +
+ +

Other existing drafts in ICU 61

+
+ + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - -
FileAPIICU 60ICU 61
numberformatter.hstatic SimpleNotation icu::number::Notation::simple()(missing)Draft
-ICU 60
bytestream.hicu::StringByteSink< StringClass >::StringByteSink(StringClass*, int32_t)Draft
ICU 60
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::with()(missing)Draft
-ICU 60
casemap.hstatic void icu::CaseMap::utf8Fold(uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)Draft
ICU 60
numberformatter.hvoid icu::number::FormattedNumber::populateFieldPosition(FieldPosition&, UErrorCode&)(missing)Draft
-ICU 60
casemap.hstatic void icu::CaseMap::utf8ToLower(const char*, uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)Draft
ICU 60
numberformatter.hvoid icu::number::FormattedNumber::populateFieldPositionIterator(FieldPositionIterator&, UErrorCode&)(missing)Draft
-ICU 60
casemap.hstatic void icu::CaseMap::utf8ToTitle(const char*, uint32_t, BreakIterator*, StringPiece, ByteSink&, Edits*, UErrorCode&)Draft
ICU 60
numberformatter.hvoid icu::number::impl::SymbolsWrapper::setTo(const DecimalFormatSymbols&)(missing)Internal
-
casemap.hstatic void icu::CaseMap::utf8ToUpper(const char*, uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)Draft
ICU 60
numberformatter.hvoid icu::number::impl::SymbolsWrapper::setTo(const NumberingSystem*)(missing)Internal
-
currunit.hicu::CurrencyUnit::CurrencyUnit()Draft
ICU 60
numfmt.hERoundingMode icu::NumberFormat::getRoundingMode()(missing)Draft
-ICU 60
currunit.hicu::CurrencyUnit::CurrencyUnit(const MeasureUnit&, UErrorCode&)Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode {}(moved from decimfmt.h)Stable
-ICU 2.4
dcfmtsym.hicu::DecimalFormatSymbols::DecimalFormatSymbols(const Locale&, const NumberingSystem&, UErrorCode&)Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundCeiling(moved from decimfmt.h)Stable
-ICU 2.4
edits.hEdits& icu::Edits::mergeAndAppend(const Edits&, const Edits&, UErrorCode&)Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundDown(moved from decimfmt.h)Stable
-ICU 2.4
edits.hEdits& icu::Edits::operator=(Edits&&)Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundFloor(moved from decimfmt.h)Stable
-ICU 2.4
edits.hEdits& icu::Edits::operator=(const Edits&)Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundHalfDown(moved from decimfmt.h)Stable
-ICU 2.4
edits.hicu::Edits::Edits(Edits&&)Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundHalfEven(moved from decimfmt.h)Stable
-ICU 2.4
edits.hicu::Edits::Edits(const Edits&)Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundHalfUp(moved from decimfmt.h)Stable
-ICU 2.4
edits.hint32_t icu::Edits::numberOfChanges()Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundUnnecessary(moved from decimfmt.h)Stable
-ICU 4.8
filteredbrk.hBreakIterator* icu::FilteredBreakIteratorBuilder::wrapIteratorWithFilter(BreakIterator*, UErrorCode&)Draft
ICU 60
numfmt.henum - icu::NumberFormat::ERoundingMode::kRoundUp(moved from decimfmt.h)Stable
-ICU 2.4
filteredbrk.hstatic FilteredBreakIteratorBuilder* icu::FilteredBreakIteratorBuilder::createEmptyInstance(UErrorCode&)Draft
ICU 60
numfmt.hvoid icu::NumberFormat::setRoundingMode(ERoundingMode)(missing)Draft
-ICU 60
localpointer.hLocalArray<T>& icu::LocalArray< T >::moveFrom(LocalArray< T >&)Draft
ICU 56
platform.h#define U_CALLCONV_FPTR(missing)Internal
-
localpointer.hLocalPointer<T>& icu::LocalPointer< T >::moveFrom(LocalPointer< T >&)Draft
ICU 56
platform.h#define U_PF_FUCHSIA(missing)Internal
-
measfmt.hvoid icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&)Draft
ICU 53
plurrule.hUnicodeString icu::PluralRules::select(const IFixedDecimal&)(missing)Internal
-
normalizer2.hUBool icu::FilteredNormalizer2::isNormalizedUTF8(StringPiece, UErrorCode&)Draft
ICU 60
rbbi.hvoid icu::RuleBasedBreakIterator::dumpCache()(missing)Internal
-
normalizer2.hUBool icu::Normalizer2::isNormalizedUTF8(StringPiece, UErrorCode&)Draft
ICU 60
rbnf.hERoundingMode icu::RuleBasedNumberFormat::getRoundingMode()(missing)Draft
-ICU 60
normalizer2.hvoid icu::FilteredNormalizer2::normalizeUTF8(uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)Draft
ICU 60
rbnf.hvoid icu::RuleBasedNumberFormat::setRoundingMode(ERoundingMode)(missing)Draft
-ICU 60
normalizer2.hvoid icu::Normalizer2::normalizeUTF8(uint32_t, StringPiece, ByteSink&, Edits*, UErrorCode&)Draft
ICU 60
stringoptions.h#define U_COMPARE_CODE_POINT_ORDER(moved from unorm2.h, ustring.h)Stable
-ICU 2.2
nounit.hUClassID icu::NoUnit::getDynamicClassID()Draft
ICU 60
stringoptions.h#define U_COMPARE_IGNORE_CASE(moved from unorm2.h)Stable
-ICU 2.2
nounit.hUObject* icu::NoUnit::clone()Draft
ICU 60
stringoptions.h#define U_EDITS_NO_RESET(missing)Draft
-ICU 60
nounit.hicu::NoUnit::NoUnit(const NoUnit&)Draft
ICU 60
stringoptions.h#define U_FOLD_CASE_DEFAULT(moved from uchar.h)Stable
-ICU 2.0
nounit.hicu::NoUnit::~NoUnit()Draft
ICU 60
stringoptions.h#define U_FOLD_CASE_EXCLUDE_SPECIAL_I(moved from moved from uchar.h)Stable
-ICU 2.0
nounit.hstatic NoUnit icu::NoUnit::base()Draft
ICU 60
stringoptions.h#define U_OMIT_UNCHANGED_TEXT(missing)Draft
-ICU 60
nounit.hstatic NoUnit icu::NoUnit::percent()Draft
ICU 60
stringoptions.h#define U_TITLECASE_ADJUST_TO_CASED(missing)Draft
-ICU 60
nounit.hstatic NoUnit icu::NoUnit::permille()Draft
ICU 60
stringoptions.h#define U_TITLECASE_NO_BREAK_ADJUSTMENT(moved from ucasemap.h)Stable
-ICU 3.8
nounit.hstatic UClassID icu::NoUnit::getStaticClassID()Draft
ICU 60
stringoptions.h#define U_TITLECASE_NO_LOWERCASE(moved from ucasemap.h)Stable
-ICU 3.8
numberformatter.hAppendable& icu::number::FormattedNumber::appendTo(Appendable&)Draft
ICU 60
stringoptions.h#define U_TITLECASE_SENTENCES(missing)Draft
+
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptSymbols(NumberingSystem*)(missing)
+
Draft
ICU 60
stringoptions.h#define U_TITLECASE_WHOLE_STRING(missing)Draft
+
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::adoptUnit(icu::MeasureUnit*)(missing)
+
Draft
ICU 60
stringoptions.h#define UNORM_INPUT_IS_FCD(moved from unorm2.h)Stable
-ICU 2.2
numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::decimal(const UNumberDecimalSeparatorDisplay&)Draft
ICU 60
uchar.henum UBlockCode::UBLOCK_CJK_UNIFIED_IDEOGRAPHS_EXTENSION_F(missing)Stable
-ICU 60
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::integerWidth(const IntegerWidth&)Draft
ICU 60
uchar.henum UBlockCode::UBLOCK_KANA_EXTENDED_A(missing)Stable
-ICU 60
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::notation(const Notation&)Draft
ICU 60
uchar.henum UBlockCode::UBLOCK_MASARAM_GONDI(missing)Stable
-ICU 60
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::rounding(const Rounder&)Draft
ICU 60
uchar.henum UBlockCode::UBLOCK_NUSHU(missing)Stable
-ICU 60
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::sign(const UNumberSignDisplay&)Draft
ICU 60
uchar.henum UBlockCode::UBLOCK_SOYOMBO(missing)Stable
-ICU 60
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::symbols(const DecimalFormatSymbols&)Draft
ICU 60
uchar.henum UBlockCode::UBLOCK_SYRIAC_SUPPLEMENT(missing)Stable
-ICU 60
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unit(const icu::MeasureUnit&)Draft
ICU 60
uchar.henum UBlockCode::UBLOCK_ZANABAZAR_SQUARE(missing)Stable
-ICU 60
(Born Stable)numberformatter.hDerived icu::number::NumberFormatterSettings< Derived >::unitWidth(const UNumberUnitWidth&)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_BHA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDecimal(StringPiece, UErrorCode&)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_JA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatDouble(double, UErrorCode&)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_LLA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hFormattedNumber icu::number::LocalizedNumberFormatter::formatInt(int64_t, UErrorCode&)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_LLLA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hIntegerWidth icu::number::IntegerWidth::truncateAt(int32_t)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_NGA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hLocalizedNumberFormatter icu::number::UnlocalizedNumberFormatter::locale(const icu::Locale&)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_NNA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hRounder icu::number::CurrencyRounder::withCurrency(const CurrencyUnit&)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_NNNA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hRounder icu::number::FractionRounder::withMaxDigits(int32_t)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_NYA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hRounder icu::number::FractionRounder::withMinDigits(int32_t)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_RA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hRounder icu::number::IncrementRounder::withMinFraction(int32_t)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_SSA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hRounder icu::number::Rounder::withMode(UNumberFormatRoundingMode)Draft
ICU 60
uchar.henum UJoiningGroup::U_JG_MALAYALAM_TTA(missing)Stable
-ICU 60
(Born Stable)numberformatter.hScientificNotation icu::number::ScientificNotation::withExponentSignDisplay(UNumberSignDisplay)Draft
ICU 60
uchar.henum UProperty::UCHAR_EMOJI_COMPONENT(missing)Stable
-ICU 60
(Born Stable)numberformatter.hScientificNotation icu::number::ScientificNotation::withMinExponentDigits(int32_t)Draft
ICU 60
uchar.henum UProperty::UCHAR_PREPENDED_CONCATENATION_MARK(missing)Stable
-ICU 60
(Born Stable)numberformatter.hUBool icu::number::NumberFormatterSettings< Derived >::copyErrorTo(UErrorCode&)Draft
ICU 60
uchar.henum UProperty::UCHAR_REGIONAL_INDICATOR(missing)Stable
-ICU 60
(Born Stable)numberformatter.hUnicodeString icu::number::FormattedNumber::toString()Draft
ICU 60
uscript.henum UScriptCode::USCRIPT_MASARAM_GONDI(missing)Stable
-ICU 60
(Born Stable)numberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_ALWAYSDraft
ICU 60
uscript.henum UScriptCode::USCRIPT_SOYOMBO(missing)Stable
-ICU 60
(Born Stable)numberformatter.henum UNumberDecimalSeparatorDisplay::UNUM_DECIMAL_SEPARATOR_AUTODraft
ICU 60
uscript.henum UScriptCode::USCRIPT_ZANABAZAR_SQUARE(missing)Stable
-ICU 60
(Born Stable)numberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYSDraft
ICU 60
utf_old.h#define U_HIDE_OBSOLETE_UTF_OLD_H(missing)Deprecated
-ICU 2.4
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_ACCOUNTINGDraft
ICU 60
utf16.h#define U16_GET_OR_FFFD(missing)Draft
-ICU 60
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_ALWAYSDraft
ICU 60
utf16.h#define U16_NEXT_OR_FFFD(missing)Draft
-ICU 60
utf16.h#define U16_PREV_OR_FFFD(missing)Draft
-ICU 60
utf8.h#define U8_IS_VALID_LEAD3_AND_T1(missing)Internal
-
utf8.h#define U8_IS_VALID_LEAD4_AND_T1(missing)Internal
-
utf8.h#define U8_LEAD3_T1_BITS(missing)Internal
-
utf8.h#define U8_LEAD4_T1_BITS(missing)Internal
-
-

-(jump back to top) -
- -

Other existing drafts in ICU 60

-
- - - - + - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - - - - - - - - - - - - - - - - - - - + - + - + - +
FileAPIICU 59ICU 60numberformatter.henum UNumberSignDisplay::UNUM_SIGN_AUTODraft
ICU 60
casemap.hstatic int32_t icu::CaseMap::fold(uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft
ICU 59
numberformatter.henum UNumberSignDisplay::UNUM_SIGN_NEVERDraft
ICU 60
casemap.hstatic int32_t icu::CaseMap::toLower(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft
ICU 59
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAMEDraft
ICU 60
casemap.hstatic int32_t icu::CaseMap::toTitle(const char*, uint32_t, BreakIterator*, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft
ICU 59
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_HIDDENDraft
ICU 60
casemap.hstatic int32_t icu::CaseMap::toUpper(const char*, uint32_t, const char16_t*, int32_t, char16_t*, int32_t, Edits*, UErrorCode&)Draft
ICU 59
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_ISO_CODEDraft
ICU 60
casemap.hstatic int32_t icu::CaseMap::utf8Fold(uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft
ICU 59
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROWDraft
ICU 60
casemap.hstatic int32_t icu::CaseMap::utf8ToLower(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft
ICU 59
numberformatter.henum UNumberUnitWidth::UNUM_UNIT_WIDTH_SHORTDraft
ICU 60
casemap.hstatic int32_t icu::CaseMap::utf8ToTitle(const char*, uint32_t, BreakIterator*, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft
ICU 59
numberformatter.hicu::number::FormattedNumber::~FormattedNumber()Draft
ICU 60
casemap.hstatic int32_t icu::CaseMap::utf8ToUpper(const char*, uint32_t, const char*, int32_t, char*, int32_t, Edits*, UErrorCode&)Draft
ICU 59
numberformatter.hicu::number::LocalizedNumberFormatter::LocalizedNumberFormatter(const LocalizedNumberFormatter&)Draft
ICU 60
char16ptr.hchar16_t* icu::Char16Ptr::get()Draft
ICU 59
numberformatter.hicu::number::LocalizedNumberFormatter::~LocalizedNumberFormatter()Draft
ICU 60
char16ptr.hconst char16_t* icu::ConstChar16Ptr::get()Draft
ICU 59
numberformatter.hicu::number::NumberFormatter::NumberFormatter()=deleteDraft
ICU 60
char16ptr.hicu::Char16Ptr::Char16Ptr(char16_t*)Draft
ICU 59
numberformatter.hicu::number::UnlocalizedNumberFormatter::UnlocalizedNumberFormatter(const UnlocalizedNumberFormatter&)Draft
ICU 60
char16ptr.hicu::Char16Ptr::Char16Ptr(std::nullptr_t)Draft
ICU 59
numberformatter.hstatic CompactNotation icu::number::Notation::compactLong()Draft
ICU 60
char16ptr.hicu::Char16Ptr::Char16Ptr(uint16_t*)Draft
ICU 59
numberformatter.hstatic CompactNotation icu::number::Notation::compactShort()Draft
ICU 60
char16ptr.hicu::Char16Ptr::Char16Ptr(wchar_t*)Draft
ICU 59
numberformatter.hstatic CurrencyRounder icu::number::Rounder::currency(UCurrencyUsage)Draft
ICU 60
char16ptr.hicu::Char16Ptr::operator char16_t* ()Draft
ICU 59
numberformatter.hstatic DigitRounder icu::number::Rounder::fixedDigits(int32_t)Draft
ICU 60
char16ptr.hicu::Char16Ptr::~Char16Ptr()Draft
ICU 59
numberformatter.hstatic DigitRounder icu::number::Rounder::maxDigits(int32_t)Draft
ICU 60
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const char16_t*)Draft
ICU 59
numberformatter.hstatic DigitRounder icu::number::Rounder::minDigits(int32_t)Draft
ICU 60
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const std::nullptr_t)Draft
ICU 59
numberformatter.hstatic DigitRounder icu::number::Rounder::minMaxDigits(int32_t, int32_t)Draft
ICU 60
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const uint16_t*)Draft
ICU 59
numberformatter.hstatic FractionRounder icu::number::Rounder::fixedFraction(int32_t)Draft
ICU 60
char16ptr.hicu::ConstChar16Ptr::ConstChar16Ptr(const wchar_t*)Draft
ICU 59
numberformatter.hstatic FractionRounder icu::number::Rounder::integer()Draft
ICU 60
char16ptr.hicu::ConstChar16Ptr::operator const char16_t* ()Draft
ICU 59
numberformatter.hstatic FractionRounder icu::number::Rounder::maxFraction(int32_t)Draft
ICU 60
char16ptr.hicu::ConstChar16Ptr::~ConstChar16Ptr()Draft
ICU 59
numberformatter.hstatic FractionRounder icu::number::Rounder::minFraction(int32_t)Draft
ICU 60
edits.hIterator icu::Edits::getCoarseChangesIterator()Draft
ICU 59
numberformatter.hstatic FractionRounder icu::number::Rounder::minMaxFraction(int32_t, int32_t)Draft
ICU 60
edits.hIterator icu::Edits::getCoarseIterator()Draft
ICU 59
numberformatter.hstatic IncrementRounder icu::number::Rounder::increment(double)Draft
ICU 60
edits.hIterator icu::Edits::getFineChangesIterator()Draft
ICU 59
numberformatter.hstatic IntegerWidth icu::number::IntegerWidth::zeroFillTo(int32_t)Draft
ICU 60
edits.hIterator icu::Edits::getFineIterator()Draft
ICU 59
numberformatter.hstatic LocalizedNumberFormatter icu::number::NumberFormatter::withLocale(const Locale&)Draft
ICU 60
edits.hUBool icu::Edits::copyErrorTo(UErrorCode&)Draft
ICU 59
numberformatter.hstatic Rounder icu::number::Rounder::unlimited()Draft
ICU 60
edits.hUBool icu::Edits::hasChanges()Draft
ICU 59
numberformatter.hstatic ScientificNotation icu::number::Notation::engineering()Draft
ICU 60
edits.hicu::Edits::Edits()Draft
ICU 59
numberformatter.hstatic ScientificNotation icu::number::Notation::scientific()Draft
ICU 60
edits.hicu::Edits::~Edits()Draft
ICU 59
numberformatter.hstatic SimpleNotation icu::number::Notation::simple()Draft
ICU 60
edits.hint32_t icu::Edits::lengthDelta()Draft
ICU 59
numberformatter.hstatic UnlocalizedNumberFormatter icu::number::NumberFormatter::with()Draft
ICU 60
edits.hvoid icu::Edits::addReplace(int32_t, int32_t)Draft
ICU 59
numberformatter.hvoid icu::number::FormattedNumber::populateFieldPosition(FieldPosition&, UErrorCode&)Draft
ICU 60
edits.hvoid icu::Edits::addUnchanged(int32_t)Draft
ICU 59
numberformatter.hvoid icu::number::FormattedNumber::populateFieldPositionIterator(FieldPositionIterator&, UErrorCode&)Draft
ICU 60
edits.hvoid icu::Edits::reset()Draft
ICU 59
numfmt.hERoundingMode icu::NumberFormat::getRoundingMode()Draft
ICU 60
localpointer.hLocalArray<T>& icu::LocalArray< T >::moveFrom(LocalArray< T >&)Draft
ICU 56
numfmt.hvoid icu::NumberFormat::setRoundingMode(ERoundingMode)Draft
ICU 60
localpointer.hLocalPointer<T>& icu::LocalPointer< T >::moveFrom(LocalPointer< T >&)Draft
ICU 56
rbnf.hERoundingMode icu::RuleBasedNumberFormat::getRoundingMode()Draft
ICU 60
measfmt.hvoid icu::MeasureFormat::parseObject(const UnicodeString&, Formattable&, ParsePosition&)Draft
ICU 53
rbnf.hvoid icu::RuleBasedNumberFormat::setRoundingMode(ERoundingMode)Draft
ICU 60
measunit.hstatic MeasureUnit* icu::MeasureUnit::createPoint(UErrorCode&)Draft
ICU 59
stringoptions.h#define U_EDITS_NO_RESETDraft
ICU 60
ubrk.hUBreakIterator* ubrk_openBinaryRules(const uint8_t*, int32_t, const UChar*, int32_t, UErrorCode*)Draft
ICU 59
stringoptions.h#define U_OMIT_UNCHANGED_TEXTDraft
ICU 60
ubrk.hint32_t ubrk_getBinaryRules(UBreakIterator*, uint8_t*, int32_t, UErrorCode*)Draft
ICU 59
stringoptions.h#define U_TITLECASE_ADJUST_TO_CASEDDraft
ICU 60
unistr.hUNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const uint16_t*)Draft
ICU 59
stringoptions.h#define U_TITLECASE_SENTENCESDraft
ICU 60
unistr.hUNISTR_FROM_STRING_EXPLICIT icu::UnicodeString::UnicodeString(const wchar_t*)Draft
ICU 59
stringoptions.h#define U_TITLECASE_WHOLE_STRINGDraft
ICU 60
unistr.hUnicodeString& icu::UnicodeString::moveFrom(UnicodeString&)Draft
ICU 56
unistr.hicu::UnicodeString::UnicodeString(const std::nullptr_t)Draft
ICU 59
unistr.hicu::UnicodeString::UnicodeString(const std::nullptr_t, int32_t)Draft
ICU 59
unistr.hicu::UnicodeString::UnicodeString(const uint16_t*, int32_t)Draft
ICU 59
unistr.hicu::UnicodeString::UnicodeString(const wchar_t*, int32_t)Draft
ICU 59
unistr.hicu::UnicodeString::UnicodeString(std::nullptr_t, int32_t, int32_t)Draft
ICU 59
unistr.hicu::UnicodeString::UnicodeString(uint16_t*, int32_t, int32_t)Draft
ICU 59
unistr.hicu::UnicodeString::UnicodeString(wchar_t*, int32_t, int32_t)Draft
ICU 59
uregex.henum URegexpFlag::UREGEX_CANON_EQDraft
ICU 2.4
unum.hint32_t unum_formatDoubleForFields(const UNumberFormat*, double, UChar*, int32_t, UFieldPositionIterator*, UErrorCode*)Draft
ICU 59
utf16.h#define U16_GET_OR_FFFDDraft
ICU 60
upluralrules.hUEnumeration* uplrules_getKeywords(const UPluralRules*, UErrorCode*)Draft
ICU 59
utf16.h#define U16_NEXT_OR_FFFDDraft
ICU 60
uregex.henum URegexpFlag::UREGEX_CANON_EQDraft
ICU 2.4
utf16.h#define U16_PREV_OR_FFFDDraft
ICU 60
@@ -1340,7 +903,7 @@ (jump back to top)

-Contents generated by StableAPI tool on Wed Oct 04 23:55:39 UTC 2017
Copyright (C) 2017, International Business Machines Corporation, All Rights Reserved.
+Contents generated by StableAPI tool on Wed Mar 07 19:18:25 UTC 2018
Copyright (C) 2018, International Business Machines Corporation, All Rights Reserved.

diff --git a/LICENSE b/LICENSE index c84076c..25b6eb9 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,7 @@ COPYRIGHT AND PERMISSION NOTICE (ICU 58 and later) -Copyright © 1991-2017 Unicode, Inc. All rights reserved. -Distributed under the Terms of Use in http://www.unicode.org/copyright.html +Copyright © 1991-2018 Unicode, Inc. All rights reserved. +Distributed under the Terms of Use in http://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining a copy of the Unicode data files and any associated documentation @@ -383,3 +383,32 @@ Database section 7. # by ICANN or the IETF Trust on the database or the code. Any person # making a contribution to the database or code waives all rights to # future claims in that contribution or in the TZ Database. + +6. Google double-conversion + +Copyright 2006-2011, the V8 project authors. All rights reserved. +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/as_is/bomlist.txt b/as_is/bomlist.txt index 0a2b44d..e283835 100644 --- a/as_is/bomlist.txt +++ b/as_is/bomlist.txt @@ -1,198 +1,199 @@ -icu/source/io/io.vcxproj.filters -icu/source/io/io.vcxproj -icu/source/extra/uconv/uconv.vcxproj -icu/source/extra/uconv/uconv.vcxproj.filters -icu/source/extra/uconv/resources/fr.txt -icu/source/extra/uconv/resources/root.txt -icu/source/extra/uconv/samples/utf8/korean.txt -icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt -icu/source/extra/uconv/samples/utf8/danish.txt -icu/source/extra/uconv/samples/utf8/banviet.txt -icu/source/extra/uconv/samples/utf8/simplechinese.txt -icu/source/extra/uconv/samples/utf8/russian.txt -icu/source/extra/uconv/samples/utf8/utf-8-demo.txt -icu/source/extra/uconv/samples/utf8/hania.txt -icu/source/extra/uconv/samples/utf8/many.txt -icu/source/extra/uconv/samples/utf8/jap.txt -icu/source/extra/uconv/samples/utf8/croat.txt -icu/source/extra/uconv/samples/utf8/linji.txt -icu/source/extra/uconv/samples/utf8/maopoem.txt -icu/source/extra/uconv/samples/utf8/greek.txt -icu/source/extra/uconv/samples/utf8/turkish.txt -icu/source/extra/uconv/samples/utf8/hangul.txt -icu/source/extra/uconv/samples/utf8/armenian.txt -icu/source/i18n/i18n_uwp.vcxproj -icu/source/i18n/i18n.vcxproj.filters -icu/source/i18n/i18n.vcxproj -icu/source/test/letest/gendata.vcxproj.filters -icu/source/test/letest/cletest.sln +icu/source/common/common.vcxproj.filters +icu/source/common/common.vcxproj +icu/source/common/common_uwp.vcxproj icu/source/test/letest/cletest.vcxproj -icu/source/test/letest/gendata.vcxproj -icu/source/test/letest/cletest.vcxproj.filters +icu/source/test/letest/gendata.vcxproj.filters icu/source/test/letest/letest.vcxproj icu/source/test/letest/letest.vcxproj.filters +icu/source/test/letest/cletest.vcxproj.filters +icu/source/test/letest/cletest.sln +icu/source/test/letest/gendata.vcxproj +icu/source/test/perf/ubrkperf/ubrkperf.vcxproj +icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters +icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters +icu/source/test/perf/normperf/normperf.vcxproj +icu/source/test/perf/normperf/normperf.vcxproj.filters +icu/source/test/perf/normperf/dtfmtrtperf.vcxproj +icu/source/test/perf/convperf/convperf.vcxproj +icu/source/test/perf/convperf/convperf.vcxproj.filters +icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj +icu/source/test/perf/collperf/collperf.vcxproj +icu/source/test/perf/collperf/collperf.vcxproj.filters +icu/source/test/perf/charperf/charperf.vcxproj +icu/source/test/perf/charperf/charperf.vcxproj.filters +icu/source/test/perf/unisetperf/unisetperf.vcxproj +icu/source/test/perf/ustrperf/stringperf.vcxproj +icu/source/test/perf/ustrperf/stringperf.vcxproj.filters +icu/source/test/perf/utfperf/utfperf.vcxproj +icu/source/test/perf/utfperf/utfperf.vcxproj.filters +icu/source/test/perf/usetperf/usetperf.vcxproj +icu/source/test/perf/usetperf/usetperf.vcxproj.filters +icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters +icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj +icu/source/test/perf/strsrchperf/strsrchperf.vcxproj +icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters +icu/source/test/perf/utrie2perf/utrie2perf.vcxproj +icu/source/test/perf/collperf2/collperf2.vcxproj.filters +icu/source/test/perf/collperf2/collperf2.vcxproj +icu/source/test/cintltst/cintltst.vcxproj.filters +icu/source/test/cintltst/cintltst.vcxproj +icu/source/test/testdata/casing.txt +icu/source/test/testdata/windowsZones.txt icu/source/test/testdata/ConverterSelectorTestUTF8.txt +icu/source/test/testdata/dcfmtest.txt icu/source/test/testdata/riwords.txt -icu/source/test/testdata/regextst.txt -icu/source/test/testdata/timezoneTypes.txt +icu/source/test/testdata/idna_conf.txt icu/source/test/testdata/rbbitst.txt -icu/source/test/testdata/metaZones.txt -icu/source/test/testdata/windowsZones.txt icu/source/test/testdata/collationtest.txt -icu/source/test/testdata/dcfmtest.txt -icu/source/test/testdata/idna_conf.txt +icu/source/test/testdata/NumberFormatTestCases.txt +icu/source/test/testdata/regextst.txt icu/source/test/testdata/format.txt +icu/source/test/testdata/metaZones.txt +icu/source/test/testdata/timezoneTypes.txt icu/source/test/testdata/te_IN.txt -icu/source/test/testdata/NumberFormatTestCases.txt -icu/source/test/testdata/casing.txt +icu/source/test/testdata/break_rules/line_loose_cj.txt icu/source/test/testdata/break_rules/sentence.txt +icu/source/test/testdata/break_rules/word.txt icu/source/test/testdata/break_rules/word_POSIX.txt -icu/source/test/testdata/break_rules/line.txt -icu/source/test/testdata/break_rules/line_normal.txt -icu/source/test/testdata/break_rules/grapheme.txt icu/source/test/testdata/break_rules/readme.txt -icu/source/test/testdata/break_rules/word.txt +icu/source/test/testdata/break_rules/line_normal.txt +icu/source/test/testdata/break_rules/line.txt icu/source/test/testdata/break_rules/line_loose.txt +icu/source/test/testdata/break_rules/grapheme.txt icu/source/test/testdata/break_rules/line_normal_cj.txt -icu/source/test/testdata/break_rules/line_loose_cj.txt -icu/source/test/cintltst/cintltst.vcxproj.filters -icu/source/test/cintltst/cintltst.vcxproj -icu/source/test/perf/utrie2perf/utrie2perf.vcxproj -icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj.filters -icu/source/test/perf/DateFmtPerf/DateFmtPerf.vcxproj -icu/source/test/perf/ustrperf/stringperf.vcxproj -icu/source/test/perf/ustrperf/stringperf.vcxproj.filters -icu/source/test/perf/usetperf/usetperf.vcxproj -icu/source/test/perf/usetperf/usetperf.vcxproj.filters -icu/source/test/perf/collperf/collperf.vcxproj -icu/source/test/perf/collperf/collperf.vcxproj.filters -icu/source/test/perf/ucnvavailperf/ucnvavailperf.vcxproj -icu/source/test/perf/ubrkperf/ubrkperf.vcxproj.filters -icu/source/test/perf/ubrkperf/ubrkperf.vcxproj -icu/source/test/perf/collperf2/collperf2.vcxproj -icu/source/test/perf/collperf2/collperf2.vcxproj.filters -icu/source/test/perf/utfperf/utfperf.vcxproj -icu/source/test/perf/utfperf/utfperf.vcxproj.filters -icu/source/test/perf/convperf/convperf.vcxproj.filters -icu/source/test/perf/convperf/convperf.vcxproj -icu/source/test/perf/unisetperf/unisetperf.vcxproj -icu/source/test/perf/normperf/dtfmtrtperf.vcxproj.filters -icu/source/test/perf/normperf/dtfmtrtperf.vcxproj -icu/source/test/perf/normperf/normperf.vcxproj.filters -icu/source/test/perf/normperf/normperf.vcxproj -icu/source/test/perf/strsrchperf/strsrchperf.vcxproj -icu/source/test/perf/strsrchperf/strsrchperf.vcxproj.filters -icu/source/test/perf/charperf/charperf.vcxproj -icu/source/test/perf/charperf/charperf.vcxproj.filters -icu/source/test/intltest/intltest.vcxproj icu/source/test/intltest/intltest.vcxproj.filters +icu/source/test/intltest/intltest.vcxproj icu/source/test/iotest/iotest.vcxproj.filters icu/source/test/iotest/iotest.vcxproj icu/source/test/thaitest/space.txt -icu/source/common/common.vcxproj.filters -icu/source/common/common_uwp.vcxproj -icu/source/common/common.vcxproj -icu/source/stubdata/stubdata.vcxproj.filters -icu/source/stubdata/stubdata.vcxproj -icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters -icu/source/samples/plurfmtsample/plurfmtsample.vcxproj -icu/source/samples/coll/coll.vcxproj.filters -icu/source/samples/coll/coll.vcxproj -icu/source/samples/layout/layout.vcxproj -icu/source/samples/layout/layout.vcxproj.filters -icu/source/samples/layout/Sample.txt -icu/source/samples/strsrch/strsrch.vcxproj -icu/source/samples/strsrch/strsrch.vcxproj.filters -icu/source/samples/citer/citer.vcxproj.filters -icu/source/samples/citer/citer.vcxproj -icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters -icu/source/samples/dtptngsample/dtptngsample.vcxproj +icu/source/io/io.vcxproj +icu/source/io/io.vcxproj.filters +icu/source/samples/break/break.vcxproj +icu/source/samples/break/break.vcxproj.filters +icu/source/samples/uciter8/uciter8.vcxproj +icu/source/samples/uciter8/uciter8.vcxproj.filters +icu/source/samples/csdet/csdet.vcxproj.filters +icu/source/samples/csdet/csdet.vcxproj icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj icu/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj.filters +icu/source/samples/layout/layout.vcxproj.filters +icu/source/samples/layout/layout.vcxproj +icu/source/samples/layout/Sample.txt +icu/source/samples/cal/cal.vcxproj +icu/source/samples/cal/cal.vcxproj.filters +icu/source/samples/props/props.vcxproj.filters +icu/source/samples/props/props.vcxproj +icu/source/samples/uresb/uresb.vcxproj +icu/source/samples/uresb/resources.vcxproj +icu/source/samples/uresb/uresb.vcxproj.filters +icu/source/samples/uresb/resources.vcxproj.filters +icu/source/samples/translit/translit.vcxproj +icu/source/samples/translit/translit.vcxproj.filters +icu/source/samples/ugrep/ugrep.vcxproj +icu/source/samples/ugrep/ugrep.vcxproj.filters icu/source/samples/numfmt/numfmt.vcxproj icu/source/samples/numfmt/numfmt.vcxproj.filters -icu/source/samples/case/case.vcxproj.filters -icu/source/samples/case/case.vcxproj +icu/source/samples/dtptngsample/dtptngsample.vcxproj.filters +icu/source/samples/dtptngsample/dtptngsample.vcxproj +icu/source/samples/ucnv/ucnv.vcxproj +icu/source/samples/ucnv/data06.txt +icu/source/samples/ucnv/data01.txt +icu/source/samples/ucnv/ucnv.vcxproj.filters +icu/source/samples/plurfmtsample/plurfmtsample.vcxproj.filters +icu/source/samples/plurfmtsample/plurfmtsample.vcxproj icu/source/samples/ustring/ustring.vcxproj.filters icu/source/samples/ustring/ustring.vcxproj -icu/source/samples/ugrep/ugrep.vcxproj.filters -icu/source/samples/ugrep/ugrep.vcxproj -icu/source/samples/uresb/resources.vcxproj.filters -icu/source/samples/uresb/resources.vcxproj -icu/source/samples/uresb/uresb.vcxproj -icu/source/samples/uresb/uresb.vcxproj.filters -icu/source/samples/udata/reader.vcxproj.filters -icu/source/samples/udata/reader.vcxproj -icu/source/samples/udata/writer.vcxproj -icu/source/samples/udata/writer.vcxproj.filters +icu/source/samples/case/case.vcxproj +icu/source/samples/case/case.vcxproj.filters +icu/source/samples/citer/citer.vcxproj.filters +icu/source/samples/citer/citer.vcxproj +icu/source/samples/coll/coll.vcxproj.filters +icu/source/samples/coll/coll.vcxproj +icu/source/samples/datefmt/datefmt.vcxproj +icu/source/samples/datefmt/datefmt.vcxproj.filters icu/source/samples/msgfmt/msgfmt.vcxproj.filters icu/source/samples/msgfmt/msgfmt.vcxproj -icu/source/samples/date/date.vcxproj.filters -icu/source/samples/date/date.vcxproj -icu/source/samples/datefmt/datefmt.vcxproj.filters -icu/source/samples/datefmt/datefmt.vcxproj -icu/source/samples/ufortune/ufortune.vcxproj.filters icu/source/samples/ufortune/ufortune.vcxproj +icu/source/samples/ufortune/ufortune.vcxproj.filters icu/source/samples/ufortune/resources/es.txt -icu/source/samples/props/props.vcxproj.filters -icu/source/samples/props/props.vcxproj -icu/source/samples/break/break.vcxproj -icu/source/samples/break/break.vcxproj.filters -icu/source/samples/ucnv/data01.txt -icu/source/samples/ucnv/ucnv.vcxproj.filters -icu/source/samples/ucnv/ucnv.vcxproj -icu/source/samples/ucnv/data06.txt -icu/source/samples/legacy/legacy.vcxproj +icu/source/samples/udata/reader.vcxproj.filters +icu/source/samples/udata/writer.vcxproj.filters +icu/source/samples/udata/writer.vcxproj +icu/source/samples/udata/reader.vcxproj +icu/source/samples/date/date.vcxproj +icu/source/samples/date/date.vcxproj.filters icu/source/samples/legacy/legacy.vcxproj.filters -icu/source/samples/cal/cal.vcxproj -icu/source/samples/cal/cal.vcxproj.filters -icu/source/samples/uciter8/uciter8.vcxproj -icu/source/samples/uciter8/uciter8.vcxproj.filters -icu/source/samples/translit/translit.vcxproj -icu/source/samples/translit/translit.vcxproj.filters -icu/source/samples/csdet/csdet.vcxproj.filters -icu/source/samples/csdet/csdet.vcxproj -icu/source/layoutex/layoutex.vcxproj.filters +icu/source/samples/legacy/legacy.vcxproj +icu/source/samples/strsrch/strsrch.vcxproj.filters +icu/source/samples/strsrch/strsrch.vcxproj +icu/source/extra/uconv/uconv.vcxproj.filters +icu/source/extra/uconv/uconv.vcxproj +icu/source/extra/uconv/samples/utf8/hangul.txt +icu/source/extra/uconv/samples/utf8/jap.txt +icu/source/extra/uconv/samples/utf8/chinese-ulysses.txt +icu/source/extra/uconv/samples/utf8/simplechinese.txt +icu/source/extra/uconv/samples/utf8/danish.txt +icu/source/extra/uconv/samples/utf8/hania.txt +icu/source/extra/uconv/samples/utf8/maopoem.txt +icu/source/extra/uconv/samples/utf8/armenian.txt +icu/source/extra/uconv/samples/utf8/utf-8-demo.txt +icu/source/extra/uconv/samples/utf8/croat.txt +icu/source/extra/uconv/samples/utf8/russian.txt +icu/source/extra/uconv/samples/utf8/greek.txt +icu/source/extra/uconv/samples/utf8/linji.txt +icu/source/extra/uconv/samples/utf8/turkish.txt +icu/source/extra/uconv/samples/utf8/many.txt +icu/source/extra/uconv/samples/utf8/banviet.txt +icu/source/extra/uconv/samples/utf8/korean.txt +icu/source/extra/uconv/resources/fr.txt +icu/source/extra/uconv/resources/root.txt +icu/source/allinone/Windows.CopyUnicodeHeaderFiles.targets +icu/source/stubdata/stubdata.vcxproj +icu/source/stubdata/stubdata.vcxproj.filters icu/source/layoutex/layoutex.vcxproj -icu/source/data/makedata.vcxproj.filters -icu/source/data/makedata_uwp.vcxproj -icu/source/data/makedata.vcxproj -icu/source/data/unidata/confusablesWholeScript.txt -icu/source/data/unidata/confusables.txt -icu/source/data/unidata/changes.txt -icu/source/data/unidata/UCARules.txt -icu/source/tools/gennorm2/gennorm2.vcxproj -icu/source/tools/pkgdata/pkgdata.vcxproj -icu/source/tools/pkgdata/pkgdata.vcxproj.filters -icu/source/tools/genccode/genccode.vcxproj -icu/source/tools/genccode/genccode.vcxproj.filters -icu/source/tools/gentest/gentest.vcxproj.filters -icu/source/tools/gentest/gentest.vcxproj -icu/source/tools/icuswap/icuswap.vcxproj -icu/source/tools/ctestfw/ctestfw.vcxproj.filters -icu/source/tools/ctestfw/ctestfw.vcxproj -icu/source/tools/icupkg/icupkg.vcxproj -icu/source/tools/makeconv/makeconv.vcxproj -icu/source/tools/makeconv/makeconv.vcxproj.filters -icu/source/tools/gendict/gendict.vcxproj.filters -icu/source/tools/gendict/gendict.vcxproj -icu/source/tools/gencmn/gencmn.vcxproj.filters -icu/source/tools/gencmn/gencmn.vcxproj -icu/source/tools/gencnval/gencnval.vcxproj -icu/source/tools/gencnval/gencnval.vcxproj.filters -icu/source/tools/tzcode/icuzdump.vcxproj.filters +icu/source/layoutex/layoutex.vcxproj.filters +icu/source/i18n/i18n.vcxproj +icu/source/i18n/i18n.vcxproj.filters +icu/source/i18n/i18n_uwp.vcxproj icu/source/tools/tzcode/icuzdump.vcxproj +icu/source/tools/tzcode/icuzdump.vcxproj.filters +icu/source/tools/genccode/genccode.vcxproj.filters +icu/source/tools/genccode/genccode.vcxproj icu/source/tools/gencfu/gencfu.vcxproj.filters icu/source/tools/gencfu/gencfu.vcxproj +icu/source/tools/gensprep/gensprep.vcxproj +icu/source/tools/gensprep/gensprep.vcxproj.filters +icu/source/tools/makeconv/makeconv.vcxproj.filters +icu/source/tools/makeconv/makeconv.vcxproj +icu/source/tools/icupkg/icupkg.vcxproj +icu/source/tools/gentest/gentest.vcxproj +icu/source/tools/gentest/gentest.vcxproj.filters icu/source/tools/genbrk/genbrk.vcxproj icu/source/tools/genbrk/genbrk.vcxproj.filters +icu/source/tools/icuinfo/testplug.vcxproj.filters icu/source/tools/icuinfo/testplug.vcxproj icu/source/tools/icuinfo/icuinfo.vcxproj -icu/source/tools/icuinfo/testplug.vcxproj.filters -icu/source/tools/toolutil/toolutil.vcxproj -icu/source/tools/gensprep/gensprep.vcxproj.filters -icu/source/tools/gensprep/gensprep.vcxproj -icu/source/tools/genrb/genrb.vcxproj icu/source/tools/genrb/derb.vcxproj.filters icu/source/tools/genrb/derb.vcxproj +icu/source/tools/genrb/genrb.vcxproj icu/source/tools/genrb/genrb.vcxproj.filters +icu/source/tools/icuswap/icuswap.vcxproj +icu/source/tools/ctestfw/ctestfw.vcxproj.filters +icu/source/tools/ctestfw/ctestfw.vcxproj +icu/source/tools/gennorm2/gennorm2.vcxproj +icu/source/tools/gencmn/gencmn.vcxproj.filters +icu/source/tools/gencmn/gencmn.vcxproj +icu/source/tools/toolutil/toolutil.vcxproj +icu/source/tools/pkgdata/pkgdata.vcxproj.filters +icu/source/tools/pkgdata/pkgdata.vcxproj +icu/source/tools/gencnval/gencnval.vcxproj.filters +icu/source/tools/gencnval/gencnval.vcxproj +icu/source/tools/gendict/gendict.vcxproj +icu/source/tools/gendict/gendict.vcxproj.filters +icu/source/data/makedata.vcxproj +icu/source/data/makedata.vcxproj.filters +icu/source/data/makedata_uwp.vcxproj +icu/source/data/unidata/UCARules.txt +icu/source/data/unidata/changes.txt +icu/source/data/unidata/confusablesWholeScript.txt +icu/source/data/unidata/confusables.txt diff --git a/icu4c.css b/icu4c.css index b6f2400..b7631ff 100644 --- a/icu4c.css +++ b/icu4c.css @@ -500,7 +500,9 @@ td.proto { font-size: smaller; } - +.no-left-margin { + margin-left: 0; +} @media print { div#toc { diff --git a/packaging/distrelease.ps1 b/packaging/distrelease.ps1 new file mode 100644 index 0000000..c3d853b --- /dev/null +++ b/packaging/distrelease.ps1 @@ -0,0 +1,54 @@ +# Copyright (C) 2016 and later: Unicode, Inc. and others. +# License & terms of use: http://www.unicode.org/copyright.html +#------------------------- +# Script: icu\packaging\distrelease.ps1 +# Author: Steven R. Loomis +# Date: 2017-04-14 +#------------------------- +# +# This builds a zipfile containing the *64 bit* Windows binaries. +# (Note: The zipfile does not include the UWP binaries.) +# +# Usage: (after building ICU using MSVC) +# (bring up Powershell ISE) +# cd C:\icu\icu4c\ +# Set-ExecutionPolicy -Scope Process Unrestricted +# .\packaging\distrelease.ps1 +# +# Will emit: c:\icu4c\icu\source\dist\icu-windows.zip +# +# +# You will get warnings from the execution policy and the script itself. +# see https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_execution_policies?view=powershell-5.1&viewFallbackFrom=powershell-Microsoft.PowerShell.Core +# for more about execution policies. + + +$icuDir = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent +$icuDir = Resolve-Path -Path '$icuDir\..' + +echo $icuDir + +# ok, create some work areas +New-Item -Path "$icuDir\source\dist" -ErrorAction SilentlyContinue -ItemType "directory" +$source = "$icuDir\source\dist\icu" +Get-ChildItem -Path $source -ErrorAction SilentlyContinue | Remove-Item -Recurse +New-Item -Path $source -ItemType "directory" -ErrorAction SilentlyContinue + +# copy required stuff +Copy-Item -Path "$icuDir\lib64" -Destination $source -Recurse +Copy-Item -Path "$icuDir\include" -Destination $source -Recurse +Copy-Item -Path "$icuDir\bin64" -Destination $source -Recurse +Copy-Item -Path "$icuDir\APIChangeReport.html" -Destination $source -Recurse +Copy-Item -Path "$icuDir\icu4c.css" -Destination $source -Recurse +Copy-Item -Path "$icuDir\LICENSE" -Destination $source -Recurse +Copy-Item -Path "$icuDir\readme.html" -Destination $source -Recurse + + +$destination = "$icuDir\source\dist\icu-windows.zip" +Remove-Item -Path $destination -ErrorAction Continue +Add-Type -assembly "system.io.compression.filesystem" +Echo $source +Echo $destination +[io.compression.zipfile]::CreateFromDirectory($source, $destination) + +echo $destination \ No newline at end of file diff --git a/packaging/rpm/icu.spec b/packaging/rpm/icu.spec deleted file mode 100644 index 2edb595..0000000 --- a/packaging/rpm/icu.spec +++ /dev/null @@ -1,230 +0,0 @@ -# Copyright (C) 2016 and later: Unicode, Inc. and others. -# License & terms of use: http://www.unicode.org/copyright.html -# Copyright (C) 2000-2005, International Business Machines -# Corporation and others. All Rights Reserved. -# -# RPM specification file for ICU. -# -# Neal Probert is the current maintainer. -# Yves Arrouye is the original author. - -# This file can be freely redistributed under the same license as ICU. - -Name: icu -Version: 3.4 -Release: 1 -Requires: libicu34 >= %{version} -Summary: International Components for Unicode -Packager: Ian Holsman (CNET Networks) -Copyright: X License -Group: System Environment/Libraries -Source: icu-%{version}.tgz -BuildRoot: /var/tmp/%{name}-%{version} -%description -ICU is a set of C and C++ libraries that provides robust and full-featured -Unicode and locale support. The library provides calendar support, conversions -for many character sets, language sensitive collation, date -and time formatting, support for many locales, message catalogs -and resources, message formatting, normalization, number and currency -formatting, time zones support, transliteration, word, line and -sentence breaking, etc. - -This package contains the Unicode character database and derived -properties, along with converters and time zones data. - -This package contains the runtime libraries for ICU. It does -not contain any of the data files needed at runtime and present in the -`icu' and `icu-locales` packages. - -%package -n libicu34 -Summary: International Components for Unicode (libraries) -Group: Development/Libraries -%description -n libicu34 -ICU is a set of C and C++ libraries that provides robust and full-featured -Unicode support. This package contains the runtime libraries for ICU. It does -not contain any of the data files needed at runtime and present in the -`icu' and `icu-locales` packages. - -%package -n libicu-devel -Summary: International Components for Unicode (development files) -Group: Development/Libraries -Requires: libicu34 = %{version} -%description -n libicu-devel -ICU is a set of C and C++ libraries that provides robust and full-featured -Unicode support. This package contains the development files for ICU. - -%package locales -Summary: Locale data for ICU -Group: System Environment/Libraries -Requires: libicu34 >= %{version} -%description locales -The locale data are used by ICU to provide localization (l10n), -internationalization (i18n) and timezone support to ICU applications. -This package also contains break data for various languages, -and transliteration data. - -%post -# Adjust the current ICU link in /usr/lib/icu - -icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1` -cd /usr/lib/icu -rm -f /usr/lib/icu/current -if test x"$icucurrent" != x -then - ln -s "$icucurrent" current -fi - -#ICU_DATA=/usr/share/icu/%{version} -#export ICU_DATA - -%preun -# Adjust the current ICU link in /usr/lib/icu - -icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/%{version}\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1` -cd /usr/lib/icu -rm -f /usr/lib/icu/current -if test x"$icucurrent" != x -then - ln -s "$icucurrent" current -fi - -%post -n libicu34 -ldconfig - -# Adjust the current ICU link in /usr/lib/icu - -icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1` -cd /usr/lib/icu -rm -f /usr/lib/icu/current -if test x"$icucurrent" != x -then - ln -s "$icucurrent" current -fi - -%preun -n libicu34 -# Adjust the current ICU link in /usr/lib/icu - -icucurrent=`2>/dev/null ls -dp /usr/lib/icu/* | sed -n -e '/\/%{version}\//d' -e 's,.*/\([^/]*\)/$,\1,p'| sort -rn | head -1` -cd /usr/lib/icu -rm -f /usr/lib/icu/current -if test x"$icucurrent" != x -then - ln -s "$icucurrent" current -fi - -%prep -%setup -q -n icu - -%build -cd source -chmod a+x ./configure -CFLAGS="-O3" CXXFLAGS="-O" ./configure --prefix=/usr --sysconfdir=/etc --with-data-packaging=files --enable-shared --enable-static --disable-samples -echo 'CPPFLAGS += -DICU_DATA_DIR=\"/usr/share/icu/%{version}\"' >> icudefs.mk -make RPM_OPT_FLAGS="$RPM_OPT_FLAGS" - -%install -rm -rf $RPM_BUILD_ROOT -cd source -make install DESTDIR=$RPM_BUILD_ROOT - -%files -%defattr(-,root,root) -%doc readme.html -%doc license.html -/usr/share/icu/%{version}/license.html -/usr/share/icu/%{version}/icudt34l/*.cnv -/usr/share/icu/%{version}/icudt34l/*.icu -/usr/share/icu/%{version}/icudt34l/*.spp - -/usr/bin/derb -/usr/bin/genbrk -/usr/bin/gencnval -/usr/bin/genrb -/usr/bin/icu-config -/usr/bin/makeconv -/usr/bin/pkgdata -/usr/bin/uconv - -/usr/sbin/decmn -/usr/sbin/genccode -/usr/sbin/gencmn -/usr/sbin/gensprep -/usr/sbin/genuca -/usr/sbin/icuswap -/usr/share/icu/%{version}/mkinstalldirs - -/usr/man/man1/derb.1.* -/usr/man/man1/gencnval.1.* -/usr/man/man1/genrb.1.* -/usr/man/man1/icu-config.1.* -/usr/man/man1/makeconv.1.* -/usr/man/man1/pkgdata.1.* -/usr/man/man1/uconv.1.* -/usr/man/man8/decmn.8.* -/usr/man/man8/genccode.8.* -/usr/man/man8/gencmn.8.* -/usr/man/man8/gensprep.8.* -/usr/man/man8/genuca.8.* - -%files -n icu-locales -/usr/share/icu/%{version}/icudt34l/*.brk -/usr/share/icu/%{version}/icudt34l/*.res -/usr/share/icu/%{version}/icudt34l/coll/*.res -/usr/share/icu/%{version}/icudt34l/rbnf/*.res -/usr/share/icu/%{version}/icudt34l/translit/*.res - -%files -n libicu34 -%doc license.html -/usr/lib/libicui18n.so.34 -/usr/lib/libicui18n.so.34.0 -/usr/lib/libicutu.so.34 -/usr/lib/libicutu.so.34.0 -/usr/lib/libicuuc.so.34 -/usr/lib/libicuuc.so.34.0 -/usr/lib/libicudata.so.34 -/usr/lib/libicudata.so.34.0 -/usr/lib/libicuio.so.34 -/usr/lib/libicuio.so.34.0 -/usr/lib/libiculx.so.34 -/usr/lib/libiculx.so.34.0 -/usr/lib/libicule.so.34 -/usr/lib/libicule.so.34.0 - -%files -n libicu-devel -%doc readme.html -%doc license.html -/usr/lib/libicui18n.so -/usr/lib/libsicui18n.a -/usr/lib/libicuuc.so -/usr/lib/libsicuuc.a -/usr/lib/libicutu.so -/usr/lib/libsicutu.a -/usr/lib/libicuio.so -/usr/lib/libsicuio.a -/usr/lib/libicudata.so -/usr/lib/libsicudata.a -/usr/lib/libicule.so -/usr/lib/libsicule.a -/usr/lib/libiculx.so -/usr/lib/libsiculx.a -/usr/include/unicode/*.h -/usr/include/layout/*.h -/usr/lib/icu/%{version}/Makefile.inc -/usr/lib/icu/Makefile.inc -/usr/share/icu/%{version}/config -/usr/share/doc/icu-%{version}/* - -%changelog -* Mon Jun 07 2004 Alexei Dets -- update to 3.0 -* Tue Aug 16 2003 Steven Loomis -- update to 2.6.1 - include license -* Thu Jun 05 2003 Steven Loomis -- Update to 2.6 -* Fri Dec 27 2002 Steven Loomis -- Update to 2.4 spec -* Fri Sep 27 2002 Steven Loomis -- minor updates to 2.2 spec. Rpath is off by default, don't pass it as an option. -* Mon Sep 16 2002 Ian Holsman -- update to icu 2.2 - diff --git a/readme.html b/readme.html index dfa5e3b..5f99a22 100644 --- a/readme.html +++ b/readme.html @@ -3,7 +3,7 @@ - ReadMe for ICU 60.2 + ReadMe for ICU 61.1 - +

Note: This is a draft readme.

@@ -32,7 +32,7 @@ International Components for Unicode
Release Candidate (Milestone Release) - ICU 60.2 ReadMe + ICU 61.1 ReadMe

@@ -44,15 +44,12 @@

This is a release candidate version of ICU4C. It is not recommended for production use.

-

Last updated: 2017-Dec-07
+

Last updated: 2018-Mar-21
Copyright © 2016 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html
Copyright © 1997-2016 International Business Machines Corporation and others. All Rights Reserved.

- -

This is a maintenance update of ICU 60, - with a small number of bug fixes but no API changes.


Table of Contents

@@ -236,7 +233,7 @@

What Is New In This Release?

-

See the ICU 60 download page +

See the ICU 61 download page 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.

@@ -554,12 +551,37 @@ we recommend a small number of modifications and build options. Note that C99 compatibility is now required.

* *

- * * The narrow format for currencies is not currently supported; this is a known issue that will be fixed in a - * future version. See #11666 for more information. - * - *

* This enum is similar to {@link com.ibm.icu.text.MeasureFormat.FormatWidth}. * * @draft ICU 60 @@ -155,27 +151,122 @@ typedef enum UNumberUnitWidth { * * @draft ICU 60 */ - UNUM_UNIT_WIDTH_HIDDEN, + UNUM_UNIT_WIDTH_HIDDEN +#ifndef U_HIDE_INTERNAL_API + , /** * One more than the highest UNumberUnitWidth value. * * @internal ICU 60: The numeric value may change over time; see ICU ticket #12420. */ UNUM_UNIT_WIDTH_COUNT +#endif // U_HIDE_INTERNAL_API } UNumberUnitWidth; /** - * An enum declaring how to denote positive and negative numbers. Example outputs when formatting 123 and -123 in - * en-US: + * An enum declaring the strategy for when and how to display grouping separators (i.e., the + * separator, often a comma or period, after every 2-3 powers of ten). The choices are several + * pre-built strategies for different use cases that employ locale data whenever possible. Example + * outputs for 1234 and 1234567 in en-IN: + * + *

    + *
  • OFF: 1234 and 12345 + *
  • MIN2: 1234 and 12,34,567 + *
  • AUTO: 1,234 and 12,34,567 + *
  • ON_ALIGNED: 1,234 and 12,34,567 + *
  • THOUSANDS: 1,234 and 1,234,567 + *
* *

+ * The default is AUTO, which displays grouping separators unless the locale data says that grouping + * is not customary. To force grouping for all numbers greater than 1000 consistently across locales, + * use ON_ALIGNED. On the other hand, to display grouping less frequently than the default, use MIN2 + * or OFF. See the docs of each option for details. + * + *

+ * Note: This enum specifies the strategy for grouping sizes. To set which character to use as the + * grouping separator, use the "symbols" setter. + * + * @draft ICU 61 + */ +typedef enum UGroupingStrategy { + /** + * Do not display grouping separators in any locale. + * + * @draft ICU 61 + */ + UNUM_GROUPING_OFF, + + /** + * Display grouping using locale defaults, except do not show grouping on values smaller than + * 10000 (such that there is a minimum of two digits before the first separator). + * + *

+ * Note that locales may restrict grouping separators to be displayed only on 1 million or + * greater (for example, ee and hu) or disable grouping altogether (for example, bg currency). + * + *

+ * Locale data is used to determine whether to separate larger numbers into groups of 2 + * (customary in South Asia) or groups of 3 (customary in Europe and the Americas). + * + * @draft ICU 61 + */ + UNUM_GROUPING_MIN2, + + /** + * Display grouping using the default strategy for all locales. This is the default behavior. + * + *

+ * Note that locales may restrict grouping separators to be displayed only on 1 million or + * greater (for example, ee and hu) or disable grouping altogether (for example, bg currency). + * + *

+ * Locale data is used to determine whether to separate larger numbers into groups of 2 + * (customary in South Asia) or groups of 3 (customary in Europe and the Americas). + * + * @draft ICU 61 + */ + UNUM_GROUPING_AUTO, + + /** + * Always display the grouping separator on values of at least 1000. + * + *

+ * This option ignores the locale data that restricts or disables grouping, described in MIN2 and + * AUTO. This option may be useful to normalize the alignment of numbers, such as in a + * spreadsheet. + * + *

+ * Locale data is used to determine whether to separate larger numbers into groups of 2 + * (customary in South Asia) or groups of 3 (customary in Europe and the Americas). + * + * @draft ICU 61 + */ + UNUM_GROUPING_ON_ALIGNED, + + /** + * Use the Western defaults: groups of 3 and enabled for all numbers 1000 or greater. Do not use + * locale data for determining the grouping strategy. + * + * @draft ICU 61 + */ + UNUM_GROUPING_THOUSANDS + +} UGroupingStrategy; + +/** + * An enum declaring how to denote positive and negative numbers. Example outputs when formatting + * 123, 0, and -123 in en-US: + * *

    - *
  • AUTO: "123", "-123" - *
  • ALWAYS: "+123", "-123" - *
  • NEVER: "123", "123" - *
  • ACCOUNTING: "$123", "($123)" - *
  • ACCOUNTING_ALWAYS: "+$123", "($123)" + *
  • AUTO: "123", "0", and "-123" + *
  • ALWAYS: "+123", "+0", and "-123" + *
  • NEVER: "123", "0", and "123" + *
  • ACCOUNTING: "$123", "$0", and "($123)" + *
  • ACCOUNTING_ALWAYS: "+$123", "+$0", and "($123)" + *
  • EXCEPT_ZERO: "+123", "0", and "-123" + *
  • ACCOUNTING_EXCEPT_ZERO: "+$123", "$0", and "($123)" *
* *

@@ -190,21 +281,22 @@ typedef enum UNumberSignDisplay { * * @draft ICU 60 */ - UNUM_SIGN_AUTO, + UNUM_SIGN_AUTO, /** - * Show the minus sign on negative numbers and the plus sign on positive numbers. + * Show the minus sign on negative numbers and the plus sign on positive numbers, including zero. + * To hide the sign on zero, see {@link UNUM_SIGN_EXCEPT_ZERO}. * * @draft ICU 60 */ - UNUM_SIGN_ALWAYS, + UNUM_SIGN_ALWAYS, /** * Do not show the sign on positive or negative numbers. * * @draft ICU 60 */ - UNUM_SIGN_NEVER, + UNUM_SIGN_NEVER, /** * Use the locale-dependent accounting format on negative numbers, and do not show the sign on positive numbers. @@ -220,22 +312,44 @@ typedef enum UNumberSignDisplay { * * @draft ICU 60 */ - UNUM_SIGN_ACCOUNTING, + UNUM_SIGN_ACCOUNTING, /** - * Use the locale-dependent accounting format on negative numbers, and show the plus sign on positive numbers. - * For more information on the accounting format, see the ACCOUNTING sign display strategy. + * Use the locale-dependent accounting format on negative numbers, and show the plus sign on + * positive numbers, including zero. For more information on the accounting format, see the + * ACCOUNTING sign display strategy. To hide the sign on zero, see + * {@link UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO}. * * @draft ICU 60 */ - UNUM_SIGN_ACCOUNTING_ALWAYS, + UNUM_SIGN_ACCOUNTING_ALWAYS, + + /** + * Show the minus sign on negative numbers and the plus sign on positive numbers. Do not show a + * sign on zero. + * + * @draft ICU 61 + */ + UNUM_SIGN_EXCEPT_ZERO, + + /** + * Use the locale-dependent accounting format on negative numbers, and show the plus sign on + * positive numbers. Do not show a sign on zero. For more information on the accounting format, + * see the ACCOUNTING sign display strategy. + * + * @draft ICU 61 + */ + UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO +#ifndef U_HIDE_INTERNAL_API + , /** * One more than the highest UNumberSignDisplay value. * * @internal ICU 60: The numeric value may change over time; see ICU ticket #12420. */ - UNUM_SIGN_COUNT + UNUM_SIGN_COUNT +#endif // U_HIDE_INTERNAL_API } UNumberSignDisplay; /** @@ -261,14 +375,17 @@ typedef enum UNumberDecimalSeparatorDisplay { * * @draft ICU 60 */ - UNUM_DECIMAL_SEPARATOR_ALWAYS, + UNUM_DECIMAL_SEPARATOR_ALWAYS +#ifndef U_HIDE_INTERNAL_API + , /** * One more than the highest UNumberDecimalSeparatorDisplay value. * * @internal ICU 60: The numeric value may change over time; see ICU ticket #12420. */ UNUM_DECIMAL_SEPARATOR_COUNT +#endif // U_HIDE_INTERNAL_API } UNumberDecimalMarkDisplay; U_NAMESPACE_BEGIN namespace number { // icu::number @@ -283,11 +400,27 @@ class Rounder; class FractionRounder; class CurrencyRounder; class IncrementRounder; -class Grouper; class IntegerWidth; namespace impl { +#ifndef U_HIDE_INTERNAL_API +/** + * Datatype for minimum/maximum fraction digits. Must be able to hold kMaxIntFracSig. + * + * @internal + */ +typedef int16_t digits_t; + +/** + * Use a default threshold of 3. This means that the third time .format() is called, the data structures get built + * using the "safe" code path. The first two calls to .format() will trigger the unsafe code path. + * + * @internal + */ +static constexpr int32_t DEFAULT_THRESHOLD = 3; +#endif // U_HIDE_INTERNAL_API + // Forward declarations: class Padder; struct MacroProps; @@ -471,7 +604,7 @@ class U_I18N_API Notation : public UMemory { struct ScientificSettings { int8_t fEngineeringInterval; bool fRequireMinInt; - int8_t fMinExponentDigits; + impl::digits_t fMinExponentDigits; UNumberSignDisplay fExponentSignDisplay; } scientific; @@ -786,14 +919,14 @@ class U_I18N_API Rounder : public UMemory { union RounderUnion { struct FractionSignificantSettings { // For RND_FRACTION, RND_SIGNIFICANT, and RND_FRACTION_SIGNIFICANT - int8_t fMinFrac; - int8_t fMaxFrac; - int8_t fMinSig; - int8_t fMaxSig; + impl::digits_t fMinFrac; + impl::digits_t fMaxFrac; + impl::digits_t fMinSig; + impl::digits_t fMaxSig; } fracSig; struct IncrementSettings { double fIncrement; - int32_t fMinFrac; + impl::digits_t fMinFrac; } increment; // For RND_INCREMENT UCurrencyUsage currencyUsage; // For RND_CURRENCY UErrorCode errorCode; // For RND_ERROR @@ -836,6 +969,20 @@ class U_I18N_API Rounder : public UMemory { /** Version of {@link #apply} that obeys minInt constraints. Used for scientific notation compatibility mode. */ void apply(impl::DecimalQuantity &value, int32_t minInt, UErrorCode status); + /** + * Rounding endpoint used by Engineering and Compact notation. Chooses the most appropriate multiplier (magnitude + * adjustment), applies the adjustment, rounds, and returns the chosen multiplier. + * + *

+ * In most cases, this is simple. However, when rounding the number causes it to cross a multiplier boundary, we + * need to re-do the rounding. For example, to display 999,999 in Engineering notation with 2 sigfigs, first you + * guess the multiplier to be -3. However, then you end up getting 1000E3, which is not the correct output. You then + * change your multiplier to be -6, and you get 1.0E6, which is correct. + * + * @param input The quantity to process. + * @param producer Function to call to return a multiplier based on a magnitude. + * @return The number of orders of magnitude the input was adjusted by this method. + */ int32_t chooseMultiplierAndApply(impl::DecimalQuantity &input, const impl::MultiplierProducer &producer, UErrorCode &status); @@ -1003,53 +1150,6 @@ class U_I18N_API IncrementRounder : public Rounder { }; /** - * @internal This API is a technical preview. It is likely to change in an upcoming release. - */ -class U_I18N_API Grouper : public UMemory { - public: - /** - * @internal This API is a technical preview. It is likely to change in an upcoming release. - */ - static Grouper defaults(); - - /** - * @internal This API is a technical preview. It is likely to change in an upcoming release. - */ - static Grouper minTwoDigits(); - - /** - * @internal This API is a technical preview. It is likely to change in an upcoming release. - */ - static Grouper none(); - - private: - int8_t fGrouping1; // -3 means "bogus"; -2 means "needs locale data"; -1 means "no grouping" - int8_t fGrouping2; - bool fMin2; - - Grouper(int8_t grouping1, int8_t grouping2, bool min2) - : fGrouping1(grouping1), fGrouping2(grouping2), fMin2(min2) {} - - Grouper() : fGrouping1(-3) {}; - - bool isBogus() const { - return fGrouping1 == -3; - } - - /** NON-CONST: mutates the current instance. */ - void setLocaleData(const impl::ParsedPatternInfo &patternInfo); - - bool groupAtPosition(int32_t position, const impl::DecimalQuantity &value) const; - - // To allow MacroProps/MicroProps to initialize empty instances: - friend struct impl::MacroProps; - friend struct impl::MicroProps; - - // To allow NumberFormatterImpl to access isBogus() and perform other operations: - friend class impl::NumberFormatterImpl; -}; - -/** * A class that defines the strategy for padding and truncating integers before the decimal separator. * *

@@ -1080,7 +1180,8 @@ class U_I18N_API IntegerWidth : public UMemory { * For example, with maxInt=3, the number 1234 will get printed as "234". * * @param maxInt - * The maximum number of places before the decimal separator. + * The maximum number of places before the decimal separator. maxInt == -1 means no + * truncation. * @return An IntegerWidth for passing to the NumberFormatter integerWidth() setter. * @draft ICU 60 * @see NumberFormatter @@ -1090,14 +1191,14 @@ class U_I18N_API IntegerWidth : public UMemory { private: union { struct { - int8_t fMinInt; - int8_t fMaxInt; + impl::digits_t fMinInt; + impl::digits_t fMaxInt; } minMaxInt; UErrorCode errorCode; } fUnion; bool fHasError = false; - IntegerWidth(int8_t minInt, int8_t maxInt); + IntegerWidth(impl::digits_t minInt, impl::digits_t maxInt); IntegerWidth(UErrorCode errorCode) { // NOLINT fUnion.errorCode = errorCode; @@ -1132,14 +1233,7 @@ class U_I18N_API IntegerWidth : public UMemory { namespace impl { -/** - * Use a default threshold of 3. This means that the third time .format() is called, the data structures get built - * using the "safe" code path. The first two calls to .format() will trigger the unsafe code path. - * - * @internal - */ -static constexpr int32_t DEFAULT_THRESHOLD = 3; - +// Do not enclose entire SymbolsWrapper with #ifndef U_HIDE_INTERNAL_API, needed for a protected field /** @internal */ class U_I18N_API SymbolsWrapper : public UMemory { public: @@ -1155,6 +1249,7 @@ class U_I18N_API SymbolsWrapper : public UMemory { /** @internal */ SymbolsWrapper &operator=(const SymbolsWrapper &other); +#ifndef U_HIDE_INTERNAL_API /** * The provided object is copied, but we do not adopt it. * @internal @@ -1202,6 +1297,7 @@ class U_I18N_API SymbolsWrapper : public UMemory { } return FALSE; } +#endif // U_HIDE_INTERNAL_API private: enum SymbolsPointerType { @@ -1218,14 +1314,72 @@ class U_I18N_API SymbolsWrapper : public UMemory { void doCleanup(); }; +// Do not enclose entire Grouper with #ifndef U_HIDE_INTERNAL_API, needed for a protected field +/** @internal */ +class U_I18N_API Grouper : public UMemory { + public: +#ifndef U_HIDE_INTERNAL_API + /** @internal */ + static Grouper forStrategy(UGroupingStrategy grouping); + + // Future: static Grouper forProperties(DecimalFormatProperties& properties); + + /** @internal */ + Grouper(int16_t grouping1, int16_t grouping2, int16_t minGrouping) + : fGrouping1(grouping1), fGrouping2(grouping2), fMinGrouping(minGrouping) {} +#endif // U_HIDE_INTERNAL_API + + private: + /** + * The grouping sizes, with the following special values: + *

    + *
  • -1 = no grouping + *
  • -2 = needs locale data + *
  • -4 = fall back to Western grouping if not in locale + *
+ */ + int16_t fGrouping1; + int16_t fGrouping2; + + /** + * The minimum gropuing size, with the following special values: + *
    + *
  • -2 = needs locale data + *
  • -3 = no less than 2 + *
+ */ + int16_t fMinGrouping; + + Grouper() : fGrouping1(-3) {}; + + bool isBogus() const { + return fGrouping1 == -3; + } + + /** NON-CONST: mutates the current instance. */ + void setLocaleData(const impl::ParsedPatternInfo &patternInfo, const Locale& locale); + + bool groupAtPosition(int32_t position, const impl::DecimalQuantity &value) const; + + // To allow MacroProps/MicroProps to initialize empty instances: + friend struct MacroProps; + friend struct MicroProps; + + // To allow NumberFormatterImpl to access isBogus() and perform other operations: + friend class NumberFormatterImpl; +}; + +// Do not enclose entire Padder with #ifndef U_HIDE_INTERNAL_API, needed for a protected field /** @internal */ class U_I18N_API Padder : public UMemory { public: +#ifndef U_HIDE_INTERNAL_API /** @internal */ static Padder none(); /** @internal */ static Padder codePoints(UChar32 cp, int32_t targetWidth, UNumberFormatPadPosition position); +#endif // U_HIDE_INTERNAL_API private: UChar32 fWidth; // -3 = error; -2 = bogus; -1 = no padding @@ -1275,6 +1429,7 @@ class U_I18N_API Padder : public UMemory { friend class impl::NumberFormatterImpl; }; +// Do not enclose entire MacroProps with #ifndef U_HIDE_INTERNAL_API, needed for a protected field /** @internal */ struct U_I18N_API MacroProps : public UMemory { /** @internal */ @@ -1284,6 +1439,9 @@ struct U_I18N_API MacroProps : public UMemory { MeasureUnit unit; // = NoUnit::base(); /** @internal */ + MeasureUnit perUnit; // = NoUnit::base(); + + /** @internal */ Rounder rounder; // = Rounder(); (bogus) /** @internal */ @@ -1375,29 +1533,30 @@ class U_I18N_API NumberFormatterSettings { *
  • Percent: "12.3%" * * - *

    * All units will be properly localized with locale data, and all units are compatible with notation styles, * rounding strategies, and other number formatter settings. * - *

    - * Pass this method any instance of {@link MeasureUnit}. For units of measure: + * Pass this method any instance of {@link MeasureUnit}. For units of measure (which often involve the + * factory methods that return a pointer): * *

    -     * NumberFormatter.with().adoptUnit(MeasureUnit::createMeter(status))
    +     * NumberFormatter::with().adoptUnit(MeasureUnit::createMeter(status))
          * 
    * * Currency: * *
    -     * NumberFormatter.with()::unit(CurrencyUnit(u"USD", status))
    +     * NumberFormatter::with().unit(CurrencyUnit(u"USD", status))
          * 
    * * Percent: * *
    -     * NumberFormatter.with()::unit(NoUnit.percent())
    +     * NumberFormatter::with().unit(NoUnit.percent())
          * 
    * + * See {@link #perUnit} for information on how to format strings like "5 meters per second". + * * The default is to render without units (equivalent to NoUnit.base()). * * @param unit @@ -1406,22 +1565,65 @@ class U_I18N_API NumberFormatterSettings { * @see MeasureUnit * @see Currency * @see NoUnit + * @see #perUnit * @draft ICU 60 */ Derived unit(const icu::MeasureUnit &unit) const; /** * Like unit(), but takes ownership of a pointer. Convenient for use with the MeasureFormat factory - * methods, which return pointers that need ownership. + * methods, which return pointers that need ownership. Example: + * + *
    +     * NumberFormatter::with().adoptUnit(MeasureUnit::createMeter(status))
    +     * 
    * * @param unit - * The unit to render. + * The unit to render. * @return The fluent chain. * @see #unit * @see MeasureUnit * @draft ICU 60 */ - Derived adoptUnit(const icu::MeasureUnit *unit) const; + Derived adoptUnit(icu::MeasureUnit *unit) const; + + /** + * Sets a unit to be used in the denominator. For example, to format "3 m/s", pass METER to the unit and SECOND to + * the perUnit. + * + * Pass this method any instance of {@link MeasureUnit}. Since MeasureUnit factory methods return pointers, the + * {@link #adoptPerUnit} version of this method is often more useful. + * + * The default is not to display any unit in the denominator. + * + * If a per-unit is specified without a primary unit via {@link #unit}, the behavior is undefined. + * + * @param perUnit + * The unit to render in the denominator. + * @return The fluent chain + * @see #unit + * @draft ICU 61 + */ + Derived perUnit(const icu::MeasureUnit &perUnit) const; + + /** + * Like perUnit(), but takes ownership of a pointer. Convenient for use with the MeasureFormat factory + * methods, which return pointers that need ownership. Example: + * + *
    +     * NumberFormatter::with()
    +     *      .adoptUnit(MeasureUnit::createMeter(status))
    +     *      .adoptPerUnit(MeasureUnit::createSecond(status))
    +     * 
    + * + * @param perUnit + * The unit to render in the denominator. + * @return The fluent chain. + * @see #perUnit + * @see MeasureUnit + * @draft ICU 61 + */ + Derived adoptPerUnit(icu::MeasureUnit *perUnit) const; /** * Specifies the rounding strategy to use when formatting numbers. @@ -1456,8 +1658,6 @@ class U_I18N_API NumberFormatterSettings { */ Derived rounding(const Rounder &rounder) const; -#ifndef U_HIDE_INTERNAL_API - /** * Specifies the grouping strategy to use when formatting numbers. * @@ -1471,25 +1671,21 @@ class U_I18N_API NumberFormatterSettings { * The exact grouping widths will be chosen based on the locale. * *

    - * Pass this method the return value of one of the factory methods on {@link Grouper}. For example: + * Pass this method an element from the {@link UGroupingStrategy} enum. For example: * *

    -     * NumberFormatter::with().grouping(Grouper::min2())
    +     * NumberFormatter::with().grouping(UNUM_GROUPING_MIN2)
          * 
    * - * The default is to perform grouping without concern for the minimum grouping digits. + * The default is to perform grouping according to locale data; most locales, but not all locales, + * enable it by default. * - * @param grouper + * @param strategy * The grouping strategy to use. * @return The fluent chain. - * @see Grouper - * @see Notation - * @internal - * @internal ICU 60: This API is technical preview. + * @draft ICU 61 */ - Derived grouping(const Grouper &grouper) const; - -#endif /* U_HIDE_INTERNAL_API */ + Derived grouping(const UGroupingStrategy &strategy) const; /** * Specifies the minimum and maximum number of digits to render before the decimal mark. @@ -1592,7 +1788,7 @@ class U_I18N_API NumberFormatterSettings { * @see NumberingSystem * @draft ICU 60 */ - Derived adoptSymbols(const NumberingSystem *symbols) const; + Derived adoptSymbols(NumberingSystem *symbols) const; /** * Sets the width of the unit (measure unit or currency). Most common values: diff --git a/source/i18n/unicode/numfmt.h b/source/i18n/unicode/numfmt.h index 68be021..3937985 100644 --- a/source/i18n/unicode/numfmt.h +++ b/source/i18n/unicode/numfmt.h @@ -28,7 +28,7 @@ /** * \file - * \brief C++ API: Abstract base class for all number formats. + * \brief C++ API: Compatibility APIs for number formatting. */ #if !UCONFIG_NO_FORMATTING @@ -53,16 +53,16 @@ class StringEnumeration; #endif /** + *

    IMPORTANT: New users are strongly encouraged to see if + * numberformatter.h fits their use case. Although not deprecated, this header + * is provided for backwards compatibility only. + *


    * * Abstract base class for all number formats. Provides interface for * formatting and parsing a number. Also provides methods for * determining which locales have number formats, and what their names * are. * - *

    NOTE: Starting in ICU 60, there is a new set of APIs for localized number - * formatting that are designed to be an improvement over DecimalFormat. New users are discouraged - * from using DecimalFormat. For more information, see numberformatter.h. - * * \headerfile unicode/numfmt.h "unicode/numfmt.h" *

    * NumberFormat helps you to format and parse numbers for any locale. @@ -708,6 +708,9 @@ public: /** * Create a default style NumberFormat for the current default locale. * The default formatting style is locale dependent. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @stable ICU 2.0 */ static NumberFormat* U_EXPORT2 createInstance(UErrorCode&); @@ -716,6 +719,9 @@ public: * Create a default style NumberFormat for the specified locale. * The default formatting style is locale dependent. * @param inLocale the given locale. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @stable ICU 2.0 */ static NumberFormat* U_EXPORT2 createInstance(const Locale& inLocale, @@ -723,6 +729,9 @@ public: /** * Create a specific style NumberFormat for the specified locale. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @param desiredLocale the given locale. * @param style the given style. * @param errorCode Output param filled with success/failure status. @@ -759,12 +768,18 @@ public: /** * Returns a currency format for the current default locale. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @stable ICU 2.0 */ static NumberFormat* U_EXPORT2 createCurrencyInstance(UErrorCode&); /** * Returns a currency format for the specified locale. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @param inLocale the given locale. * @stable ICU 2.0 */ @@ -773,12 +788,18 @@ public: /** * Returns a percentage format for the current default locale. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @stable ICU 2.0 */ static NumberFormat* U_EXPORT2 createPercentInstance(UErrorCode&); /** * Returns a percentage format for the specified locale. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @param inLocale the given locale. * @stable ICU 2.0 */ @@ -787,12 +808,18 @@ public: /** * Returns a scientific format for the current default locale. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @stable ICU 2.0 */ static NumberFormat* U_EXPORT2 createScientificInstance(UErrorCode&); /** * Returns a scientific format for the specified locale. + *

    + * NOTE: New users are strongly encouraged to use + * {@link NumberFormatter} instead of NumberFormat. * @param inLocale the given locale. * @stable ICU 2.0 */ diff --git a/source/i18n/unicode/simpletz.h b/source/i18n/unicode/simpletz.h index 5b80263..3ae0807 100644 --- a/source/i18n/unicode/simpletz.h +++ b/source/i18n/unicode/simpletz.h @@ -647,7 +647,8 @@ public: * Sets the amount of time in ms that the clock is advanced during DST. * @param millisSavedDuringDST the number of milliseconds the time is * advanced with respect to standard time when the daylight savings rules - * are in effect. A positive number, typically one hour (3600000). + * are in effect. Typically one hour (+3600000). The amount could be negative, + * but not 0. * @param status An UErrorCode to receive the status. * @stable ICU 2.0 */ @@ -657,7 +658,8 @@ public: * Returns the amount of time in ms that the clock is advanced during DST. * @return the number of milliseconds the time is * advanced with respect to standard time when the daylight savings rules - * are in effect. A positive number, typically one hour (3600000). + * are in effect. Typically one hour (+3600000). The amount could be negative, + * but not 0. * @stable ICU 2.0 */ virtual int32_t getDSTSavings(void) const; diff --git a/source/i18n/unicode/udatpg.h b/source/i18n/unicode/udatpg.h index 76baa3d..beae756 100644 --- a/source/i18n/unicode/udatpg.h +++ b/source/i18n/unicode/udatpg.h @@ -95,6 +95,21 @@ typedef enum UDateTimePatternField { UDATPG_FIELD_COUNT } UDateTimePatternField; +#ifndef U_HIDE_DRAFT_API +/** + * Field display name width constants for udatpg_getFieldDisplayName(). + * @draft ICU 61 + */ +typedef enum UDateTimePGDisplayWidth { + /** @draft ICU 61 */ + UDATPG_WIDE, + /** @draft ICU 61 */ + UDATPG_ABBREVIATED, + /** @draft ICU 61 */ + UDATPG_NARROW +} UDateTimePGDisplayWidth; +#endif // U_HIDE_DRAFT_API + /** * Masks to control forcing the length of specified fields in the returned * pattern to match those in the skeleton (when this would not happen @@ -410,12 +425,14 @@ udatpg_setAppendItemName(UDateTimePatternGenerator *dtpg, /** * Getter corresponding to setAppendItemNames. Values below 0 or at or above - * UDATPG_FIELD_COUNT are illegal arguments. + * UDATPG_FIELD_COUNT are illegal arguments. Note: The more general function + * for getting date/time field display names is udatpg_getFieldDisplayName. * * @param dtpg a pointer to UDateTimePatternGenerator. * @param field UDateTimePatternField, such as UDATPG_ERA_FIELD * @param pLength A pointer that will receive the length of the name for field. * @return name for field + * @see udatpg_getFieldDisplayName * @stable ICU 3.8 */ U_STABLE const UChar * U_EXPORT2 @@ -423,6 +440,40 @@ udatpg_getAppendItemName(const UDateTimePatternGenerator *dtpg, UDateTimePatternField field, int32_t *pLength); +#ifndef U_HIDE_DRAFT_API +/** + * The general interface to get a display name for a particular date/time field, + * in one of several possible display widths. + * + * @param dtpg + * A pointer to the UDateTimePatternGenerator object with the localized + * display names. + * @param field + * The desired UDateTimePatternField, such as UDATPG_ERA_FIELD. + * @param width + * The desired UDateTimePGDisplayWidth, such as UDATPG_ABBREVIATED. + * @param fieldName + * A pointer to a buffer to receive the NULL-terminated display name. If the name + * fits into fieldName but cannot be NULL-terminated (length == capacity) then + * the error code is set to U_STRING_NOT_TERMINATED_WARNING. If the name doesn't + * fit into fieldName then the error code is set to U_BUFFER_OVERFLOW_ERROR. + * @param capacity + * The size of fieldName (in UChars). + * @param pErrorCode + * A pointer to a UErrorCode to receive any errors + * @return + * The full length of the name; if greater than capacity, fieldName contains a + * truncated result. + * @draft ICU 61 + */ +U_DRAFT int32_t U_EXPORT2 +udatpg_getFieldDisplayName(const UDateTimePatternGenerator *dtpg, + UDateTimePatternField field, + UDateTimePGDisplayWidth width, + UChar *fieldName, int32_t capacity, + UErrorCode *pErrorCode); +#endif // U_HIDE_DRAFT_API + /** * The DateTimeFormat is a message format pattern used to compose date and * time patterns. The default pattern in the root locale is "{1} {0}", where diff --git a/source/i18n/unicode/unum.h b/source/i18n/unicode/unum.h index 2ab09b5..ff251ff 100644 --- a/source/i18n/unicode/unum.h +++ b/source/i18n/unicode/unum.h @@ -32,6 +32,9 @@ * \brief C API: NumberFormat * *

    Number Format C API

    + * + *

    IMPORTANT: New users with C++ capabilities are + * strongly encouraged to see if numberformatter.h fits their use case. * * Number Format C API Provides functions for * formatting and parsing a number. Also provides methods for @@ -559,7 +562,6 @@ unum_formatDouble( const UNumberFormat* fmt, UFieldPosition *pos, /* 0 if ignore */ UErrorCode* status); -#ifndef U_HIDE_DRAFT_API /** * Format a double using a UNumberFormat according to the UNumberFormat's locale, * and initialize a UFieldPositionIterator that enumerates the subcomponents of @@ -600,9 +602,9 @@ unum_formatDouble( const UNumberFormat* fmt, * @see unum_parseDouble * @see UFieldPositionIterator * @see UNumberFormatFields -* @draft ICU 59 +* @stable ICU 59 */ -U_DRAFT int32_t U_EXPORT2 +U_STABLE int32_t U_EXPORT2 unum_formatDoubleForFields(const UNumberFormat* format, double number, UChar* result, @@ -610,7 +612,6 @@ unum_formatDoubleForFields(const UNumberFormat* format, UFieldPositionIterator* fpositer, UErrorCode* status); -#endif /* U_HIDE_DRAFT_API */ /** * Format a decimal number using a UNumberFormat. diff --git a/source/i18n/unicode/upluralrules.h b/source/i18n/unicode/upluralrules.h index 99d93a4..690846b 100644 --- a/source/i18n/unicode/upluralrules.h +++ b/source/i18n/unicode/upluralrules.h @@ -175,7 +175,6 @@ uplrules_selectWithFormat(const UPluralRules *uplrules, #endif /* U_HIDE_INTERNAL_API */ -#ifndef U_HIDE_DRAFT_API /** * Creates a string enumeration of all plural rule keywords used in this * UPluralRules object. The rule "other" is always present by default. @@ -184,12 +183,11 @@ uplrules_selectWithFormat(const UPluralRules *uplrules, * @param status A pointer to a UErrorCode to receive any errors. * @return a string enumeration over plural rule keywords, or NULL * upon error. The caller is responsible for closing the result. - * @draft ICU 59 + * @stable ICU 59 */ -U_DRAFT UEnumeration* U_EXPORT2 +U_STABLE UEnumeration* U_EXPORT2 uplrules_getKeywords(const UPluralRules *uplrules, UErrorCode *status); -#endif /* U_HIDE_DRAFT_API */ #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/i18n/unicode/utrans.h b/source/i18n/unicode/utrans.h index d0f05cf..697681a 100644 --- a/source/i18n/unicode/utrans.h +++ b/source/i18n/unicode/utrans.h @@ -382,7 +382,7 @@ utrans_openIDs(UErrorCode *pErrorCode); U_STABLE void U_EXPORT2 utrans_trans(const UTransliterator* trans, UReplaceable* rep, - UReplaceableCallbacks* repFunc, + const UReplaceableCallbacks* repFunc, int32_t start, int32_t* limit, UErrorCode* status); @@ -433,7 +433,7 @@ utrans_trans(const UTransliterator* trans, U_STABLE void U_EXPORT2 utrans_transIncremental(const UTransliterator* trans, UReplaceable* rep, - UReplaceableCallbacks* repFunc, + const UReplaceableCallbacks* repFunc, UTransPosition* pos, UErrorCode* status); diff --git a/source/i18n/uregex.cpp b/source/i18n/uregex.cpp index 0c26bdf..12f3689 100644 --- a/source/i18n/uregex.cpp +++ b/source/i18n/uregex.cpp @@ -1465,8 +1465,10 @@ int32_t RegexCImpl::appendReplacement(RegularExpression *regexp, int32_t groupNum = 0; U_ASSERT(c == DOLLARSIGN); - UChar32 c32; - U16_GET(replacementText, 0, replIdx, replacementLength, c32); + UChar32 c32 = -1; + if (replIdx < replacementLength) { + U16_GET(replacementText, 0, replIdx, replacementLength, c32); + } if (u_isdigit(c32)) { int32_t numDigits = 0; int32_t numCaptureGroups = m->fPattern->fGroupMap->size(); diff --git a/source/i18n/utrans.cpp b/source/i18n/utrans.cpp index 5124833..29013ea 100644 --- a/source/i18n/utrans.cpp +++ b/source/i18n/utrans.cpp @@ -41,12 +41,12 @@ U_NAMESPACE_BEGIN class ReplaceableGlue : public Replaceable { UReplaceable *rep; - UReplaceableCallbacks *func; + const UReplaceableCallbacks *func; public: ReplaceableGlue(UReplaceable *replaceable, - UReplaceableCallbacks *funcCallback); + const UReplaceableCallbacks *funcCallback); virtual ~ReplaceableGlue(); @@ -88,7 +88,7 @@ protected: UOBJECT_DEFINE_RTTI_IMPLEMENTATION(ReplaceableGlue) ReplaceableGlue::ReplaceableGlue(UReplaceable *replaceable, - UReplaceableCallbacks *funcCallback) + const UReplaceableCallbacks *funcCallback) : Replaceable() { this->rep = replaceable; @@ -398,7 +398,7 @@ utrans_openIDs(UErrorCode *pErrorCode) { U_CAPI void U_EXPORT2 utrans_trans(const UTransliterator* trans, UReplaceable* rep, - UReplaceableCallbacks* repFunc, + const UReplaceableCallbacks* repFunc, int32_t start, int32_t* limit, UErrorCode* status) { @@ -418,7 +418,7 @@ utrans_trans(const UTransliterator* trans, U_CAPI void U_EXPORT2 utrans_transIncremental(const UTransliterator* trans, UReplaceable* rep, - UReplaceableCallbacks* repFunc, + const UReplaceableCallbacks* repFunc, UTransPosition* pos, UErrorCode* status) { diff --git a/source/io/io.vcxproj b/source/io/io.vcxproj index 375b716..ac7d6f6 100644 --- a/source/io/io.vcxproj +++ b/source/io/io.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {C2B04507-2521-4801-BF0D-5FD79D6D518C} - 8.1 - - DynamicLibrary - false - MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 - - + DynamicLibrary false MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 @@ -82,42 +47,39 @@ .\x64\Debug\ true + + + + ..\..\include;..\common;%(AdditionalIncludeDirectories) + U_IO_IMPLEMENTATION;%(PreprocessorDefinitions) + false + Level3 + + + ..\common;%(AdditionalIncludeDirectories) + + + 0x4ab00000 + + - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\..\..\lib\icuio.tlb - ..\..\include;..\common;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;U_IO_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true - false - true .\x86\Release/icuio.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\common;%(AdditionalIncludeDirectories) - - ..\..\bin\icuio60.dll - true + ..\..\bin\icuio61.dll + icuuc.lib;icuin.lib;%(AdditionalDependencies) + ..\..\lib;%(AdditionalLibraryDirectories) .\..\..\lib\icuio.pdb - true - 0x4ab00000 false @@ -126,43 +88,24 @@ - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\..\..\lib\icuio.tlb - Disabled - ..\..\include;..\common;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;U_IO_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - false - true .\x86\Debug/icuio.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\common;%(AdditionalIncludeDirectories) - - ..\..\bin\icuio60d.dll - true + ..\..\bin\icuio61d.dll + icuucd.lib;icuind.lib;%(AdditionalDependencies) + ..\..\lib;%(AdditionalLibraryDirectories) true .\..\..\lib\icuiod.pdb - 0x4ab00000 false @@ -171,85 +114,46 @@ - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 .\..\..\lib64\icuio.tlb - ..\..\include;..\common;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;U_IO_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true - false - true .\x64\Release/icuio.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\common;%(AdditionalIncludeDirectories) - - ..\..\bin64\icuio60.dll - true + ..\..\bin64\icuio61.dll + icuuc.lib;icuin.lib;%(AdditionalDependencies) + ..\..\lib64;%(AdditionalLibraryDirectories) .\..\..\lib64\icuio.pdb - true - 0x4ab00000 ..\..\lib64\icuio.lib - MachineX64 - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 .\..\..\lib64\icuio.tlb - Disabled - ..\..\include;..\common;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;U_IO_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - false - true .\x64\Debug/icuio.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - ..\common;%(AdditionalIncludeDirectories) - - ..\..\bin64\icuio60d.dll - true + ..\..\bin64\icuio61d.dll + icuucd.lib;icuind.lib;%(AdditionalDependencies) + ..\..\lib64;%(AdditionalLibraryDirectories) true .\..\..\lib64\icuiod.pdb - 0x4ab00000 ..\..\lib64\icuiod.lib - MachineX64 @@ -267,10 +171,7 @@ - false - false - false - false + false @@ -280,49 +181,13 @@ - - copy "%(FullPath)" ..\..\include\unicode - - ..\..\include\unicode\%(Filename)%(Extension);%(Outputs) - copy "%(FullPath)" ..\..\include\unicode - - ..\..\include\unicode\%(Filename)%(Extension);%(Outputs) - copy "%(FullPath)" ..\..\include\unicode - - ..\..\include\unicode\%(Filename)%(Extension);%(Outputs) - copy "%(FullPath)" ..\..\include\unicode - - ..\..\include\unicode\%(Filename)%(Extension);%(Outputs) - - - copy "%(FullPath)" ..\..\include\unicode - - ..\..\include\unicode\%(Filename)%(Extension);%(Outputs) - copy "%(FullPath)" ..\..\include\unicode - - ..\..\include\unicode\%(Filename)%(Extension);%(Outputs) - copy "%(FullPath)" ..\..\include\unicode - - ..\..\include\unicode\%(Filename)%(Extension);%(Outputs) - copy "%(FullPath)" ..\..\include\unicode - - ..\..\include\unicode\%(Filename)%(Extension);%(Outputs) - - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - + + - + \ No newline at end of file diff --git a/source/layoutex/layout/plruns.h b/source/layoutex/layout/plruns.h index 2a7a397..6cbece8 100644 --- a/source/layoutex/layout/plruns.h +++ b/source/layoutex/layout/plruns.h @@ -20,14 +20,17 @@ /** * Opaque datatype representing an array of font runs + * @internal */ typedef void pl_fontRuns; /** * Opaque datatype representing an array of value runs + * @internal */ typedef void pl_valueRuns; /** * Opaque datatype representing an array of locale runs + * @internal */ typedef void pl_localeRuns; diff --git a/source/layoutex/layoutex.vcxproj b/source/layoutex/layoutex.vcxproj index 63fec11..74ea3c0 100644 --- a/source/layoutex/layoutex.vcxproj +++ b/source/layoutex/layoutex.vcxproj @@ -1,51 +1,17 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {37FC2C7F-1904-4811-8955-2F478830EAD1} layoutex - - DynamicLibrary - false - MultiByte - v140 - - + DynamicLibrary false MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 @@ -82,41 +48,36 @@ .\x64\Debug\ true + + + + ..\..\include;..\common;%(AdditionalIncludeDirectories) + U_LAYOUTEX_IMPLEMENTATION;%(PreprocessorDefinitions) + Level3 + + + 0x4ac80000 + + - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\..\..\lib\iculx.tlb - ..\..\include;..\common;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;U_LAYOUTEX_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true false - true .\x86\Release/layoutex.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\bin\iculx60.dll - true + ..\..\bin\iculx61.dll + icuuc.lib;%(AdditionalDependencies) + .\..\..\lib;%(AdditionalLibraryDirectories) .\..\..\lib\iculx.pdb - true - 0x4ac80000 false @@ -125,42 +86,25 @@ - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\..\..\lib\iculxd.tlb - Disabled - ..\..\include;..\common;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;U_LAYOUTEX_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true false - true .\x86\Debug/layoutex.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\bin\iculx60d.dll - true + ..\..\bin\iculx61d.dll + icuucd.lib;%(AdditionalDependencies) + .\..\..\lib;%(AdditionalLibraryDirectories) true .\..\..\lib\iculxd.pdb - 0x4ac80000 false @@ -169,99 +113,61 @@ - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 .\..\..\lib64\iculx.tlb - ..\..\include;..\common;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;U_LAYOUTEX_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true false - true .\x64\Release/layoutex.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\bin64\iculx60.dll - true + ..\..\bin64\iculx61.dll + icuuc.lib;%(AdditionalDependencies) + .\..\..\lib64;%(AdditionalLibraryDirectories) .\..\..\lib64\iculx.pdb - true - 0x4ac80000 ..\..\lib64\iculx.lib - MachineX64 - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 .\..\..\lib64\iculxd.tlb - Disabled - ..\..\include;..\common;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;U_LAYOUTEX_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true false - true .\x64\Debug/layoutex.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\bin64\iculx60d.dll - true + ..\..\bin64\iculx61d.dll + icuucd.lib;%(AdditionalDependencies) + .\..\..\lib64;%(AdditionalLibraryDirectories) true .\..\..\lib64\iculxd.pdb - 0x4ac80000 ..\..\lib64\iculxd.lib - MachineX64 - false - false + false - false - false + false - false - false + false @@ -325,17 +231,10 @@ - ..\common - ..\common - ..\common - ..\common + ..\common - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - {c920062a-0647-4553-a3b2-37c58065664b} false @@ -344,4 +243,4 @@ - + \ No newline at end of file diff --git a/source/samples/all/all.sln b/source/samples/all/all.sln index 7020e4c..fb4f726 100644 --- a/source/samples/all/all.sln +++ b/source/samples/all/all.sln @@ -1,5 +1,7 @@ -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 15 +VisualStudioVersion = 15.0.27130.2036 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "break", "..\break\break.vcxproj", "{DEEADF02-9C14-4854-A395-E505D2904D65}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "cal", "..\cal\cal.vcxproj", "{F7659D77-09CF-4FE9-ACEE-927287AA9509}" @@ -10,10 +12,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "date", "..\date\date.vcxpro EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "datefmt", "..\datefmt\datefmt.vcxproj", "{6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "layout", "..\layout\layout.vcxproj", "{497500ED-DE1D-4B20-B529-F41B5A0FBEEB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "legacy", "..\legacy\legacy.vcxproj", "{57F56795-1802-4605-88A0-013AAE9998F6}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "msgfmt", "..\msgfmt\msgfmt.vcxproj", "{5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "numfmt", "..\numfmt\numfmt.vcxproj", "{721FBD47-E458-4C35-90DA-FF192907D5E2}" @@ -56,224 +54,216 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "dtptngsample", "..\dtptngsa EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 + Debug|x86 = Debug|x86 Release|x64 = Release|x64 + Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|Win32.ActiveCfg = Debug|Win32 - {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|Win32.Build.0 = Debug|Win32 {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.ActiveCfg = Debug|x64 {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.Build.0 = Debug|x64 - {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|Win32.ActiveCfg = Release|Win32 - {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|Win32.Build.0 = Release|Win32 + {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x86.ActiveCfg = Debug|Win32 + {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x86.Build.0 = Debug|Win32 {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.ActiveCfg = Release|x64 {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.Build.0 = Release|x64 - {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32 - {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32 + {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x86.ActiveCfg = Release|Win32 + {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x86.Build.0 = Release|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64 - {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32 - {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32 + {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x86.ActiveCfg = Debug|Win32 + {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x86.Build.0 = Debug|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|x64 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.Build.0 = Release|x64 - {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|Win32.ActiveCfg = Debug|Win32 - {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|Win32.Build.0 = Debug|Win32 + {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x86.ActiveCfg = Release|Win32 + {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x86.Build.0 = Release|Win32 {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.ActiveCfg = Debug|x64 {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.Build.0 = Debug|x64 - {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|Win32.ActiveCfg = Release|Win32 - {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|Win32.Build.0 = Release|Win32 + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x86.ActiveCfg = Debug|Win32 + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x86.Build.0 = Debug|Win32 {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.ActiveCfg = Release|x64 {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.Build.0 = Release|x64 - {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.ActiveCfg = Debug|Win32 - {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.Build.0 = Debug|Win32 + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x86.ActiveCfg = Release|Win32 + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x86.Build.0 = Release|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64 - {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.ActiveCfg = Release|Win32 - {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32 + {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x86.ActiveCfg = Debug|Win32 + {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x86.Build.0 = Debug|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|x64 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.Build.0 = Release|x64 - {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|Win32.ActiveCfg = Debug|Win32 - {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|Win32.Build.0 = Debug|Win32 + {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x86.ActiveCfg = Release|Win32 + {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x86.Build.0 = Release|Win32 {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.ActiveCfg = Debug|x64 {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.Build.0 = Debug|x64 - {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|Win32.ActiveCfg = Release|Win32 - {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|Win32.Build.0 = Release|Win32 + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x86.ActiveCfg = Debug|Win32 + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x86.Build.0 = Debug|Win32 {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.ActiveCfg = Release|x64 {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.Build.0 = Release|x64 - {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Debug|Win32.ActiveCfg = Debug|Win32 - {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Debug|Win32.Build.0 = Debug|Win32 - {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Debug|x64.ActiveCfg = Debug|x64 - {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Debug|x64.Build.0 = Debug|x64 - {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Release|Win32.ActiveCfg = Release|Win32 - {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Release|Win32.Build.0 = Release|Win32 - {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Release|x64.ActiveCfg = Release|x64 - {497500ED-DE1D-4B20-B529-F41B5A0FBEEB}.Release|x64.Build.0 = Release|x64 - {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|Win32.ActiveCfg = Debug|Win32 - {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|Win32.Build.0 = Debug|Win32 - {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|x64.ActiveCfg = Debug|x64 - {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|x64.Build.0 = Debug|x64 - {57F56795-1802-4605-88A0-013AAE9998F6}.Release|Win32.ActiveCfg = Release|Win32 - {57F56795-1802-4605-88A0-013AAE9998F6}.Release|Win32.Build.0 = Release|Win32 - {57F56795-1802-4605-88A0-013AAE9998F6}.Release|x64.ActiveCfg = Release|x64 - {57F56795-1802-4605-88A0-013AAE9998F6}.Release|x64.Build.0 = Release|x64 - {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|Win32.ActiveCfg = Debug|Win32 - {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|Win32.Build.0 = Debug|Win32 + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x86.ActiveCfg = Release|Win32 + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x86.Build.0 = Release|Win32 {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.ActiveCfg = Debug|x64 {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.Build.0 = Debug|x64 - {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|Win32.ActiveCfg = Release|Win32 - {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|Win32.Build.0 = Release|Win32 + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x86.ActiveCfg = Debug|Win32 + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x86.Build.0 = Debug|Win32 {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.ActiveCfg = Release|x64 {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.Build.0 = Release|x64 - {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|Win32.ActiveCfg = Debug|Win32 - {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|Win32.Build.0 = Debug|Win32 + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x86.ActiveCfg = Release|Win32 + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x86.Build.0 = Release|Win32 {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.ActiveCfg = Debug|x64 {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.Build.0 = Debug|x64 - {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|Win32.ActiveCfg = Release|Win32 - {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|Win32.Build.0 = Release|Win32 + {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x86.ActiveCfg = Debug|Win32 + {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x86.Build.0 = Debug|Win32 {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.ActiveCfg = Release|x64 {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.Build.0 = Release|x64 - {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|Win32.ActiveCfg = Debug|Win32 - {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|Win32.Build.0 = Debug|Win32 + {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x86.ActiveCfg = Release|Win32 + {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x86.Build.0 = Release|Win32 {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.ActiveCfg = Debug|x64 {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.Build.0 = Debug|x64 - {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|Win32.ActiveCfg = Release|Win32 - {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|Win32.Build.0 = Release|Win32 + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x86.ActiveCfg = Debug|Win32 + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x86.Build.0 = Debug|Win32 {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.ActiveCfg = Release|x64 {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.Build.0 = Release|x64 - {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|Win32.ActiveCfg = Debug|Win32 - {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|Win32.Build.0 = Debug|Win32 + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x86.ActiveCfg = Release|Win32 + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x86.Build.0 = Release|Win32 {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.ActiveCfg = Debug|x64 {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.Build.0 = Debug|x64 - {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|Win32.ActiveCfg = Release|Win32 - {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|Win32.Build.0 = Release|Win32 + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x86.ActiveCfg = Debug|Win32 + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x86.Build.0 = Debug|Win32 {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.ActiveCfg = Release|x64 {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.Build.0 = Release|x64 - {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|Win32.ActiveCfg = Debug|Win32 - {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|Win32.Build.0 = Debug|Win32 + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x86.ActiveCfg = Release|Win32 + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x86.Build.0 = Release|Win32 {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.ActiveCfg = Debug|x64 {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.Build.0 = Debug|x64 - {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|Win32.ActiveCfg = Release|Win32 - {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|Win32.Build.0 = Release|Win32 + {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x86.ActiveCfg = Debug|Win32 + {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x86.Build.0 = Debug|Win32 {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.ActiveCfg = Release|x64 {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.Build.0 = Release|x64 - {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|Win32.ActiveCfg = Debug|Win32 - {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|Win32.Build.0 = Debug|Win32 + {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x86.ActiveCfg = Release|Win32 + {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x86.Build.0 = Release|Win32 {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x64.ActiveCfg = Debug|x64 {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x64.Build.0 = Debug|x64 - {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|Win32.ActiveCfg = Release|Win32 - {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|Win32.Build.0 = Release|Win32 + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x86.ActiveCfg = Debug|Win32 + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x86.Build.0 = Debug|Win32 {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|x64.ActiveCfg = Release|x64 {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|x64.Build.0 = Release|x64 - {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|Win32.ActiveCfg = Debug|Win32 - {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|Win32.Build.0 = Debug|Win32 + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|x86.ActiveCfg = Release|Win32 + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|x86.Build.0 = Release|Win32 {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|x64.ActiveCfg = Debug|x64 {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|x64.Build.0 = Debug|x64 - {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|Win32.ActiveCfg = Release|Win32 - {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|Win32.Build.0 = Release|Win32 + {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|x86.ActiveCfg = Debug|Win32 + {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|x86.Build.0 = Debug|Win32 {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x64.ActiveCfg = Release|x64 {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x64.Build.0 = Release|x64 - {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|Win32.ActiveCfg = Debug|Win32 - {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|Win32.Build.0 = Debug|Win32 + {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x86.ActiveCfg = Release|Win32 + {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x86.Build.0 = Release|Win32 {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.ActiveCfg = Debug|x64 {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.Build.0 = Debug|x64 - {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|Win32.ActiveCfg = Release|Win32 - {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|Win32.Build.0 = Release|Win32 + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x86.ActiveCfg = Debug|Win32 + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x86.Build.0 = Debug|Win32 {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.ActiveCfg = Release|x64 {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.Build.0 = Release|x64 - {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|Win32.ActiveCfg = Debug|Win32 - {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|Win32.Build.0 = Debug|Win32 + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x86.ActiveCfg = Release|Win32 + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x86.Build.0 = Release|Win32 {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.ActiveCfg = Debug|x64 {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.Build.0 = Debug|x64 - {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|Win32.ActiveCfg = Release|Win32 - {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|Win32.Build.0 = Release|Win32 + {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x86.ActiveCfg = Debug|Win32 + {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x86.Build.0 = Debug|Win32 {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.ActiveCfg = Release|x64 {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.Build.0 = Release|x64 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|Win32.ActiveCfg = Debug|Win32 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|Win32.Build.0 = Debug|Win32 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.ActiveCfg = Debug|x64 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.Build.0 = Debug|x64 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|Win32.ActiveCfg = Release|Win32 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|Win32.Build.0 = Release|Win32 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.ActiveCfg = Release|x64 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.Build.0 = Release|x64 - {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|Win32.ActiveCfg = Debug|Win32 - {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|Win32.Build.0 = Debug|Win32 + {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x86.ActiveCfg = Release|Win32 + {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x86.Build.0 = Release|Win32 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.ActiveCfg = Debug|Win32 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x86.ActiveCfg = Debug|Win32 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x86.Build.0 = Debug|Win32 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.ActiveCfg = Release|Win32 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x86.ActiveCfg = Release|Win32 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x86.Build.0 = Release|Win32 {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x64.ActiveCfg = Debug|x64 {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x64.Build.0 = Debug|x64 - {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|Win32.ActiveCfg = Release|Win32 - {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|Win32.Build.0 = Release|Win32 + {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x86.ActiveCfg = Debug|Win32 + {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x86.Build.0 = Debug|Win32 {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x64.ActiveCfg = Release|x64 {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x64.Build.0 = Release|x64 - {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|Win32.ActiveCfg = Debug|Win32 - {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|Win32.Build.0 = Debug|Win32 + {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x86.ActiveCfg = Release|Win32 + {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x86.Build.0 = Release|Win32 {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.ActiveCfg = Debug|x64 {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.Build.0 = Debug|x64 - {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|Win32.ActiveCfg = Release|Win32 - {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|Win32.Build.0 = Release|Win32 + {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x86.ActiveCfg = Debug|Win32 + {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x86.Build.0 = Debug|Win32 {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.ActiveCfg = Release|x64 {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.Build.0 = Release|x64 - {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|Win32.ActiveCfg = Debug|Win32 - {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|Win32.Build.0 = Debug|Win32 + {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x86.ActiveCfg = Release|Win32 + {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x86.Build.0 = Release|Win32 {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.ActiveCfg = Debug|x64 {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.Build.0 = Debug|x64 - {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|Win32.ActiveCfg = Release|Win32 - {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|Win32.Build.0 = Release|Win32 + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x86.ActiveCfg = Debug|Win32 + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x86.Build.0 = Debug|Win32 {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.ActiveCfg = Release|x64 {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.Build.0 = Release|x64 - {40A90302-F173-4629-A003-F571D2D93D16}.Debug|Win32.ActiveCfg = Debug|Win32 - {40A90302-F173-4629-A003-F571D2D93D16}.Debug|Win32.Build.0 = Debug|Win32 + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x86.ActiveCfg = Release|Win32 + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x86.Build.0 = Release|Win32 {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.ActiveCfg = Debug|x64 {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.Build.0 = Debug|x64 - {40A90302-F173-4629-A003-F571D2D93D16}.Release|Win32.ActiveCfg = Release|Win32 - {40A90302-F173-4629-A003-F571D2D93D16}.Release|Win32.Build.0 = Release|Win32 + {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x86.ActiveCfg = Debug|Win32 + {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x86.Build.0 = Debug|Win32 {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.ActiveCfg = Release|x64 {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.Build.0 = Release|x64 - {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|Win32.ActiveCfg = Debug|Win32 - {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|Win32.Build.0 = Debug|Win32 + {40A90302-F173-4629-A003-F571D2D93D16}.Release|x86.ActiveCfg = Release|Win32 + {40A90302-F173-4629-A003-F571D2D93D16}.Release|x86.Build.0 = Release|Win32 {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|x64.ActiveCfg = Debug|x64 {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|x64.Build.0 = Debug|x64 - {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|Win32.ActiveCfg = Release|Win32 - {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|Win32.Build.0 = Release|Win32 + {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|x86.ActiveCfg = Debug|Win32 + {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Debug|x86.Build.0 = Debug|Win32 {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|x64.ActiveCfg = Release|x64 {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|x64.Build.0 = Release|x64 - {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|Win32.ActiveCfg = Debug|Win32 - {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|Win32.Build.0 = Debug|Win32 + {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|x86.ActiveCfg = Release|Win32 + {247E2681-6C84-408B-B40C-5DB50BC5E18F}.Release|x86.Build.0 = Release|Win32 {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x64.ActiveCfg = Debug|x64 {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x64.Build.0 = Debug|x64 - {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|Win32.ActiveCfg = Release|Win32 - {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|Win32.Build.0 = Release|Win32 + {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x86.ActiveCfg = Debug|Win32 + {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x86.Build.0 = Debug|Win32 {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x64.ActiveCfg = Release|x64 {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x64.Build.0 = Release|x64 - {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|Win32.ActiveCfg = Debug|Win32 - {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|Win32.Build.0 = Debug|Win32 + {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x86.ActiveCfg = Release|Win32 + {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x86.Build.0 = Release|Win32 {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|x64.ActiveCfg = Debug|x64 {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|x64.Build.0 = Debug|x64 - {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|Win32.ActiveCfg = Release|Win32 - {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|Win32.Build.0 = Release|Win32 + {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|x86.ActiveCfg = Debug|Win32 + {683745AD-3BC2-4B89-898B-93490D7F2757}.Debug|x86.Build.0 = Debug|Win32 {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x64.ActiveCfg = Release|x64 {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x64.Build.0 = Release|x64 - {8945255B-473B-4C47-9425-E92384338CAA}.Debug|Win32.ActiveCfg = Debug|Win32 - {8945255B-473B-4C47-9425-E92384338CAA}.Debug|Win32.Build.0 = Debug|Win32 - {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x64.ActiveCfg = Debug|Win32 - {8945255B-473B-4C47-9425-E92384338CAA}.Release|Win32.ActiveCfg = Release|Win32 - {8945255B-473B-4C47-9425-E92384338CAA}.Release|Win32.Build.0 = Release|Win32 - {8945255B-473B-4C47-9425-E92384338CAA}.Release|x64.ActiveCfg = Release|Win32 - {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|Win32.ActiveCfg = Debug|Win32 - {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|Win32.Build.0 = Debug|Win32 - {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x64.ActiveCfg = Debug|Win32 - {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|Win32.ActiveCfg = Release|Win32 - {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|Win32.Build.0 = Release|Win32 - {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x64.ActiveCfg = Release|Win32 - {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|Win32.ActiveCfg = Debug|Win32 - {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|Win32.Build.0 = Debug|Win32 - {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x64.ActiveCfg = Debug|Win32 - {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|Win32.ActiveCfg = Release|Win32 - {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|Win32.Build.0 = Release|Win32 - {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x64.ActiveCfg = Release|Win32 + {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x86.ActiveCfg = Release|Win32 + {683745AD-3BC2-4B89-898B-93490D7F2757}.Release|x86.Build.0 = Release|Win32 + {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x64.ActiveCfg = Debug|x64 + {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x64.Build.0 = Debug|x64 + {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x86.ActiveCfg = Debug|Win32 + {8945255B-473B-4C47-9425-E92384338CAA}.Debug|x86.Build.0 = Debug|Win32 + {8945255B-473B-4C47-9425-E92384338CAA}.Release|x64.ActiveCfg = Release|x64 + {8945255B-473B-4C47-9425-E92384338CAA}.Release|x64.Build.0 = Release|x64 + {8945255B-473B-4C47-9425-E92384338CAA}.Release|x86.ActiveCfg = Release|Win32 + {8945255B-473B-4C47-9425-E92384338CAA}.Release|x86.Build.0 = Release|Win32 + {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x64.ActiveCfg = Debug|x64 + {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x64.Build.0 = Debug|x64 + {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x86.ActiveCfg = Debug|Win32 + {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Debug|x86.Build.0 = Debug|Win32 + {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x64.ActiveCfg = Release|x64 + {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x64.Build.0 = Release|x64 + {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x86.ActiveCfg = Release|Win32 + {B500B731-ED1A-4761-94ED-B22DFE25FF2B}.Release|x86.Build.0 = Release|Win32 + {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x64.ActiveCfg = Debug|x64 + {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x64.Build.0 = Debug|x64 + {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x86.ActiveCfg = Debug|Win32 + {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Debug|x86.Build.0 = Debug|Win32 + {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x64.ActiveCfg = Release|x64 + {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x64.Build.0 = Release|x64 + {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x86.ActiveCfg = Release|Win32 + {115886F0-7DFB-4B8B-BE79-83162EE8713B}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {DB7CDCAF-F002-40F8-9E0E-F25F68EEC77B} + SolutionGuid = {60B84F6E-86EE-46F7-9AF4-8A3ABB09A513} + EndGlobalSection EndGlobal diff --git a/source/samples/break/break.cpp b/source/samples/break/break.cpp index 4965aac..8b4ad61 100644 --- a/source/samples/break/break.cpp +++ b/source/samples/break/break.cpp @@ -17,8 +17,9 @@ #include #include -U_CFUNC int c_main(void); +using namespace icu; +U_CFUNC int c_main(void); void printUnicodeString(const UnicodeString &s) { char charBuf[1000]; diff --git a/source/samples/break/break.sln b/source/samples/break/break.sln index 131bb04..80cca42 100644 --- a/source/samples/break/break.sln +++ b/source/samples/break/break.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|Win32.ActiveCfg = Debug|Win32 {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|Win32.Build.0 = Debug|Win32 - {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.ActiveCfg = Debug|Win32 - {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.Build.0 = Debug|Win32 + {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.ActiveCfg = Debug|x64 + {DEEADF02-9C14-4854-A395-E505D2904D65}.Debug|x64.Build.0 = Debug|x64 {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|Win32.ActiveCfg = Release|Win32 {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|Win32.Build.0 = Release|Win32 - {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.ActiveCfg = Release|Win32 - {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.Build.0 = Release|Win32 + {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.ActiveCfg = Release|x64 + {DEEADF02-9C14-4854-A395-E505D2904D65}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/break/break.vcxproj b/source/samples/break/break.vcxproj index 0ac3e59..1737d93 100644 --- a/source/samples/break/break.vcxproj +++ b/source/samples/break/break.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {DEEADF02-9C14-4854-A395-E505D2904D65} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -82,40 +47,32 @@ .\x64\Debug\ true + + + + ..\..\..\include;%(AdditionalIncludeDirectories) + Level3 + + - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\x86\Release/break.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded true - true .\x86\Release/break.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x86\Release/break.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/break.pdb Console @@ -126,81 +83,50 @@ - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 .\x64\Release/break.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded true - true .\x64\Release/break.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x64\Release/break.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/break.pdb Console false - MachineX64 - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\x86\Debug/break.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug - true .\x86\Debug/break.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x86\Debug/break.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/break.pdb @@ -212,38 +138,23 @@ - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 .\x64\Debug/break.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug - true .\x64\Debug/break.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x64\Debug/break.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/break.pdb @@ -251,7 +162,6 @@ false - MachineX64 @@ -261,4 +171,4 @@ - + \ No newline at end of file diff --git a/source/samples/cal/cal.sln b/source/samples/cal/cal.sln index 1cee7da..19f41e9 100644 --- a/source/samples/cal/cal.sln +++ b/source/samples/cal/cal.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.ActiveCfg = Debug|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|Win32.Build.0 = Debug|Win32 - {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|Win32 - {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|Win32 + {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.ActiveCfg = Debug|x64 + {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Debug|x64.Build.0 = Debug|x64 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.ActiveCfg = Release|Win32 {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|Win32.Build.0 = Release|Win32 - {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.ActiveCfg = Release|Win32 - {F7659D77-09CF-4FE9-ACEE-927287AA9509}.Release|x64.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 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/cal/cal.vcxproj b/source/samples/cal/cal.vcxproj index 95a0a53..a5aad70 100644 --- a/source/samples/cal/cal.vcxproj +++ b/source/samples/cal/cal.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {F7659D77-09CF-4FE9-ACEE-927287AA9509} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -82,36 +47,33 @@ .\x64\Debug\ true + + + + ..\..\..\include;%(AdditionalIncludeDirectories) + Level3 + false + + .\x86\Release/cal.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/cal.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x86\Release/cal.exe - true ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/cal.pdb Console @@ -122,42 +84,29 @@ - X64 .\x64\Release/cal.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/cal.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x64\Release/cal.exe - true ../../../lib64;%(AdditionalLibraryDirectories) .\x64\Release/cal.pdb Console false - MachineX64 @@ -165,12 +114,8 @@ .\x86\Debug/cal.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/cal.pch @@ -178,19 +123,12 @@ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x86\Debug/cal.exe - true ../../../lib;%(AdditionalLibraryDirectories) true .\x86\Debug/cal.pdb @@ -202,16 +140,10 @@ - X64 .\x64\Debug/cal.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/cal.pch @@ -219,19 +151,12 @@ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x64\Debug/cal.exe - true ../../../lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/cal.pdb @@ -239,31 +164,16 @@ false - MachineX64 - - false - - - false - + + - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - + \ No newline at end of file diff --git a/source/samples/case/case.cpp b/source/samples/case/case.cpp index f111818..c0f7216 100644 --- a/source/samples/case/case.cpp +++ b/source/samples/case/case.cpp @@ -18,6 +18,8 @@ #include #include +using namespace icu; + U_CFUNC int c_main(UFILE *out); void printUnicodeString(UFILE *out, const UnicodeString &s) { diff --git a/source/samples/case/case.sln b/source/samples/case/case.sln index e834d4d..46622a2 100644 --- a/source/samples/case/case.sln +++ b/source/samples/case/case.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|Win32.ActiveCfg = Debug|Win32 {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|Win32.Build.0 = Debug|Win32 - {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.ActiveCfg = Debug|Win32 - {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.Build.0 = Debug|Win32 + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.ActiveCfg = Debug|x64 + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Debug|x64.Build.0 = Debug|x64 {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|Win32.ActiveCfg = Release|Win32 {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|Win32.Build.0 = Release|Win32 - {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.ActiveCfg = Release|Win32 - {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.Build.0 = Release|Win32 + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.ActiveCfg = Release|x64 + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/case/case.vcxproj b/source/samples/case/case.vcxproj index 3596766..222ebed 100644 --- a/source/samples/case/case.vcxproj +++ b/source/samples/case/case.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {2316BE8C-189D-4C8B-B506-9D9EE25AC46D} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -82,38 +47,33 @@ .\x64\Release\ false + + + + ..\..\..\include;%(AdditionalIncludeDirectories) + Level3 + true + + .\x86\Debug/case.tlb - Disabled - ..;..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true .\x86\Debug/case.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies) .\x86\Debug/case.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) - true .\x86\Debug/case.pdb Console false @@ -123,31 +83,19 @@ - X64 .\x64\Debug/case.tlb - Disabled - ..;..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true .\x64\Debug/case.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies) .\x64\Debug/case.exe @@ -159,7 +107,6 @@ false - MachineX64 @@ -168,30 +115,19 @@ OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded true - true .\x86\Release/case.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) .\x86\Release/case.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/case.pdb Console @@ -202,42 +138,29 @@ - X64 .\x64\Release/case.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded true - true .\x64\Release/case.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) .\x64\Release/case.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/case.pdb Console false - MachineX64 @@ -247,4 +170,4 @@ - + \ No newline at end of file diff --git a/source/samples/case/ucase.c b/source/samples/case/ucase.c index eafa934..2dd272a 100644 --- a/source/samples/case/ucase.c +++ b/source/samples/case/ucase.c @@ -63,7 +63,7 @@ int c_main(UFILE *out) u_fprintf(out, "u_strToLower(%S, turkish) -> %S\n", upper, buffer); - /* ustring.h APIs, UChar * string case mapping with a Engish locale */ + /* ustring.h APIs, UChar * string case mapping with a English locale */ /* result buffer = "ABI" latin CAPITAL letter A, latin capital letter B, latin capital letter I */ length = u_strToUpper(buffer, sizeof(buffer)/sizeof(buffer[0]), upper, diff --git a/source/samples/citer/citer.cpp b/source/samples/citer/citer.cpp index 3a16dc1..43e5a00 100644 --- a/source/samples/citer/citer.cpp +++ b/source/samples/citer/citer.cpp @@ -23,6 +23,11 @@ static UFILE *out; +using icu::CharacterIterator; +using icu::StringCharacterIterator; +using icu::UCharCharacterIterator; +using icu::UnicodeString; + void printUnicodeString(const UnicodeString &s) { u_fprintf(out, "%S", &s); diff --git a/source/samples/citer/citer.vcxproj b/source/samples/citer/citer.vcxproj index bf6355e..9e7250d 100644 --- a/source/samples/citer/citer.vcxproj +++ b/source/samples/citer/citer.vcxproj @@ -1,48 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {247E2681-6C84-408B-B40C-5DB50BC5E18F} - Win32Proj - 8.1 - - Application - MultiByte - v140 - - - Application - MultiByte - v140 - - - Application - MultiByte - v140 - - + Application + false MultiByte - v140 @@ -81,13 +49,9 @@ - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true - EnableFastChecks MultiThreadedDebug - true Level3 @@ -95,7 +59,7 @@ icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies) - ./Debug/citer.exe + .\x86\Debug\citer.exe ..\..\..\lib;%(AdditionalLibraryDirectories) true $(OutDir)citer.pdb @@ -103,21 +67,13 @@ false - MachineX86 - - X64 - - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true - EnableFastChecks MultiThreadedDebug - true Level3 @@ -125,7 +81,7 @@ icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies) - ./Debug/citer.exe + .\x64\Debug\citer.exe ..\..\..\lib64;%(AdditionalLibraryDirectories) true $(OutDir)citer.pdb @@ -133,15 +89,12 @@ false - MachineX64 ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) MultiThreaded - true Level3 @@ -149,27 +102,20 @@ icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) - ./Release/citer.exe + .\x86\Release\citer.exe ..\..\..\lib;%(AdditionalLibraryDirectories) true Console true - true false - MachineX86 - - X64 - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) MultiThreaded - true Level3 @@ -177,16 +123,14 @@ icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) - ./Release/citer.exe + .\x64\Release\citer.exe ..\..\..\lib64;%(AdditionalLibraryDirectories) true Console true - true false - MachineX64 @@ -195,4 +139,4 @@ - + \ No newline at end of file diff --git a/source/samples/coll/coll.cpp b/source/samples/coll/coll.cpp index e29755d..afa57d0 100644 --- a/source/samples/coll/coll.cpp +++ b/source/samples/coll/coll.cpp @@ -25,7 +25,7 @@ const char gHelpString[] = "-lower Lower case first\n" "-upper Upper case first\n" "-case Enable separate case level\n" - "-level n Sort level, 1 to 5, for Primary, Secndary, Tertiary, Quaternary, Identical\n" + "-level n Sort level, 1 to 5, for Primary, Secondary, Tertiary, Quaternary, Identical\n" "-source string Source string for comparison\n" "-target string Target string for comparison\n" "Example coll -rules \\u0026b\\u003ca -source a -target b\n" diff --git a/source/samples/coll/coll.sln b/source/samples/coll/coll.sln index 3f6757a..5a4acc8 100644 --- a/source/samples/coll/coll.sln +++ b/source/samples/coll/coll.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|Win32.ActiveCfg = Debug|Win32 {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|Win32.Build.0 = Debug|Win32 - {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x64.ActiveCfg = Debug|Win32 - {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x64.Build.0 = Debug|Win32 + {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x64.ActiveCfg = Debug|x64 + {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Debug|x64.Build.0 = Debug|x64 {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|Win32.ActiveCfg = Release|Win32 {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|Win32.Build.0 = Release|Win32 - {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x64.ActiveCfg = Release|Win32 - {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x64.Build.0 = Release|Win32 + {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x64.ActiveCfg = Release|x64 + {7664D0D2-0263-4BFB-AE19-9A1CAD231440}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/coll/coll.vcxproj b/source/samples/coll/coll.vcxproj index 85d0341..453bcd4 100644 --- a/source/samples/coll/coll.vcxproj +++ b/source/samples/coll/coll.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {7664D0D2-0263-4BFB-AE19-9A1CAD231440} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -89,11 +54,8 @@ OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true MultiThreaded true - true .\x86\Release/coll.pch @@ -101,17 +63,11 @@ .\x86\Release/ .\x86\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - icuind.lib;icuucd.lib;%(AdditionalDependencies) + icuin.lib;icuuc.lib;%(AdditionalDependencies) .\x86\Release/coll.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/coll.pdb Console @@ -122,17 +78,13 @@ - X64 .\x64\Release/coll.tlb OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - true MultiThreaded true - true .\x64\Release/coll.pch @@ -140,24 +92,17 @@ .\x64\Release/ .\x64\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - icuind.lib;icuucd.lib;%(AdditionalDependencies) + icuin.lib;icuuc.lib;%(AdditionalDependencies) .\x64\Release/coll.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/coll.pdb Console false - MachineX64 @@ -165,12 +110,8 @@ .\x86\Debug/coll.tlb - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true .\x86\Debug/coll.pch @@ -183,14 +124,9 @@ EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuind.lib;icuucd.lib;%(AdditionalDependencies) .\x86\Debug/coll.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/coll.pdb @@ -202,16 +138,12 @@ - X64 .\x64\Debug/coll.tlb Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true .\x64\Debug/coll.pch @@ -220,18 +152,12 @@ .\x64\Debug/ true Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuind.lib;icuucd.lib;%(AdditionalDependencies) .\x64\Debug/coll.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/coll.pdb @@ -239,7 +165,6 @@ false - MachineX64 @@ -248,4 +173,4 @@ - + \ No newline at end of file diff --git a/source/samples/csdet/csdet.vcxproj b/source/samples/csdet/csdet.vcxproj index 6d2a0ad..fc4cb59 100644 --- a/source/samples/csdet/csdet.vcxproj +++ b/source/samples/csdet/csdet.vcxproj @@ -1,48 +1,17 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {683745AD-3BC2-4B89-898B-93490D7F2757} Win32Proj - 8.1 - - Application - MultiByte - v140 - - - Application - MultiByte - v140 - - + Application + false MultiByte - v140 - - - Application - MultiByte - v140 @@ -81,13 +50,10 @@ - Disabled ../../../include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebug - true Level3 @@ -103,7 +69,6 @@ false - MachineX86 @@ -113,11 +78,9 @@ Disabled ../../../include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true EnableFastChecks MultiThreadedDebug - true Level3 @@ -133,15 +96,12 @@ false - MachineX64 ../../../include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) MultiThreaded - true Level3 @@ -154,22 +114,15 @@ true Console true - true false - MachineX86 - - X64 - ../../../include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) MultiThreaded - true Level3 @@ -182,11 +135,9 @@ true Console true - true false - MachineX64 @@ -195,4 +146,4 @@ - + \ No newline at end of file diff --git a/source/samples/date/date.sln b/source/samples/date/date.sln index 63749a2..0ec4cd5 100644 --- a/source/samples/date/date.sln +++ b/source/samples/date/date.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.ActiveCfg = Debug|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|Win32.Build.0 = Debug|Win32 - {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|Win32 - {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|Win32 + {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.ActiveCfg = Debug|x64 + {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Debug|x64.Build.0 = Debug|x64 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.ActiveCfg = Release|Win32 {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|Win32.Build.0 = Release|Win32 - {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.ActiveCfg = Release|Win32 - {38B5751A-C6F9-4409-950C-F4F9DA17275F}.Release|x64.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 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/date/date.vcxproj b/source/samples/date/date.vcxproj index f8241c1..83ab770 100644 --- a/source/samples/date/date.vcxproj +++ b/source/samples/date/date.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {38B5751A-C6F9-4409-950C-F4F9DA17275F} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -89,29 +54,20 @@ OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - - - .\x86\Release/date.pch + NotUsing .\x86\Release/ .\x86\Release/ .\x86\Release/ Level3 true Default + - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x86\Release/date.exe - true ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/date.pdb Console @@ -122,42 +78,30 @@ - X64 .\x64\Release/date.tlb OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - - - .\x64\Release/date.pch + NotUsing .\x64\Release/ .\x64\Release/ .\x64\Release/ Level3 - true Default + - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x64\Release/date.exe - true - ../../../lib64;%(AdditionalLibraryDirectories) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/date.pdb Console false - MachineX64 @@ -167,29 +111,20 @@ Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL - true - - - .\x86\Debug/date.pch + NotUsing .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ Level3 - true EditAndContinue Default + - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x86\Debug/date.exe - true ../../../lib;%(AdditionalLibraryDirectories) true .\x86\Debug/date.pdb @@ -201,35 +136,23 @@ - X64 .\x64\Debug/date.tlb - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - - - .\x64\Debug/date.pch + NotUsing .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ Level3 - true ProgramDatabase Default + - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x64\Debug/date.exe - true ../../../lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/date.pdb @@ -237,7 +160,6 @@ false - MachineX64 @@ -247,17 +169,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - + \ No newline at end of file diff --git a/source/samples/datefmt/datefmt.sln b/source/samples/datefmt/datefmt.sln index a82993d..346439a 100644 --- a/source/samples/datefmt/datefmt.sln +++ b/source/samples/datefmt/datefmt.sln @@ -14,12 +14,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|Win32.ActiveCfg = Debug|Win32 {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|Win32.Build.0 = Debug|Win32 - {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.ActiveCfg = Debug|Win32 - {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.Build.0 = Debug|Win32 + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.ActiveCfg = Debug|x64 + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Debug|x64.Build.0 = Debug|x64 {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|Win32.ActiveCfg = Release|Win32 {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|Win32.Build.0 = Release|Win32 - {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.ActiveCfg = Release|Win32 - {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.Build.0 = Release|Win32 + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.ActiveCfg = Release|x64 + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/datefmt/datefmt.vcxproj b/source/samples/datefmt/datefmt.vcxproj index 078ca49..ca610f5 100644 --- a/source/samples/datefmt/datefmt.vcxproj +++ b/source/samples/datefmt/datefmt.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {6D592DB7-B9C8-4B1B-A1C1-F9A9EB4FD4E4} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -87,12 +52,8 @@ .\x86\Debug/datefmt.tlb - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/datefmt.pch @@ -100,18 +61,12 @@ .\x86\Debug/ .\x86\Debug/ Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x86\Debug/datefmt.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/datefmt.pdb @@ -123,16 +78,11 @@ - X64 .\x64\Debug/datefmt.tlb - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/datefmt.pch @@ -140,18 +90,12 @@ .\x64\Debug/ .\x64\Debug/ Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x64\Debug/datefmt.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/datefmt.pdb @@ -159,7 +103,6 @@ false - MachineX64 @@ -169,11 +112,8 @@ OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/datefmt.pch @@ -181,17 +121,11 @@ .\x86\Release/ .\x86\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x86\Release/datefmt.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/datefmt.pdb Console @@ -202,17 +136,13 @@ - X64 .\x64\Release/datefmt.tlb OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/datefmt.pch @@ -220,24 +150,17 @@ .\x64\Release/ .\x64\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x64\Release/datefmt.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/datefmt.pdb Console false - MachineX64 @@ -247,4 +170,4 @@ - + \ No newline at end of file diff --git a/source/samples/datefmt/main.cpp b/source/samples/datefmt/main.cpp index a655328..dd1796a 100644 --- a/source/samples/datefmt/main.cpp +++ b/source/samples/datefmt/main.cpp @@ -15,6 +15,8 @@ #include #include "util.h" +using namespace icu; + /** * If the ID supplied to TimeZone is not a valid system ID, * TimeZone::createTimeZone() will return a GMT zone object. In order diff --git a/source/samples/datefmt/util.cpp b/source/samples/datefmt/util.cpp index 6068d0e..240b405 100644 --- a/source/samples/datefmt/util.cpp +++ b/source/samples/datefmt/util.cpp @@ -12,6 +12,8 @@ #include #include +using namespace icu; + // Verify that a UErrorCode is successful; exit(1) if not void check(UErrorCode& status, const char* msg) { if (U_FAILURE(status)) { diff --git a/source/samples/datefmt/util.h b/source/samples/datefmt/util.h index 3a15a9e..2fd538b 100644 --- a/source/samples/datefmt/util.h +++ b/source/samples/datefmt/util.h @@ -10,6 +10,8 @@ #include "unicode/unistr.h" +using namespace icu; + // Verify that a UErrorCode is successful; exit(1) if not void check(UErrorCode& status, const char* msg); diff --git a/source/samples/dtitvfmtsample/dtitvfmtsample.cpp b/source/samples/dtitvfmtsample/dtitvfmtsample.cpp index da6f746..c4f7b18 100644 --- a/source/samples/dtitvfmtsample/dtitvfmtsample.cpp +++ b/source/samples/dtitvfmtsample/dtitvfmtsample.cpp @@ -12,6 +12,7 @@ //! [dtitvfmtPreDefined1] using namespace std; +using namespace icu; static void dtitvfmtPreDefined() { diff --git a/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj b/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj index 701d806..db22407 100644 --- a/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj +++ b/source/samples/dtitvfmtsample/dtitvfmtsample.vcxproj @@ -1,33 +1,34 @@  - - - Debug - Win32 - - - Release - Win32 - - + + + {8945255B-473B-4C47-9425-E92384338CAA} - dtitvfmtsample - 8.1 + samples Application true Unicode - v140 + + + Application + true + Unicode Application false true Unicode - v140 + + + Application + false + true + Unicode @@ -35,25 +36,43 @@ + + + + + + - .\x86\debug\ + .\x86\Debug\ + .\x86\Debug\ + $(ProjectName) - - .\x86\debug\ + + .\x64\Debug\ + .\x64\Debug\ + $(ProjectName) - .\x86\release - .\x86\release + .\x86\Release\ + .\x86\Release\ + $(ProjectName) + + + .\x64\Release\ + .\x64\Release\ + $(ProjectName) Level3 - Disabled - ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) + ..\..\..\include;%(AdditionalIncludeDirectories) + .\x86\Debug/ + .\x86\Debug/ + .\x86\Debug/ true @@ -62,36 +81,61 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) + + + Level3 + ..\..\..\include;%(AdditionalIncludeDirectories) + .\x64\Debug/ + .\x64\Debug/ + .\x64\Debug/ + + + true + .\x64\Debug/dtitvfmtsample.exe + icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) + + Level3 MaxSpeed true true + ..\..\..\include;%(AdditionalIncludeDirectories) + .\x86\Release/ + .\x86\Release/ + .\x86\Release/ true - true true + icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) - - - ../../common;%(AdditionalIncludeDirectories) + + + Level3 + MaxSpeed + true + true + ..\..\..\include;%(AdditionalIncludeDirectories) + .\x64\Release/ + .\x64\Release/ + .\x64\Release/ - + + true + true + icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) + + - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - - - {0178b127-6269-407d-b112-93877bb62776} - - - {c2b04507-2521-4801-bf0d-5fd79d6d518c} - + - + \ No newline at end of file diff --git a/source/samples/dtptngsample/dtptngsample.cpp b/source/samples/dtptngsample/dtptngsample.cpp index b119f4b..58d394d 100644 --- a/source/samples/dtptngsample/dtptngsample.cpp +++ b/source/samples/dtptngsample/dtptngsample.cpp @@ -13,6 +13,7 @@ //! [getBestPatternExample1] using namespace std; +using namespace icu; static void getBestPatternExample() { diff --git a/source/samples/dtptngsample/dtptngsample.vcxproj b/source/samples/dtptngsample/dtptngsample.vcxproj index c49ee6a..d2e9466 100644 --- a/source/samples/dtptngsample/dtptngsample.vcxproj +++ b/source/samples/dtptngsample/dtptngsample.vcxproj @@ -1,34 +1,34 @@  - - - Debug - Win32 - - - Release - Win32 - - + + + {115886F0-7DFB-4B8B-BE79-83162EE8713B} samples - dtptngsample - 8.1 Application true Unicode - v140 + + + Application + true + Unicode Application false true Unicode - v140 + + + Application + false + true + Unicode @@ -36,30 +36,39 @@ + + + + + + - .\x86\debug\ - - - .\x86\debug\ + .\x86\Debug\ + .\x86\Debug\ $(ProjectName) - - .\x86\release + + .\x64\Debug\ + .\x64\Debug\ + $(ProjectName) - .\x86\release + .\x86\Release\ + .\x86\Release\ + $(ProjectName) - + + .\x64\Release\ + .\x64\Release\ $(ProjectName) Level3 - Disabled ..\..\common;..\..\..\include;%(AdditionalIncludeDirectories) @@ -69,6 +78,21 @@ ..\..\..\lib;%(AdditionalLibraryDirectories) + + + Level3 + ..\..\common;..\..\..\include;%(AdditionalIncludeDirectories) + .\x64\Debug/ + .\x64\Debug/ + .\x64\Debug/ + + + true + .\x64\debug/dtptngsample.exe + icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) + + Level3 @@ -79,26 +103,33 @@ true - true true - \x86\debug\samples.exe + icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) + + + + + Level3 + MaxSpeed + true + true + ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) + .\x64\Release/ + .\x64\Release/ + .\x64\Release/ + + + true + true + icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - - - {0178b127-6269-407d-b112-93877bb62776} - - - {c2b04507-2521-4801-bf0d-5fd79d6d518c} - - - + \ No newline at end of file diff --git a/source/samples/layout/layout.vcxproj b/source/samples/layout/layout.vcxproj index c27af9d..b49dca6 100644 --- a/source/samples/layout/layout.vcxproj +++ b/source/samples/layout/layout.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {497500ED-DE1D-4B20-B529-F41B5A0FBEEB} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -89,7 +54,7 @@ OnlyExplicitInline ..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories) - NDEBUG;_CONSOLE;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;NDEBUG;_CONSOLE;WIN32;UNICODE;_CRT_SECURE_NO_DEPRECATE;LE_USE_CMEMORY;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -165,7 +130,7 @@ Disabled ..\..\..\include;..\..\..\include\layout;..\..\common;%(AdditionalIncludeDirectories) - _DEBUG;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;_DEBUG;WIN32;UNICODE;LE_USE_CMEMORY;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -269,4 +234,4 @@ - + \ No newline at end of file diff --git a/source/samples/legacy/legacy.sln b/source/samples/legacy/legacy.sln index f74cf11..b2b176f 100644 --- a/source/samples/legacy/legacy.sln +++ b/source/samples/legacy/legacy.sln @@ -14,12 +14,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|Win32.ActiveCfg = Debug|Win32 {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|Win32.Build.0 = Debug|Win32 - {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|x64.ActiveCfg = Debug|Win32 - {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|x64.Build.0 = Debug|Win32 + {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|x64.ActiveCfg = Debug|x64 + {57F56795-1802-4605-88A0-013AAE9998F6}.Debug|x64.Build.0 = Debug|x64 {57F56795-1802-4605-88A0-013AAE9998F6}.Release|Win32.ActiveCfg = Release|Win32 {57F56795-1802-4605-88A0-013AAE9998F6}.Release|Win32.Build.0 = Release|Win32 - {57F56795-1802-4605-88A0-013AAE9998F6}.Release|x64.ActiveCfg = Release|Win32 - {57F56795-1802-4605-88A0-013AAE9998F6}.Release|x64.Build.0 = Release|Win32 + {57F56795-1802-4605-88A0-013AAE9998F6}.Release|x64.ActiveCfg = Release|x64 + {57F56795-1802-4605-88A0-013AAE9998F6}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/legacy/legacy.vcxproj b/source/samples/legacy/legacy.vcxproj index 56b7fde..2436983 100644 --- a/source/samples/legacy/legacy.vcxproj +++ b/source/samples/legacy/legacy.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -27,25 +27,25 @@ Application false MultiByte - v140 + v141 Application false MultiByte - v140 + v141 Application false MultiByte - v140 + v141 Application false MultiByte - v140 + v141 @@ -89,7 +89,7 @@ OnlyExplicitInline ../../../include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -128,7 +128,7 @@ OnlyExplicitInline ../../../include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) true MultiThreaded true @@ -151,7 +151,7 @@ icuuc.lib;icuin.lib;../../../../icu-1-8-1/lib/icuuc.lib;../../../../icu-1-8-1/lib/icuin.lib;%(AdditionalDependencies) .\x64\Release/legacy.exe true - ../../../lib;%(AdditionalLibraryDirectories) + ../../../lib64;%(AdditionalLibraryDirectories) .\x64\Release/legacy.pdb Console false @@ -167,7 +167,7 @@ Disabled ../../../include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true @@ -207,7 +207,7 @@ Disabled ../../../include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebug true @@ -230,7 +230,7 @@ icuucd.lib;icuind.lib;../../../../icu-1-8-1/lib/icuucd.lib;../../../../icu-1-8-1/lib/icuind.lib;%(AdditionalDependencies) .\x64\Debug/legacy.exe true - ../../../lib;%(AdditionalLibraryDirectories) + ../../../lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/legacy.pdb Console @@ -253,4 +253,4 @@ - + \ No newline at end of file diff --git a/source/samples/msgfmt/msgfmt.sln b/source/samples/msgfmt/msgfmt.sln index b163631..f90def0 100644 --- a/source/samples/msgfmt/msgfmt.sln +++ b/source/samples/msgfmt/msgfmt.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|Win32.ActiveCfg = Debug|Win32 {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|Win32.Build.0 = Debug|Win32 - {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.ActiveCfg = Debug|Win32 - {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.Build.0 = Debug|Win32 + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.ActiveCfg = Debug|x64 + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Debug|x64.Build.0 = Debug|x64 {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|Win32.ActiveCfg = Release|Win32 {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|Win32.Build.0 = Release|Win32 - {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.ActiveCfg = Release|Win32 - {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.Build.0 = Release|Win32 + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.ActiveCfg = Release|x64 + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/msgfmt/msgfmt.vcxproj b/source/samples/msgfmt/msgfmt.vcxproj index eebe956..fd90eac 100644 --- a/source/samples/msgfmt/msgfmt.vcxproj +++ b/source/samples/msgfmt/msgfmt.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {5FF1D1A2-1630-446C-B6EA-93EFD4F975C3} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -89,11 +54,8 @@ OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/msgfmt.pch @@ -104,14 +66,9 @@ true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x86\Release/msgfmt.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/msgfmt.pdb Console @@ -122,17 +79,13 @@ - X64 .\x64\Release/msgfmt.tlb OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/msgfmt.pch @@ -140,24 +93,17 @@ .\x64\Release/ .\x64\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x64\Release/msgfmt.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/msgfmt.pdb Console false - MachineX64 @@ -165,12 +111,8 @@ .\x86\Debug/msgfmt.tlb - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/msgfmt.pch @@ -182,14 +124,9 @@ EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x86\Debug/msgfmt.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/msgfmt.pdb @@ -201,16 +138,11 @@ - X64 .\x64\Debug/msgfmt.tlb - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/msgfmt.pch @@ -218,14 +150,9 @@ .\x64\Debug/ .\x64\Debug/ Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x64\Debug/msgfmt.exe @@ -237,7 +164,6 @@ false - MachineX64 @@ -247,4 +173,4 @@ - + \ No newline at end of file diff --git a/source/samples/msgfmt/util.cpp b/source/samples/msgfmt/util.cpp index fb353a0..7966e7a 100644 --- a/source/samples/msgfmt/util.cpp +++ b/source/samples/msgfmt/util.cpp @@ -12,6 +12,8 @@ #include #include +using namespace icu; + // Verify that a UErrorCode is successful; exit(1) if not void check(UErrorCode& status, const char* msg) { if (U_FAILURE(status)) { diff --git a/source/samples/msgfmt/util.h b/source/samples/msgfmt/util.h index b66e019..590e545 100644 --- a/source/samples/msgfmt/util.h +++ b/source/samples/msgfmt/util.h @@ -10,6 +10,8 @@ #include "unicode/unistr.h" +using namespace icu; + // Verify that a UErrorCode is successful; exit(1) if not void check(UErrorCode& status, const char* msg); diff --git a/source/samples/numfmt/numfmt.sln b/source/samples/numfmt/numfmt.sln index d855731..f691efd 100644 --- a/source/samples/numfmt/numfmt.sln +++ b/source/samples/numfmt/numfmt.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|Win32.ActiveCfg = Debug|Win32 {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|Win32.Build.0 = Debug|Win32 - {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.ActiveCfg = Debug|Win32 - {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.Build.0 = Debug|Win32 + {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.ActiveCfg = Debug|x64 + {721FBD47-E458-4C35-90DA-FF192907D5E2}.Debug|x64.Build.0 = Debug|x64 {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|Win32.ActiveCfg = Release|Win32 {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|Win32.Build.0 = Release|Win32 - {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.ActiveCfg = Release|Win32 - {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.Build.0 = Release|Win32 + {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.ActiveCfg = Release|x64 + {721FBD47-E458-4C35-90DA-FF192907D5E2}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/numfmt/numfmt.vcxproj b/source/samples/numfmt/numfmt.vcxproj index 2e29537..0cd1e17 100644 --- a/source/samples/numfmt/numfmt.vcxproj +++ b/source/samples/numfmt/numfmt.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {721FBD47-E458-4C35-90DA-FF192907D5E2} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -87,12 +52,8 @@ .\x86\Debug/numfmt.tlb - Disabled ../../../include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/numfmt.pch @@ -100,18 +61,12 @@ .\x86\Debug/ .\x86\Debug/ Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x86\Debug/numfmt.exe - true ../../../lib;%(AdditionalLibraryDirectories) true .\x86\Debug/numfmt.pdb @@ -129,10 +84,8 @@ Disabled ../../../include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/numfmt.pch @@ -140,14 +93,9 @@ .\x64\Debug/ .\x64\Debug/ Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x64\Debug/numfmt.exe @@ -159,7 +107,6 @@ false - MachineX64 @@ -169,11 +116,8 @@ OnlyExplicitInline ../../../include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/numfmt.pch @@ -181,17 +125,11 @@ .\x86\Release/ .\x86\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x86\Release/numfmt.exe - true ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/numfmt.pdb Console @@ -202,17 +140,13 @@ - X64 .\x64\Release/numfmt.tlb OnlyExplicitInline ../../../include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/numfmt.pch @@ -220,24 +154,17 @@ .\x64\Release/ .\x64\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x64\Release/numfmt.exe - true ../../../lib64;%(AdditionalLibraryDirectories) .\x64\Release/numfmt.pdb Console false - MachineX64 @@ -251,4 +178,4 @@ - + \ No newline at end of file diff --git a/source/samples/numfmt/util.cpp b/source/samples/numfmt/util.cpp index f5db0e1..ad6f008 100644 --- a/source/samples/numfmt/util.cpp +++ b/source/samples/numfmt/util.cpp @@ -13,6 +13,8 @@ #include #include +using namespace icu; + enum { U_SPACE=0x20, U_DQUOTE=0x22, diff --git a/source/samples/numfmt/util.h b/source/samples/numfmt/util.h index b1c2679..8c048fc 100644 --- a/source/samples/numfmt/util.h +++ b/source/samples/numfmt/util.h @@ -11,6 +11,8 @@ #include "unicode/unistr.h" #include "unicode/fmtable.h" +using namespace icu; + #ifndef UPRV_LENGTHOF #define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) #endif diff --git a/source/samples/plurfmtsample/plurfmtsample.cpp b/source/samples/plurfmtsample/plurfmtsample.cpp index 87d77e3..c4c2879 100644 --- a/source/samples/plurfmtsample/plurfmtsample.cpp +++ b/source/samples/plurfmtsample/plurfmtsample.cpp @@ -13,9 +13,11 @@ #include "unicode/plurfmt.h" #include "unicode/msgfmt.h" #include "unicode/ustdio.h" -//! [PluralFormatExample1] +//! [PluralFormatExample1] using namespace std; +using namespace icu; + static void PluralFormatExample() { u_printf("=============================================================================\n"); diff --git a/source/samples/plurfmtsample/plurfmtsample.vcxproj b/source/samples/plurfmtsample/plurfmtsample.vcxproj index 1276c9a..859213e 100644 --- a/source/samples/plurfmtsample/plurfmtsample.vcxproj +++ b/source/samples/plurfmtsample/plurfmtsample.vcxproj @@ -1,33 +1,33 @@  - - - Debug - Win32 - - - Release - Win32 - - + + + {B500B731-ED1A-4761-94ED-B22DFE25FF2B} - plurfmtsample - 8.1 Application true Unicode - v140 + + + Application + true + Unicode Application false true MultiByte - v140 + + + Application + false + true + MultiByte @@ -35,64 +35,100 @@ + + + + + + - .\x86\debug + .\x86\Debug\ + .\x86\Debug\ + $(ProjectName) - - .\x86\debug + + .\x64\Debug\ + .\x64\Debug\ + $(ProjectName) - .\x86\release + .\x86\Release\ + .\x86\Release\ + $(ProjectName) - - .\x86\release + + .\x64\Release\ + .\x64\Release\ + $(ProjectName) Level3 Disabled - ..\..\..\include;..\..\common;%(AdditionalIncludeDirectories) + ..\..\..\include;%(AdditionalIncludeDirectories) true - .\x86\debug/plurfmtsample.exe + .\x86\Debug\plurfmtsample.exe ..\..\..\lib;%(AdditionalLibraryDirectories) icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies) + + + Level3 + Disabled + ..\..\..\include;%(AdditionalIncludeDirectories) + + + true + .\x64\Debug\plurfmtsample.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + icuucd.lib;icuind.lib;icuiod.lib;%(AdditionalDependencies) + + Level3 MaxSpeed true true + ..\..\..\include;%(AdditionalIncludeDirectories) + + + true + true + true + .\x86\Release\plurfmtsample.exe + ..\..\..\lib;%(AdditionalLibraryDirectories) + icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) + + + + + Level3 + MaxSpeed + true + true + ..\..\..\include;%(AdditionalIncludeDirectories) true true true - .\x86\debug/plurfmtsample.exe + .\x64\Release\plurfmtsample.exe + ..\..\..\lib64;%(AdditionalLibraryDirectories) + icuuc.lib;icuin.lib;icuio.lib;%(AdditionalDependencies) - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - - - {0178b127-6269-407d-b112-93877bb62776} - - - {c2b04507-2521-4801-bf0d-5fd79d6d518c} - - - + \ No newline at end of file diff --git a/source/samples/props/props.sln b/source/samples/props/props.sln index 065009c..7027a11 100644 --- a/source/samples/props/props.sln +++ b/source/samples/props/props.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|Win32.ActiveCfg = Debug|Win32 {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|Win32.Build.0 = Debug|Win32 - {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.ActiveCfg = Debug|Win32 - {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.Build.0 = Debug|Win32 + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.ActiveCfg = Debug|x64 + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Debug|x64.Build.0 = Debug|x64 {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|Win32.ActiveCfg = Release|Win32 {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|Win32.Build.0 = Release|Win32 - {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.ActiveCfg = Release|Win32 - {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.Build.0 = Release|Win32 + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.ActiveCfg = Release|x64 + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/props/props.vcxproj b/source/samples/props/props.vcxproj index 488fe6e..839cec9 100644 --- a/source/samples/props/props.vcxproj +++ b/source/samples/props/props.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {ABE4CD17-8ED8-4DE6-ABDE-CDEFC220CF60} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -89,7 +54,6 @@ OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDebugDLL true @@ -104,10 +68,6 @@ true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x86\Release/props.exe @@ -128,7 +88,6 @@ OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDebugDLL true @@ -143,10 +102,6 @@ true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x64\Release/props.exe @@ -157,7 +112,7 @@ false - MachineX64 + @@ -167,7 +122,6 @@ Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -182,10 +136,6 @@ EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x86\Debug/props.exe @@ -207,7 +157,6 @@ Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -222,10 +171,6 @@ ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x64\Debug/props.exe @@ -237,7 +182,7 @@ false - MachineX64 + @@ -246,4 +191,4 @@ - + \ No newline at end of file diff --git a/source/samples/strsrch/strsrch.sln b/source/samples/strsrch/strsrch.sln index efd7d65..399eb2f 100644 --- a/source/samples/strsrch/strsrch.sln +++ b/source/samples/strsrch/strsrch.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|Win32.ActiveCfg = Debug|Win32 {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|Win32.Build.0 = Debug|Win32 - {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x64.ActiveCfg = Debug|Win32 - {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x64.Build.0 = Debug|Win32 + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x64.ActiveCfg = Debug|x64 + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Debug|x64.Build.0 = Debug|x64 {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|Win32.ActiveCfg = Release|Win32 {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|Win32.Build.0 = Release|Win32 - {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|x64.ActiveCfg = Release|Win32 - {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|x64.Build.0 = Release|Win32 + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|x64.ActiveCfg = Release|x64 + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/strsrch/strsrch.vcxproj b/source/samples/strsrch/strsrch.vcxproj index 67efde7..35ea8ae 100644 --- a/source/samples/strsrch/strsrch.vcxproj +++ b/source/samples/strsrch/strsrch.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {E97790D1-7ABE-4C8E-9627-251ABEAA3EEC} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -89,10 +54,7 @@ Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true .\x86\Debug/strsrch.pch @@ -101,14 +63,9 @@ .\x86\Debug/ true Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuind.lib;icuucd.lib;%(AdditionalDependencies) .\x86\Debug/strsrch.exe @@ -124,16 +81,11 @@ - X64 .\x64\Debug/strsrch.tlb - Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true .\x64\Debug/strsrch.pch @@ -142,18 +94,12 @@ .\x64\Debug/ true Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuind.lib;icuucd.lib;%(AdditionalDependencies) .\x64\Debug/strsrch.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/strsrch.pdb @@ -161,7 +107,6 @@ false - MachineX64 @@ -171,11 +116,8 @@ OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded true - true .\x86\Release/strsrch.pch @@ -186,14 +128,9 @@ true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuin.lib;icuuc.lib;%(AdditionalDependencies) .\x86\Release/strsrch.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/strsrch.pdb Console @@ -204,17 +141,13 @@ - X64 .\x64\Release/strsrch.tlb OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded true - true .\x64\Release/strsrch.pch @@ -225,10 +158,6 @@ true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuin.lib;icuuc.lib;%(AdditionalDependencies) .\x64\Release/strsrch.exe @@ -239,7 +168,6 @@ false - MachineX64 @@ -248,4 +176,4 @@ - + \ No newline at end of file diff --git a/source/samples/translit/translit.sln b/source/samples/translit/translit.sln index 6b74f1b..382e4c6 100644 --- a/source/samples/translit/translit.sln +++ b/source/samples/translit/translit.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|Win32.ActiveCfg = Debug|Win32 {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|Win32.Build.0 = Debug|Win32 - {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|x64.ActiveCfg = Debug|Win32 - {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|x64.Build.0 = Debug|Win32 + {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|x64.ActiveCfg = Debug|x64 + {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Debug|x64.Build.0 = Debug|x64 {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|Win32.ActiveCfg = Release|Win32 {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|Win32.Build.0 = Release|Win32 - {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x64.ActiveCfg = Release|Win32 - {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x64.Build.0 = Release|Win32 + {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x64.ActiveCfg = Release|x64 + {D1BEC124-303A-4F44-BA70-55769B8FE96A}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/translit/translit.vcxproj b/source/samples/translit/translit.vcxproj index 2e63d9b..6925f30 100644 --- a/source/samples/translit/translit.vcxproj +++ b/source/samples/translit/translit.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {D1BEC124-303A-4F44-BA70-55769B8FE96A} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -82,36 +47,31 @@ .\x64\Release\ false + + + + ..\..\..\include;%(AdditionalIncludeDirectories) + Level3 + + .\x86\Debug/translit.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/translit.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x86\Debug/translit.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/translit.pdb @@ -123,35 +83,22 @@ - X64 .\x64\Debug/translit.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/translit.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x64\Debug/translit.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/translit.pdb @@ -159,7 +106,6 @@ false - MachineX64 @@ -168,30 +114,19 @@ OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/translit.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x86\Release/translit.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/translit.pdb Console @@ -202,42 +137,29 @@ - X64 .\x64\Release/translit.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/translit.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;icuin.lib;%(AdditionalDependencies) .\x64\Release/translit.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/translit.pdb Console false - MachineX64 @@ -251,4 +173,4 @@ - + \ No newline at end of file diff --git a/source/samples/translit/unaccent.h b/source/samples/translit/unaccent.h index 71521b5..568cc67 100644 --- a/source/samples/translit/unaccent.h +++ b/source/samples/translit/unaccent.h @@ -11,6 +11,8 @@ #include "unicode/translit.h" #include "unicode/normlzr.h" +using namespace icu; + class UnaccentTransliterator : public Transliterator { public: diff --git a/source/samples/translit/util.cpp b/source/samples/translit/util.cpp index fc00c4f..6f38729 100644 --- a/source/samples/translit/util.cpp +++ b/source/samples/translit/util.cpp @@ -12,6 +12,8 @@ #include #include +using namespace icu; + // Verify that a UErrorCode is successful; exit(1) if not void check(UErrorCode& status, const char* msg) { if (U_FAILURE(status)) { diff --git a/source/samples/translit/util.h b/source/samples/translit/util.h index dcd6384..5ff6c02 100644 --- a/source/samples/translit/util.h +++ b/source/samples/translit/util.h @@ -10,6 +10,8 @@ #include "unicode/unistr.h" +using namespace icu; + // Verify that a UErrorCode is successful; exit(1) if not void check(UErrorCode& status, const char* msg); diff --git a/source/samples/uciter8/uciter8.sln b/source/samples/uciter8/uciter8.sln index 6ad99e5..8fe98ff 100644 --- a/source/samples/uciter8/uciter8.sln +++ b/source/samples/uciter8/uciter8.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|Win32.ActiveCfg = Debug|Win32 {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|Win32.Build.0 = Debug|Win32 - {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.ActiveCfg = Debug|Win32 - {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.Build.0 = Debug|Win32 + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.ActiveCfg = Debug|x64 + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Debug|x64.Build.0 = Debug|x64 {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|Win32.ActiveCfg = Release|Win32 {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|Win32.Build.0 = Release|Win32 - {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.ActiveCfg = Release|Win32 - {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.Build.0 = Release|Win32 + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.ActiveCfg = Release|x64 + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/uciter8/uciter8.vcxproj b/source/samples/uciter8/uciter8.vcxproj index 194a1d3..0318e70 100644 --- a/source/samples/uciter8/uciter8.vcxproj +++ b/source/samples/uciter8/uciter8.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {94379DD9-E6CC-47AC-8E62-0A4ABD8EB121} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -82,36 +47,31 @@ .\x64\Release\ false + + + + ..\..\..\include;%(AdditionalIncludeDirectories) + Level3 + + .\x86\Debug/uciter8.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/uciter8.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;%(AdditionalDependencies) .\x86\Debug/uciter8.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/uciter8.pdb @@ -123,35 +83,22 @@ - X64 .\x64\Debug/uciter8.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/uciter8.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;%(AdditionalDependencies) .\x64\Debug/uciter8.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/uciter8.pdb @@ -159,7 +106,6 @@ false - MachineX64 @@ -168,30 +114,19 @@ OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/uciter8.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;%(AdditionalDependencies) .\x86\Release/uciter8.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/uciter8.pdb Console @@ -202,42 +137,29 @@ - X64 .\x64\Release/uciter8.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/uciter8.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;%(AdditionalDependencies) .\x64\Release/uciter8.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/uciter8.pdb Console false - MachineX64 @@ -250,4 +172,4 @@ - + \ No newline at end of file diff --git a/source/samples/uciter8/uit_len8.c b/source/samples/uciter8/uit_len8.c index e7f8303..5f8778b 100644 --- a/source/samples/uciter8/uit_len8.c +++ b/source/samples/uciter8/uit_len8.c @@ -551,7 +551,7 @@ uiter_setLenient8(UCharIterator *iter, const char *s, int32_t length) { if(length>=0) { iter->limit=length; } else { - iter->limit=strlen(s); + iter->limit=(int32_t)strlen(s); } iter->length= iter->limit<=1 ? iter->limit : -1; } else { diff --git a/source/samples/ucnv/convsamp.cpp b/source/samples/ucnv/convsamp.cpp index 7194e6d..a692b77 100644 --- a/source/samples/ucnv/convsamp.cpp +++ b/source/samples/ucnv/convsamp.cpp @@ -130,7 +130,7 @@ void printBytes(const char *name = "?", int32_t i; if( (len == -1) && (uch) ) { - len = strlen(uch); + len = static_cast(strlen(uch)); } printf("%5s: ", name); @@ -329,7 +329,7 @@ UErrorCode convsample_05() // grab another buffer's worth while((!feof(f)) && - ((count=fread(inBuf, 1, BUFFERSIZE , f)) > 0) ) + ((count=static_cast(fread(inBuf, 1, BUFFERSIZE , f))) > 0) ) { // Convert bytes to unicode source = inBuf; @@ -424,7 +424,7 @@ UErrorCode convsample_06() info = (CharFreqInfo*)malloc(sizeof(CharFreqInfo) * charCount); if(!info) { - fprintf(stderr, " Couldn't allocate %d bytes for freq counter\n", sizeof(CharFreqInfo)*charCount); + fprintf(stderr, " Couldn't allocate %d bytes for freq counter\n", static_cast(sizeof(CharFreqInfo)*charCount)); } /* reset frequencies */ @@ -444,7 +444,7 @@ UErrorCode convsample_06() // grab another buffer's worth while((!feof(f)) && - ((count=fread(inBuf, 1, BUFFERSIZE , f)) > 0) ) + ((count=static_cast(fread(inBuf, 1, BUFFERSIZE , f))) > 0) ) { // Convert bytes to unicode source = inBuf; @@ -545,7 +545,7 @@ UErrorCode convsample_12() // convert to Unicode // Note: we can use strlen, we know it's an 8 bit null terminated codepage target[6] = 0xFDCA; - len = ucnv_toUChars(conv, target, 100, source, strlen(source), &status); + len = ucnv_toUChars(conv, target, 100, source, static_cast(strlen(source)), &status); U_ASSERT(status); // close the converter ucnv_close(conv); @@ -553,7 +553,7 @@ UErrorCode convsample_12() // ***************************** END SAMPLE ******************** // Print it out - printBytes("src", source, strlen(source) ); + printBytes("src", source, static_cast(strlen(source)) ); printf("\n"); printUChars("targ", target, len); @@ -590,7 +590,7 @@ UErrorCode convsample_13() // **************************** START SAMPLE ******************* - printBytes("src",source,sourceLimit-source); + printBytes("src", source, static_cast(sourceLimit - source)); while(source < sourceLimit) { @@ -640,7 +640,7 @@ UBool convsample_20_didSubstitute(const char *source) conv = ucnv_open("utf-8", &status); U_ASSERT(status); - len = ucnv_toUChars(conv, uchars, 100, source, strlen(source), &status); + len = ucnv_toUChars(conv, uchars, 100, source, static_cast(strlen(source)), &status); U_ASSERT(status); printUChars("uch", uchars, len); @@ -719,7 +719,6 @@ UBool convsample_21_didSubstitute(const char *source) UConverter *conv = NULL, *cloneCnv = NULL; UErrorCode status = U_ZERO_ERROR; uint32_t len, len2; - int32_t cloneLen; UBool flagVal = FALSE; UConverterFromUCallback junkCB; @@ -741,7 +740,7 @@ UBool convsample_21_didSubstitute(const char *source) conv = ucnv_open("utf-8", &status); U_ASSERT(status); - len = ucnv_toUChars(conv, uchars, 100, source, strlen(source), &status); + len = ucnv_toUChars(conv, uchars, 100, source, static_cast(strlen(source)), &status); U_ASSERT(status); printUChars("uch", uchars, len); @@ -916,7 +915,7 @@ UErrorCode convsample_40() // grab another buffer's worth while((!feof(f)) && - ((count=fread(inBuf, 1, BUFFERSIZE , f)) > 0) ) + ((count=static_cast(fread(inBuf, 1, BUFFERSIZE , f))) > 0) ) { inbytes += count; @@ -950,9 +949,8 @@ UErrorCode convsample_40() // Process the Unicode // Todo: handle UTF-16/surrogates - assert(fwrite(uBuf, sizeof(uBuf[0]), (target-uBuf), out) == - (size_t)(target-uBuf)); - total += (target-uBuf); + assert(fwrite(uBuf, sizeof(uBuf[0]), (target-uBuf), out) == (size_t)(target-uBuf)); + total += static_cast((target-uBuf)); } while (source < sourceLimit); // while simply out of space } @@ -1022,7 +1020,7 @@ UErrorCode convsample_46() // grab another buffer's worth while((!feof(f)) && - ((count=fread(inBuf, sizeof(UChar), BUFFERSIZE , f)) > 0) ) + ((count=static_cast(fread(inBuf, sizeof(UChar), BUFFERSIZE , f))) > 0) ) { inchars += count; @@ -1055,13 +1053,12 @@ UErrorCode convsample_46() } // Process the Unicode - assert(fwrite(buf, sizeof(buf[0]), (target-buf), out) == - (size_t)(target-buf)); - total += (target-buf); + assert(fwrite(buf, sizeof(buf[0]), (target-buf), out) == (size_t)(target-buf)); + total += static_cast((target-buf)); } while (source < sourceLimit); // while simply out of space } - printf("%d Uchars (%d bytes) in, %d chars out.\n", inchars, inchars * sizeof(UChar), total); + printf("%d Uchars (%d bytes) in, %d chars out.\n", inchars, static_cast(inchars * sizeof(UChar)), total); // ***************************** END SAMPLE ******************** ucnv_close(conv); diff --git a/source/samples/ucnv/ucnv.sln b/source/samples/ucnv/ucnv.sln index 0ae26ff..40673e3 100644 --- a/source/samples/ucnv/ucnv.sln +++ b/source/samples/ucnv/ucnv.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|Win32.ActiveCfg = Debug|Win32 {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|Win32.Build.0 = Debug|Win32 - {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.ActiveCfg = Debug|Win32 - {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.Build.0 = Debug|Win32 + {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.ActiveCfg = Debug|x64 + {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Debug|x64.Build.0 = Debug|x64 {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|Win32.ActiveCfg = Release|Win32 {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|Win32.Build.0 = Release|Win32 - {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.ActiveCfg = Release|Win32 - {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.Build.0 = Release|Win32 + {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.ActiveCfg = Release|x64 + {8C95060E-61F5-464E-BB42-95B788C0D7E4}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/ucnv/ucnv.vcxproj b/source/samples/ucnv/ucnv.vcxproj index 796c700..50dec38 100644 --- a/source/samples/ucnv/ucnv.vcxproj +++ b/source/samples/ucnv/ucnv.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {8C95060E-61F5-464E-BB42-95B788C0D7E4} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -82,36 +47,31 @@ .\x64\Release\ false + + + + ..\..\..\include;%(AdditionalIncludeDirectories) + Level3 + + .\x86\Debug/ucnv.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/ucnv.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x86\Debug/ucnv.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/ucnv.pdb @@ -123,35 +83,22 @@ - X64 .\x64\Debug/ucnv.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/ucnv.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x64\Debug/ucnv.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/ucnv.pdb @@ -159,7 +106,6 @@ false - MachineX64 @@ -168,30 +114,19 @@ OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/ucnv.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x86\Release/ucnv.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/ucnv.pdb Console @@ -202,42 +137,29 @@ - X64 .\x64\Release/ucnv.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/ucnv.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) .\x64\Release/ucnv.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/ucnv.pdb Console false - MachineX64 @@ -250,4 +172,4 @@ - + \ No newline at end of file diff --git a/source/samples/udata/reader.vcxproj b/source/samples/udata/reader.vcxproj index 0faeeb6..671ba15 100644 --- a/source/samples/udata/reader.vcxproj +++ b/source/samples/udata/reader.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -67,20 +32,25 @@ - - <_ProjectFileVersion>10.0.30319.1 - .\reader_Win32_Debug\ - .\reader_Win32_Debug\ - true - .\x64\Debug\ - .\x64\Debug\ - true - .\reader_Win32_Release\ - .\reader_Win32_Release\ - false - .\x64\Release\ - .\x64\Release\ - false + + .\x86\Debug\ + .\x86\Debug\ + $(ProjectName) + + + .\x64\Debug\ + .\x64\Debug\ + $(ProjectName) + + + .\x86\Release\ + .\x86\Release\ + $(ProjectName) + + + .\x64\Release\ + .\x64\Release\ + $(ProjectName) @@ -89,10 +59,7 @@ Disabled ..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\reader_Win32_Debug/reader.pch @@ -100,18 +67,12 @@ .\reader_Win32_Debug/ .\reader_Win32_Debug/ Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;%(AdditionalDependencies) .\reader_Win32_Debug/reader.exe - true ../../../lib;%(AdditionalLibraryDirectories) true .\reader_Win32_Debug/reader.pdb @@ -123,43 +84,31 @@ - X64 - .\reader_Win32_Debug/reader.tlb + .\reader_x64_Debug/reader.tlb - Disabled ..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - .\reader_Win32_Debug/reader.pch - .\reader_Win32_Debug/ - .\reader_Win32_Debug/ - .\reader_Win32_Debug/ + .\reader_x64_Debug/reader.pch + .\reader_x64_Debug/ + .\reader_x64_Debug/ + .\reader_x64_Debug/ Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;%(AdditionalDependencies) .\reader_x64_Debug/reader.exe - true ../../../lib64;%(AdditionalLibraryDirectories) true - .\reader_Win32_Debug/reader.pdb + .\reader_x64_Debug/reader.pdb Console false - MachineX64 @@ -169,11 +118,8 @@ OnlyExplicitInline ..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\reader_Win32_Release/reader.pch @@ -181,17 +127,11 @@ .\reader_Win32_Release/ .\reader_Win32_Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;%(AdditionalDependencies) .\reader_Win32_Release/reader.exe - true ../../../lib;%(AdditionalLibraryDirectories) .\reader_Win32_Release/reader.pdb Console @@ -202,42 +142,32 @@ - X64 - .\reader_Win32_Release/reader.tlb + .\reader_x64_Release/reader.tlb OnlyExplicitInline ..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - .\reader_Win32_Release/reader.pch - .\reader_Win32_Release/ - .\reader_Win32_Release/ - .\reader_Win32_Release/ + .\reader_x64_Release/reader.pch + .\reader_x64_Release/ + .\reader_x64_Release/ + .\reader_x64_Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;%(AdditionalDependencies) .\reader_x64_Release/reader.exe true ../../../lib64;%(AdditionalLibraryDirectories) - .\reader_Win32_Release/reader.pdb + .\reader_x64_Release/reader.pdb Console false - MachineX64 @@ -249,4 +179,4 @@ - + \ No newline at end of file diff --git a/source/samples/udata/udata.sln b/source/samples/udata/udata.sln index a3b2fd3..8a3747d 100644 --- a/source/samples/udata/udata.sln +++ b/source/samples/udata/udata.sln @@ -14,20 +14,20 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|Win32.ActiveCfg = Debug|Win32 {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|Win32.Build.0 = Debug|Win32 - {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.ActiveCfg = Debug|Win32 - {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.Build.0 = Debug|Win32 + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.ActiveCfg = Debug|x64 + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Debug|x64.Build.0 = Debug|x64 {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|Win32.ActiveCfg = Release|Win32 {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|Win32.Build.0 = Release|Win32 - {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.ActiveCfg = Release|Win32 - {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.Build.0 = Release|Win32 + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.ActiveCfg = Release|x64 + {BFEFC070-C5A9-42E3-BAAE-A51FB2C4BA28}.Release|x64.Build.0 = Release|x64 {40A90302-F173-4629-A003-F571D2D93D16}.Debug|Win32.ActiveCfg = Debug|Win32 {40A90302-F173-4629-A003-F571D2D93D16}.Debug|Win32.Build.0 = Debug|Win32 - {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.ActiveCfg = Debug|Win32 - {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.Build.0 = Debug|Win32 + {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.ActiveCfg = Debug|x64 + {40A90302-F173-4629-A003-F571D2D93D16}.Debug|x64.Build.0 = Debug|x64 {40A90302-F173-4629-A003-F571D2D93D16}.Release|Win32.ActiveCfg = Release|Win32 {40A90302-F173-4629-A003-F571D2D93D16}.Release|Win32.Build.0 = Release|Win32 - {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.ActiveCfg = Release|Win32 - {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.Build.0 = Release|Win32 + {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.ActiveCfg = Release|x64 + {40A90302-F173-4629-A003-F571D2D93D16}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/udata/writer.vcxproj b/source/samples/udata/writer.vcxproj index 80e74ab..f6236b9 100644 --- a/source/samples/udata/writer.vcxproj +++ b/source/samples/udata/writer.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {40A90302-F173-4629-A003-F571D2D93D16} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -67,32 +32,33 @@ - - <_ProjectFileVersion>10.0.30319.1 - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Debug\ - .\x64\Debug\ - true - .\x86\Release\ - .\x86\Release\ - false - .\x64\Release\ - .\x64\Release\ - false + + .\x86\Debug\ + .\x86\Debug\ + $(ProjectName) + + + .\x64\Debug\ + .\x64\Debug\ + $(ProjectName) + + + .\x86\Release\ + .\x86\Release\ + $(ProjectName) + + + .\x64\Release\ + .\x64\Release\ + $(ProjectName) .\x86\Debug/writer.tlb - Disabled ..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/writer.pch @@ -100,14 +66,9 @@ .\x86\Debug/ .\x86\Debug/ Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icutud.lib;%(AdditionalDependencies) .\x86\Debug/writer.exe @@ -123,16 +84,12 @@ - X64 .\x64\Debug/writer.tlb Disabled ..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/writer.pch @@ -140,14 +97,9 @@ .\x64\Debug/ .\x64\Debug/ Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icutud.lib;%(AdditionalDependencies) .\x64\Debug/writer.exe @@ -159,7 +111,6 @@ false - MachineX64 @@ -169,11 +120,8 @@ OnlyExplicitInline ..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/writer.pch @@ -181,17 +129,11 @@ .\x86\Release/ .\x86\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icutu.lib;%(AdditionalDependencies) .\x86\Release/writer.exe - true ../../../lib;%(AdditionalLibraryDirectories) .\x86\Release/writer.pdb Console @@ -202,17 +144,13 @@ - X64 .\x64\Release/writer.tlb OnlyExplicitInline ..\..\..\include;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/writer.pch @@ -220,24 +158,17 @@ .\x64\Release/ .\x64\Release/ Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icutu.lib;%(AdditionalDependencies) - .\x64\Release/writer.exe - true + .\x64\Release\writer.exe ../../../lib64;%(AdditionalLibraryDirectories) - .\x64\Release/writer.pdb + .\x64\Release\writer.pdb Console false - MachineX64 @@ -246,4 +177,4 @@ - + \ No newline at end of file diff --git a/source/samples/ufortune/resources/fortune_resources.mak b/source/samples/ufortune/resources/fortune_resources.mak index d860517..707ae6b 100644 --- a/source/samples/ufortune/resources/fortune_resources.mak +++ b/source/samples/ufortune/resources/fortune_resources.mak @@ -6,7 +6,7 @@ # fortune_resources.mak # # Windows nmake makefile for compiling and packaging the resources -# for for the ICU sample program "ufortune". +# for the ICU sample program "ufortune". # # This makefile is normally invoked by the pre-link step in the # MSVC project file for ufortune @@ -45,7 +45,7 @@ BIN=bin # -t fools make into thinking there are files such as es.res, etc # .txt.res: - $(ICUDIR)\$(BIN)\genrb -d . $*.txt + $(ICUDIR)\$(BIN)\genrb -d . $*.txt # # all - nmake starts here by default @@ -53,5 +53,5 @@ BIN=bin all: fortune_resources.dll fortune_resources.dll: $(RESFILES) - $(ICUDIR)\$(BIN)\pkgdata --name fortune_resources -v --mode dll -d . res-file-list.txt + $(ICUDIR)\$(BIN)\pkgdata --name fortune_resources -v --mode dll -d . res-file-list.txt diff --git a/source/samples/ufortune/ufortune.sln b/source/samples/ufortune/ufortune.sln index 481189b..c071818 100644 --- a/source/samples/ufortune/ufortune.sln +++ b/source/samples/ufortune/ufortune.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|Win32.ActiveCfg = Debug|Win32 {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|Win32.Build.0 = Debug|Win32 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.ActiveCfg = Debug|Win32 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.Build.0 = Debug|Win32 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.ActiveCfg = Debug|x64 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Debug|x64.Build.0 = Debug|x64 {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|Win32.ActiveCfg = Release|Win32 {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|Win32.Build.0 = Release|Win32 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.ActiveCfg = Release|Win32 - {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.Build.0 = Release|Win32 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.ActiveCfg = Release|x64 + {25F534DF-93C9-4853-A88E-DB7D8CF74042}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/ufortune/ufortune.vcxproj b/source/samples/ufortune/ufortune.vcxproj index ff1760a..7eb88ca 100644 --- a/source/samples/ufortune/ufortune.vcxproj +++ b/source/samples/ufortune/ufortune.vcxproj @@ -1,51 +1,25 @@  - + Debug Win32 - - Debug - x64 - Release Win32 - - Release - x64 - {25F534DF-93C9-4853-A88E-DB7D8CF74042} 8.1 - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 + v141 @@ -58,29 +32,16 @@ - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - .\x86\Debug\ - .\x86\Debug\ - true - .\x64\Debug\ - .\x64\Debug\ - true - .\x86\Release\ - .\x86\Release\ - false - .\x64\Release\ - .\x64\Release\ - false + + .\x86\Debug\ + .\x86\Debug\ + $(ProjectName) + + + .\x86\Release\ + .\x86\Release\ + $(ProjectName) @@ -89,18 +50,15 @@ Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true - .\x86\Debug/ufortune.pch - .\x86\Debug/ - .\x86\Debug/ - .\x86\Debug/ Level3 true EditAndContinue Default + _DEBUG;%(PreprocessorDefinitions) @@ -108,56 +66,15 @@ icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies) - .\x86\Debug/ufortune.exe true ../../../lib;%(AdditionalLibraryDirectories) true - .\x86\Debug/ufortune.pdb Console false - - - X64 - .\x64\Debug/ufortune.tlb - - - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - .\x64\Debug/ufortune.pch - .\x64\Debug/ - .\x64\Debug/ - .\x64\Debug/ - Level3 - true - ProgramDatabase - Default - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - icuucd.lib;resources\fortune_resources.lib;icuiod.lib;%(AdditionalDependencies) - .\x64\Debug/ufortune.exe - true - ../../../lib;%(AdditionalLibraryDirectories) - true - .\x64\Debug/ufortune.pdb - Console - false - - - MachineX64 - - .\x86\Release/ufortune.tlb @@ -165,55 +82,15 @@ OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - true - .\x86\Release/ufortune.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ - Level3 - true - Default - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies) - .\x86\Release/ufortune.exe - true - ../../../lib;%(AdditionalLibraryDirectories) - .\x86\Release/ufortune.pdb - Console - false - - - - - - - X64 - .\x64\Release/ufortune.tlb - - - OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true true - .\x64\Release/ufortune.pch - .\x64\Release/ - .\x64\Release/ - .\x64\Release/ Level3 true Default + NDEBUG;%(PreprocessorDefinitions) @@ -221,15 +98,12 @@ icuuc.lib;resources\fortune_resources.lib;icuio.lib;%(AdditionalDependencies) - .\x64\Release/ufortune.exe true ../../../lib;%(AdditionalLibraryDirectories) - .\x64\Release/ufortune.pdb Console false - MachineX64 @@ -245,24 +119,14 @@ nmake -f fortune_resources.mak CFG=x86\Debug copy Fortune_Resources.DLL "$(TargetDir)" resources\fortune_resources.DLL;%(Outputs) - cd resources -nmake -f fortune_resources.mak CFG=x64\Debug -copy Fortune_Resources.DLL "$(TargetDir)" - - resources\fortune_resources.DLL;%(Outputs) cd resources nmake -f fortune_resources.mak CFG=x86\Release copy Fortune_Resources.DLL "$(TargetDir)" resources\fortune_resources.DLL;%(Outputs) - cd resources -nmake -f fortune_resources.mak CFG=x64\Release -copy Fortune_Resources.DLL "$(TargetDir)" - - resources\fortune_resources.DLL;%(Outputs) - + \ No newline at end of file diff --git a/source/samples/ugrep/ugrep.cpp b/source/samples/ugrep/ugrep.cpp index b704059..9c2f0bd 100644 --- a/source/samples/ugrep/ugrep.cpp +++ b/source/samples/ugrep/ugrep.cpp @@ -16,7 +16,7 @@ // ugrep - an ICU sample program illustrating the use of ICU Regular Expressions. // // The use of the ICU Regex API all occurs within the main() -// function. The rest of the code deals with with opening files, +// function. The rest of the code deals with opening files, // encoding conversions, printing results, etc. // // This is not a full-featured grep program. The command line options @@ -35,9 +35,10 @@ #include "unicode/ucnv.h" #include "unicode/uclean.h" +using namespace icu; // -// The following variables contain paramters that may be set from the command line. +// The following variables contain parameters that may be set from the command line. // const char *pattern = NULL; // The regular expression int firstFileNum; // argv index of the first file name @@ -95,7 +96,7 @@ int main(int argc, const char** argv) { UBool matchFound = FALSE; // - // Process the commmand line options. + // Process the command line options. // processOptions(argc, argv); @@ -170,7 +171,7 @@ int main(int argc, const char** argv) { // doOptions Run through the command line options, and set // the global variables accordingly. // -// exit without returning if an error occured and +// exit without returning if an error occurred and // ugrep should not proceed further. // //------------------------------------------------------------------------------------------ @@ -290,7 +291,7 @@ void readFile(const char *name) { // Read in the file // charBuf = (char *)realloc(charBuf, rawFileLen+1); // Need error checking... - int t = fread(charBuf, 1, rawFileLen, file); + int t = static_cast(fread(charBuf, 1, rawFileLen, file)); if (t != rawFileLen) { fprintf(stderr, "Error reading file \"%s\"\n", fileName); fclose(file); @@ -371,7 +372,7 @@ void readFile(const char *name) { // // nextLine Advance the line index variables, starting at the // specified position in the input file buffer, by -// scanning forwrd until the next end-of-line. +// scanning forward until the next end-of-line. // // Need to take into account all of the possible Unicode // line ending sequences. diff --git a/source/samples/ugrep/ugrep.sln b/source/samples/ugrep/ugrep.sln index a532698..be16908 100644 --- a/source/samples/ugrep/ugrep.sln +++ b/source/samples/ugrep/ugrep.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|Win32.ActiveCfg = Debug|Win32 {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|Win32.Build.0 = Debug|Win32 - {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x64.ActiveCfg = Debug|Win32 - {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x64.Build.0 = Debug|Win32 + {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x64.ActiveCfg = Debug|x64 + {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Debug|x64.Build.0 = Debug|x64 {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|Win32.ActiveCfg = Release|Win32 {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|Win32.Build.0 = Release|Win32 - {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x64.ActiveCfg = Release|Win32 - {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x64.Build.0 = Release|Win32 + {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x64.ActiveCfg = Release|x64 + {63166CEB-02CC-472C-B3B7-E6C559939BDA}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/ugrep/ugrep.vcxproj b/source/samples/ugrep/ugrep.vcxproj index 1d42f57..799f821 100644 --- a/source/samples/ugrep/ugrep.vcxproj +++ b/source/samples/ugrep/ugrep.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {63166CEB-02CC-472C-B3B7-E6C559939BDA} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -90,11 +55,8 @@ MaxSpeed AnySuitable ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/ugrep.pch @@ -105,10 +67,6 @@ true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - /FIXED:NO %(AdditionalOptions) icuuc.lib;icuin.lib;%(AdditionalDependencies) @@ -120,12 +78,10 @@ false - MachineX86 - X64 .\x64\Release/ugrep.tlb @@ -134,11 +90,8 @@ MaxSpeed AnySuitable ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/ugrep.pch @@ -149,10 +102,6 @@ true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - /FIXED:NO %(AdditionalOptions) icuuc.lib;icuin.lib;%(AdditionalDependencies) @@ -164,7 +113,6 @@ false - MachineX64 @@ -176,10 +124,7 @@ Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/ugrep.pch @@ -191,10 +136,6 @@ EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x86\Debug/ugrep.exe @@ -206,12 +147,10 @@ false - MachineX86 - X64 .\x64\Debug/ugrep.tlb @@ -219,10 +158,7 @@ Disabled ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/ugrep.pch @@ -230,18 +166,12 @@ .\x64\Debug/ .\x64\Debug/ Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;icuind.lib;%(AdditionalDependencies) .\x64\Debug/ugrep.exe - true ../../../lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/ugrep.pdb @@ -249,28 +179,12 @@ false - MachineX64 - - Disabled - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - EnableFastChecks - Disabled - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - EnableFastChecks - MaxSpeed - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - MaxSpeed - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - + - + \ No newline at end of file diff --git a/source/samples/uresb/resources.vcxproj b/source/samples/uresb/resources.vcxproj index e121cea..55e61b4 100644 --- a/source/samples/uresb/resources.vcxproj +++ b/source/samples/uresb/resources.vcxproj @@ -1,38 +1,14 @@  - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + + {69437707-2FEF-4E2C-8C3F-6E6B3D241366} MakeFileProj - - Makefile - - - Makefile - - - Makefile - - + Makefile @@ -113,4 +89,4 @@ - + \ No newline at end of file diff --git a/source/samples/uresb/uresb.sln b/source/samples/uresb/uresb.sln index c17a5a6..8020fbb 100644 --- a/source/samples/uresb/uresb.sln +++ b/source/samples/uresb/uresb.sln @@ -17,20 +17,20 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|Win32.ActiveCfg = Debug|Win32 {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|Win32.Build.0 = Debug|Win32 - {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.ActiveCfg = Debug|Win32 - {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.Build.0 = Debug|Win32 + {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.ActiveCfg = Debug|x64 + {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Debug|x64.Build.0 = Debug|x64 {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|Win32.ActiveCfg = Release|Win32 {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|Win32.Build.0 = Release|Win32 - {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.ActiveCfg = Release|Win32 - {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.Build.0 = Release|Win32 + {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.ActiveCfg = Release|x64 + {69437707-2FEF-4E2C-8C3F-6E6B3D241366}.Release|x64.Build.0 = Release|x64 {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|Win32.ActiveCfg = Debug|Win32 {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|Win32.Build.0 = Debug|Win32 - {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.ActiveCfg = Debug|Win32 - {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.Build.0 = Debug|Win32 + {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.ActiveCfg = Debug|x64 + {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Debug|x64.Build.0 = Debug|x64 {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|Win32.ActiveCfg = Release|Win32 {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|Win32.Build.0 = Release|Win32 - {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.ActiveCfg = Release|Win32 - {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.Build.0 = Release|Win32 + {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.ActiveCfg = Release|x64 + {92580BF4-F4DA-4024-B3F8-444F982BC72F}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/uresb/uresb.vcxproj b/source/samples/uresb/uresb.vcxproj index f5a2f22..6fdd4d8 100644 --- a/source/samples/uresb/uresb.vcxproj +++ b/source/samples/uresb/uresb.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {92580BF4-F4DA-4024-B3F8-444F982BC72F} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -82,36 +47,35 @@ .\x64\Debug\ true + + + + ../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories) + Level3 + + .\x86\Release/uresb.tlb OnlyExplicitInline - ../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/uresb.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - NDEBUG;%(PreprocessorDefinitions) 0x0c1a icuuc.lib;icuio.lib;icutu.lib;%(AdditionalDependencies) .\x86\Release/uresb.exe - true ../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories) .\x86\Release/uresb.pdb Console @@ -122,29 +86,21 @@ - X64 .\x64\Release/uresb.tlb OnlyExplicitInline - ../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/uresb.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - NDEBUG;%(PreprocessorDefinitions) 0x0c1a @@ -157,7 +113,7 @@ false - MachineX64 + @@ -165,31 +121,22 @@ .\x86\Debug/uresb.tlb - Disabled - ../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/uresb.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true EditAndContinue Default - _DEBUG;%(PreprocessorDefinitions) 0x0c1a icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies) .\x86\Debug/uresb.exe - true ../../../lib/;../../tools/toolutil/;%(AdditionalLibraryDirectories) true .\x86\Debug/uresb.pdb @@ -201,35 +148,25 @@ - X64 .\x64\Debug/uresb.tlb - Disabled - ../../../include;../../tools/toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/uresb.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true ProgramDatabase Default - _DEBUG;%(PreprocessorDefinitions) 0x0c1a icuucd.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies) .\x64\Debug/uresb.exe - true ../../../lib64/;../../tools/toolutil/;%(AdditionalLibraryDirectories) true .\x64\Debug/uresb.pdb @@ -237,7 +174,6 @@ false - MachineX64 @@ -252,4 +188,4 @@ - + \ No newline at end of file diff --git a/source/samples/ustring/ustring.cpp b/source/samples/ustring/ustring.cpp index af25e20..4f0101d 100644 --- a/source/samples/ustring/ustring.cpp +++ b/source/samples/ustring/ustring.cpp @@ -31,6 +31,8 @@ #include "unicode/ucnv.h" #include "unicode/unistr.h" +using namespace icu; + #ifndef UPRV_LENGTHOF #define UPRV_LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) #endif diff --git a/source/samples/ustring/ustring.sln b/source/samples/ustring/ustring.sln index 265ca53..a096407 100644 --- a/source/samples/ustring/ustring.sln +++ b/source/samples/ustring/ustring.sln @@ -12,12 +12,12 @@ Global GlobalSection(ProjectConfigurationPlatforms) = postSolution {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|Win32.ActiveCfg = Debug|Win32 {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|Win32.Build.0 = Debug|Win32 - {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.ActiveCfg = Debug|Win32 - {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.Build.0 = Debug|Win32 + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.ActiveCfg = Debug|x64 + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Debug|x64.Build.0 = Debug|x64 {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|Win32.ActiveCfg = Release|Win32 {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|Win32.Build.0 = Release|Win32 - {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.ActiveCfg = Release|Win32 - {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.Build.0 = Release|Win32 + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.ActiveCfg = Release|x64 + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/source/samples/ustring/ustring.vcxproj b/source/samples/ustring/ustring.vcxproj index 9196a82..10316fc 100644 --- a/source/samples/ustring/ustring.vcxproj +++ b/source/samples/ustring/ustring.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {FF92E6C1-BACA-41AD-BB6D-ECA19C05573E} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -82,36 +47,32 @@ .\x64\Debug\ true + + + + ..\..\..\include;%(AdditionalIncludeDirectories) + Level3 + + .\x86\Release/ustring.tlb OnlyExplicitInline - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x86\Release/ustring.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;%(AdditionalDependencies) .\x86\Release/ustring.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/ustring.pdb Console @@ -122,42 +83,30 @@ - X64 .\x64\Release/ustring.tlb OnlyExplicitInline ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true .\x64\Release/ustring.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - icuuc.lib;%(AdditionalDependencies) .\x64\Release/ustring.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/ustring.pdb Console false - MachineX64 @@ -165,31 +114,19 @@ .\x86\Debug/ustring.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x86\Debug/ustring.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;%(AdditionalDependencies) .\x86\Debug/ustring.exe - true ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/ustring.pdb @@ -201,35 +138,22 @@ - X64 .\x64\Debug/ustring.tlb - Disabled - ..\..\..\include;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true .\x64\Debug/ustring.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - icuucd.lib;%(AdditionalDependencies) .\x64\Debug/ustring.exe - true ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/ustring.pdb @@ -237,7 +161,6 @@ false - MachineX64 @@ -246,4 +169,4 @@ - + \ No newline at end of file diff --git a/source/stubdata/stubdata.vcxproj b/source/stubdata/stubdata.vcxproj index f296c11..971d512 100644 --- a/source/stubdata/stubdata.vcxproj +++ b/source/stubdata/stubdata.vcxproj @@ -1,51 +1,16 @@  - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + + {203EC78A-0531-43F0-A636-285439BDE025} - 8.1 - - DynamicLibrary - false - MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 - - + DynamicLibrary false MultiByte - v140 @@ -84,188 +49,113 @@ .\x64\Debug\ false - - - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 - .\x86\Release\icudt.tlb - + + ..\common;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions) - true - - - MultiThreadedDLL - true + STUBDATA_BUILD;%(PreprocessorDefinitions) true - true - .\x86\Release\stubdata.pch - .\x86\Release/ - .\x86\Release/ - .\x86\Release/ Level3 - true Default - NDEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions) - 0x0409 + STUBDATA_BUILD;%(PreprocessorDefinitions) echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." > "$(ProjectDir)stubdatabuilt.txt" - ..\..\bin\icudt60.dll - true - true - .\x86\Release\icudt.pdb + 0x4ad00000 true true - 0x4ad00000 false + true + + + + + + MultiThreadedDebugDLL + + + + + + MultiThreadedDLL + + + + + .\x86\Release\icudt.tlb + + + + + .\x86\Release\stubdata.pch + .\x86\Release/ + .\x86\Release/ + .\x86\Release/ + + + ..\..\bin\icudt61.dll + true + .\x86\Release\icudt.pdb - true ..\..\lib\icudt.lib - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\x86\Debug/icudt.tlb - Disabled - ..\common;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true .\x86\Debug/stubdata.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true - Default - - _DEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions) - 0x0409 - - - echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." > "$(ProjectDir)stubdatabuilt.txt" - - ..\..\bin\icudt60.dll - true + ..\..\bin\icudt61.dll .\x86\Debug/icudt.pdb - true - true - 0x4ad00000 - false - true ..\..\lib\icudt.lib - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 .\x64\Release\icudt.tlb - ..\common;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - true - true .\x64\Release\stubdata.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true - Default - - NDEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions) - 0x0409 - - - echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." > "$(ProjectDir)stubdatabuilt.txt" - - ..\..\bin64\icudt60.dll - true + ..\..\bin64\icudt61.dll true .\x64\Release\icudt.pdb - true - true - 0x4ad00000 - true ..\..\lib64\icudt.lib - MachineX64 - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 .\x64\Debug/icudt.tlb - Disabled - ..\common;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - true - true - true .\x64\Debug/stubdata.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true - Default - - _DEBUG;STUBDATA_BUILD;%(PreprocessorDefinitions) - 0x0409 - - - echo "File with stubdata build time, used as a dependency to trigger fresh data build, since stubdata dll will overwrite the real one." > "$(ProjectDir)stubdatabuilt.txt" - - ..\..\bin64\icudt60.dll - true + ..\..\bin64\icudt61.dll .\x64\Debug/icudt.pdb - true - true - 0x4ad00000 - true ..\..\lib64\icudt.lib - MachineX64 @@ -273,13 +163,10 @@ - ../common;%(AdditionalIncludeDirectories) - ../common;%(AdditionalIncludeDirectories) - ../common;%(AdditionalIncludeDirectories) - ../common;%(AdditionalIncludeDirectories) + ../common;%(AdditionalIncludeDirectories) - + \ No newline at end of file diff --git a/source/test/cintltst/ccaltst.c b/source/test/cintltst/ccaltst.c index 7f03cb1..205e9fb 100644 --- a/source/test/cintltst/ccaltst.c +++ b/source/test/cintltst/ccaltst.c @@ -111,7 +111,7 @@ static void TestCalendar() UDateFormat *datdef = 0; UChar *result = 0; int32_t resultlength, resultlengthneeded; - char tempMsgBuf[256]; + char tempMsgBuf[1024]; // u_austrcpy() of some formatted dates & times. UChar zone1[32], zone2[32]; const char *tzver = 0; UChar canonicalID[64]; diff --git a/source/test/cintltst/cintltst.vcxproj b/source/test/cintltst/cintltst.vcxproj index 8b926f3..f64f9d2 100644 --- a/source/test/cintltst/cintltst.vcxproj +++ b/source/test/cintltst/cintltst.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {3D1246AE-1B32-479B-BECA-AEFA97BE2321} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -82,38 +47,33 @@ .\x64\Release\ false + + + + ..\..\..\include;..\..\tools\ctestfw;..\..\common;..\..\i18n;..\..\tools\toolutil;%(AdditionalIncludeDirectories) + U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions) + false + Level3 + + .\x86\Debug/cintltst.tlb - Disabled - ..\..\..\include;..\..\tools\ctestfw;..\..\common;..\..\i18n;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true - false - true .\x86\Debug/cintltst.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Debug/cintltst.exe - true - true + icuucd.lib;icuind.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Debug/cintltst.pdb Console false @@ -127,30 +87,19 @@ .\x86\Release/cintltst.tlb - ..\..\..\include;..\..\tools\ctestfw;..\..\common;..\..\i18n;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded true true - false - true .\x86\Release/cintltst.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Release/cintltst.exe - true + icuuc.lib;icuin.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Release/cintltst.pdb Console @@ -161,77 +110,48 @@ - X64 .\x64\Debug/cintltst.tlb - Disabled - ..\..\..\include;..\..\tools\ctestfw;..\..\common;..\..\i18n;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true - false - true .\x64\Debug/cintltst.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Debug/cintltst.exe - true - true + icuucd.lib;icuind.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Debug/cintltst.pdb Console - MachineX64 false - X64 .\x64\Release/cintltst.tlb - ..\..\..\include;..\..\tools\ctestfw;..\..\common;..\..\i18n;..\..\tools\toolutil;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded true true - false - true .\x64\Release/cintltst.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Release/cintltst.exe - true + icuuc.lib;icuin.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Release/cintltst.pdb Console - MachineX64 @@ -255,10 +175,7 @@ - true - true - true - true + true @@ -278,8 +195,7 @@ - - + @@ -364,25 +280,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - {eca6b435-b4fa-4f9f-bf95-f451d078fc47} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/test/cintltst/cnumtst.c b/source/test/cintltst/cnumtst.c index e2cd68a..d11cca7 100644 --- a/source/test/cintltst/cnumtst.c +++ b/source/test/cintltst/cnumtst.c @@ -2372,7 +2372,7 @@ static const NumSysTestItem numSysTestItems[] = { { "en", "latn", 10, FALSE, latnDesc }, { "en@numbers=roman", "roman", 10, TRUE, romanDesc }, { "en@numbers=finance", "latn", 10, FALSE, latnDesc }, - { "ar", "arab", 10, FALSE, arabDesc }, + { "ar-EG", "arab", 10, FALSE, arabDesc }, { "fa", "arabext", 10, FALSE, arabextDesc }, { "zh_Hans@numbers=hanidec", "hanidec", 10, FALSE, hanidecDesc }, { "zh_Hant@numbers=traditional", "hant", 10, TRUE, hantDesc }, diff --git a/source/test/cintltst/creststn.c b/source/test/cintltst/creststn.c index 48717c1..098cd46 100644 --- a/source/test/cintltst/creststn.c +++ b/source/test/cintltst/creststn.c @@ -2129,7 +2129,7 @@ static void TestFallback() UResourceBundle* tResB; UResourceBundle* zoneResource; const UChar* version = NULL; - static const UChar versionStr[] = { 0x0032, 0x002E, 0x0031, 0x002E, 0x0033, 0x0031, 0x002E, 0x0033, 0x0033, 0x0000}; // 2.1.31.33 in nn_NO + static const UChar versionStr[] = { 0x0032, 0x002E, 0x0031, 0x002E, 0x0033, 0x0038, 0x002E, 0x0036, 0x0039, 0x0000}; // 2.1.38.69 in nn_NO if(err != U_ZERO_ERROR){ log_data_err("Expected U_ZERO_ERROR when trying to test no_NO_NY aliased to nn_NO for Version err=%s\n",u_errorName(err)); diff --git a/source/test/cintltst/cucdtst.c b/source/test/cintltst/cucdtst.c index 788aa80..67b53a6 100644 --- a/source/test/cintltst/cucdtst.c +++ b/source/test/cintltst/cucdtst.c @@ -60,7 +60,6 @@ static void TestNumericProperties(void); static void TestPropertyNames(void); static void TestPropertyValues(void); static void TestConsistency(void); -static void TestUBiDiProps(void); static void TestCaseFolding(void); /* internal methods used */ @@ -196,7 +195,6 @@ void addUnicodeTest(TestNode** root) addTest(root, &TestPropertyNames, "tsutil/cucdtst/TestPropertyNames"); addTest(root, &TestPropertyValues, "tsutil/cucdtst/TestPropertyValues"); addTest(root, &TestConsistency, "tsutil/cucdtst/TestConsistency"); - addTest(root, &TestUBiDiProps, "tsutil/cucdtst/TestUBiDiProps"); addTest(root, &TestCaseFolding, "tsutil/cucdtst/TestCaseFolding"); } @@ -3302,59 +3300,6 @@ TestConsistency() { uset_close(set2); } -/* - * Starting with ICU4C 3.4, the core Unicode properties files - * (uprops.icu, ucase.icu, ubidi.icu, unorm.icu) - * are hardcoded in the common DLL and therefore not included - * in the data package any more. - * Test requiring these files are disabled so that - * we need not jump through hoops (like adding snapshots of these files - * to testdata). - * See Jitterbug 4497. - */ -#define HARDCODED_DATA_4497 1 - -/* API coverage for ubidi_props.c */ -static void TestUBiDiProps() { -#if !HARDCODED_DATA_4497 - UDataMemory *pData; - UBiDiProps *bdp; - const UBiDiProps *cbdp; - UErrorCode errorCode; - - /* coverage for ubidi_openBinary() */ - errorCode=U_ZERO_ERROR; - pData=udata_open(NULL, UBIDI_DATA_TYPE, UBIDI_DATA_NAME, &errorCode); - if(U_FAILURE(errorCode)) { - log_data_err("unable to open " UBIDI_DATA_NAME "." UBIDI_DATA_TYPE ": %s\n", - u_errorName(errorCode)); - return; - } - - bdp=ubidi_openBinary((const uint8_t *)pData->pHeader, -1, &errorCode); - if(U_FAILURE(errorCode)) { - log_err("ubidi_openBinary() fails for the contents of " UBIDI_DATA_NAME "." UBIDI_DATA_TYPE ": %s\n", - u_errorName(errorCode)); - udata_close(pData); - return; - } - - if(0x2215!=ubidi_getMirror(bdp, 0x29F5)) { /* verify some data */ - log_err("ubidi_openBinary() does not seem to return working UBiDiProps\n"); - } - - ubidi_closeProps(bdp); - udata_close(pData); - - /* coverage for ubidi_getDummy() */ - errorCode=U_ZERO_ERROR; - cbdp=ubidi_getDummy(&errorCode); - if(ubidi_getClass(cbdp, 0x20)!=0) { - log_err("ubidi_getClass(dummy, space)!=0\n"); - } -#endif -} - /* test case folding, compare return values with CaseFolding.txt ------------ */ /* bit set for which case foldings for a character have been tested already */ diff --git a/source/test/cintltst/udatpg_test.c b/source/test/cintltst/udatpg_test.c index 8895c50..2338a2f 100644 --- a/source/test/cintltst/udatpg_test.c +++ b/source/test/cintltst/udatpg_test.c @@ -42,12 +42,14 @@ static void TestOpenClose(void); static void TestUsage(void); static void TestBuilder(void); static void TestOptions(void); +static void TestGetFieldDisplayNames(void); void addDateTimePatternGeneratorTest(TestNode** root) { TESTCASE(TestOpenClose); TESTCASE(TestUsage); TESTCASE(TestBuilder); TESTCASE(TestOptions); + TESTCASE(TestGetFieldDisplayNames); } /* @@ -438,4 +440,74 @@ static void TestOptions() { } } +typedef struct FieldDisplayNameData { + const char * locale; + UDateTimePatternField field; + UDateTimePGDisplayWidth width; + const char * expected; +} FieldDisplayNameData; +enum { kFieldDisplayNameMax = 32, kFieldDisplayNameBytesMax = 64}; + +static void TestGetFieldDisplayNames() { + const FieldDisplayNameData testData[] = { + /*loc field width expectedName */ + { "de", UDATPG_QUARTER_FIELD, UDATPG_WIDE, "Quartal" }, + { "de", UDATPG_QUARTER_FIELD, UDATPG_ABBREVIATED, "Quart." }, + { "de", UDATPG_QUARTER_FIELD, UDATPG_NARROW, "Q" }, + { "en", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_WIDE, "weekday of the month" }, + { "en", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_ABBREVIATED, "wkday. of mo." }, + { "en", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_NARROW, "wkday. of mo." }, // fallback + { "en_GB", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_WIDE, "weekday of the month" }, + { "en_GB", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_ABBREVIATED, "wkday of mo" }, // override + { "en_GB", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_NARROW, "wkday of mo" }, + { "it", UDATPG_SECOND_FIELD, UDATPG_WIDE, "secondo" }, + { "it", UDATPG_SECOND_FIELD, UDATPG_ABBREVIATED, "s" }, + { "it", UDATPG_SECOND_FIELD, UDATPG_NARROW, "s" }, + }; + + int count = UPRV_LENGTHOF(testData); + const FieldDisplayNameData * testDataPtr = testData; + for (; count-- > 0; ++testDataPtr) { + UErrorCode status = U_ZERO_ERROR; + UDateTimePatternGenerator * dtpgen = udatpg_open(testDataPtr->locale, &status); + if ( U_FAILURE(status) ) { + log_data_err("ERROR udatpg_open failed for locale %s : %s - (Are you missing data?)\n", testDataPtr->locale, myErrorName(status)); + } else { + UChar expName[kFieldDisplayNameMax]; + UChar getName[kFieldDisplayNameMax]; + u_unescape(testDataPtr->expected, expName, kFieldDisplayNameMax); + + int32_t getLen = udatpg_getFieldDisplayName(dtpgen, testDataPtr->field, testDataPtr->width, + getName, kFieldDisplayNameMax, &status); + if ( U_FAILURE(status) ) { + log_err("ERROR udatpg_getFieldDisplayName locale %s field %d width %d, got status %s, len %d\n", + testDataPtr->locale, testDataPtr->field, testDataPtr->width, u_errorName(status), getLen); + } else if ( u_strncmp(expName, getName, kFieldDisplayNameMax) != 0 ) { + char expNameB[kFieldDisplayNameBytesMax]; + char getNameB[kFieldDisplayNameBytesMax]; + log_err("ERROR udatpg_getFieldDisplayName locale %s field %d width %d, expected %s, got %s, status %s\n", + testDataPtr->locale, testDataPtr->field, testDataPtr->width, + u_austrncpy(expNameB,expName,kFieldDisplayNameBytesMax), + u_austrncpy(getNameB,getName,kFieldDisplayNameBytesMax), u_errorName(status) ); + } else if (testDataPtr->width == UDATPG_WIDE && getLen > 1) { + // test preflight & inadequate buffer + int32_t getNewLen; + status = U_ZERO_ERROR; + getNewLen = udatpg_getFieldDisplayName(dtpgen, testDataPtr->field, UDATPG_WIDE, NULL, 0, &status); + if (U_FAILURE(status) || getNewLen != getLen) { + log_err("ERROR udatpg_getFieldDisplayName locale %s field %d width %d, preflight expected len %d, got %d, status %s\n", + testDataPtr->locale, testDataPtr->field, testDataPtr->width, getLen, getNewLen, u_errorName(status) ); + } + status = U_ZERO_ERROR; + getNewLen = udatpg_getFieldDisplayName(dtpgen, testDataPtr->field, UDATPG_WIDE, getName, getLen-1, &status); + if (status!=U_BUFFER_OVERFLOW_ERROR || getNewLen != getLen) { + log_err("ERROR udatpg_getFieldDisplayName locale %s field %d width %d, overflow expected len %d & BUFFER_OVERFLOW_ERROR, got %d & status %s\n", + testDataPtr->locale, testDataPtr->field, testDataPtr->width, getLen, getNewLen, u_errorName(status) ); + } + } + udatpg_close(dtpgen); + } + } +} + #endif diff --git a/source/test/cintltst/uregiontest.c b/source/test/cintltst/uregiontest.c index cefbfde..fb8690d 100644 --- a/source/test/cintltst/uregiontest.c +++ b/source/test/cintltst/uregiontest.c @@ -122,12 +122,12 @@ static KnownRegion knownRegions[] = { { "BS" , 44, "029", URGN_TERRITORY, "019" }, { "BT" , 64, "034", URGN_TERRITORY, "142" }, { "BU" , 104, "035", URGN_TERRITORY, "142" }, - { "BV" , 74, "QO" , URGN_TERRITORY, "009" }, + { "BV" , 74, "005", URGN_TERRITORY, "019" }, { "BW" , 72, "018", URGN_TERRITORY, "002" }, { "BY" , 112, "151", URGN_TERRITORY, "150" }, { "BZ" , 84, "013", URGN_TERRITORY, "019" }, { "CA" , 124, "021", URGN_TERRITORY, "019" }, - { "CC" , 166, "QO" , URGN_TERRITORY, "009" }, + { "CC" , 166, "053", URGN_TERRITORY, "009" }, { "CD" , 180, "017", URGN_TERRITORY, "002" }, { "CF" , 140, "017", URGN_TERRITORY, "002" }, { "CG" , 178, "017", URGN_TERRITORY, "002" }, @@ -143,7 +143,7 @@ static KnownRegion knownRegions[] = { { "CU" , 192, "029", URGN_TERRITORY, "019" }, { "CV" , 132, "011", URGN_TERRITORY, "002" }, { "CW" , 531, "029", URGN_TERRITORY, "019" }, - { "CX" , 162, "QO" , URGN_TERRITORY, "009" }, + { "CX" , 162, "053", URGN_TERRITORY, "009" }, { "CY" , 196, "145", URGN_TERRITORY, "142" }, { "CZ" , 203, "151", URGN_TERRITORY, "150" }, { "DD" , 276, "155", URGN_TERRITORY, "150" }, @@ -184,13 +184,13 @@ static KnownRegion knownRegions[] = { { "GP" , 312, "029", URGN_TERRITORY, "019" }, { "GQ" , 226, "017", URGN_TERRITORY, "002" }, { "GR" , 300, "039", URGN_TERRITORY, "150" }, - { "GS" , 239, "QO" , URGN_TERRITORY, "009" }, + { "GS" , 239, "005", URGN_TERRITORY, "019" }, { "GT" , 320, "013", URGN_TERRITORY, "019" }, { "GU" , 316, "057", URGN_TERRITORY, "009" }, { "GW" , 624, "011", URGN_TERRITORY, "002" }, { "GY" , 328, "005", URGN_TERRITORY, "019" }, { "HK" , 344, "030", URGN_TERRITORY, "142" }, - { "HM" , 334, "QO" , URGN_TERRITORY, "009" }, + { "HM" , 334, "053", URGN_TERRITORY, "009" }, { "HN" , 340, "013", URGN_TERRITORY, "019" }, { "HR" , 191, "039", URGN_TERRITORY, "150" }, { "HT" , 332, "029", URGN_TERRITORY, "019" }, @@ -201,7 +201,7 @@ static KnownRegion knownRegions[] = { { "IL" , 376, "145", URGN_TERRITORY, "142" }, { "IM" , 833, "154", URGN_TERRITORY, "150" }, { "IN" , 356, "034", URGN_TERRITORY, "142" }, - { "IO" , 86, "QO" , URGN_TERRITORY, "009" }, + { "IO" , 86, "014", URGN_TERRITORY, "002" }, { "IQ" , 368, "145", URGN_TERRITORY, "142" }, { "IR" , 364, "034", URGN_TERRITORY, "142" }, { "IS" , 352, "154", URGN_TERRITORY, "150" }, @@ -316,7 +316,7 @@ static KnownRegion knownRegions[] = { { "TA" , -1, "QO", URGN_TERRITORY, "009" }, { "TC" , 796, "029", URGN_TERRITORY, "019" }, { "TD" , 148, "017", URGN_TERRITORY, "002" }, - { "TF" , 260, "QO" , URGN_TERRITORY, "009" }, + { "TF" , 260, "145", URGN_TERRITORY, "142" }, { "TG" , 768, "011", URGN_TERRITORY, "002" }, { "TH" , 764, "035", URGN_TERRITORY, "142" }, { "TJ" , 762, "143", URGN_TERRITORY, "142" }, @@ -333,7 +333,7 @@ static KnownRegion knownRegions[] = { { "TZ" , 834, "014", URGN_TERRITORY, "002" }, { "UA" , 804, "151", URGN_TERRITORY, "150" }, { "UG" , 800, "014", URGN_TERRITORY, "002" }, - { "UM" , 581, "QO" , URGN_TERRITORY, "009" }, + { "UM" , 581, "057", URGN_TERRITORY, "009" }, { "US" , 840, "021", URGN_TERRITORY, "019" }, { "UY" , 858, "005", URGN_TERRITORY, "019" }, { "UZ" , 860, "143", URGN_TERRITORY, "142" }, diff --git a/source/test/cintltst/utf8tst.c b/source/test/cintltst/utf8tst.c index 0bbb5e5..9f4109c 100644 --- a/source/test/cintltst/utf8tst.c +++ b/source/test/cintltst/utf8tst.c @@ -94,6 +94,7 @@ static void TestFwdBack(void); static void TestFwdBackUnsafe(void); static void TestSetChar(void); static void TestSetCharUnsafe(void); +static void TestTruncateIfIncomplete(void); static void TestAppendChar(void); static void TestAppend(void); static void TestSurrogates(void); @@ -114,6 +115,7 @@ addUTF8Test(TestNode** root) addTest(root, &TestFwdBackUnsafe, "utf8tst/TestFwdBackUnsafe"); addTest(root, &TestSetChar, "utf8tst/TestSetChar"); addTest(root, &TestSetCharUnsafe, "utf8tst/TestSetCharUnsafe"); + addTest(root, &TestTruncateIfIncomplete, "utf8tst/TestTruncateIfIncomplete"); addTest(root, &TestAppendChar, "utf8tst/TestAppendChar"); addTest(root, &TestAppend, "utf8tst/TestAppend"); addTest(root, &TestSurrogates, "utf8tst/TestSurrogates"); @@ -755,6 +757,14 @@ static void TestFwdBack() { } } +/** +* Ticket #13636 - Visual Studio 2017 has problems optimizing this function. +* As a workaround, we will turn off optimization just for this function on VS2017 and above. +*/ +#if defined(_MSC_VER) && (_MSC_VER > 1900) +#pragma optimize( "", off ) +#endif + static void TestFwdBackUnsafe() { /* * Use a (mostly) well-formed UTF-8 string and test at code point boundaries. @@ -840,6 +850,13 @@ static void TestFwdBackUnsafe() { } } +/** +* Ticket #13636 - Turn optimization back on. +*/ +#if defined(_MSC_VER) && (_MSC_VER > 1900) +#pragma optimize( "", on ) +#endif + static void TestSetChar() { static const uint8_t input[] = {0x61, 0xe4, 0xba, 0x8c, 0x7f, 0xfe, 0x62, 0xc5, 0x7f, 0x61, 0x80, 0x80, 0xe0, 0x00 }; @@ -927,6 +944,64 @@ static void TestSetCharUnsafe() { } } +static void TestTruncateIfIncomplete() { + // Difference from U8_SET_CP_START(): + // U8_TRUNCATE_IF_INCOMPLETE() does not look at s[length]. + // Therefore, if the last byte is a lead byte, then this macro truncates + // even if the byte at the input index cannot continue a valid sequence + // (including when that is not a trail byte). + // On the other hand, if the last byte is a trail byte, then the two macros behave the same. + static const struct { + const char *s; + int32_t expected; + } cases[] = { + { "", 0 }, + { "a", 1 }, + { "\x80", 1 }, + { "\xC1", 1 }, + { "\xC2", 0 }, + { "\xE0", 0 }, + { "\xF4", 0 }, + { "\xF5", 1 }, + { "\x80\x80", 2 }, + { "\xC2\xA0", 2 }, + { "\xE0\x9F", 2 }, + { "\xE0\xA0", 0 }, + { "\xED\x9F", 0 }, + { "\xED\xA0", 2 }, + { "\xF0\x8F", 2 }, + { "\xF0\x90", 0 }, + { "\xF4\x8F", 0 }, + { "\xF4\x90", 2 }, + { "\xF5\x80", 2 }, + { "\x80\x80\x80", 3 }, + { "\xC2\xA0\x80", 3 }, + { "\xE0\xA0\x80", 3 }, + { "\xF0\x8F\x80", 3 }, + { "\xF0\x90\x80", 0 }, + { "\xF4\x8F\x80", 0 }, + { "\xF4\x90\x80", 3 }, + { "\xF5\x80\x80", 3 }, + { "\x80\x80\x80\x80", 4 }, + { "\xC2\xA0\x80\x80", 4 }, + { "\xE0\xA0\x80\x80", 4 }, + { "\xF0\x90\x80\x80", 4 }, + { "\xF5\x80\x80\x80", 4 } + }; + int32_t i; + for (i = 0; i < UPRV_LENGTHOF(cases); ++i) { + const char *s = cases[i].s; + int32_t expected = cases[i].expected; + int32_t length = (int32_t)strlen(s); + int32_t adjusted = length; + U8_TRUNCATE_IF_INCOMPLETE(s, 0, adjusted); + if (adjusted != expected) { + log_err("ERROR: U8_TRUNCATE_IF_INCOMPLETE failed for i=%d, length=%d. Expected:%d Got:%d\n", + (int)i, (int)length, (int)expected, (int)adjusted); + } + } +} + static void TestAppendChar(){ #if !U_HIDE_OBSOLETE_UTF_OLD_H static const uint8_t s[11]={0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x00}; diff --git a/source/test/depstest/dependencies.txt b/source/test/depstest/dependencies.txt index 0422318..f460554 100644 --- a/source/test/depstest/dependencies.txt +++ b/source/test/depstest/dependencies.txt @@ -16,7 +16,8 @@ system_symbols: deps # C - PIC system_debug malloc_functions c_strings c_string_formatting + PIC system_misc system_debug malloc_functions ubsan + c_strings c_string_formatting floating_point trigonometry stdlib_qsort pthread system_locale @@ -28,12 +29,19 @@ group: PIC # Position-Independent Code (-fPIC) requires a Global Offset Table. _GLOBAL_OFFSET_TABLE_ +group: system_misc + abort + group: system_debug __assert_fail __stack_chk_fail group: malloc_functions free malloc realloc +group: ubsan + # UBSan=UndefinedBehaviorSanitizer, clang -fsanitize=bounds + __ubsan_handle_out_of_bounds + group: c_strings isspace isdigit __ctype_b_loc # for @@ -415,7 +423,7 @@ group: simpleformatter group: patternprops patternprops.o deps - PIC + PIC ubsan group: ushape ushape.o @@ -760,6 +768,8 @@ group: errorcode # ErrorCode base class group: utypes # u_errorName() utypes.o + deps + ubsan group: platform # Files in the "platform" group. @@ -779,7 +789,8 @@ group: platform utrace.o deps # The "platform" group has no ICU dependencies. - PIC system_debug malloc_functions c_strings c_string_formatting + PIC system_misc system_debug malloc_functions ubsan + c_strings c_string_formatting floating_point pthread system_locale stdio_input readlink_function dir_io dlfcn # Move related code into icuplug.c? @@ -793,7 +804,7 @@ library: i18n alphabetic_index collation collation_builder string_search dayperiodrules formatting formattable_cnv regex regex_cnv translit - numberformatter + double_conversion numberformatter universal_time_scale uclean_i18n @@ -867,6 +878,13 @@ group: dayperiodrules deps resourcebundle uclean_i18n +group: double_conversion + double-conversion.o double-conversion-bignum.o double-conversion-bignum-dtoa.o + double-conversion-cached-powers.o double-conversion-diy-fp.o + double-conversion-fast-dtoa.o + deps + platform + group: numberformatter # ICU 60+ NumberFormatter API number_affixutils.o number_compact.o number_decimalquantity.o @@ -938,7 +956,7 @@ group: units group: digitlist digitlst.o decContext.o decNumber.o visibledigits.o deps - uclean_i18n + double_conversion uclean_i18n group: formattable fmtable.o @@ -980,6 +998,8 @@ group: translit group: universal_time_scale utmscale.o + deps + ubsan group: uclean_i18n ucln_in.o diff --git a/source/test/intltest/Makefile.in b/source/test/intltest/Makefile.in index d41ef25..e8a5b72 100644 --- a/source/test/intltest/Makefile.in +++ b/source/test/intltest/Makefile.in @@ -64,7 +64,7 @@ scientificnumberformattertest.o datadrivennumberformattestsuite.o \ numberformattesttuple.o numberformat2test.o pluralmaptest.o \ numbertest_affixutils.o numbertest_api.o numbertest_decimalquantity.o \ numbertest_modifiers.o numbertest_patternmodifier.o numbertest_patternstring.o \ -numbertest_stringbuilder.o +numbertest_stringbuilder.o numbertest_doubleconversion.o DEPS = $(OBJECTS:.o=.d) diff --git a/source/test/intltest/alphaindextst.cpp b/source/test/intltest/alphaindextst.cpp index a3ebd11..8a4edb2 100644 --- a/source/test/intltest/alphaindextst.cpp +++ b/source/test/intltest/alphaindextst.cpp @@ -22,6 +22,7 @@ #include "unicode/localpointer.h" #include "unicode/tblcoll.h" #include "unicode/uniset.h" +#include "unicode/uscript.h" #if !UCONFIG_NO_COLLATION && !UCONFIG_NO_NORMALIZATION @@ -66,6 +67,7 @@ void AlphabeticIndexTest::runIndexedTest( int32_t index, UBool exec, const char* TESTCASE_AUTO(TestChineseZhuyin); TESTCASE_AUTO(TestJapaneseKanji); TESTCASE_AUTO(TestChineseUnihan); + TESTCASE_AUTO(testHasBuckets); TESTCASE_AUTO_END; } @@ -724,4 +726,27 @@ void AlphabeticIndexTest::TestChineseUnihan() { assertEquals("getBucketIndex(U+7527)", 101, bucketIndex); } +void AlphabeticIndexTest::testHasBuckets() { + checkHasBuckets(Locale("am"), USCRIPT_ETHIOPIC); + checkHasBuckets(Locale("haw"), USCRIPT_LATIN); + checkHasBuckets(Locale("hy"), USCRIPT_ARMENIAN); + checkHasBuckets(Locale("vai"), USCRIPT_VAI); +} + +void AlphabeticIndexTest::checkHasBuckets(const Locale &locale, UScriptCode script) { + IcuTestErrorCode errorCode(*this, "checkHasBuckets"); + AlphabeticIndex aindex(locale, errorCode); + LocalPointer index(aindex.buildImmutableIndex(errorCode), errorCode); + if (U_FAILURE(errorCode)) { + dataerrln("%s %d Error in index creation", __FILE__, __LINE__); + return; + } + UnicodeString loc = locale.getName(); + assertTrue(loc + u" at least 3 buckets", index->getBucketCount() >= 3); + const AlphabeticIndex::Bucket *bucket = index->getBucket(1); + assertEquals(loc + u" real bucket", U_ALPHAINDEX_NORMAL, bucket->getLabelType()); + assertEquals(loc + u" expected script", script, + uscript_getScript(bucket->getLabel().char32At(0), errorCode)); +} + #endif diff --git a/source/test/intltest/alphaindextst.h b/source/test/intltest/alphaindextst.h index 6bbe153..a785fca 100644 --- a/source/test/intltest/alphaindextst.h +++ b/source/test/intltest/alphaindextst.h @@ -13,6 +13,7 @@ #ifndef ALPHAINDEXTST_H #define ALPHAINDEXTST_H +#include "unicode/uscript.h" #include "intltest.h" class AlphabeticIndexTest: public IntlTest { @@ -49,6 +50,9 @@ public: void TestChineseZhuyin(); void TestJapaneseKanji(); void TestChineseUnihan(); + + void testHasBuckets(); + void checkHasBuckets(const Locale &locale, UScriptCode script); }; #endif diff --git a/source/test/intltest/calregts.cpp b/source/test/intltest/calregts.cpp index f1eb17b..da52263 100644 --- a/source/test/intltest/calregts.cpp +++ b/source/test/intltest/calregts.cpp @@ -17,6 +17,7 @@ #include "unicode/simpletz.h" #include "unicode/smpdtfmt.h" #include "unicode/strenum.h" +#include "unicode/localpointer.h" #include "cmemory.h" #include "caltest.h" #include "unicode/localpointer.h" @@ -93,6 +94,8 @@ CalendarRegressionTest::runIndexedTest( int32_t index, UBool exec, const char* & CASE(50,TestT9452); CASE(51,TestT11632); CASE(52,TestPersianCalOverflow); + CASE(53,TestIslamicCalOverflow); + CASE(54,TestWeekOfYear13548); default: name = ""; break; } } @@ -3009,9 +3012,9 @@ void CalendarRegressionTest::TestPersianCalOverflow(void) { month = cal->get(UCAL_MONTH, status); dayOfMonth = cal->get(UCAL_DATE, status); if ( U_FAILURE(status) ) { - errln("FAIL: Calendar->get MONTH/DATE for localeID %s, julianDay %d, status %s\n", localeID, jd, u_errorName(status)); + errln("FAIL: Calendar->get MONTH/DATE for localeID %s, julianDay %d, status %s", localeID, jd, u_errorName(status)); } else if (month > maxMonth || dayOfMonth > maxDayOfMonth) { - errln("FAIL: localeID %s, julianDay %d; maxMonth %d, got month %d; maxDayOfMonth %d, got dayOfMonth %d\n", + errln("FAIL: localeID %s, julianDay %d; maxMonth %d, got month %d; maxDayOfMonth %d, got dayOfMonth %d", localeID, jd, maxMonth, month, maxDayOfMonth, dayOfMonth); } } @@ -3019,4 +3022,51 @@ void CalendarRegressionTest::TestPersianCalOverflow(void) { } } +/** + * @bug tickets 12661, 13538 + */ +void CalendarRegressionTest::TestIslamicCalOverflow(void) { + const char* localeID = "ar@calendar=islamic-civil"; + UErrorCode status = U_ZERO_ERROR; + Calendar* cal = Calendar::createInstance(Locale(localeID), status); + if(U_FAILURE(status)) { + dataerrln("FAIL: Calendar::createInstance for localeID %s: %s", localeID, u_errorName(status)); + } else { + int32_t maxMonth = cal->getMaximum(UCAL_MONTH); + int32_t maxDayOfMonth = cal->getMaximum(UCAL_DATE); + int32_t jd, year, month, dayOfMonth; + for (jd = 73530872; jd <= 73530876; jd++) { // year 202002, int32_t overflow if jd >= 73530874 + status = U_ZERO_ERROR; + cal->clear(); + cal->set(UCAL_JULIAN_DAY, jd); + year = cal->get(UCAL_YEAR, status); + month = cal->get(UCAL_MONTH, status); + dayOfMonth = cal->get(UCAL_DATE, status); + if ( U_FAILURE(status) ) { + errln("FAIL: Calendar->get YEAR/MONTH/DATE for localeID %s, julianDay %d, status %s", localeID, jd, u_errorName(status)); + } else if (month > maxMonth || dayOfMonth > maxDayOfMonth) { + errln("FAIL: localeID %s, julianDay %d; got year %d; maxMonth %d, got month %d; maxDayOfMonth %d, got dayOfMonth %d", + localeID, jd, year, maxMonth, month, maxDayOfMonth, dayOfMonth); + } + } + delete cal; + } +} + +void CalendarRegressionTest::TestWeekOfYear13548(void) { + int32_t year = 2000; + UErrorCode status = U_ZERO_ERROR; + LocalPointer cal(Calendar::createInstance(status)); + failure(status, "Calendar::createInstance(status)"); + + cal->set(UCAL_YEAR, year); + cal->set(UCAL_WEEK_OF_YEAR, 4); + + int32_t resultYear = cal->get(UCAL_YEAR, status); + failure(status, "get(UCAL_YEAR, status)"); + if (year != resultYear) { + errln((UnicodeString)"Fail: Expected year=" + year + ", actual=" + resultYear); + } +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/calregts.h b/source/test/intltest/calregts.h index 15d5502..b4166a0 100644 --- a/source/test/intltest/calregts.h +++ b/source/test/intltest/calregts.h @@ -79,6 +79,8 @@ public: void TestT9452(void); void TestT11632(void); void TestPersianCalOverflow(void); + void TestIslamicCalOverflow(void); + void TestWeekOfYear13548(void); void printdate(GregorianCalendar *cal, const char *string); void dowTest(UBool lenient) ; diff --git a/source/test/intltest/compactdecimalformattest.cpp b/source/test/intltest/compactdecimalformattest.cpp index 5ced151..9bdaaad 100644 --- a/source/test/intltest/compactdecimalformattest.cpp +++ b/source/test/intltest/compactdecimalformattest.cpp @@ -279,7 +279,7 @@ void CompactDecimalFormatTest::TestSwahiliShortNegative() { } void CompactDecimalFormatTest::TestArabicLong() { - CheckLocale("ar", UNUM_LONG, kArabicLong, UPRV_LENGTHOF(kArabicLong)); + CheckLocale("ar-EG", UNUM_LONG, kArabicLong, UPRV_LENGTHOF(kArabicLong)); } void CompactDecimalFormatTest::TestSignificantDigits() { diff --git a/source/test/intltest/convtest.cpp b/source/test/intltest/convtest.cpp index db0aa86..3a0e541 100644 --- a/source/test/intltest/convtest.cpp +++ b/source/test/intltest/convtest.cpp @@ -733,6 +733,7 @@ ConversionTest::TestUTF8ToUTF8Overflow() { UChar *pivotSource = buffer16; UChar *pivotTarget = buffer16; const UChar *pivotLimit = buffer16 + UPRV_LENGTHOF(buffer16); + int32_t length; // Convert with insufficient target capacity. result[2] = 5; @@ -741,7 +742,7 @@ ConversionTest::TestUTF8ToUTF8Overflow() { buffer16, &pivotSource, &pivotTarget, pivotLimit, FALSE, FALSE, errorCode); assertEquals("overflow", U_BUFFER_OVERFLOW_ERROR, errorCode.reset()); - int32_t length = (int32_t)(target - result); + length = (int32_t)(target - result); assertEquals("number of bytes written", 2, length); assertEquals("next byte not clobbered", 5, result[2]); @@ -790,6 +791,52 @@ ConversionTest::TestUTF8ToUTF8Overflow() { if (length == 5) { assertTrue("text2 result same as input", memcmp(text2, result, length) == 0); } + + ucnv_reset(cnv1.getAlias()); + ucnv_reset(cnv2.getAlias()); + memset(result, 0, sizeof(result)); + static const char *illFormed = "\xf1\x91\x93\x96\x91\x94"; // U+514D6 + two more trail bytes + source = illFormed; + sourceLimit = illFormed + strlen(illFormed); + target = result; + pivotSource = pivotTarget = buffer16; + + ucnv_setToUCallBack(cnv1.getAlias(), UCNV_TO_U_CALLBACK_STOP, nullptr, nullptr, nullptr, errorCode); + + // Convert only two bytes and flush (but expect failure). + char errorBytes[10]; + int8_t errorLength; + result[0] = 5; + ucnv_convertEx(cnv2.getAlias(), cnv1.getAlias(), + &target, targetLimit, &source, source + 2, + buffer16, &pivotSource, &pivotTarget, pivotLimit, + FALSE, TRUE, errorCode); + assertEquals("illFormed truncated", U_TRUNCATED_CHAR_FOUND, errorCode.reset()); + length = (int32_t)(target - result); + assertEquals("illFormed number of bytes written", 0, length); + errorLength = UPRV_LENGTHOF(errorBytes); + ucnv_getInvalidChars(cnv1.getAlias(), errorBytes, &errorLength, errorCode); + assertEquals("illFormed truncated errorLength", 2, (int32_t)errorLength); + if (errorLength == 2) { + assertEquals("illFormed truncated errorBytes", 0xf191, + ((int32_t)(uint8_t)errorBytes[0] << 8) | (uint8_t)errorBytes[1]); + } + + // Continue conversion starting with a trail byte. + ucnv_convertEx(cnv2.getAlias(), cnv1.getAlias(), + &target, targetLimit, &source, sourceLimit, + buffer16, &pivotSource, &pivotTarget, pivotLimit, + FALSE, TRUE, errorCode); + + assertEquals("illFormed trail byte", U_ILLEGAL_CHAR_FOUND, errorCode.reset()); + length = (int32_t)(target - result); + assertEquals("illFormed trail byte number of bytes written", 0, length); + errorLength = UPRV_LENGTHOF(errorBytes); + ucnv_getInvalidChars(cnv1.getAlias(), errorBytes, &errorLength, errorCode); + assertEquals("illFormed trail byte errorLength", 1, (int32_t)errorLength); + if (errorLength == 1) { + assertEquals("illFormed trail byte errorBytes", 0x93, (int32_t)(uint8_t)errorBytes[0]); + } } // open testdata or ICU data converter ------------------------------------- *** diff --git a/source/test/intltest/dtfmttst.cpp b/source/test/intltest/dtfmttst.cpp index fd3a9f1..35870f7 100644 --- a/source/test/intltest/dtfmttst.cpp +++ b/source/test/intltest/dtfmttst.cpp @@ -1355,18 +1355,18 @@ DateFormatTest::TestLocaleDateFormat() // Bug 495 void DateFormatTest::TestFormattingLocaleTimeSeparator() { - // This test not as useful is it once was, since timeSeparator - // in the Arabic is changed back to ":" in CLDR 28. + // This test not as useful as it once was, since timeSeparator + // in the Arabic locale is changed back to ":" in CLDR 28. const UDate testDate = 874266720000.; // Sun Sep 14 21:52:00 CET 1997 logln((UnicodeString)"Date set to : " + dateToString(testDate)); const LocalPointer tz(TimeZone::createTimeZone("CET")); const LocalPointer dfArab(DateFormat::createTimeInstance( - DateFormat::SHORT, Locale("ar"))); + DateFormat::SHORT, Locale("ar", "EG"))); const LocalPointer dfLatn(DateFormat::createTimeInstance( - DateFormat::SHORT, Locale("ar", NULL, NULL, "numbers=latn"))); + DateFormat::SHORT, Locale("ar", "EG", NULL, "numbers=latn"))); if (dfLatn.isNull() || dfArab.isNull()) { dataerrln("Error calling DateFormat::createTimeInstance()"); diff --git a/source/test/intltest/dtptngts.cpp b/source/test/intltest/dtptngts.cpp index 33d248d..da262ba 100644 --- a/source/test/intltest/dtptngts.cpp +++ b/source/test/intltest/dtptngts.cpp @@ -18,6 +18,7 @@ #include "unicode/smpdtfmt.h" #include "unicode/dtfmtsym.h" #include "unicode/dtptngen.h" +#include "unicode/ustring.h" #include "cmemory.h" #include "loctest.h" @@ -36,6 +37,7 @@ void IntlTestDateTimePatternGeneratorAPI::runIndexedTest( int32_t index, UBool e TESTCASE(3, testStaticGetSkeleton); TESTCASE(4, testC); TESTCASE(5, testSkeletonsWithDayPeriods); + TESTCASE(6, testGetFieldDisplayNames); default: name = ""; break; } } @@ -1210,4 +1212,51 @@ void IntlTestDateTimePatternGeneratorAPI::testSkeletonsWithDayPeriods() { delete gen; } +typedef struct FieldDisplayNameData { + const char * locale; + UDateTimePatternField field; + UDateTimePGDisplayWidth width; + const char * expected; // can have escapes such as \\u00E0 +} FieldDisplayNameData; +enum { kFieldDisplayNameMax = 32 }; + +void IntlTestDateTimePatternGeneratorAPI::testGetFieldDisplayNames() { + const FieldDisplayNameData testData[] = { + /*loc field width expectedName */ + { "de", UDATPG_QUARTER_FIELD, UDATPG_WIDE, "Quartal" }, + { "de", UDATPG_QUARTER_FIELD, UDATPG_ABBREVIATED, "Quart." }, + { "de", UDATPG_QUARTER_FIELD, UDATPG_NARROW, "Q" }, + { "en", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_WIDE, "weekday of the month" }, + { "en", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_ABBREVIATED, "wkday. of mo." }, + { "en", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_NARROW, "wkday. of mo." }, // fallback + { "en_GB", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_WIDE, "weekday of the month" }, + { "en_GB", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_ABBREVIATED, "wkday of mo" }, // override + { "en_GB", UDATPG_DAY_OF_WEEK_IN_MONTH_FIELD, UDATPG_NARROW, "wkday of mo" }, + { "it", UDATPG_SECOND_FIELD, UDATPG_WIDE, "secondo" }, + { "it", UDATPG_SECOND_FIELD, UDATPG_ABBREVIATED, "s" }, + { "it", UDATPG_SECOND_FIELD, UDATPG_NARROW, "s" }, + }; + + int count = UPRV_LENGTHOF(testData); + const FieldDisplayNameData * testDataPtr = testData; + for (; count-- > 0; ++testDataPtr) { + UErrorCode status = U_ZERO_ERROR; + Locale locale(testDataPtr->locale); + DateTimePatternGenerator * dtpg = DateTimePatternGenerator::createInstance(locale, status); + if (U_FAILURE(status)) { + dataerrln("FAIL: DateTimePatternGenerator::createInstance failed for locale %s", testDataPtr->locale); + } else { + UChar expName[kFieldDisplayNameMax+1]; + u_unescape(testDataPtr->expected, expName, kFieldDisplayNameMax); + expName[kFieldDisplayNameMax] = 0; // ensure 0 termination + UnicodeString getName = dtpg->getFieldDisplayName(testDataPtr->field, testDataPtr->width); + if (getName.compare(expName, u_strlen(expName)) != 0) { + errln("ERROR: locale %s field %d width %d, expected %s\n", + testDataPtr->locale, testDataPtr->field, testDataPtr->width, testDataPtr->expected); + } + delete dtpg; + } + } +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/dtptngts.h b/source/test/intltest/dtptngts.h index 03da848..adef0dc 100644 --- a/source/test/intltest/dtptngts.h +++ b/source/test/intltest/dtptngts.h @@ -31,6 +31,7 @@ private: void testStaticGetSkeleton(/* char* par */); void testC(); void testSkeletonsWithDayPeriods(); + void testGetFieldDisplayNames(); }; #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/intltest.cpp b/source/test/intltest/intltest.cpp index 5edf872..c459137 100644 --- a/source/test/intltest/intltest.cpp +++ b/source/test/intltest/intltest.cpp @@ -2030,6 +2030,25 @@ UBool IntlTest::assertEquals(const char* message, return TRUE; } + +UBool IntlTest::assertEquals(const char* message, + UErrorCode expected, + UErrorCode actual) { + if (expected != actual) { + errln((UnicodeString)"FAIL: " + message + "; got " + + u_errorName(actual) + + "; expected " + u_errorName(expected)); + return FALSE; + } +#ifdef VERBOSE_ASSERTIONS + else { + logln((UnicodeString)"Ok: " + message + "; got " + u_errorName(actual)); + } +#endif + return TRUE; +} + + #if !UCONFIG_NO_FORMATTING UBool IntlTest::assertEquals(const char* message, const Formattable& expected, @@ -2105,6 +2124,16 @@ UBool IntlTest::assertEquals(const UnicodeString& message, int64_t actual) { return assertEquals(extractToAssertBuf(message), expected, actual); } +UBool IntlTest::assertEquals(const UnicodeString& message, + double expected, + double actual) { + return assertEquals(extractToAssertBuf(message), expected, actual); +} +UBool IntlTest::assertEquals(const UnicodeString& message, + UErrorCode expected, + UErrorCode actual) { + return assertEquals(extractToAssertBuf(message), expected, actual); +} #if !UCONFIG_NO_FORMATTING UBool IntlTest::assertEquals(const UnicodeString& message, diff --git a/source/test/intltest/intltest.h b/source/test/intltest/intltest.h index 1f7c80d..08765b7 100644 --- a/source/test/intltest/intltest.h +++ b/source/test/intltest/intltest.h @@ -289,13 +289,12 @@ public: UBool assertSuccess(const char* message, UErrorCode ec, UBool possibleDataError=FALSE, const char *file=NULL, int line=0); UBool assertEquals(const char* message, const UnicodeString& expected, const UnicodeString& actual, UBool possibleDataError=FALSE); - UBool assertEquals(const char* message, const char* expected, - const char* actual); - UBool assertEquals(const char* message, UBool expected, - UBool actual); + UBool assertEquals(const char* message, const char* expected, const char* actual); + UBool assertEquals(const char* message, UBool expected, UBool actual); UBool assertEquals(const char* message, int32_t expected, int32_t actual); UBool assertEquals(const char* message, int64_t expected, int64_t actual); UBool assertEquals(const char* message, double expected, double actual); + UBool assertEquals(const char* message, UErrorCode expected, UErrorCode actual); #if !UCONFIG_NO_FORMATTING UBool assertEquals(const char* message, const Formattable& expected, const Formattable& actual, UBool possibleDataError=FALSE); @@ -307,11 +306,12 @@ public: UBool assertSuccess(const UnicodeString& message, UErrorCode ec); UBool assertEquals(const UnicodeString& message, const UnicodeString& expected, const UnicodeString& actual, UBool possibleDataError=FALSE); - UBool assertEquals(const UnicodeString& message, const char* expected, - const char* actual); + UBool assertEquals(const UnicodeString& message, const char* expected, const char* actual); UBool assertEquals(const UnicodeString& message, UBool expected, UBool actual); UBool assertEquals(const UnicodeString& message, int32_t expected, int32_t actual); UBool assertEquals(const UnicodeString& message, int64_t expected, int64_t actual); + UBool assertEquals(const UnicodeString& message, double expected, double actual); + UBool assertEquals(const UnicodeString& message, UErrorCode expected, UErrorCode actual); virtual void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); // overide ! diff --git a/source/test/intltest/intltest.vcxproj b/source/test/intltest/intltest.vcxproj index 148b42c..32bd338 100644 --- a/source/test/intltest/intltest.vcxproj +++ b/source/test/intltest/intltest.vcxproj @@ -1,52 +1,17 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {73632960-B3A6-464D-83A3-4B43365F19B8} - 8.1 intltest - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -83,38 +48,33 @@ .\x64\Release\ false + + + + ..\..\..\include;..\..\common;..\..\i18n;..\..\tools\toolutil;..\..\tools\ctestfw;%(AdditionalIncludeDirectories) + U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions) + false + Level3 + + .\x86\Debug/intltest.tlb - Disabled - ..\..\..\include;..\..\common;..\..\i18n;..\..\tools\toolutil;..\..\tools\ctestfw;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true - false - true .\x86\Debug/intltest.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Debug/intltest.exe - true - true + icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Debug/intltest.pdb Console false @@ -125,41 +85,26 @@ - X64 .\x64\Debug/intltest.tlb - Disabled - ..\..\..\include;..\..\common;..\..\i18n;..\..\tools\toolutil;..\..\tools\ctestfw;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebug - true - false - true .\x64\Debug/intltest.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Debug/intltest.exe - true + icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/intltest.pdb Console false - MachineX64 @@ -167,28 +112,17 @@ .\x86\Release/intltest.tlb - ..\..\..\include;..\..\common;..\..\i18n;..\..\tools\toolutil;..\..\tools\ctestfw;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded - false - true .\x86\Release/intltest.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Release/intltest.exe - true + icuuc.lib;icuin.lib;icutu.lib;icutest.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Release/intltest.pdb Console @@ -199,36 +133,23 @@ - X64 .\x64\Release/intltest.tlb - ..\..\..\include;..\..\common;..\..\i18n;..\..\tools\toolutil;..\..\tools\ctestfw;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreaded - false - true .\x64\Release/intltest.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Release/intltest.exe - true + icuuc.lib;icuin.lib;icutu.lib;icutest.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Release/intltest.pdb Console - MachineX64 @@ -327,6 +248,7 @@ + @@ -566,25 +488,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - {eca6b435-b4fa-4f9f-bf95-f451d078fc47} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/test/intltest/intltest.vcxproj.filters b/source/test/intltest/intltest.vcxproj.filters index 384f6da..442793e 100644 --- a/source/test/intltest/intltest.vcxproj.filters +++ b/source/test/intltest/intltest.vcxproj.filters @@ -268,6 +268,9 @@ formatting + + formatting + formatting diff --git a/source/test/intltest/itrbnf.cpp b/source/test/intltest/itrbnf.cpp index 9770025..e6e9078 100644 --- a/source/test/intltest/itrbnf.cpp +++ b/source/test/intltest/itrbnf.cpp @@ -75,6 +75,7 @@ void IntlTestRBNF::runIndexedTest(int32_t index, UBool exec, const char* &name, TESTCASE(23, TestVariableDecimalPoint); TESTCASE(24, TestLargeNumbers); TESTCASE(25, TestCompactDecimalFormatStyle); + TESTCASE(26, TestParseFailure); #else TESTCASE(0, TestRBNFDisabled); #endif @@ -2283,6 +2284,22 @@ void IntlTestRBNF::TestCompactDecimalFormatStyle() { doTest(&rbnf, enTestFullData, false); } +void IntlTestRBNF::TestParseFailure() { + UErrorCode status = U_ZERO_ERROR; + RuleBasedNumberFormat rbnf(URBNF_SPELLOUT, Locale::getJapanese(), status); + static const UChar* testData[] = { + u"・・・・・・・・・・・・・・・・・・・・・・・・" + }; + for (int i = 0; i < UPRV_LENGTHOF(testData); ++i) { + UnicodeString spelledNumberString(testData[i]); + Formattable actualNumber; + rbnf.parse(spelledNumberString, actualNumber, status); + if (status != U_INVALID_FORMAT_ERROR) { // I would have expected U_PARSE_ERROR, but NumberFormat::parse gives U_INVALID_FORMAT_ERROR + errln("FAIL: string should be unparseable index=%d %s", i, u_errorName(status)); + } + } +} + void IntlTestRBNF::doTest(RuleBasedNumberFormat* formatter, const char* const testData[][2], UBool testParsing) { diff --git a/source/test/intltest/itrbnf.h b/source/test/intltest/itrbnf.h index 540b803..e58d321 100644 --- a/source/test/intltest/itrbnf.h +++ b/source/test/intltest/itrbnf.h @@ -147,6 +147,7 @@ class IntlTestRBNF : public IntlTest { void TestRounding(); void TestLargeNumbers(); void TestCompactDecimalFormatStyle(); + void TestParseFailure(); protected: virtual void doTest(RuleBasedNumberFormat* formatter, const char* const testData[][2], UBool testParsing); diff --git a/source/test/intltest/measfmttest.cpp b/source/test/intltest/measfmttest.cpp index d997a26..7be9adf 100644 --- a/source/test/intltest/measfmttest.cpp +++ b/source/test/intltest/measfmttest.cpp @@ -1747,7 +1747,7 @@ void MeasureFormatTest::TestMultiples() { helperTestMultiples(en, UMEASFMT_WIDTH_SHORT, "2 mi, 1 ft, 2.3 in"); helperTestMultiples(en, UMEASFMT_WIDTH_NARROW, "2mi 1\\u2032 2.3\\u2033"); helperTestMultiples(ru, UMEASFMT_WIDTH_WIDE, "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0443\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430"); - helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT, "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0443\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C."); + helperTestMultiples(ru, UMEASFMT_WIDTH_SHORT, "2 \\u043C\\u0438\\u043B\\u0438 1 \\u0444\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C."); helperTestMultiples(ru, UMEASFMT_WIDTH_NARROW, "2 \\u043C\\u0438\\u043B\\u044C 1 \\u0444\\u0442 2,3 \\u0434\\u044E\\u0439\\u043C\\u0430"); } diff --git a/source/test/intltest/numberformattesttuple.cpp b/source/test/intltest/numberformattesttuple.cpp index 01c2815..496aaec 100644 --- a/source/test/intltest/numberformattesttuple.cpp +++ b/source/test/intltest/numberformattesttuple.cpp @@ -325,6 +325,7 @@ const NumberFormatTestTupleFieldData gFieldData[] = { FIELD_INIT(positiveSuffix, &gStrOps), FIELD_INIT(negativePrefix, &gStrOps), FIELD_INIT(negativeSuffix, &gStrOps), + FIELD_INIT(signAlwaysShown, &gIntOps), FIELD_INIT(localizedPattern, &gStrOps), FIELD_INIT(toPattern, &gStrOps), FIELD_INIT(toLocalizedPattern, &gStrOps), diff --git a/source/test/intltest/numberformattesttuple.h b/source/test/intltest/numberformattesttuple.h index f417b3e..685c3d6 100644 --- a/source/test/intltest/numberformattesttuple.h +++ b/source/test/intltest/numberformattesttuple.h @@ -55,6 +55,7 @@ enum ENumberFormatTestTupleField { kPositiveSuffix, kNegativePrefix, kNegativeSuffix, + kSignAlwaysShown, kLocalizedPattern, kToPattern, kToLocalizedPattern, @@ -118,6 +119,7 @@ public: UnicodeString positiveSuffix; UnicodeString negativePrefix; UnicodeString negativeSuffix; + int32_t signAlwaysShown; UnicodeString localizedPattern; UnicodeString toPattern; UnicodeString toLocalizedPattern; @@ -164,6 +166,7 @@ public: UBool positiveSuffixFlag; UBool negativePrefixFlag; UBool negativeSuffixFlag; + UBool signAlwaysShownFlag; UBool localizedPatternFlag; UBool toPatternFlag; UBool toLocalizedPatternFlag; diff --git a/source/test/intltest/numbertest.h b/source/test/intltest/numbertest.h index 3e60031..c1d5044 100644 --- a/source/test/intltest/numbertest.h +++ b/source/test/intltest/numbertest.h @@ -45,6 +45,7 @@ class NumberFormatterApiTest : public IntlTest { void notationScientific(); void notationCompact(); void unitMeasure(); + void unitCompoundMeasure(); void unitCurrency(); void unitPercent(); void roundingFraction(); @@ -62,6 +63,7 @@ class NumberFormatterApiTest : public IntlTest { void locale(); void formatTypes(); void errors(); + void validRanges(); void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); @@ -70,11 +72,19 @@ class NumberFormatterApiTest : public IntlTest { CurrencyUnit GBP; CurrencyUnit CZK; CurrencyUnit CAD; + CurrencyUnit ESP; + CurrencyUnit PTE; MeasureUnit METER; MeasureUnit DAY; MeasureUnit SQUARE_METER; MeasureUnit FAHRENHEIT; + MeasureUnit SECOND; + MeasureUnit POUND; + MeasureUnit SQUARE_MILE; + MeasureUnit JOULE; + MeasureUnit FURLONG; + MeasureUnit KELVIN; NumberingSystem MATHSANB; NumberingSystem LATN; @@ -100,6 +110,7 @@ class DecimalQuantityTest : public IntlTest { void testAppend(); void testConvertToAccurateDouble(); void testUseApproximateDoubleWhenAble(); + void testHardDoubleConversion(); void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); @@ -110,6 +121,13 @@ class DecimalQuantityTest : public IntlTest { void checkDoubleBehavior(double d, bool explicitRequired); }; +class DoubleConversionTest : public IntlTest { + public: + void testDoubleConversionApi(); + + void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); +}; + class ModifiersTest : public IntlTest { public: void testConstantAffixModifier(); @@ -132,6 +150,7 @@ class ModifiersTest : public IntlTest { class PatternModifierTest : public IntlTest { public: void testBasic(); + void testPatternWithNoPlaceholder(); void testMutableEqualsImmutable(); void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par = 0); @@ -155,6 +174,7 @@ class PatternStringTest : public IntlTest { class NumberStringBuilderTest : public IntlTest { public: void testInsertAppendUnicodeString(); + void testSplice(); void testInsertAppendCodePoint(); void testCopy(); void testFields(); @@ -195,6 +215,7 @@ class NumberTest : public IntlTest { TESTCLASS(4, PatternModifierTest); TESTCLASS(5, PatternStringTest); TESTCLASS(6, NumberStringBuilderTest); + TESTCLASS(7, DoubleConversionTest); default: name = ""; break; // needed to end loop } } diff --git a/source/test/intltest/numbertest_api.cpp b/source/test/intltest/numbertest_api.cpp index 6351404..5b1c46f 100644 --- a/source/test/intltest/numbertest_api.cpp +++ b/source/test/intltest/numbertest_api.cpp @@ -22,33 +22,31 @@ NumberFormatterApiTest::NumberFormatterApiTest() NumberFormatterApiTest::NumberFormatterApiTest(UErrorCode &status) : USD(u"USD", status), GBP(u"GBP", status), CZK(u"CZK", status), CAD(u"CAD", status), + ESP(u"ESP", status), PTE(u"PTE", status), FRENCH_SYMBOLS(Locale::getFrench(), status), SWISS_SYMBOLS(Locale("de-CH"), status), MYANMAR_SYMBOLS(Locale("my"), status) { - MeasureUnit *unit = MeasureUnit::createMeter(status); + // Check for error on the first MeasureUnit in case there is no data + LocalPointer unit(MeasureUnit::createMeter(status)); if (U_FAILURE(status)) { dataerrln("%s %d status = %s", __FILE__, __LINE__, u_errorName(status)); return; } METER = *unit; - delete unit; - unit = MeasureUnit::createDay(status); - DAY = *unit; - delete unit; - unit = MeasureUnit::createSquareMeter(status); - SQUARE_METER = *unit; - delete unit; - unit = MeasureUnit::createFahrenheit(status); - FAHRENHEIT = *unit; - delete unit; - - NumberingSystem *ns = NumberingSystem::createInstanceByName("mathsanb", status); - MATHSANB = *ns; - delete ns; - ns = NumberingSystem::createInstanceByName("latn", status); - LATN = *ns; - delete ns; + + DAY = *LocalPointer(MeasureUnit::createDay(status)); + SQUARE_METER = *LocalPointer(MeasureUnit::createSquareMeter(status)); + FAHRENHEIT = *LocalPointer(MeasureUnit::createFahrenheit(status)); + SECOND = *LocalPointer(MeasureUnit::createSecond(status)); + POUND = *LocalPointer(MeasureUnit::createPound(status)); + SQUARE_MILE = *LocalPointer(MeasureUnit::createSquareMile(status)); + JOULE = *LocalPointer(MeasureUnit::createJoule(status)); + FURLONG = *LocalPointer(MeasureUnit::createFurlong(status)); + KELVIN = *LocalPointer(MeasureUnit::createKelvin(status)); + + MATHSANB = *LocalPointer(NumberingSystem::createInstanceByName("mathsanb", status)); + LATN = *LocalPointer(NumberingSystem::createInstanceByName("latn", status)); } void NumberFormatterApiTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char *) { @@ -60,6 +58,7 @@ void NumberFormatterApiTest::runIndexedTest(int32_t index, UBool exec, const cha TESTCASE_AUTO(notationScientific); TESTCASE_AUTO(notationCompact); TESTCASE_AUTO(unitMeasure); + TESTCASE_AUTO(unitCompoundMeasure); TESTCASE_AUTO(unitCurrency); TESTCASE_AUTO(unitPercent); TESTCASE_AUTO(roundingFraction); @@ -77,6 +76,7 @@ void NumberFormatterApiTest::runIndexedTest(int32_t index, UBool exec, const cha TESTCASE_AUTO(locale); TESTCASE_AUTO(formatTypes); TESTCASE_AUTO(errors); + TESTCASE_AUTO(validRanges); TESTCASE_AUTO_END; } @@ -351,12 +351,15 @@ void NumberFormatterApiTest::notationCompact() { Locale::getEnglish(), 9990000, u"10M"); + + // NOTE: There is no API for compact custom data in C++ + // and thus no "Compact Somali No Figure" test } void NumberFormatterApiTest::unitMeasure() { assertFormatDescending( - u"Meters Short", - NumberFormatter::with().adoptUnit(new MeasureUnit(METER)), + u"Meters Short and unit() method", + NumberFormatter::with().unit(METER), Locale::getEnglish(), u"87,650 m", u"8,765 m", @@ -369,7 +372,7 @@ void NumberFormatterApiTest::unitMeasure() { u"0 m"); assertFormatDescending( - u"Meters Long", + u"Meters Long and adoptUnit() method", NumberFormatter::with().adoptUnit(new MeasureUnit(METER)) .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME), Locale::getEnglish(), @@ -386,7 +389,7 @@ void NumberFormatterApiTest::unitMeasure() { assertFormatDescending( u"Compact Meters Long", NumberFormatter::with().notation(Notation::compactLong()) - .adoptUnit(new MeasureUnit(METER)) + .unit(METER) .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME), Locale::getEnglish(), u"88 thousand meters", @@ -410,14 +413,14 @@ void NumberFormatterApiTest::unitMeasure() { // TODO: Implement Measure in C++ // assertFormatSingleMeasure( // u"Measure format method takes precedence over fluent chain", -// NumberFormatter::with().adoptUnit(new MeasureUnit(METER)), +// NumberFormatter::with().unit(METER), // Locale::getEnglish(), // new Measure(5.43, USD), // u"$5.43"); assertFormatSingle( u"Meters with Negative Sign", - NumberFormatter::with().adoptUnit(new MeasureUnit(METER)), + NumberFormatter::with().unit(METER), Locale::getEnglish(), -9876543.21, u"-9,876,543.21 m"); @@ -425,7 +428,7 @@ void NumberFormatterApiTest::unitMeasure() { // The locale string "सान" appears only in brx.txt: assertFormatSingle( u"Interesting Data Fallback 1", - NumberFormatter::with().adoptUnit(new MeasureUnit(DAY)) + NumberFormatter::with().unit(DAY) .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME), Locale::createFromName("brx"), 5.43, @@ -434,7 +437,7 @@ void NumberFormatterApiTest::unitMeasure() { // Requires following the alias from unitsNarrow to unitsShort: assertFormatSingle( u"Interesting Data Fallback 2", - NumberFormatter::with().adoptUnit(new MeasureUnit(DAY)) + NumberFormatter::with().unit(DAY) .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW), Locale::createFromName("brx"), 5.43, @@ -444,7 +447,7 @@ void NumberFormatterApiTest::unitMeasure() { // requiring fallback to the root. assertFormatSingle( u"Interesting Data Fallback 3", - NumberFormatter::with().adoptUnit(new MeasureUnit(SQUARE_METER)) + NumberFormatter::with().unit(SQUARE_METER) .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_NARROW), Locale::createFromName("en-GB"), 5.43, @@ -454,7 +457,7 @@ void NumberFormatterApiTest::unitMeasure() { // NOTE: This example is in the documentation. assertFormatSingle( u"Difference between Narrow and Short (Narrow Version)", - NumberFormatter::with().adoptUnit(new MeasureUnit(FAHRENHEIT)) + NumberFormatter::with().unit(FAHRENHEIT) .unitWidth(UNUM_UNIT_WIDTH_NARROW), Locale("es-US"), 5.43, @@ -462,11 +465,74 @@ void NumberFormatterApiTest::unitMeasure() { assertFormatSingle( u"Difference between Narrow and Short (Short Version)", - NumberFormatter::with().adoptUnit(new MeasureUnit(FAHRENHEIT)) + NumberFormatter::with().unit(FAHRENHEIT) .unitWidth(UNUM_UNIT_WIDTH_SHORT), Locale("es-US"), 5.43, u"5.43 °F"); + + assertFormatSingle( + u"MeasureUnit form without {0} in CLDR pattern", + NumberFormatter::with() + .unit(KELVIN) + .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME), + Locale("es-MX"), + 1, + u"kelvin"); + + assertFormatSingle( + u"MeasureUnit form without {0} in CLDR pattern and wide base form", + NumberFormatter::with() + .rounding(Rounder::fixedFraction(20)) + .unit(KELVIN) + .unitWidth(UNumberUnitWidth::UNUM_UNIT_WIDTH_FULL_NAME), + Locale("es-MX"), + 1, + u"kelvin"); +} + +void NumberFormatterApiTest::unitCompoundMeasure() { + assertFormatDescending( + u"Meters Per Second Short (unit that simplifies) and perUnit method", + NumberFormatter::with().unit(METER).perUnit(SECOND), + Locale::getEnglish(), + u"87,650 m/s", + u"8,765 m/s", + u"876.5 m/s", + u"87.65 m/s", + u"8.765 m/s", + u"0.8765 m/s", + u"0.08765 m/s", + u"0.008765 m/s", + u"0 m/s"); + + assertFormatDescending( + u"Pounds Per Square Mile Short (secondary unit has per-format) and adoptPerUnit method", + NumberFormatter::with().unit(POUND).adoptPerUnit(new MeasureUnit(SQUARE_MILE)), + Locale::getEnglish(), + u"87,650 lb/mi²", + u"8,765 lb/mi²", + u"876.5 lb/mi²", + u"87.65 lb/mi²", + u"8.765 lb/mi²", + u"0.8765 lb/mi²", + u"0.08765 lb/mi²", + u"0.008765 lb/mi²", + u"0 lb/mi²"); + + assertFormatDescending( + u"Joules Per Furlong Short (unit with no simplifications or special patterns)", + NumberFormatter::with().unit(JOULE).perUnit(FURLONG), + Locale::getEnglish(), + u"87,650 J/fur", + u"8,765 J/fur", + u"876.5 J/fur", + u"87.65 J/fur", + u"8.765 J/fur", + u"0.8765 J/fur", + u"0.08765 J/fur", + u"0.008765 J/fur", + u"0 J/fur"); } void NumberFormatterApiTest::unitCurrency() { @@ -547,6 +613,66 @@ void NumberFormatterApiTest::unitCurrency() { Locale::getEnglish(), -9876543.21, u"-£9,876,543.21"); + + // The full currency symbol is not shown in NARROW format. + // NOTE: This example is in the documentation. + assertFormatSingle( + u"Currency Difference between Narrow and Short (Narrow Version)", + NumberFormatter::with().unit(USD).unitWidth(UNUM_UNIT_WIDTH_NARROW), + Locale("en-CA"), + 5.43, + u"$5.43"); + + assertFormatSingle( + u"Currency Difference between Narrow and Short (Short Version)", + NumberFormatter::with().unit(USD).unitWidth(UNUM_UNIT_WIDTH_SHORT), + Locale("en-CA"), + 5.43, + u"US$5.43"); + + assertFormatSingle( + u"Currency-dependent format (Control)", + NumberFormatter::with().unit(USD).unitWidth(UNUM_UNIT_WIDTH_SHORT), + Locale("ca"), + 444444.55, + u"444.444,55 USD"); + + assertFormatSingle( + u"Currency-dependent format (Test)", + NumberFormatter::with().unit(ESP).unitWidth(UNUM_UNIT_WIDTH_SHORT), + Locale("ca"), + 444444.55, + u"₧ 444.445"); + + assertFormatSingle( + u"Currency-dependent symbols (Control)", + NumberFormatter::with().unit(USD).unitWidth(UNUM_UNIT_WIDTH_SHORT), + Locale("pt-PT"), + 444444.55, + u"444 444,55 US$"); + + // NOTE: This is a bit of a hack on CLDR's part. They set the currency symbol to U+200B (zero- + // width space), and they set the decimal separator to the $ symbol. + assertFormatSingle( + u"Currency-dependent symbols (Test Short)", + NumberFormatter::with().unit(PTE).unitWidth(UNUM_UNIT_WIDTH_SHORT), + Locale("pt-PT"), + 444444.55, + u"444,444$55 \u200B"); + + assertFormatSingle( + u"Currency-dependent symbols (Test Narrow)", + NumberFormatter::with().unit(PTE).unitWidth(UNUM_UNIT_WIDTH_NARROW), + Locale("pt-PT"), + 444444.55, + u"444,444$55 PTE"); + + assertFormatSingle( + u"Currency-dependent symbols (Test ISO Code)", + NumberFormatter::with().unit(PTE).unitWidth(UNUM_UNIT_WIDTH_ISO_CODE), + Locale("pt-PT"), + 444444.55, + u"444,444$55 PTE"); } void NumberFormatterApiTest::unitPercent() { @@ -765,6 +891,20 @@ void NumberFormatterApiTest::roundingFractionFigures() { u"0.09", u"0.01", u"0.00"); + + assertFormatSingle( + "FracSig with trailing zeros A", + NumberFormatter::with().rounding(Rounder::fixedFraction(2).withMinDigits(3)), + Locale::getEnglish(), + 0.1, + u"0.10"); + + assertFormatSingle( + "FracSig with trailing zeros B", + NumberFormatter::with().rounding(Rounder::fixedFraction(2).withMinDigits(3)), + Locale::getEnglish(), + 0.0999999, + u"0.10"); } void NumberFormatterApiTest::roundingOther() { @@ -889,7 +1029,7 @@ void NumberFormatterApiTest::roundingOther() { void NumberFormatterApiTest::grouping() { assertFormatDescendingBig( u"Western Grouping", - NumberFormatter::with().grouping(Grouper::defaults()), + NumberFormatter::with().grouping(UNUM_GROUPING_AUTO), Locale::getEnglish(), u"87,650,000", u"8,765,000", @@ -903,7 +1043,7 @@ void NumberFormatterApiTest::grouping() { assertFormatDescendingBig( u"Indic Grouping", - NumberFormatter::with().grouping(Grouper::defaults()), + NumberFormatter::with().grouping(UNUM_GROUPING_AUTO), Locale("en-IN"), u"8,76,50,000", u"87,65,000", @@ -917,7 +1057,7 @@ void NumberFormatterApiTest::grouping() { assertFormatDescendingBig( u"Western Grouping, Wide", - NumberFormatter::with().grouping(Grouper::minTwoDigits()), + NumberFormatter::with().grouping(UNUM_GROUPING_MIN2), Locale::getEnglish(), u"87,650,000", u"8,765,000", @@ -931,7 +1071,7 @@ void NumberFormatterApiTest::grouping() { assertFormatDescendingBig( u"Indic Grouping, Wide", - NumberFormatter::with().grouping(Grouper::minTwoDigits()), + NumberFormatter::with().grouping(UNUM_GROUPING_MIN2), Locale("en-IN"), u"8,76,50,000", u"87,65,000", @@ -945,7 +1085,7 @@ void NumberFormatterApiTest::grouping() { assertFormatDescendingBig( u"No Grouping", - NumberFormatter::with().grouping(Grouper::none()), + NumberFormatter::with().grouping(UNUM_GROUPING_OFF), Locale("en-IN"), u"87650000", u"8765000", @@ -956,6 +1096,111 @@ void NumberFormatterApiTest::grouping() { u"87.65", u"8.765", u"0"); + + assertFormatDescendingBig( + u"Indic locale with THOUSANDS grouping", + NumberFormatter::with().grouping(UNUM_GROUPING_THOUSANDS), + Locale("en-IN"), + u"87,650,000", + u"8,765,000", + u"876,500", + u"87,650", + u"8,765", + u"876.5", + u"87.65", + u"8.765", + u"0"); + + // NOTE: Hungarian is interesting because it has minimumGroupingDigits=4 in locale data + // If this test breaks due to data changes, find another locale that has minimumGroupingDigits. + assertFormatDescendingBig( + u"Hungarian Grouping", + NumberFormatter::with().grouping(UNUM_GROUPING_AUTO), + Locale("hu"), + u"87 650 000", + u"8 765 000", + u"876500", + u"87650", + u"8765", + u"876,5", + u"87,65", + u"8,765", + u"0"); + + assertFormatDescendingBig( + u"Hungarian Grouping, Min 2", + NumberFormatter::with().grouping(UNUM_GROUPING_MIN2), + Locale("hu"), + u"87 650 000", + u"8 765 000", + u"876500", + u"87650", + u"8765", + u"876,5", + u"87,65", + u"8,765", + u"0"); + + assertFormatDescendingBig( + u"Hungarian Grouping, Always", + NumberFormatter::with().grouping(UNUM_GROUPING_ON_ALIGNED), + Locale("hu"), + u"87 650 000", + u"8 765 000", + u"876 500", + u"87 650", + u"8 765", + u"876,5", + u"87,65", + u"8,765", + u"0"); + + // NOTE: Bulgarian is interesting because it has no grouping in the default currency format. + // If this test breaks due to data changes, find another locale that has no default grouping. + assertFormatDescendingBig( + u"Bulgarian Currency Grouping", + NumberFormatter::with().grouping(UNUM_GROUPING_AUTO).unit(USD), + Locale("bg"), + u"87650000,00 щ.д.", + u"8765000,00 щ.д.", + u"876500,00 щ.д.", + u"87650,00 щ.д.", + u"8765,00 щ.д.", + u"876,50 щ.д.", + u"87,65 щ.д.", + u"8,76 щ.д.", + u"0,00 щ.д."); + + assertFormatDescendingBig( + u"Bulgarian Currency Grouping, Always", + NumberFormatter::with().grouping(UNUM_GROUPING_ON_ALIGNED).unit(USD), + Locale("bg"), + u"87 650 000,00 щ.д.", + u"8 765 000,00 щ.д.", + u"876 500,00 щ.д.", + u"87 650,00 щ.д.", + u"8 765,00 щ.д.", + u"876,50 щ.д.", + u"87,65 щ.д.", + u"8,76 щ.д.", + u"0,00 щ.д."); + + // TODO: Enable this test when macro-setter is available in C++ + // MacroProps macros; + // macros.grouping = Grouper(4, 1, 3); + // assertFormatDescendingBig( + // u"Custom Grouping via Internal API", + // NumberFormatter::with().macros(macros), + // Locale::getEnglish(), + // u"8,7,6,5,0000", + // u"8,7,6,5000", + // u"876500", + // u"87650", + // u"8765", + // u"876.5", + // u"87.65", + // u"8.765", + // u"0"); } void NumberFormatterApiTest::padding() { @@ -1241,9 +1486,9 @@ void NumberFormatterApiTest::symbols() { u"US$ 12,345.67"); assertFormatSingle( - u"Currency symbol should follow number in ar with NS arab", + u"Currency symbol should follow number in ar-EG with NS arab", NumberFormatter::with().unit(USD), - Locale("ar"), + Locale("ar-EG"), 12345.67, u"١٢٬٣٤٥٫٦٧ US$"); @@ -1254,7 +1499,22 @@ void NumberFormatterApiTest::symbols() { 12345.67, u"١٢٬٣٤٥٫٦٧ US$"); + assertFormatSingle( + u"NumberingSystem in API should win over @numbers keyword", + NumberFormatter::with().adoptSymbols(new NumberingSystem(LATN)).unit(USD), + Locale("ar@numbers=arab"), + 12345.67, + u"US$ 12,345.67"); + UErrorCode status = U_ZERO_ERROR; + assertEquals("NumberingSystem in API should win over @numbers keyword in reverse order", + u"US$ 12,345.67", + NumberFormatter::withLocale(Locale("ar@numbers=arab")) + .adoptSymbols(new NumberingSystem(LATN)) + .unit(USD) + .formatDouble(12345.67, status) + .toString()); + DecimalFormatSymbols symbols = SWISS_SYMBOLS; UnlocalizedNumberFormatter f = NumberFormatter::with().symbols(symbols); symbols.setSymbol(DecimalFormatSymbols::ENumberFormatSymbol::kGroupingSeparatorSymbol, u"!", status); @@ -1305,6 +1565,13 @@ void NumberFormatterApiTest::sign() { u"-444,444"); assertFormatSingle( + u"Sign Auto Zero", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_AUTO), + Locale::getEnglish(), + 0, + u"0"); + + assertFormatSingle( u"Sign Always Positive", NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ALWAYS), Locale::getEnglish(), @@ -1319,6 +1586,13 @@ void NumberFormatterApiTest::sign() { u"-444,444"); assertFormatSingle( + u"Sign Always Zero", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ALWAYS), + Locale::getEnglish(), + 0, + u"+0"); + + assertFormatSingle( u"Sign Never Positive", NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_NEVER), Locale::getEnglish(), @@ -1333,6 +1607,13 @@ void NumberFormatterApiTest::sign() { u"444,444"); assertFormatSingle( + u"Sign Never Zero", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_NEVER), + Locale::getEnglish(), + 0, + u"0"); + + assertFormatSingle( u"Sign Accounting Positive", NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING).unit(USD), Locale::getEnglish(), @@ -1347,6 +1628,13 @@ void NumberFormatterApiTest::sign() { u"($444,444.00)"); assertFormatSingle( + u"Sign Accounting Zero", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING).unit(USD), + Locale::getEnglish(), + 0, + u"$0.00"); + + assertFormatSingle( u"Sign Accounting-Always Positive", NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS).unit(USD), Locale::getEnglish(), @@ -1361,6 +1649,55 @@ void NumberFormatterApiTest::sign() { u"($444,444.00)"); assertFormatSingle( + u"Sign Accounting-Always Zero", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_ALWAYS).unit(USD), + Locale::getEnglish(), + 0, + u"+$0.00"); + + assertFormatSingle( + u"Sign Except-Zero Positive", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO), + Locale::getEnglish(), + 444444, + u"+444,444"); + + assertFormatSingle( + u"Sign Except-Zero Negative", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO), + Locale::getEnglish(), + -444444, + u"-444,444"); + + assertFormatSingle( + u"Sign Except-Zero Zero", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_EXCEPT_ZERO), + Locale::getEnglish(), + 0, + u"0"); + + assertFormatSingle( + u"Sign Accounting-Except-Zero Positive", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO).unit(USD), + Locale::getEnglish(), + 444444, + u"+$444,444.00"); + + assertFormatSingle( + u"Sign Accounting-Except-Zero Negative", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO).unit(USD), + Locale::getEnglish(), + -444444, + u"($444,444.00)"); + + assertFormatSingle( + u"Sign Accounting-Except-Zero Zero", + NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING_EXCEPT_ZERO).unit(USD), + Locale::getEnglish(), + 0, + u"$0.00"); + + assertFormatSingle( u"Sign Accounting Negative Hidden", NumberFormatter::with().sign(UNumberSignDisplay::UNUM_SIGN_ACCOUNTING) .unit(USD) @@ -1426,14 +1763,14 @@ void NumberFormatterApiTest::errors() { UErrorCode status2 = U_ZERO_ERROR; FormattedNumber fn = lnf.formatInt(1, status1); assertEquals( - "Should fail with U_ILLEGAL_ARGUMENT_ERROR since rounder is not legal", - U_ILLEGAL_ARGUMENT_ERROR, + "Should fail since rounder is not legal", + U_NUMBER_ARG_OUTOFBOUNDS_ERROR, status1); FieldPosition fp; fn.populateFieldPosition(fp, status2); assertEquals( - "Should fail with U_ILLEGAL_ARGUMENT_ERROR on terminal method", - U_ILLEGAL_ARGUMENT_ERROR, + "Should fail on terminal method", + U_NUMBER_ARG_OUTOFBOUNDS_ERROR, status2); } @@ -1441,12 +1778,68 @@ void NumberFormatterApiTest::errors() { UErrorCode status = U_ZERO_ERROR; lnf.copyErrorTo(status); assertEquals( - "Should fail with U_ILLEGAL_ARGUMENT_ERROR since rounder is not legal", - U_ILLEGAL_ARGUMENT_ERROR, + "Should fail since rounder is not legal", + U_NUMBER_ARG_OUTOFBOUNDS_ERROR, status); } } +void NumberFormatterApiTest::validRanges() { + +#define EXPECTED_MAX_INT_FRAC_SIG 999 + +#define VALID_RANGE_ASSERT(status, method, lowerBound, argument) { \ + UErrorCode expectedStatus = ((lowerBound <= argument) && (argument <= EXPECTED_MAX_INT_FRAC_SIG)) \ + ? U_ZERO_ERROR \ + : U_NUMBER_ARG_OUTOFBOUNDS_ERROR; \ + assertEquals( \ + UnicodeString(u"Incorrect status for " #method " on input ") \ + + Int64ToUnicodeString(argument), \ + expectedStatus, \ + status); \ +} + +#define VALID_RANGE_ONEARG(setting, method, lowerBound) { \ + for (int32_t argument = -2; argument <= EXPECTED_MAX_INT_FRAC_SIG + 2; argument++) { \ + UErrorCode status = U_ZERO_ERROR; \ + NumberFormatter::with().setting(method(argument)).copyErrorTo(status); \ + VALID_RANGE_ASSERT(status, method, lowerBound, argument); \ + } \ +} + +#define VALID_RANGE_TWOARGS(setting, method, lowerBound) { \ + for (int32_t argument = -2; argument <= EXPECTED_MAX_INT_FRAC_SIG + 2; argument++) { \ + UErrorCode status = U_ZERO_ERROR; \ + /* Pass EXPECTED_MAX_INT_FRAC_SIG as the second argument so arg1 <= arg2 in expected cases */ \ + NumberFormatter::with().setting(method(argument, EXPECTED_MAX_INT_FRAC_SIG)).copyErrorTo(status); \ + VALID_RANGE_ASSERT(status, method, lowerBound, argument); \ + status = U_ZERO_ERROR; \ + /* Pass lowerBound as the first argument so arg1 <= arg2 in expected cases */ \ + NumberFormatter::with().setting(method(lowerBound, argument)).copyErrorTo(status); \ + VALID_RANGE_ASSERT(status, method, lowerBound, argument); \ + /* Check that first argument must be less than or equal to second argument */ \ + NumberFormatter::with().setting(method(argument, argument - 1)).copyErrorTo(status); \ + assertEquals("Incorrect status for " #method " on max < min input", \ + U_NUMBER_ARG_OUTOFBOUNDS_ERROR, \ + status); \ + } \ +} + + VALID_RANGE_ONEARG(rounding, Rounder::fixedFraction, 0); + VALID_RANGE_ONEARG(rounding, Rounder::minFraction, 0); + VALID_RANGE_ONEARG(rounding, Rounder::maxFraction, 0); + VALID_RANGE_TWOARGS(rounding, Rounder::minMaxFraction, 0); + VALID_RANGE_ONEARG(rounding, Rounder::fixedDigits, 1); + VALID_RANGE_ONEARG(rounding, Rounder::minDigits, 1); + VALID_RANGE_ONEARG(rounding, Rounder::maxDigits, 1); + VALID_RANGE_TWOARGS(rounding, Rounder::minMaxDigits, 1); + VALID_RANGE_ONEARG(rounding, Rounder::fixedFraction(1).withMinDigits, 1); + VALID_RANGE_ONEARG(rounding, Rounder::fixedFraction(1).withMaxDigits, 1); + VALID_RANGE_ONEARG(notation, Notation::scientific().withMinExponentDigits, 1); + VALID_RANGE_ONEARG(integerWidth, IntegerWidth::zeroFillTo, 0); + VALID_RANGE_ONEARG(integerWidth, IntegerWidth::zeroFillTo(0).truncateAt, -1); +} + void NumberFormatterApiTest::assertFormatDescending(const UnicodeString &message, const UnlocalizedNumberFormatter &f, diff --git a/source/test/intltest/numbertest_decimalquantity.cpp b/source/test/intltest/numbertest_decimalquantity.cpp index b298b43..0cbcc52 100644 --- a/source/test/intltest/numbertest_decimalquantity.cpp +++ b/source/test/intltest/numbertest_decimalquantity.cpp @@ -20,6 +20,7 @@ void DecimalQuantityTest::runIndexedTest(int32_t index, UBool exec, const char * TESTCASE_AUTO(testAppend); TESTCASE_AUTO(testConvertToAccurateDouble); TESTCASE_AUTO(testUseApproximateDoubleWhenAble); + TESTCASE_AUTO(testHardDoubleConversion); TESTCASE_AUTO_END; } @@ -233,7 +234,7 @@ void DecimalQuantityTest::testConvertToAccurateDouble() { } void DecimalQuantityTest::testUseApproximateDoubleWhenAble() { - struct TestCase { + static const struct TestCase { double d; int32_t maxFrac; RoundingMode roundingMode; @@ -264,4 +265,33 @@ void DecimalQuantityTest::testUseApproximateDoubleWhenAble() { } } +void DecimalQuantityTest::testHardDoubleConversion() { + static const struct TestCase { + double input; + const char16_t* expectedOutput; + } cases[] = { + { 512.0000000000017, u"512.0000000000017" }, + { 4095.9999999999977, u"4095.9999999999977" }, + { 4095.999999999998, u"4095.999999999998" }, + { 4095.9999999999986, u"4095.9999999999986" }, + { 4095.999999999999, u"4095.999999999999" }, + { 4095.9999999999995, u"4095.9999999999995" }, + { 4096.000000000001, u"4096.000000000001" }, + { 4096.000000000002, u"4096.000000000002" }, + { 4096.000000000003, u"4096.000000000003" }, + { 4096.000000000004, u"4096.000000000004" }, + { 4096.000000000005, u"4096.000000000005" }, + { 4096.0000000000055, u"4096.0000000000055" }, + { 4096.000000000006, u"4096.000000000006" }, + { 4096.000000000007, u"4096.000000000007" } }; + + for (auto& cas : cases) { + DecimalQuantity q; + q.setToDouble(cas.input); + q.roundToInfinity(); + UnicodeString actualOutput = q.toPlainString(); + assertEquals("", cas.expectedOutput, actualOutput); + } +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/numbertest_doubleconversion.cpp b/source/test/intltest/numbertest_doubleconversion.cpp new file mode 100644 index 0000000..a52865d --- /dev/null +++ b/source/test/intltest/numbertest_doubleconversion.cpp @@ -0,0 +1,45 @@ +// © 2017 and later: Unicode, Inc. and others. +// License & terms of use: http://www.unicode.org/copyright.html + +#include "unicode/utypes.h" + +#if !UCONFIG_NO_FORMATTING && !UPRV_INCOMPLETE_CPP11_SUPPORT + +#include "numbertest.h" +#include "double-conversion.h" + +using namespace double_conversion; + +void DoubleConversionTest::runIndexedTest(int32_t index, UBool exec, const char *&name, char *) { + if (exec) { + logln("TestSuite DoubleConversionTest: "); + } + TESTCASE_AUTO_BEGIN; + TESTCASE_AUTO(testDoubleConversionApi); + TESTCASE_AUTO_END; +} + +void DoubleConversionTest::testDoubleConversionApi() { + double v = 87.65; + char buffer[DoubleToStringConverter::kBase10MaximalLength + 1]; + bool sign; + int32_t length; + int32_t point; + + DoubleToStringConverter::DoubleToAscii( + v, + DoubleToStringConverter::DtoaMode::SHORTEST, + 0, + buffer, + sizeof(buffer), + &sign, + &length, + &point + ); + + UnicodeString result(buffer, length); + assertEquals("Digits", u"8765", result); + assertEquals("Scale", 2, point); +} + +#endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/numbertest_modifiers.cpp b/source/test/intltest/numbertest_modifiers.cpp index 279df75..bebb3f8 100644 --- a/source/test/intltest/numbertest_modifiers.cpp +++ b/source/test/intltest/numbertest_modifiers.cpp @@ -38,13 +38,13 @@ void ModifiersTest::testConstantMultiFieldModifier() { UErrorCode status = U_ZERO_ERROR; NumberStringBuilder prefix; NumberStringBuilder suffix; - ConstantMultiFieldModifier mod1(prefix, suffix, true); + ConstantMultiFieldModifier mod1(prefix, suffix, false, true); assertModifierEquals(mod1, 0, true, u"|", u"n", status); assertSuccess("Spot 1", status); prefix.append(u"a📻", UNUM_PERCENT_FIELD, status); suffix.append(u"b", UNUM_CURRENCY_FIELD, status); - ConstantMultiFieldModifier mod2(prefix, suffix, true); + ConstantMultiFieldModifier mod2(prefix, suffix, false, true); assertModifierEquals(mod2, 3, true, u"a📻|b", u"%%%n$", status); assertSuccess("Spot 2", status); @@ -105,14 +105,14 @@ void ModifiersTest::testCurrencySpacingEnabledModifier() { NumberStringBuilder prefix; NumberStringBuilder suffix; - CurrencySpacingEnabledModifier mod1(prefix, suffix, true, symbols, status); + CurrencySpacingEnabledModifier mod1(prefix, suffix, false, true, symbols, status); assertSuccess("Spot 2", status); assertModifierEquals(mod1, 0, true, u"|", u"n", status); assertSuccess("Spot 3", status); prefix.append(u"USD", UNUM_CURRENCY_FIELD, status); assertSuccess("Spot 4", status); - CurrencySpacingEnabledModifier mod2(prefix, suffix, true, symbols, status); + CurrencySpacingEnabledModifier mod2(prefix, suffix, false, true, symbols, status); assertSuccess("Spot 5", status); assertModifierEquals(mod2, 3, true, u"USD|", u"$$$n", status); assertSuccess("Spot 6", status); @@ -138,7 +138,7 @@ void ModifiersTest::testCurrencySpacingEnabledModifier() { symbols.setPatternForCurrencySpacing(UNUM_CURRENCY_SURROUNDING_MATCH, true, u"[|]"); suffix.append("XYZ", UNUM_CURRENCY_FIELD, status); assertSuccess("Spot 11", status); - CurrencySpacingEnabledModifier mod3(prefix, suffix, true, symbols, status); + CurrencySpacingEnabledModifier mod3(prefix, suffix, false, true, symbols, status); assertSuccess("Spot 12", status); assertModifierEquals(mod3, 3, true, u"USD|\u00A0XYZ", u"$$$nn$$$", status); assertSuccess("Spot 13", status); diff --git a/source/test/intltest/numbertest_patternmodifier.cpp b/source/test/intltest/numbertest_patternmodifier.cpp index f30203e..79c99e9 100644 --- a/source/test/intltest/numbertest_patternmodifier.cpp +++ b/source/test/intltest/numbertest_patternmodifier.cpp @@ -14,6 +14,7 @@ void PatternModifierTest::runIndexedTest(int32_t index, UBool exec, const char * } TESTCASE_AUTO_BEGIN; TESTCASE_AUTO(testBasic); + TESTCASE_AUTO(testPatternWithNoPlaceholder); TESTCASE_AUTO(testMutableEqualsImmutable); TESTCASE_AUTO_END; } @@ -31,13 +32,19 @@ void PatternModifierTest::testBasic() { assertSuccess("Spot 2", status); mod.setSymbols(&symbols, currency, UNUM_UNIT_WIDTH_SHORT, nullptr); - mod.setNumberProperties(false, StandardPlural::Form::COUNT); + mod.setNumberProperties(1, StandardPlural::Form::COUNT); assertEquals("Pattern a0b", u"a", getPrefix(mod, status)); assertEquals("Pattern a0b", u"b", getSuffix(mod, status)); mod.setPatternAttributes(UNUM_SIGN_ALWAYS, false); assertEquals("Pattern a0b", u"+a", getPrefix(mod, status)); assertEquals("Pattern a0b", u"b", getSuffix(mod, status)); - mod.setNumberProperties(true, StandardPlural::Form::COUNT); + mod.setNumberProperties(0, StandardPlural::Form::COUNT); + assertEquals("Pattern a0b", u"+a", getPrefix(mod, status)); + assertEquals("Pattern a0b", u"b", getSuffix(mod, status)); + mod.setPatternAttributes(UNUM_SIGN_EXCEPT_ZERO, false); + assertEquals("Pattern a0b", u"a", getPrefix(mod, status)); + assertEquals("Pattern a0b", u"b", getSuffix(mod, status)); + mod.setNumberProperties(-1, StandardPlural::Form::COUNT); assertEquals("Pattern a0b", u"-a", getPrefix(mod, status)); assertEquals("Pattern a0b", u"b", getSuffix(mod, status)); mod.setPatternAttributes(UNUM_SIGN_NEVER, false); @@ -50,24 +57,69 @@ void PatternModifierTest::testBasic() { assertSuccess("Spot 4", status); mod.setPatternInfo(&patternInfo2); mod.setPatternAttributes(UNUM_SIGN_AUTO, false); - mod.setNumberProperties(false, StandardPlural::Form::COUNT); + mod.setNumberProperties(1, StandardPlural::Form::COUNT); assertEquals("Pattern a0b;c-0d", u"a", getPrefix(mod, status)); assertEquals("Pattern a0b;c-0d", u"b", getSuffix(mod, status)); mod.setPatternAttributes(UNUM_SIGN_ALWAYS, false); assertEquals("Pattern a0b;c-0d", u"c+", getPrefix(mod, status)); assertEquals("Pattern a0b;c-0d", u"d", getSuffix(mod, status)); - mod.setNumberProperties(true, StandardPlural::Form::COUNT); + mod.setNumberProperties(0, StandardPlural::Form::COUNT); + assertEquals("Pattern a0b;c-0d", u"c+", getPrefix(mod, status)); + assertEquals("Pattern a0b;c-0d", u"d", getSuffix(mod, status)); + mod.setPatternAttributes(UNUM_SIGN_EXCEPT_ZERO, false); + assertEquals("Pattern a0b;c-0d", u"a", getPrefix(mod, status)); + assertEquals("Pattern a0b;c-0d", u"b", getSuffix(mod, status)); + mod.setNumberProperties(-1, StandardPlural::Form::COUNT); assertEquals("Pattern a0b;c-0d", u"c-", getPrefix(mod, status)); assertEquals("Pattern a0b;c-0d", u"d", getSuffix(mod, status)); mod.setPatternAttributes(UNUM_SIGN_NEVER, false); - assertEquals( - "Pattern a0b;c-0d", - u"c-", - getPrefix(mod, status)); // TODO: What should this behavior be? + // TODO: What should this behavior be? + assertEquals("Pattern a0b;c-0d", u"c-", getPrefix(mod, status)); assertEquals("Pattern a0b;c-0d", u"d", getSuffix(mod, status)); assertSuccess("Spot 5", status); } +void PatternModifierTest::testPatternWithNoPlaceholder() { + UErrorCode status = U_ZERO_ERROR; + MutablePatternModifier mod(false); + ParsedPatternInfo patternInfo; + PatternParser::parseToPatternInfo(u"abc", patternInfo, status); + assertSuccess("Spot 1", status); + mod.setPatternInfo(&patternInfo); + mod.setPatternAttributes(UNUM_SIGN_AUTO, false); + DecimalFormatSymbols symbols(Locale::getEnglish(), status); + CurrencyUnit currency(u"USD", status); + assertSuccess("Spot 2", status); + mod.setSymbols(&symbols, currency, UNUM_UNIT_WIDTH_SHORT, nullptr); + mod.setNumberProperties(1, StandardPlural::Form::COUNT); + + // Unsafe Code Path + NumberStringBuilder nsb; + nsb.append(u"x123y", UNUM_FIELD_COUNT, status); + assertSuccess("Spot 3", status); + mod.apply(nsb, 1, 4, status); + assertSuccess("Spot 4", status); + assertEquals("Unsafe Path", u"xabcy", nsb.toUnicodeString()); + + // Safe Code Path + nsb.clear(); + nsb.append(u"x123y", UNUM_FIELD_COUNT, status); + assertSuccess("Spot 5", status); + MicroProps micros; + LocalPointer imod(mod.createImmutable(status), status); + if (U_FAILURE(status)) { + dataerrln("%s %d Error in ImmutablePatternModifier creation", + __FILE__, __LINE__); + assertSuccess("Spot 6", status); + return; + } + DecimalQuantity quantity; + imod->applyToMicros(micros, quantity); + micros.modMiddle->apply(nsb, 1, 4, status); + assertSuccess("Spot 7", status); + assertEquals("Safe Path", u"xabcy", nsb.toUnicodeString()); +} + void PatternModifierTest::testMutableEqualsImmutable() { UErrorCode status = U_ZERO_ERROR; MutablePatternModifier mod(false); diff --git a/source/test/intltest/numbertest_stringbuilder.cpp b/source/test/intltest/numbertest_stringbuilder.cpp index 323c4bd..76d27e1 100644 --- a/source/test/intltest/numbertest_stringbuilder.cpp +++ b/source/test/intltest/numbertest_stringbuilder.cpp @@ -23,6 +23,7 @@ void NumberStringBuilderTest::runIndexedTest(int32_t index, UBool exec, const ch } TESTCASE_AUTO_BEGIN; TESTCASE_AUTO(testInsertAppendUnicodeString); + TESTCASE_AUTO(testSplice); TESTCASE_AUTO(testInsertAppendCodePoint); TESTCASE_AUTO(testCopy); TESTCASE_AUTO(testFields); @@ -75,6 +76,55 @@ void NumberStringBuilderTest::testInsertAppendUnicodeString() { } } +void NumberStringBuilderTest::testSplice() { + const struct TestCase { + const char16_t* input; + const int32_t startThis; + const int32_t endThis; + } cases[] = { + { u"", 0, 0 }, + { u"abc", 0, 0 }, + { u"abc", 1, 1 }, + { u"abc", 1, 2 }, + { u"abc", 0, 2 }, + { u"abc", 0, 3 }, + { u"lorem ipsum dolor sit amet", 8, 8 }, + { u"lorem ipsum dolor sit amet", 8, 11 }, // 3 chars, equal to replacement "xyz" + { u"lorem ipsum dolor sit amet", 8, 18 } }; // 10 chars, larger than several replacements + + UErrorCode status = U_ZERO_ERROR; + UnicodeString sb1; + NumberStringBuilder sb2; + for (auto cas : cases) { + for (const char16_t* replacementPtr : EXAMPLE_STRINGS) { + UnicodeString replacement(replacementPtr); + + // Test replacement with full string + sb1.remove(); + sb1.append(cas.input); + sb1.replace(cas.startThis, cas.endThis - cas.startThis, replacement); + sb2.clear(); + sb2.append(cas.input, UNUM_FIELD_COUNT, status); + sb2.splice(cas.startThis, cas.endThis, replacement, 0, replacement.length(), UNUM_FIELD_COUNT, status); + assertSuccess("Splicing into sb2 first time", status); + assertEqualsImpl(sb1, sb2); + + // Test replacement with partial string + if (replacement.length() <= 2) { + continue; + } + sb1.remove(); + sb1.append(cas.input); + sb1.replace(cas.startThis, cas.endThis - cas.startThis, UnicodeString(replacement, 1, 2)); + sb2.clear(); + sb2.append(cas.input, UNUM_FIELD_COUNT, status); + sb2.splice(cas.startThis, cas.endThis, replacement, 1, 3, UNUM_FIELD_COUNT, status); + assertSuccess("Splicing into sb2 second time", status); + assertEqualsImpl(sb1, sb2); + } + } +} + void NumberStringBuilderTest::testInsertAppendCodePoint() { static const UChar32 cases[] = { 0, 1, 60, 127, 128, 0x7fff, 0x8000, 0xffff, 0x10000, 0x1f000, 0x10ffff}; @@ -230,7 +280,8 @@ void NumberStringBuilderTest::assertEqualsImpl(const UnicodeString &a, const Num for (int32_t i = 0; i < a.length(); i++) { IntlTest::assertEquals( UnicodeString(u"Char at position ") + Int64ToUnicodeString(i) + - UnicodeString(u" in string ") + a, a.charAt(i), b.charAt(i)); + UnicodeString(u" in \"") + a + UnicodeString("\" versus \"") + + b.toUnicodeString() + UnicodeString("\""), a.charAt(i), b.charAt(i)); } } diff --git a/source/test/intltest/numfmtst.cpp b/source/test/intltest/numfmtst.cpp index fc562f3..c8fce9e 100644 --- a/source/test/intltest/numfmtst.cpp +++ b/source/test/intltest/numfmtst.cpp @@ -42,7 +42,7 @@ #include "unicode/msgfmt.h" #if (U_PLATFORM == U_PF_AIX) || (U_PLATFORM == U_PF_OS390) -// These should not be macros. If they are, +// These should not be macros. If they are, // replace them with std::isnan and std::isinf #if defined(isnan) #undef isnan @@ -229,6 +229,9 @@ static void adjustDecimalFormat( if (tuple.negativeSuffixFlag) { fmt.setNegativeSuffix(tuple.negativeSuffix); } + if (tuple.signAlwaysShownFlag) { + // Not currently supported + } if (tuple.localizedPatternFlag) { UErrorCode status = U_ZERO_ERROR; fmt.applyLocalizedPattern(tuple.localizedPattern, status); @@ -581,8 +584,8 @@ void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &n TESTCASE_AUTO(TestFieldPositionIterator); TESTCASE_AUTO(TestDecimal); TESTCASE_AUTO(TestCurrencyFractionDigits); - TESTCASE_AUTO(TestExponentParse); - TESTCASE_AUTO(TestExplicitParents); + TESTCASE_AUTO(TestExponentParse); + TESTCASE_AUTO(TestExplicitParents); TESTCASE_AUTO(TestLenientParse); TESTCASE_AUTO(TestAvailableNumberingSystems); TESTCASE_AUTO(TestRoundingPattern); @@ -623,6 +626,8 @@ void NumberFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &n TESTCASE_AUTO(Test11649_toPatternWithMultiCurrency); TESTCASE_AUTO(Test13327_numberingSystemBufferOverflow); TESTCASE_AUTO(Test13391_chakmaParsing); + TESTCASE_AUTO(Test11035_FormatCurrencyAmount); + TESTCASE_AUTO(Test11318_DoubleConversion); TESTCASE_AUTO_END; } @@ -1458,19 +1463,19 @@ NumberFormatTest::TestLenientParse(void) Locale en_US("en_US"); Locale sv_SE("sv_SE"); - + NumberFormat *mFormat = NumberFormat::createInstance(sv_SE, UNUM_DECIMAL, status); - + if (mFormat == NULL || U_FAILURE(status)) { dataerrln("Unable to create NumberFormat (sv_SE, UNUM_DECIMAL) - %s", u_errorName(status)); } else { mFormat->setLenient(TRUE); for (int32_t t = 0; t < UPRV_LENGTHOF(lenientMinusTestCases); t += 1) { UnicodeString testCase = ctou(lenientMinusTestCases[t]); - + mFormat->parse(testCase, n, status); logln((UnicodeString)"parse(" + testCase + ") = " + n.getLong()); - + if (U_FAILURE(status) || n.getType() != Formattable::kLong || n.getLong() != -5) { errln((UnicodeString)"Lenient parse failed for \"" + (UnicodeString) lenientMinusTestCases[t] + (UnicodeString) "\""); status = U_ZERO_ERROR; @@ -1478,19 +1483,19 @@ NumberFormatTest::TestLenientParse(void) } delete mFormat; } - + mFormat = NumberFormat::createInstance(en_US, UNUM_DECIMAL, status); - + if (mFormat == NULL || U_FAILURE(status)) { dataerrln("Unable to create NumberFormat (en_US, UNUM_DECIMAL) - %s", u_errorName(status)); } else { mFormat->setLenient(TRUE); for (int32_t t = 0; t < UPRV_LENGTHOF(lenientMinusTestCases); t += 1) { UnicodeString testCase = ctou(lenientMinusTestCases[t]); - + mFormat->parse(testCase, n, status); logln((UnicodeString)"parse(" + testCase + ") = " + n.getLong()); - + if (U_FAILURE(status) || n.getType() != Formattable::kLong || n.getLong() != -5) { errln((UnicodeString)"Lenient parse failed for \"" + (UnicodeString) lenientMinusTestCases[t] + (UnicodeString) "\""); status = U_ZERO_ERROR; @@ -1498,7 +1503,7 @@ NumberFormatTest::TestLenientParse(void) } delete mFormat; } - + NumberFormat *cFormat = NumberFormat::createInstance(en_US, UNUM_CURRENCY, status); if (cFormat == NULL || U_FAILURE(status)) { @@ -1572,10 +1577,10 @@ NumberFormatTest::TestLenientParse(void) // Test cases that should fail with a strict parse and pass with a // lenient parse. NumberFormat *nFormat = NumberFormat::createInstance(en_US, status); - + if (nFormat == NULL || U_FAILURE(status)) { dataerrln("Unable to create NumberFormat (en_US) - %s", u_errorName(status)); - } else { + } else { // first, make sure that they fail with a strict parse for (int32_t t = 0; t < UPRV_LENGTHOF(strictFailureTestCases); t += 1) { UnicodeString testCase = ctou(strictFailureTestCases[t]); @@ -2311,30 +2316,54 @@ void NumberFormatTest::TestCurrencyNames(void) { const UBool possibleDataError = TRUE; // Warning: HARD-CODED LOCALE DATA in this test. If it fails, CHECK // THE LOCALE DATA before diving into the code. - assertEquals("USD.getName(SYMBOL_NAME)", + assertEquals("USD.getName(SYMBOL_NAME, en)", UnicodeString("$"), UnicodeString(ucurr_getName(USD, "en", UCURR_SYMBOL_NAME, &isChoiceFormat, &len, &ec)), possibleDataError); - assertEquals("USD.getName(LONG_NAME)", + assertEquals("USD.getName(NARROW_SYMBOL_NAME, en)", + UnicodeString("$"), + UnicodeString(ucurr_getName(USD, "en", + UCURR_NARROW_SYMBOL_NAME, + &isChoiceFormat, &len, &ec)), + possibleDataError); + assertEquals("USD.getName(LONG_NAME, en)", UnicodeString("US Dollar"), UnicodeString(ucurr_getName(USD, "en", UCURR_LONG_NAME, &isChoiceFormat, &len, &ec)), possibleDataError); - assertEquals("CAD.getName(SYMBOL_NAME)", + assertEquals("CAD.getName(SYMBOL_NAME, en)", UnicodeString("CA$"), UnicodeString(ucurr_getName(CAD, "en", UCURR_SYMBOL_NAME, &isChoiceFormat, &len, &ec)), possibleDataError); - assertEquals("CAD.getName(SYMBOL_NAME)", + assertEquals("CAD.getName(NARROW_SYMBOL_NAME, en)", + UnicodeString("$"), + UnicodeString(ucurr_getName(CAD, "en", + UCURR_NARROW_SYMBOL_NAME, + &isChoiceFormat, &len, &ec)), + possibleDataError); + assertEquals("CAD.getName(SYMBOL_NAME, en_CA)", UnicodeString("$"), UnicodeString(ucurr_getName(CAD, "en_CA", UCURR_SYMBOL_NAME, &isChoiceFormat, &len, &ec)), possibleDataError); + assertEquals("USD.getName(SYMBOL_NAME, en_CA)", + UnicodeString("US$"), + UnicodeString(ucurr_getName(USD, "en_CA", + UCURR_SYMBOL_NAME, + &isChoiceFormat, &len, &ec)), + possibleDataError); + assertEquals("USD.getName(NARROW_SYMBOL_NAME, en_CA)", + UnicodeString("$"), + UnicodeString(ucurr_getName(USD, "en_CA", + UCURR_NARROW_SYMBOL_NAME, + &isChoiceFormat, &len, &ec)), + possibleDataError); assertEquals("USD.getName(SYMBOL_NAME) in en_NZ", UnicodeString("US$"), UnicodeString(ucurr_getName(USD, "en_NZ", @@ -2347,6 +2376,18 @@ void NumberFormatTest::TestCurrencyNames(void) { UCURR_SYMBOL_NAME, &isChoiceFormat, &len, &ec)), possibleDataError); + assertEquals("USX.getName(SYMBOL_NAME)", + UnicodeString("USX"), + UnicodeString(ucurr_getName(USX, "en_US", + UCURR_SYMBOL_NAME, + &isChoiceFormat, &len, &ec)), + possibleDataError); + assertEquals("USX.getName(NARROW_SYMBOL_NAME)", + UnicodeString("USX"), + UnicodeString(ucurr_getName(USX, "en_US", + UCURR_NARROW_SYMBOL_NAME, + &isChoiceFormat, &len, &ec)), + possibleDataError); assertEquals("USX.getName(LONG_NAME)", UnicodeString("USX"), UnicodeString(ucurr_getName(USX, "en_US", @@ -2497,7 +2538,7 @@ void NumberFormatTest::TestSymbolsWithBadLocale(void) { UnicodeString intlCurrencySymbol((UChar)0xa4); intlCurrencySymbol.append((UChar)0xa4); - + logln("Current locale is %s", Locale::getDefault().getName()); Locale::setDefault(locBad, status); logln("Current locale is %s", Locale::getDefault().getName()); @@ -3208,7 +3249,7 @@ void NumberFormatTest::TestCompatibleCurrencies() { expectParseCurrency(*fmtJP, JPY, 1235, "\\u00A51,235"); logln("%s:%d - testing parse of fullwidth yen sign in JP\n", __FILE__, __LINE__); expectParseCurrency(*fmtJP, JPY, 1235, "\\uFFE51,235"); - + // more.. */ } @@ -3228,7 +3269,7 @@ void NumberFormatTest::expectParseCurrency(const NumberFormat &fmt, const UChar* fmt.getLocale(ULOC_ACTUAL_LOCALE, status).getBaseName(), text); u_austrcpy(theInfo+uprv_strlen(theInfo), currency); - + char theOperation[100]; uprv_strcpy(theOperation, theInfo); @@ -3239,7 +3280,7 @@ void NumberFormatTest::expectParseCurrency(const NumberFormat &fmt, const UChar* uprv_strcat(theOperation, ", check currency:"); assertEquals(theOperation, currency, currencyAmount->getISOCurrency()); } - + void NumberFormatTest::TestJB3832(){ const char* localeID = "pt_PT@currency=PTE"; @@ -3672,7 +3713,7 @@ void NumberFormatTest::TestNumberingSystems() { NumberFormat *fmt = (NumberFormat *) origFmt->clone(); delete origFmt; - + if (item->isRBNF) { expect3(*fmt,item->value,CharsToUnicodeString(item->expectedResult)); } else { @@ -4044,7 +4085,7 @@ for (;;) { UErrorCode status = U_ZERO_ERROR; NumberFormat* numFmt = NumberFormat::createInstance(locale, k, status); logln("#%d NumberFormat(%s, %s) Currency=%s\n", - i, localeString, currencyStyleNames[kIndex], + i, localeString, currencyStyleNames[kIndex], currencyISOCode); if (U_FAILURE(status)) { @@ -4063,6 +4104,8 @@ for (;;) { UnicodeString strBuf; numFmt->format(numberToBeFormat, strBuf); + // TODO: Re-enable the following test block. It has been disabled since + // the code was first checked-in (r25497) /* int resultDataIndex = 3 + kIndex; // DATA[i][resultDataIndex] is the currency format result @@ -6802,7 +6845,7 @@ void NumberFormatTest::TestFormatAttributes() { DecimalFormat *decFmt = (DecimalFormat *) NumberFormat::createInstance(locale, UNUM_CURRENCY, status); if (failure(status, "NumberFormat::createInstance", TRUE)) return; double val = 12345.67; - + { int32_t expected[] = { UNUM_CURRENCY_FIELD, 0, 1, @@ -6887,7 +6930,7 @@ const char* attrString(int32_t attrId) { // // Test formatting & parsing of big decimals. -// API test, not a comprehensive test. +// API test, not a comprehensive test. // See DecimalFormatTest/DataDrivenTests // #define ASSERT_SUCCESS(status) {if (U_FAILURE(status)) errln("file %s, line %d: status: %s", \ @@ -7020,7 +7063,7 @@ void NumberFormatTest::TestDecimal() { delete fmtr; } } - + #if U_PLATFORM != U_PF_CYGWIN || defined(CYGWINMSVC) /* * This test fails on Cygwin (1.7.16) using GCC because of a rounding issue with strtod(). @@ -7072,38 +7115,38 @@ void NumberFormatTest::TestCurrencyFractionDigits() { } } -void NumberFormatTest::TestExponentParse() { - - UErrorCode status = U_ZERO_ERROR; - Formattable result; - ParsePosition parsePos(0); - - // set the exponent symbol - status = U_ZERO_ERROR; - DecimalFormatSymbols *symbols = new DecimalFormatSymbols(Locale::getDefault(), status); - if(U_FAILURE(status)) { - dataerrln((UnicodeString)"ERROR: Could not create DecimalFormatSymbols (Default)"); - return; - } - - // create format instance - status = U_ZERO_ERROR; - DecimalFormat fmt("#####", symbols, status); - if(U_FAILURE(status)) { - errln((UnicodeString)"ERROR: Could not create DecimalFormat (pattern, symbols*)"); - } - - // parse the text - fmt.parse("5.06e-27", result, parsePos); - if(result.getType() != Formattable::kDouble && - result.getDouble() != 5.06E-27 && - parsePos.getIndex() != 8 - ) - { - errln("ERROR: parse failed - expected 5.06E-27, 8 - returned %d, %i", - result.getDouble(), parsePos.getIndex()); - } -} +void NumberFormatTest::TestExponentParse() { + + UErrorCode status = U_ZERO_ERROR; + Formattable result; + ParsePosition parsePos(0); + + // set the exponent symbol + status = U_ZERO_ERROR; + DecimalFormatSymbols *symbols = new DecimalFormatSymbols(Locale::getDefault(), status); + if(U_FAILURE(status)) { + dataerrln((UnicodeString)"ERROR: Could not create DecimalFormatSymbols (Default)"); + return; + } + + // create format instance + status = U_ZERO_ERROR; + DecimalFormat fmt("#####", symbols, status); + if(U_FAILURE(status)) { + errln((UnicodeString)"ERROR: Could not create DecimalFormat (pattern, symbols*)"); + } + + // parse the text + fmt.parse("5.06e-27", result, parsePos); + if(result.getType() != Formattable::kDouble && + result.getDouble() != 5.06E-27 && + parsePos.getIndex() != 8 + ) + { + errln("ERROR: parse failed - expected 5.06E-27, 8 - returned %d, %i", + result.getDouble(), parsePos.getIndex()); + } +} void NumberFormatTest::TestExplicitParents() { @@ -7186,13 +7229,13 @@ NumberFormatTest::Test9087(void) { U_STRING_DECL(pattern,"#",1); U_STRING_INIT(pattern,"#",1); - + U_STRING_DECL(infstr,"INF",3); U_STRING_INIT(infstr,"INF",3); U_STRING_DECL(nanstr,"NAN",3); U_STRING_INIT(nanstr,"NAN",3); - + UChar outputbuf[50] = {0}; UErrorCode status = U_ZERO_ERROR; UNumberFormat* fmt = unum_open(UNUM_PATTERN_DECIMAL,pattern,1,NULL,NULL,&status); @@ -7214,7 +7257,7 @@ NumberFormatTest::Test9087(void) UFieldPosition position = { 0, 0, 0}; unum_formatDouble(fmt,inf,outputbuf,50,&position,&status); - + if ( u_strcmp(infstr, outputbuf)) { errln((UnicodeString)"FAIL: unexpected result for infinity - expected " + infstr + " got " + outputbuf); } @@ -7235,7 +7278,7 @@ void NumberFormatTest::TestFormatFastpaths() { } #else infoln("NOTE: UCONFIG_FORMAT_FASTPATHS not set, test skipped."); -#endif +#endif // get some additional case { @@ -7498,9 +7541,9 @@ UBool NumberFormatTest::testFormattableAsUFormattable(const char *file, int line UErrorCode int64ConversionU = U_ZERO_ERROR; int64_t r = ufmt_getInt64(u, &int64ConversionU); - if( (l==r) + if( (l==r) && ( uType != UFMT_INT64 ) // int64 better not overflow - && (U_INVALID_FORMAT_ERROR==int64ConversionU) + && (U_INVALID_FORMAT_ERROR==int64ConversionU) && (U_INVALID_FORMAT_ERROR==int64ConversionF) ) { logln("%s:%d: OK: 64 bit overflow", file, line); } else { @@ -7625,7 +7668,7 @@ void NumberFormatTest::TestSignificantDigits(void) { numberFormat->setMinimumSignificantDigits(3); numberFormat->setMaximumSignificantDigits(5); numberFormat->setGroupingUsed(false); - + UnicodeString result; UnicodeString expectedResult; for (unsigned int i = 0; i < UPRV_LENGTHOF(input); ++i) { @@ -7647,7 +7690,7 @@ void NumberFormatTest::TestShowZero() { numberFormat->setSignificantDigitsUsed(TRUE); numberFormat->setMaximumSignificantDigits(3); - + UnicodeString result; numberFormat->format(0.0, result); if (result != "0") { @@ -7664,7 +7707,7 @@ void NumberFormatTest::TestBug9936() { dataerrln("File %s, Line %d: status = %s.\n", __FILE__, __LINE__, u_errorName(status)); return; } - + if (numberFormat->areSignificantDigitsUsed() == TRUE) { errln("File %s, Line %d: areSignificantDigitsUsed() was TRUE, expected FALSE.\n", __FILE__, __LINE__); } @@ -7688,7 +7731,7 @@ void NumberFormatTest::TestBug9936() { if (numberFormat->areSignificantDigitsUsed() == FALSE) { errln("File %s, Line %d: areSignificantDigitsUsed() was FALSE, expected TRUE.\n", __FILE__, __LINE__); } - + } void NumberFormatTest::TestParseNegativeWithFaLocale() { @@ -7779,7 +7822,7 @@ void NumberFormatTest::TestParseSignsAndMarks() { { "en@numbers=arabext", FALSE, CharsToUnicodeString("\\u200E-\\u200E\\u06F6\\u06F7"), -67 }, { "en@numbers=arabext", TRUE, CharsToUnicodeString("\\u200E-\\u200E\\u06F6\\u06F7"), -67 }, { "en@numbers=arabext", TRUE, CharsToUnicodeString("\\u200E-\\u200E \\u06F6\\u06F7"), -67 }, - + { "he", FALSE, CharsToUnicodeString("12"), 12 }, { "he", TRUE, CharsToUnicodeString("12"), 12 }, { "he", FALSE, CharsToUnicodeString("-23"), -23 }, @@ -7908,7 +7951,7 @@ void NumberFormatTest::Test10468ApplyPattern() { // explicit padding char is specified in the new pattern. fmt.applyPattern("AA#,##0.00ZZ", status); - // Oops this still prints 'a' even though we changed the pattern. + // Oops this still prints 'a' even though we changed the pattern. if (fmt.getPadCharacterString() != UnicodeString(" ")) { errln("applyPattern did not clear padding character."); } @@ -7921,7 +7964,7 @@ void NumberFormatTest::TestRoundingScientific10542() { errcheckln(status, "DecimalFormat constructor failed - %s", u_errorName(status)); return; } - + DecimalFormat::ERoundingMode roundingModes[] = { DecimalFormat::kRoundCeiling, DecimalFormat::kRoundDown, @@ -7938,7 +7981,7 @@ void NumberFormatTest::TestRoundingScientific10542() { "Round half even", "Round half up", "Round up"}; - + { double values[] = {-0.003006, -0.003005, -0.003004, 0.003014, 0.003015, 0.003016}; // The order of these expected values correspond to the order of roundingModes and the order of values. @@ -8231,7 +8274,7 @@ void NumberFormatTest::TestCurrencyUsage() { assertEquals("Test Currency Usage 3", UnicodeString("CA$123.57"), original_rounding); fmt->setCurrencyUsage(UCURR_USAGE_CASH, &status); }else{ - fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_CAD, UNUM_CASH_CURRENCY, status); + fmt = (DecimalFormat *) NumberFormat::createInstance(enUS_CAD, UNUM_CASH_CURRENCY, status); if (assertSuccess("en_US@currency=CAD/CASH", status, TRUE) == FALSE) { continue; } @@ -8632,7 +8675,7 @@ void NumberFormatTest::Test10727_RoundingZero() { DigitList d; d.set(-0.0); assertFalse("", d.isPositive()); - d.round(3); + d.round(3); assertFalse("", d.isPositive()); } @@ -8648,7 +8691,7 @@ void NumberFormatTest::Test11376_getAndSetPositivePrefix() { DecimalFormat *dfmt = (DecimalFormat *) fmt.getAlias(); dfmt->setCurrency(USD); UnicodeString result; - + // This line should be a no-op. I am setting the positive prefix // to be the same thing it was before. dfmt->setPositivePrefix(dfmt->getPositivePrefix(result)); @@ -8772,7 +8815,7 @@ void NumberFormatTest::Test11649_toPatternWithMultiCurrency() { static UChar USD[] = {0x55, 0x53, 0x44, 0x0}; fmt.setCurrency(USD); UnicodeString appendTo; - + assertEquals("", "US dollars 12.34", fmt.format(12.34, appendTo)); UnicodeString topattern; @@ -8782,7 +8825,7 @@ void NumberFormatTest::Test11649_toPatternWithMultiCurrency() { return; } fmt2.setCurrency(USD); - + appendTo.remove(); assertEquals("", "US dollars 12.34", fmt2.format(12.34, appendTo)); } @@ -8883,4 +8926,49 @@ void NumberFormatTest::checkExceptionIssue11735() { assertEquals("Issue11735 ppos", 0, ppos.getIndex()); } +void NumberFormatTest::Test11035_FormatCurrencyAmount() { + UErrorCode status = U_ZERO_ERROR; + double amount = 12345.67; + const char16_t* expected = u"12,345$67 ​"; + + // Test two ways to set a currency via API + + Locale loc1 = Locale("pt_PT"); + LocalPointer fmt1(NumberFormat::createCurrencyInstance("loc1", status), + status); + if (U_FAILURE(status)) { + dataerrln("%s %d NumberFormat instance fmt1 is null", __FILE__, __LINE__); + return; + } + fmt1->setCurrency(u"PTE", status); + assertSuccess("Setting currency on fmt1", status); + UnicodeString actualSetCurrency; + fmt1->format(amount, actualSetCurrency); + + Locale loc2 = Locale("pt_PT@currency=PTE"); + LocalPointer fmt2(NumberFormat::createCurrencyInstance(loc2, status)); + assertSuccess("Creating fmt2", status); + UnicodeString actualLocaleString; + fmt2->format(amount, actualLocaleString); + + // TODO: The following test will fail until DecimalFormat wraps NumberFormatter. + if (!logKnownIssue("13574")) { + assertEquals("Custom Currency Pattern, Set Currency", expected, actualSetCurrency); + } +} + +void NumberFormatTest::Test11318_DoubleConversion() { + IcuTestErrorCode status(*this, "Test11318_DoubleConversion"); + LocalPointer nf(NumberFormat::createInstance("en", status), status); + if (U_FAILURE(status)) { + dataerrln("%s %d Error in NumberFormat instance creation", __FILE__, __LINE__); + return; + } + nf->setMaximumFractionDigits(40); + nf->setMaximumIntegerDigits(40); + UnicodeString appendTo; + nf->format(999999999999999.9, appendTo); + assertEquals("Should render all digits", u"999,999,999,999,999.9", appendTo); +} + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/numfmtst.h b/source/test/intltest/numfmtst.h index 8477fcb..c212bea 100644 --- a/source/test/intltest/numfmtst.h +++ b/source/test/intltest/numfmtst.h @@ -219,6 +219,8 @@ class NumberFormatTest: public CalendarTimeZoneTest { void Test13391_chakmaParsing(); void checkExceptionIssue11735(); + void Test11035_FormatCurrencyAmount(); + void Test11318_DoubleConversion(); private: UBool testFormattableAsUFormattable(const char *file, int line, Formattable &f); diff --git a/source/test/intltest/rbbiapts.cpp b/source/test/intltest/rbbiapts.cpp index 1a87290..fa6ea06 100644 --- a/source/test/intltest/rbbiapts.cpp +++ b/source/test/intltest/rbbiapts.cpp @@ -1035,7 +1035,7 @@ void RBBIAPITest::RoundtripRule(const char *dataFile) { builtRules = (const uint8_t *)udata_getMemory(data.getAlias()); builtSource = (const UChar *)(builtRules + ((RBBIDataHeader*)builtRules)->fRuleSource); - RuleBasedBreakIterator *brkItr = new RuleBasedBreakIterator(builtSource, parseError, status); + LocalPointer brkItr (new RuleBasedBreakIterator(builtSource, parseError, status)); if (U_FAILURE(status)) { errln("%s:%d createRuleBasedBreakIterator: ICU Error \"%s\" at line %d, column %d\n", __FILE__, __LINE__, u_errorName(status), parseError.line, parseError.offset); @@ -1048,7 +1048,6 @@ void RBBIAPITest::RoundtripRule(const char *dataFile) { errln("%s:%d Built rules and rebuilt rules are different %s", __FILE__, __LINE__, dataFile); return; } - delete brkItr; } void RBBIAPITest::TestRoundtripRules() { diff --git a/source/test/intltest/rbbitst.cpp b/source/test/intltest/rbbitst.cpp index 2503862..0278516 100644 --- a/source/test/intltest/rbbitst.cpp +++ b/source/test/intltest/rbbitst.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include "unicode/brkiter.h" #include "unicode/localpointer.h" @@ -39,10 +40,12 @@ #include "cstr.h" #include "intltest.h" #include "rbbitst.h" +#include "rbbidata.h" #include "utypeinfo.h" // for 'typeid' to work #include "uvector.h" #include "uvectr32.h" + #if !UCONFIG_NO_FILTERED_BREAK_ITERATION #include "unicode/filteredbrk.h" #endif // !UCONFIG_NO_FILTERED_BREAK_ITERATION @@ -75,7 +78,6 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha #endif #if !UCONFIG_NO_FILE_IO TESTCASE_AUTO(TestUnicodeFiles); - TESTCASE_AUTO(TestEmptyString); #endif TESTCASE_AUTO(TestGetAvailableLocales); TESTCASE_AUTO(TestGetDisplayName); @@ -106,151 +108,13 @@ void RBBITest::runIndexedTest( int32_t index, UBool exec, const char* &name, cha TESTCASE_AUTO(TestBug12932); TESTCASE_AUTO(TestEmoji); TESTCASE_AUTO(TestBug12519); + TESTCASE_AUTO(TestBug12677); + TESTCASE_AUTO(TestTableRedundancies); + TESTCASE_AUTO(TestBug13447); TESTCASE_AUTO_END; } -//--------------------------------------------------------------------------- -// -// class BITestData Holds a set of Break iterator test data and results -// Includes -// - the string data to be broken -// - a vector of the expected break positions. -// - a vector of source line numbers for the data, -// (to help see where errors occured.) -// - The expected break tag values. -// - Vectors of actual break positions and tag values. -// - Functions for comparing actual with expected and -// reporting errors. -// -//---------------------------------------------------------------------------- -class BITestData { -public: - UnicodeString fDataToBreak; - UVector fExpectedBreakPositions; - UVector fExpectedTags; - UVector fLineNum; - UVector fActualBreakPositions; // Test Results. - UVector fActualTags; - - BITestData(UErrorCode &status); - void addDataChunk(const char *data, int32_t tag, int32_t lineNum, UErrorCode status); - void checkResults(const char *heading, RBBITest *test); - void err(const char *heading, RBBITest *test, int32_t expectedIdx, int32_t actualIdx); - void clearResults(); -}; - -// -// Constructor. -// -BITestData::BITestData(UErrorCode &status) -: fExpectedBreakPositions(status), fExpectedTags(status), fLineNum(status), fActualBreakPositions(status), - fActualTags(status) -{ -} - -// -// addDataChunk. Add a section (non-breaking) piece if data to the test data. -// The macro form collects the line number, which is helpful -// when tracking down failures. -// -// A null data item is inserted at the start of each test's data -// to put the starting zero into the data list. The position saved for -// each non-null item is its ending position. -// -#define ADD_DATACHUNK(td, data, tag, status) td.addDataChunk(data, tag, __LINE__, status); -void BITestData::addDataChunk(const char *data, int32_t tag, int32_t lineNum, UErrorCode status) { - if (U_FAILURE(status)) {return;} - if (data != NULL) { - fDataToBreak.append(CharsToUnicodeString(data)); - } - fExpectedBreakPositions.addElement(fDataToBreak.length(), status); - fExpectedTags.addElement(tag, status); - fLineNum.addElement(lineNum, status); -} - - -// -// checkResults. Compare the actual and expected break positions, report any differences. -// -void BITestData::checkResults(const char *heading, RBBITest *test) { - int32_t expectedIndex = 0; - int32_t actualIndex = 0; - - for (;;) { - // If we've run through both the expected and actual results vectors, we're done. - // break out of the loop. - if (expectedIndex >= fExpectedBreakPositions.size() && - actualIndex >= fActualBreakPositions.size()) { - break; - } - - - if (expectedIndex >= fExpectedBreakPositions.size()) { - err(heading, test, expectedIndex-1, actualIndex); - actualIndex++; - continue; - } - - if (actualIndex >= fActualBreakPositions.size()) { - err(heading, test, expectedIndex, actualIndex-1); - expectedIndex++; - continue; - } - - if (fActualBreakPositions.elementAti(actualIndex) != fExpectedBreakPositions.elementAti(expectedIndex)) { - err(heading, test, expectedIndex, actualIndex); - // Try to resync the positions of the indices, to avoid a rash of spurious erros. - if (fActualBreakPositions.elementAti(actualIndex) < fExpectedBreakPositions.elementAti(expectedIndex)) { - actualIndex++; - } else { - expectedIndex++; - } - continue; - } - - if (fActualTags.elementAti(actualIndex) != fExpectedTags.elementAti(expectedIndex)) { - test->errln("%s, tag mismatch. Test Line = %d, expected tag=%d, got %d", - heading, fLineNum.elementAt(expectedIndex), - fExpectedTags.elementAti(expectedIndex), fActualTags.elementAti(actualIndex)); - } - - actualIndex++; - expectedIndex++; - } -} - -// -// err - An error was found. Report it, along with information about where the -// incorrectly broken test data appeared in the source file. -// -void BITestData::err(const char *heading, RBBITest *test, int32_t expectedIdx, int32_t actualIdx) -{ - int32_t expected = fExpectedBreakPositions.elementAti(expectedIdx); - int32_t actual = fActualBreakPositions.elementAti(actualIdx); - int32_t o = 0; - int32_t line = fLineNum.elementAti(expectedIdx); - if (expectedIdx > 0) { - // The line numbers are off by one because a premature break occurs somewhere - // within the previous item, rather than at the start of the current (expected) item. - // We want to report the offset of the unexpected break from the start of - // this previous item. - o = actual - fExpectedBreakPositions.elementAti(expectedIdx-1); - } - if (actual < expected) { - test->errln("%s unexpected break at offset %d in test item from line %d. actual break: %d expected break: %d", heading, o, line, actual, expected); - } else { - test->errln("%s Failed to find break at end of item from line %d. actual break: %d expected break: %d", heading, line, actual, expected); - } -} - - -void BITestData::clearResults() { - fActualBreakPositions.removeAllElements(); - fActualTags.removeAllElements(); -} - - //-------------------------------------------------------------------------------------- // // RBBITest constructor and destructor @@ -345,277 +209,12 @@ void RBBITest::TestBug3818() { delete bi; } -//---------------------------------------------------------------------------- -// -// generalIteratorTest Given a break iterator and a set of test data, -// Run the tests and report the results. -// -//---------------------------------------------------------------------------- -void RBBITest::generalIteratorTest(RuleBasedBreakIterator& bi, BITestData &td) -{ - - bi.setText(td.fDataToBreak); - - testFirstAndNext(bi, td); - - testLastAndPrevious(bi, td); - - testFollowing(bi, td); - testPreceding(bi, td); - testIsBoundary(bi, td); - doMultipleSelectionTest(bi, td); -} - - -// -// testFirstAndNext. Run the iterator forwards in the obvious first(), next() -// kind of loop. -// -void RBBITest::testFirstAndNext(RuleBasedBreakIterator& bi, BITestData &td) -{ - UErrorCode status = U_ZERO_ERROR; - int32_t p; - int32_t lastP = -1; - int32_t tag; - - logln("Test first and next"); - bi.setText(td.fDataToBreak); - td.clearResults(); - - for (p=bi.first(); p!=RuleBasedBreakIterator::DONE; p=bi.next()) { - td.fActualBreakPositions.addElement(p, status); // Save result. - tag = bi.getRuleStatus(); - td.fActualTags.addElement(tag, status); - if (p <= lastP) { - // If the iterator is not making forward progress, stop. - // No need to raise an error here, it'll be detected in the normal check of results. - break; - } - lastP = p; - } - td.checkResults("testFirstAndNext", this); -} - - -// -// TestLastAndPrevious. Run the iterator backwards, starting with last(). -// -void RBBITest::testLastAndPrevious(RuleBasedBreakIterator& bi, BITestData &td) -{ - UErrorCode status = U_ZERO_ERROR; - int32_t p; - int32_t lastP = 0x7ffffffe; - int32_t tag; - - logln("Test last and previous"); - bi.setText(td.fDataToBreak); - td.clearResults(); - - for (p=bi.last(); p!=RuleBasedBreakIterator::DONE; p=bi.previous()) { - // Save break position. Insert it at start of vector of results, shoving - // already-saved results further towards the end. - td.fActualBreakPositions.insertElementAt(p, 0, status); - // bi.previous(); // TODO: Why does this fix things up???? - // bi.next(); - tag = bi.getRuleStatus(); - td.fActualTags.insertElementAt(tag, 0, status); - if (p >= lastP) { - // If the iterator is not making progress, stop. - // No need to raise an error here, it'll be detected in the normal check of results. - break; - } - lastP = p; - } - td.checkResults("testLastAndPrevious", this); -} - - -void RBBITest::testFollowing(RuleBasedBreakIterator& bi, BITestData &td) -{ - UErrorCode status = U_ZERO_ERROR; - int32_t p; - int32_t tag; - int32_t lastP = -2; // A value that will never be returned as a break position. - // cannot be -1; that is returned for DONE. - int i; - - logln("testFollowing():"); - bi.setText(td.fDataToBreak); - td.clearResults(); - - // Save the starting point, since we won't get that out of following. - p = bi.first(); - td.fActualBreakPositions.addElement(p, status); // Save result. - tag = bi.getRuleStatus(); - td.fActualTags.addElement(tag, status); - - for (i = 0; i <= td.fDataToBreak.length()+1; i++) { - p = bi.following(i); - if (p != lastP) { - if (p == RuleBasedBreakIterator::DONE) { - break; - } - // We've reached a new break position. Save it. - td.fActualBreakPositions.addElement(p, status); // Save result. - tag = bi.getRuleStatus(); - td.fActualTags.addElement(tag, status); - lastP = p; - } - } - // The loop normally exits by means of the break in the middle. - // Make sure that the index was at the correct position for the break iterator to have - // returned DONE. - if (i != td.fDataToBreak.length()) { - errln("testFollowing(): iterator returned DONE prematurely."); - } - - // Full check of all results. - td.checkResults("testFollowing", this); -} - - - -void RBBITest::testPreceding(RuleBasedBreakIterator& bi, BITestData &td) { - UErrorCode status = U_ZERO_ERROR; - int32_t p; - int32_t tag; - int32_t lastP = 0x7ffffffe; - int i; - - logln("testPreceding():"); - bi.setText(td.fDataToBreak); - td.clearResults(); - - p = bi.last(); - td.fActualBreakPositions.addElement(p, status); - tag = bi.getRuleStatus(); - td.fActualTags.addElement(tag, status); - - for (i = td.fDataToBreak.length(); i>=-1; i--) { - p = bi.preceding(i); - if (p != lastP) { - if (p == RuleBasedBreakIterator::DONE) { - break; - } - // We've reached a new break position. Save it. - td.fActualBreakPositions.insertElementAt(p, 0, status); - lastP = p; - tag = bi.getRuleStatus(); - td.fActualTags.insertElementAt(tag, 0, status); - } - } - // The loop normally exits by means of the break in the middle. - // Make sure that the index was at the correct position for the break iterator to have - // returned DONE. - if (i != 0) { - errln("testPreceding(): iterator returned DONE prematurely."); - } - - // Full check of all results. - td.checkResults("testPreceding", this); -} - - - -void RBBITest::testIsBoundary(RuleBasedBreakIterator& bi, BITestData &td) { - UErrorCode status = U_ZERO_ERROR; - int i; - int32_t tag; - - logln("testIsBoundary():"); - bi.setText(td.fDataToBreak); - td.clearResults(); - - for (i = 0; i <= td.fDataToBreak.length(); i++) { - if (bi.isBoundary(i)) { - td.fActualBreakPositions.addElement(i, status); // Save result. - tag = bi.getRuleStatus(); - td.fActualTags.addElement(tag, status); - } - } - td.checkResults("testIsBoundary: ", this); -} - - - -void RBBITest::doMultipleSelectionTest(RuleBasedBreakIterator& iterator, BITestData &td) -{ - iterator.setText(td.fDataToBreak); - - RuleBasedBreakIterator* testIterator =(RuleBasedBreakIterator*)iterator.clone(); - int32_t offset = iterator.first(); - int32_t testOffset; - int32_t count = 0; - - logln("doMultipleSelectionTest text of length: %d", td.fDataToBreak.length()); - - if (*testIterator != iterator) - errln("clone() or operator!= failed: two clones compared unequal"); - - do { - testOffset = testIterator->first(); - testOffset = testIterator->next(count); - if (offset != testOffset) - errln(UnicodeString("next(n) and next() not returning consistent results: for step ") + count + ", next(n) returned " + testOffset + " and next() had " + offset); - - if (offset != RuleBasedBreakIterator::DONE) { - count++; - offset = iterator.next(); - - if (offset != RuleBasedBreakIterator::DONE && *testIterator == iterator) { - errln("operator== failed: Two unequal iterators compared equal. count=%d offset=%d", count, offset); - if (count > 10000 || offset == -1) { - errln("operator== failed too many times. Stopping test."); - if (offset == -1) { - errln("Does (RuleBasedBreakIterator::DONE == -1)?"); - } - return; - } - } - } - } while (offset != RuleBasedBreakIterator::DONE); - - // now do it backwards... - offset = iterator.last(); - count = 0; - - do { - testOffset = testIterator->last(); - testOffset = testIterator->next(count); // next() with a negative arg is same as previous - if (offset != testOffset) - errln(UnicodeString("next(n) and next() not returning consistent results: for step ") + count + ", next(n) returned " + testOffset + " and next() had " + offset); - - if (offset != RuleBasedBreakIterator::DONE) { - count--; - offset = iterator.previous(); - } - } while (offset != RuleBasedBreakIterator::DONE); - - delete testIterator; -} - //--------------------------------------------- // // other tests // //--------------------------------------------- -void RBBITest::TestEmptyString() -{ - UnicodeString text = ""; - UErrorCode status = U_ZERO_ERROR; - - BITestData x(status); - ADD_DATACHUNK(x, "", 0, status); // Break at start of data - RuleBasedBreakIterator* bi = (RuleBasedBreakIterator *)BreakIterator::createLineInstance(Locale::getDefault(), status); - if (U_FAILURE(status)) - { - errcheckln(status, "Failed to create the BreakIterator for default locale in TestEmptyString. - %s", u_errorName(status)); - return; - } - generalIteratorTest(*bi, x); - delete bi; -} void RBBITest::TestGetAvailableLocales() { @@ -4843,6 +4442,102 @@ void RBBITest::TestBug12519() { assertTrue(WHERE "after assignment of \"biDe = biFr\", they should be equal, but are not.", *biFr == *biDe); } +void RBBITest::TestBug12677() { + // Check that stripping of comments from rules for getRules() is not confused by + // the presence of '#' characters in the rules that do not introduce comments. + UnicodeString rules(u"!!forward; \n" + "$x = [ab#]; # a set with a # literal. \n" + " # .; # a comment that looks sort of like a rule. \n" + " '#' '?'; # a rule with a quoted # \n" + ); + + UErrorCode status = U_ZERO_ERROR; + UParseError pe; + RuleBasedBreakIterator bi(rules, pe, status); + assertSuccess(WHERE, status); + UnicodeString rtRules = bi.getRules(); + assertEquals(WHERE, UnicodeString(u"!!forward; $x = [ab#]; '#' '?'; "), rtRules); +} + + +void RBBITest::TestTableRedundancies() { + UErrorCode status = U_ZERO_ERROR; + + LocalPointer bi ( + (RuleBasedBreakIterator *)BreakIterator::createLineInstance(Locale::getEnglish(), status)); + assertSuccess(WHERE, status); + if (U_FAILURE(status)) return; + + RBBIDataWrapper *dw = bi->fData; + const RBBIStateTable *fwtbl = dw->fForwardTable; + int32_t numCharClasses = dw->fHeader->fCatCount; + // printf("Char Classes: %d states: %d\n", numCharClasses, fwtbl->fNumStates); + + // Check for duplicate columns (character categories) + + std::vector columns; + for (int32_t column = 0; column < numCharClasses; column++) { + UnicodeString s; + for (int32_t r = 1; r < (int32_t)fwtbl->fNumStates; r++) { + RBBIStateTableRow *row = (RBBIStateTableRow *) (fwtbl->fTableData + (fwtbl->fRowLen * r)); + s.append(row->fNextState[column]); + } + columns.push_back(s); + } + // Ignore column (char class) 0 while checking; it's special, and may have duplicates. + for (int c1=1; c1 rows; + for (int32_t r=0; r < (int32_t)fwtbl->fNumStates; r++) { + UnicodeString s; + RBBIStateTableRow *row = (RBBIStateTableRow *) (fwtbl->fTableData + (fwtbl->fRowLen * r)); + assertTrue(WHERE, row->fAccepting >= -1); + s.append(row->fAccepting + 1); // values of -1 are expected. + s.append(row->fLookAhead); + s.append(row->fTagIdx); + for (int32_t column = 0; column < numCharClasses; column++) { + s.append(row->fNextState[column]); + } + rows.push_back(s); + } + for (int r1=0; r1 < (int32_t)fwtbl->fNumStates; r1++) { + for (int r2 = r1+1; r2 < (int32_t)fwtbl->fNumStates; r2++) { + if (rows.at(r1) == rows.at(r2)) { + errln("%s:%d Duplicate rows (%d, %d)\n", __FILE__, __LINE__, r1, r2); + return; + } + } + } +} + +// Bug 13447: verify that getRuleStatus() returns the value corresponding to current(), +// even after next() has returned DONE. + +void RBBITest::TestBug13447() { + UErrorCode status = U_ZERO_ERROR; + LocalPointer bi( + (RuleBasedBreakIterator *)BreakIterator::createWordInstance(Locale::getEnglish(), status)); + assertSuccess(WHERE, status); + if (U_FAILURE(status)) return; + UnicodeString data(u"1234"); + bi->setText(data); + assertEquals(WHERE, UBRK_WORD_NONE, bi->getRuleStatus()); + assertEquals(WHERE, 4, bi->next()); + assertEquals(WHERE, UBRK_WORD_NUMBER, bi->getRuleStatus()); + assertEquals(WHERE, UBRK_DONE, bi->next()); + assertEquals(WHERE, 4, bi->current()); + assertEquals(WHERE, UBRK_WORD_NUMBER, bi->getRuleStatus()); +} + // // TestDebug - A place-holder test for debugging purposes. // For putting in fragments of other tests that can be invoked diff --git a/source/test/intltest/rbbitst.h b/source/test/intltest/rbbitst.h index ba3c5b9..21fdfb9 100644 --- a/source/test/intltest/rbbitst.h +++ b/source/test/intltest/rbbitst.h @@ -41,7 +41,6 @@ public: void runIndexedTest( int32_t index, UBool exec, const char* &name, char* par = NULL ); - void TestEmptyString(); void TestGetAvailableLocales(); void TestGetDisplayName(); void TestEndBehaviour(); @@ -75,6 +74,9 @@ public: void TestBug12932(); void TestEmoji(); void TestBug12519(); + void TestBug12677(); + void TestTableRedundancies(); + void TestBug13447(); void TestDebug(); void TestProperties(); @@ -85,40 +87,6 @@ private: * internal methods to prepare test data **/ - /** - * Perform tests of BreakIterator forward and backward functionality - * on different kinds of iterators (word, sentence, line and character). - * It tests the methods first(), next(), current(), preceding(), following() - * previous() and isBoundary(). - * It makes use of internal functions to achieve this. - **/ - void generalIteratorTest(RuleBasedBreakIterator& bi, BITestData &td); - /** - * Internal method to perform iteration and test the first() and next() functions - **/ - void testFirstAndNext(RuleBasedBreakIterator& bi, BITestData &td); - /** - * Internal method to perform iteration and test the last() and previous() functions - **/ - void testLastAndPrevious(RuleBasedBreakIterator& bi, BITestData &td); - /** - * Internal method to perform iteration and test the following() function - **/ - void testFollowing(RuleBasedBreakIterator& bi, BITestData &td); - /** - * Internal method to perform iteration and test the preceding() function - **/ - void testPreceding(RuleBasedBreakIterator& bi, BITestData &td); - /** - * Internal method to perform iteration and test the isBoundary() function - **/ - void testIsBoundary(RuleBasedBreakIterator& bi, BITestData &td); - /** - * Internal method to perform tests of BreakIterator multiple selection functionality - * on different kinds of iterators (word, sentence, line and character) - **/ - void doMultipleSelectionTest(RuleBasedBreakIterator& iterator, BITestData &td); - void RunMonkey(BreakIterator *bi, RBBIMonkeyKind &mk, const char *name, uint32_t seed, int32_t loopCount, UBool useUText); diff --git a/source/test/intltest/regextst.cpp b/source/test/intltest/regextst.cpp index 398bc68..4b0a2f4 100644 --- a/source/test/intltest/regextst.cpp +++ b/source/test/intltest/regextst.cpp @@ -39,6 +39,7 @@ #include "unicode/ustring.h" #include "unicode/utext.h" #include "unicode/utf16.h" +#include "cstr.h" #include "regextst.h" #include "regexcmp.h" #include "uvector.h" @@ -101,6 +102,8 @@ void RegexTest::runIndexedTest( int32_t index, UBool exec, const char* &name, ch TESTCASE_AUTO(NamedCapture); TESTCASE_AUTO(NamedCaptureLimits); TESTCASE_AUTO(TestBug12884); + TESTCASE_AUTO(TestBug13631); + TESTCASE_AUTO(TestBug13632); TESTCASE_AUTO_END; } @@ -5806,4 +5809,46 @@ void RegexTest::TestBug12884() { REGEX_ASSERT(status == U_REGEX_TIME_OUT); } +// Bug 13631. A find() of a pattern with a zero length look-behind assertions +// can cause a read past the end of the input text. +// The failure is seen when running this test with Clang's Addresss Sanitizer. + +void RegexTest::TestBug13631() { + const UChar *pats[] = { u"(? + (DecimalFormatSymbols::kOneDigitSymbol + i - 1); + symbols.setSymbol(key, UnicodeString(osmanyaDigitStrings[i]), FALSE); + } + // NOTE: in ICU4J, the calculation of codePointZero is smarter; + // in ICU4C, it is more conservative and is only set if propogateDigits is true. + if (-1 != symbols.getCodePointZero()) { + errln("ERROR: Code point zero be invalid"); + } + for (int32_t i=0; i<=9; i++) { + assertEquals(UnicodeString("ii. Osmanya digit at index ") + Int64ToUnicodeString(i), + UnicodeString(osmanyaDigitStrings[i]), + symbols.getConstDigitSymbol(i)); + } + + // Check Osmanya codePointZero + symbols.setSymbol( + DecimalFormatSymbols::kZeroDigitSymbol, + UnicodeString(osmanyaDigitStrings[0]), TRUE); + if (osmanyaZero != symbols.getCodePointZero()) { + errln("ERROR: Code point zero be Osmanya code point zero"); + } + for (int32_t i=0; i<=9; i++) { + assertEquals(UnicodeString("iii. Osmanya digit at index ") + Int64ToUnicodeString(i), + UnicodeString(osmanyaDigitStrings[i]), + symbols.getConstDigitSymbol(i)); + } + + // Check after copy + DecimalFormatSymbols copy(symbols); + if (osmanyaZero != copy.getCodePointZero()) { + errln("ERROR: Code point zero be Osmanya code point zero"); + } + for (int32_t i=0; i<=9; i++) { + assertEquals(UnicodeString("iv. After copy at index ") + Int64ToUnicodeString(i), + UnicodeString(osmanyaDigitStrings[i]), + copy.getConstDigitSymbol(i)); + } + + // Check when loaded from resource bundle + DecimalFormatSymbols fromData(Locale("en@numbers=osma"), status); + if (osmanyaZero != fromData.getCodePointZero()) { + errln("ERROR: Code point zero be Osmanya code point zero"); + } + for (int32_t i=0; i<=9; i++) { + assertEquals(UnicodeString("v. Resource bundle at index ") + Int64ToUnicodeString(i), + UnicodeString(osmanyaDigitStrings[i]), + fromData.getConstDigitSymbol(i)); + } + + // Setting a digit somewhere in the middle should invalidate codePointZero + symbols.setSymbol(DecimalFormatSymbols::kOneDigitSymbol, u"foo", FALSE); + if (-1 != symbols.getCodePointZero()) { + errln("ERROR: Code point zero be invalid"); + } + + // Reset digits to Latin + symbols.setSymbol( + DecimalFormatSymbols::kZeroDigitSymbol, + UnicodeString(defZero)); + if (defZero != symbols.getCodePointZero()) { + errln("ERROR: Code point zero be ASCII 0"); + } + for (int32_t i=0; i<=9; i++) { + assertEquals(UnicodeString("vi. ASCII Digit at index ") + Int64ToUnicodeString(i), + UnicodeString(u'0' + i), + symbols.getConstDigitSymbol(i)); + } +} + void IntlTestDecimalFormatSymbols::testNumberingSystem() { IcuTestErrorCode errorCode(*this, "testNumberingSystem"); struct testcase { diff --git a/source/test/intltest/tsdcfmsy.h b/source/test/intltest/tsdcfmsy.h index 1fd1dfd..1922941 100644 --- a/source/test/intltest/tsdcfmsy.h +++ b/source/test/intltest/tsdcfmsy.h @@ -28,6 +28,7 @@ private: */ void testSymbols(/*char *par*/); void testLastResortData(); + void testDigitSymbols(); void testNumberingSystem(); /** helper functions**/ diff --git a/source/test/intltest/tsmthred.cpp b/source/test/intltest/tsmthred.cpp index 036d5e1..1a717e3 100644 --- a/source/test/intltest/tsmthred.cpp +++ b/source/test/intltest/tsmthred.cpp @@ -448,7 +448,8 @@ struct FormatThreadTestData // "Someone from {2} is receiving a #{0} error - {1}. Their telephone call is costing {3 number,currency}." static void formatErrorMessage(UErrorCode &realStatus, const UnicodeString& pattern, const Locale& theLocale, - UErrorCode inStatus0, /* statusString 1 */ const Locale &inCountry2, double currency3, // these numbers are the message arguments. + UErrorCode inStatus0, // statusString 1 + const Locale &inCountry2, double currency3, // these numbers are the message arguments. UnicodeString &result) { if(U_FAILURE(realStatus)) @@ -666,13 +667,13 @@ public: // Keep this data here to avoid static initialization. FormatThreadTestData kNumberFormatTestData[] = { - FormatThreadTestData((double)5.0, UnicodeString("5", "")), - FormatThreadTestData( 6.0, UnicodeString("6", "")), - FormatThreadTestData( 20.0, UnicodeString("20", "")), - FormatThreadTestData( 8.0, UnicodeString("8", "")), - FormatThreadTestData( 8.3, UnicodeString("8.3", "")), - FormatThreadTestData( 12345, UnicodeString("12,345", "")), - FormatThreadTestData( 81890.23, UnicodeString("81,890.23", "")), + FormatThreadTestData((double)5.0, UnicodeString(u"5")), + FormatThreadTestData( 6.0, UnicodeString(u"6")), + FormatThreadTestData( 20.0, UnicodeString(u"20")), + FormatThreadTestData( 8.0, UnicodeString(u"8")), + FormatThreadTestData( 8.3, UnicodeString(u"8.3")), + FormatThreadTestData( 12345, UnicodeString(u"12,345")), + FormatThreadTestData( 81890.23, UnicodeString(u"81,890.23")), }; int32_t kNumberFormatTestDataLength = UPRV_LENGTHOF(kNumberFormatTestData); @@ -1388,7 +1389,7 @@ const UCTMultiThreadItem *LocaleCacheKey::createObject( } else { result->addRef(); } - + // Log that we created an object. The first object was already counted, // don't do it again. umtx_lock(&gCTMutex); @@ -1451,7 +1452,7 @@ void UnifiedCacheThread::exerciseByLocale(const Locale &locale) { void UnifiedCacheThread::run() { // Run the exercise with 2 different locales so that we can exercise - // eviction more. If each thread exerices just one locale, then + // eviction more. If each thread exercises just one locale, then // eviction can't start until the threads end. exerciseByLocale(fLoc); exerciseByLocale(fLoc2); diff --git a/source/test/intltest/tzregts.cpp b/source/test/intltest/tzregts.cpp index b749c2d..c5f59d9 100644 --- a/source/test/intltest/tzregts.cpp +++ b/source/test/intltest/tzregts.cpp @@ -12,6 +12,7 @@ #include "unicode/simpletz.h" #include "unicode/smpdtfmt.h" #include "unicode/strenum.h" +#include "unicode/gregocal.h" #include "tzregts.h" #include "calregts.h" #include "cmemory.h" @@ -46,6 +47,7 @@ TimeZoneRegressionTest::runIndexedTest( int32_t index, UBool exec, const char* & CASE(16, TestJDK12API); CASE(17, Test4176686); CASE(18, Test4184229); + CASE(19, TestNegativeDaylightSaving); default: name = ""; break; } } @@ -709,10 +711,10 @@ TimeZoneRegressionTest::Test4154525() int32_t DATA [] = { 1, GOOD, 0, BAD, - -1, BAD, + -1, GOOD, // #13566 updates SimpleTimeZone to support negative DST saving amount 60*60*1000, GOOD, - INT32_MIN, BAD, - // Integer.MAX_VALUE, ?, // no upper limit on DST savings at this time + INT32_MAX, GOOD, // no upper limit on DST savings at this time + INT32_MIN, GOOD // no lower limit as well }; UErrorCode status = U_ZERO_ERROR; @@ -1206,4 +1208,61 @@ void TimeZoneRegressionTest::Test4184229() { delete zone; } +void TimeZoneRegressionTest::TestNegativeDaylightSaving() { + UErrorCode status = U_ZERO_ERROR; + int32_t stdOff = 1 * 60*60*1000; // Standard offset UTC+1 + int save = -1 * 60*60*1000; // DST saving amount -1 hour + SimpleTimeZone stzDublin(stdOff, "Dublin-2018", + UCAL_OCTOBER, -1, -UCAL_SUNDAY, 2*60*60*1000, + UCAL_MARCH, -1, -UCAL_SUNDAY, 1*60*60*1000, + save, status); + failure(status, "SimpleTimeZone constructor"); + + if (save != stzDublin.getDSTSavings()) { + errln((UnicodeString)"FAIL: DST saving is not " + save); + } + + GregorianCalendar cal(* TimeZone::getGMT(), status); + failure(status, "GregorianCalendar constructor"); + + UDate testDate; + int32_t rawOffset; + int32_t dstOffset; + + cal.set(2018, UCAL_JANUARY, 15, 0, 0, 0); + testDate = cal.getTime(status); + failure(status, "calendar getTime() - Jan 15"); + + if (!stzDublin.inDaylightTime(testDate, status)) { + errln("FAIL: The test date (Jan 15) must be in DST."); + } + failure(status, "inDaylightTime() - Jan 15"); + + stzDublin.getOffset(testDate, FALSE, rawOffset, dstOffset, status); + failure(status, "getOffset() - Jan 15"); + if (rawOffset != stdOff || dstOffset != save) { + errln((UnicodeString)"FAIL: Expected [stdoff=" + stdOff + ",save=" + save + + "] on the test date (Jan 15), actual[stdoff=" + rawOffset + + ",save=" + dstOffset + "]"); + } + + cal.set(2018, UCAL_JULY, 15, 0, 0, 0); + testDate = cal.getTime(status); + failure(status, "calendar getTime() - Jul 15"); + + if (stzDublin.inDaylightTime(testDate, status)) { + errln("FAIL: The test date (Jul 15) must be in DST."); + } + failure(status, "inDaylightTime() - Jul 15"); + + stzDublin.getOffset(testDate, FALSE, rawOffset, dstOffset, status); + failure(status, "getOffset() - Jul 15"); + if (rawOffset != stdOff || dstOffset != 0) { + errln((UnicodeString)"FAIL: Expected [stdoff=" + stdOff + ",save=" + 0 + + "] on the test date (Jul 15), actual[stdoff=" + rawOffset + + ",save=" + dstOffset + "]"); + } +} + + #endif /* #if !UCONFIG_NO_FORMATTING */ diff --git a/source/test/intltest/tzregts.h b/source/test/intltest/tzregts.h index 2d7f7ef..46e43cd 100644 --- a/source/test/intltest/tzregts.h +++ b/source/test/intltest/tzregts.h @@ -49,6 +49,7 @@ public: void TestJDK12API(void); void Test4184229(void); UBool checkCalendar314(GregorianCalendar *testCal, TimeZone *testTZ); + void TestNegativeDaylightSaving(void); protected: diff --git a/source/test/intltest/ucdtest.cpp b/source/test/intltest/ucdtest.cpp index 489d6cd..8a52c94 100644 --- a/source/test/intltest/ucdtest.cpp +++ b/source/test/intltest/ucdtest.cpp @@ -63,6 +63,7 @@ void UnicodeTest::runIndexedTest( int32_t index, UBool exec, const char* &name, TESTCASE_AUTO(TestBidiPairedBracketType); TESTCASE_AUTO(TestEmojiProperties); TESTCASE_AUTO(TestDefaultScriptExtensions); + TESTCASE_AUTO(TestInvalidCodePointFolding); TESTCASE_AUTO_END; } @@ -546,3 +547,22 @@ void UnicodeTest::TestDefaultScriptExtensions() { uscript_getScriptExtensions(0x3012, scx, UPRV_LENGTHOF(scx), errorCode)); assertEquals("U+3012 num scx[0]", USCRIPT_COMMON, scx[0]); } + +void UnicodeTest::TestInvalidCodePointFolding(void) { + // Test behavior when an invalid code point is passed to u_foldCase + static const UChar32 invalidCodePoints[] = { + 0xD800, // lead surrogate + 0xDFFF, // trail surrogate + 0xFDD0, // noncharacter + 0xFFFF, // noncharacter + 0x110000, // out of range + -1 // negative + }; + for (int32_t i=0; iremoveRef(); // unused count not to exeed in use count - assertEquals("", UPRV_LENGTHOF(usedReferences), cache.unusedCount()); - assertEquals("", 2*UPRV_LENGTHOF(usedReferences), cache.keyCount()); + assertEquals("T1", UPRV_LENGTHOF(usedReferences), cache.unusedCount()); + assertEquals("T2", 2*UPRV_LENGTHOF(usedReferences), cache.keyCount()); // Free up those used entries. for (int32_t i = 0; i < UPRV_LENGTHOF(usedReferences); i++) { @@ -162,9 +162,9 @@ void UnifiedCacheTest::TestEvictionPolicy() { } // This should free up all cache items - assertEquals("", 0, cache.keyCount()); + assertEquals("T3", 0, cache.keyCount()); - assertSuccess("", status); + assertSuccess("T4", status); } @@ -181,7 +181,7 @@ void UnifiedCacheTest::TestBounded() { // complete control over it. Real clients should never ever create // their own cache! UnifiedCache cache(status); - assertSuccess("", status); + assertSuccess("T0", status); // Maximum unused count is 3. cache.setEvictionPolicy(3, 0, status); @@ -202,15 +202,15 @@ void UnifiedCacheTest::TestBounded() { const UCTItem *frFr = NULL; cache.get(LocaleCacheKey("en_US"), &cache, enUs, status); cache.get(LocaleCacheKey("en"), &cache, en, status); - assertEquals("", 1, cache.unusedCount()); + assertEquals("T1", 1, cache.unusedCount()); cache.get(LocaleCacheKey("en_GB"), &cache, enGb, status); cache.get(LocaleCacheKey("fr_FR"), &cache, frFr, status); cache.get(LocaleCacheKey("fr"), &cache, fr, status); // Client holds two unique references, "en" and "fr" the other three // entries are eligible for eviction. - assertEquals("", 3, cache.unusedCount()); - assertEquals("", 5, cache.keyCount()); + assertEquals("T2", 3, cache.unusedCount()); + assertEquals("T3", 5, cache.keyCount()); // Exercise cache more but don't hold the references except for // the last one. At the end of this, we will hold references to one @@ -227,40 +227,40 @@ void UnifiedCacheTest::TestBounded() { // Client holds three unique references, "en", "fr", "de" although we // could have a total of 8 entries in the cache maxUnusedCount == 3 // so we have only 6 entries. - assertEquals("", 3, cache.unusedCount()); - assertEquals("", 6, cache.keyCount()); + assertEquals("T4", 3, cache.unusedCount()); + assertEquals("T5", 6, cache.keyCount()); // For all the references we have, cache must continue to return // those same references (#2) cache.get(LocaleCacheKey("en"), &cache, throwAway, status); if (throwAway != en) { - errln("Expected en to resolve to the same object."); + errln("T6: Expected en to resolve to the same object."); } cache.get(LocaleCacheKey("en_US"), &cache, throwAway, status); if (throwAway != enUs) { - errln("Expected enUs to resolve to the same object."); + errln("T7: Expected enUs to resolve to the same object."); } cache.get(LocaleCacheKey("en_GB"), &cache, throwAway, status); if (throwAway != enGb) { - errln("Expected enGb to resolve to the same object."); + errln("T8: Expected enGb to resolve to the same object."); } cache.get(LocaleCacheKey("fr_FR"), &cache, throwAway, status); if (throwAway != frFr) { - errln("Expected frFr to resolve to the same object."); + errln("T9: Expected frFr to resolve to the same object."); } cache.get(LocaleCacheKey("fr_FR"), &cache, throwAway, status); cache.get(LocaleCacheKey("fr"), &cache, throwAway, status); if (throwAway != fr) { - errln("Expected fr to resolve to the same object."); + errln("T10: Expected fr to resolve to the same object."); } cache.get(LocaleCacheKey("de_AU"), &cache, throwAway, status); if (throwAway != deAu) { - errln("Expected deAu to resolve to the same object."); + errln("T11: Expected deAu to resolve to the same object."); } - assertEquals("", 3, cache.unusedCount()); - assertEquals("", 6, cache.keyCount()); + assertEquals("T12", 3, cache.unusedCount()); + assertEquals("T13", 6, cache.keyCount()); // Now we hold a references to two more distinct values. Cache size // should grow to 8. @@ -268,8 +268,8 @@ void UnifiedCacheTest::TestBounded() { const UCTItem *ru = NULL; cache.get(LocaleCacheKey("es"), &cache, es, status); cache.get(LocaleCacheKey("ru"), &cache, ru, status); - assertEquals("", 3, cache.unusedCount()); - assertEquals("", 8, cache.keyCount()); + assertEquals("T14", 3, cache.unusedCount()); + assertEquals("T15", 8, cache.keyCount()); // Now release all the references we hold except for // es, ru, and en @@ -284,13 +284,13 @@ void UnifiedCacheTest::TestBounded() { SharedObject::clearPtr(throwAway); // Size of cache should magically drop to 3. - assertEquals("", 3, cache.unusedCount()); - assertEquals("", 3, cache.keyCount()); + assertEquals("T16", 3, cache.unusedCount()); + assertEquals("T17", 3, cache.keyCount()); // Be sure nothing happens setting the eviction policy in the middle of // a run. cache.setEvictionPolicy(3, 0, status); - assertSuccess("", status); + assertSuccess("T18", status); } @@ -311,7 +311,7 @@ void UnifiedCacheTest::TestBasic() { cache->get(LocaleCacheKey("en_GB"), enGb, status); cache->get(LocaleCacheKey("fr_FR"), frFr, status); cache->get(LocaleCacheKey("fr"), fr, status); - cache->get(LocaleCacheKey("en_GB"), enGb2, status); + cache->get(LocaleCacheKey("en_GB"), enGb2, status); SharedObject::clearPtr(enGb2); if (enGb != enUs) { errln("Expected en_GB and en_US to resolve to same object."); @@ -322,16 +322,16 @@ void UnifiedCacheTest::TestBasic() { if (enGb == fr) { errln("Expected en_GB and fr to return different objects."); } - assertSuccess("", status); + assertSuccess("T1", status); // en_US, en_GB, en share one object; fr_FR and fr don't share. // 5 keys in all. - assertEquals("", baseCount + 5, cache->keyCount()); + assertEquals("T2", baseCount + 5, cache->keyCount()); SharedObject::clearPtr(enGb); cache->flush(); // Only 2 unique values in the cache. flushing trims cache down // to this minimum size. - assertEquals("", baseCount + 2, cache->keyCount()); + assertEquals("T3", baseCount + 2, cache->keyCount()); SharedObject::clearPtr(enUs); SharedObject::clearPtr(en); cache->flush(); @@ -339,14 +339,14 @@ void UnifiedCacheTest::TestBasic() { // the "en" object, so it gets flushed and the keys that refer to it // get removed from the cache. Now we have just one unique value, fr, in // the cache - assertEquals("", baseCount + 1, cache->keyCount()); + assertEquals("T4", baseCount + 1, cache->keyCount()); SharedObject::clearPtr(fr); cache->flush(); - assertEquals("", baseCount + 1, cache->keyCount()); + assertEquals("T5", baseCount + 1, cache->keyCount()); SharedObject::clearPtr(frFr); cache->flush(); - assertEquals("", baseCount + 0, cache->keyCount()); - assertSuccess("", status); + assertEquals("T6", baseCount + 0, cache->keyCount()); + assertSuccess("T7", status); } void UnifiedCacheTest::TestError() { diff --git a/source/test/intltest/usettest.cpp b/source/test/intltest/usettest.cpp index d142f04..b6f2eab 100644 --- a/source/test/intltest/usettest.cpp +++ b/source/test/intltest/usettest.cpp @@ -42,15 +42,6 @@ UnicodeString operator+(const UnicodeString& left, const UnicodeSet& set) { return left + UnicodeSetTest::escape(pat); } -#define CASE(id,test) case id: \ - name = #test; \ - if (exec) { \ - logln(#test "---"); \ - logln(); \ - test(); \ - } \ - break - UnicodeSetTest::UnicodeSetTest() : utf8Cnv(NULL) { } @@ -100,6 +91,7 @@ UnicodeSetTest::runIndexedTest(int32_t index, UBool exec, TESTCASE_AUTO(TestUCAUnsafeBackwards); TESTCASE_AUTO(TestIntOverflow); TESTCASE_AUTO(TestUnusedCcc); + TESTCASE_AUTO(TestDeepPattern); TESTCASE_AUTO_END; } @@ -3970,3 +3962,19 @@ void UnicodeSetTest::TestUnusedCcc() { assertTrue("[:ccc=1.1:] -> empty set", ccc1_1.isEmpty()); #endif } + +void UnicodeSetTest::TestDeepPattern() { + IcuTestErrorCode errorCode(*this, "TestDeepPattern"); + // Nested ranges are parsed via recursion which can use a lot of stack space. + // After a reasonable limit, we should get an error. + constexpr int32_t DEPTH = 20000; + UnicodeString pattern, suffix; + for (int32_t i = 0; i < DEPTH; ++i) { + pattern.append(u"[a", 2); + suffix.append(']'); + } + pattern.append(suffix); + UnicodeSet set(pattern, errorCode); + assertTrue("[a[a[a...1000s...]]] -> error", errorCode.isFailure()); + errorCode.reset(); +} diff --git a/source/test/intltest/usettest.h b/source/test/intltest/usettest.h index b34728a..e79a9e8 100644 --- a/source/test/intltest/usettest.h +++ b/source/test/intltest/usettest.h @@ -93,6 +93,7 @@ private: void TestUCAUnsafeBackwards(); void TestIntOverflow(); void TestUnusedCcc(); + void TestDeepPattern(); private: diff --git a/source/test/iotest/iotest.vcxproj b/source/test/iotest/iotest.vcxproj index 5b7a404..f67c0b1 100644 --- a/source/test/iotest/iotest.vcxproj +++ b/source/test/iotest/iotest.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {E4993E82-D68A-46CA-BAE0-9D35E172E46F} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 @@ -82,6 +47,15 @@ .\x64\Release\ false + + + + ..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories) + U_ATTRIBUTE_DEPRECATED=;%(PreprocessorDefinitions) + true + Level3 + + .\x86\Debug/iotest.tlb @@ -89,39 +63,26 @@ - Disabled - ..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true true - true .\x86\Debug/iotest.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Debug/iotest.exe - true + icuucd.lib;icuind.lib;icuiod.lib;icutestd.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/iotest.pdb Console false - MachineX86 @@ -129,117 +90,74 @@ .\x86\Release/iotest.tlb - ..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL - true - true .\x86\Release/iotest.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Release/iotest.exe - true + icuuc.lib;icuin.lib;icuio.lib;icutest.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/iotest.pdb Console false - MachineX86 - X64 .\x64\Debug/iotest.tlb - Disabled - ..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true .\x64\Debug/iotest.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Debug/iotest.exe - true + icuucd.lib;icuind.lib;icuiod.lib;icutestd.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/iotest.pdb Console - MachineX64 - X64 .\x64\Release/iotest.tlb - ..\..\..\include;..\..\tools\ctestfw;..\..\common;%(AdditionalIncludeDirectories) - U_ATTRIBUTE_DEPRECATED=;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL - true - true .\x64\Release/iotest.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Release/iotest.exe - true + icuuc.lib;icuin.lib;icuio.lib;icutest.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/iotest.pdb Console - MachineX64 - false - false - false - false + false @@ -247,25 +165,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - {c2b04507-2521-4801-bf0d-5fd79d6d518c} - false - - - {eca6b435-b4fa-4f9f-bf95-f451d078fc47} - false - - - + \ No newline at end of file diff --git a/source/test/letest/letest.vcxproj b/source/test/letest/letest.vcxproj index 50c54ee..0a83aac 100644 --- a/source/test/letest/letest.vcxproj +++ b/source/test/letest/letest.vcxproj @@ -110,6 +110,8 @@ .\x86\Release/letest.exe true + icuuc.lib;icuin.lib;iculx.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) + .\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/letest.pdb Console false @@ -146,6 +148,8 @@ .\x86\Debug/letest.exe true + icuucd.lib;icuind.lib;iculxd.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) + .\..\..\lib;%(AdditionalLibraryDirectories) %(AdditionalLibraryDirectories) true .\x86\Debug/letest.pdb @@ -185,6 +189,8 @@ .\x64\Release/letest.exe true + icuuc.lib;icuin.lib;iculx.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) + .\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/letest.pdb Console MachineX64 @@ -220,6 +226,8 @@ .\x64\Debug/letest.exe true + icuucd.lib;icuind.lib;iculxd.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) + .\..\..\lib64;%(AdditionalLibraryDirectories) %(AdditionalLibraryDirectories) true .\x64\Debug/letest.pdb @@ -250,30 +258,10 @@ - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - {37fc2c7f-1904-4811-8955-2f478830ead1} - false - {c920062a-0647-4553-a3b2-37c58065664b} false - - {eca6b435-b4fa-4f9f-bf95-f451d078fc47} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - diff --git a/source/test/testdata/numberformattestspecification.txt b/source/test/testdata/numberformattestspecification.txt index 113473a..1f11f8d 100644 --- a/source/test/testdata/numberformattestspecification.txt +++ b/source/test/testdata/numberformattestspecification.txt @@ -13,7 +13,7 @@ // https://docs.google.com/document/d/1T2P0p953_Lh1pRwo-5CuPVrHlIBa_wcXElG-Hhg_WHM/edit?usp=sharing test plus sign -set locale ar +set locale ar-EG set pattern +0;-# begin format output breaks @@ -441,11 +441,10 @@ en_US 1 123,456 123456 en_US 0 123,456 123 en_US 1 123.456 123.456 en_US 0 123.456 123.456 -fr_FR 1 123,456 123.456 -fr_FR 0 123,456 123.456 -// JDK returns 123 here; not sure why. -fr_FR 1 123.456 123456 K -fr_FR 0 123.456 123 +it_IT 1 123,456 123.456 +it_IT 0 123,456 123.456 +it_IT 1 123.456 123456 +it_IT 0 123.456 123 test no grouping in pattern with parsing set pattern 0 @@ -466,9 +465,8 @@ output grouping breaks grouping2 minGroupingDigits 1,2345,6789 4 1,23,45,6789 4 K 2 1,23,45,6789 4 K 2 2 -// Q only supports minGrouping<=2 123,456789 6 6 3 -123456789 6 JKQ 6 4 +123456789 6 JK 6 4 test multiplier setters set locale en_US @@ -754,6 +752,7 @@ parse output breaks +3.52EE4 3.52 +1,234,567.8901 1234567.8901 +1,23,4567.8901 1234567.8901 +// Fraction grouping is disabled by default +1,23,4567.89,01 1234567.89 +1,23,456.78.9 123456.78 +12.34,56 12.34 @@ -831,15 +830,14 @@ parse output breaks // JDK does allow separators in the wrong place and parses as -5347.25 (53,47.25) fail K // strict requires prefix or suffix, except in C -65,347.25 fail +65,347.25 fail +3.52E4 35200 (34.8E-3) -0.0348 (3425E-1) -342.5 // Strict doesn't allow separators in sci notation. (63,425) -63425 -// JDK and S allow separators in sci notation and parses as -342.5 -// C passes -(63,425E-1) fail CKS +// J does not allow grouping separators in scientific notation. +(63,425E-1) -6342.5 J // Both prefix and suffix needed for strict. // JDK accepts this and parses as -342.5 (3425E-1 fail K @@ -954,12 +952,12 @@ set negativeSuffix 9N begin parse output breaks // S is the only implementation that passes these cases. -// C consumes the '9' as a digit and assumes number is negative +// C and P consume the '9' as a digit and assumes number is negative // J and JDK bail -6549K 654 CJK -// C consumes the '9' as a digit and assumes number is negative +6549K 654 CJKP +// C and P consume the '9' as a digit and assumes number is negative // J and JDK bail -6549N -654 CJK +6549N -654 CJKP test really strange prefix set locale en @@ -974,7 +972,7 @@ test parse pattern with quotes set locale en set pattern '-'#y begin -parse output +parse output breaks -45y 45 test parse with locale symbols @@ -1187,17 +1185,17 @@ $53.45 fail USD J USD 53.45 53.45 USD J 53.45USD 53.45 USD CJ USD53.45 53.45 USD -// S fails these because '(' is an incomplete prefix. -(7.92) USD -7.92 USD CJS -(7.92) GBP -7.92 GBP CJS -(7.926) USD -7.926 USD CJS -(7.926 USD) -7.926 USD CJS +// P fails these because '(' is an incomplete prefix. +(7.92) USD -7.92 USD CJP +(7.92) GBP -7.92 GBP CJP +(7.926) USD -7.926 USD CJP +(7.926 USD) -7.926 USD CJP (USD 7.926) -7.926 USD J -USD (7.926) -7.926 USD CJS -USD (7.92) -7.92 USD CJS -(7.92)USD -7.92 USD CJS -USD(7.92) -7.92 USD CJS -(8) USD -8 USD CJS +USD (7.926) -7.926 USD CJP +USD (7.92) -7.92 USD CJP +(7.92)USD -7.92 USD CJP +USD(7.92) -7.92 USD CJP +(8) USD -8 USD CJP -8 USD -8 USD C 67 USD 67 USD C 53.45$ fail USD @@ -1223,37 +1221,38 @@ test parse foreign currency symbol set pattern \u00a4 0.00;\u00a4 -# set locale fa_IR begin -parse output outputCurrency +parse output outputCurrency breaks \u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR -\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR +// P fails here because this currency name is in the Trie only, but it has the same prefix as the non-Trie currency +\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR P IRR 1235 1235 IRR \u0631\u06cc\u0627\u0644 1235 1235 IRR -\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR +\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR P test parse foreign currency ISO set pattern \u00a4\u00a4 0.00;\u00a4\u00a4 -# set locale fa_IR begin -parse output outputCurrency +parse output outputCurrency breaks \u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR -\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR +\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR P IRR 1235 1235 IRR \u0631\u06cc\u0627\u0644 1235 1235 IRR -\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR +\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR P test parse foreign currency full set pattern \u00a4\u00a4\u00a4 0.00;\u00a4\u00a4\u00a4 -# set locale fa_IR begin -parse output outputCurrency +parse output outputCurrency breaks \u0631\u06cc\u0627\u0644 \u06F1\u06F2\u06F3\u06F5 1235 IRR IRR \u06F1\u06F2\u06F3\u06F5 1235 IRR -\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR +\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 \u06F1\u06F2\u06F3\u06F5 1235 IRR P IRR 1235 1235 IRR \u0631\u06cc\u0627\u0644 1235 1235 IRR -\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR +\u0631\u06cc\u0627\u0644 \u0627\u06cc\u0631\u0627\u0646 1235 1235 IRR P test parse currency with foreign symbols symbol english set pattern \u00a4 0.00;\u00a4 (#) @@ -1288,16 +1287,17 @@ Euros 7.82 7.82 EUR test parse currency without currency mode // Should accept a symbol associated with the currency specified by the API, // but should not traverse the full currency data. +// P always traverses full currency data. set locale en_US set pattern \u00a4#,##0.00 begin parse currency output breaks $52.41 USD 52.41 USD52.41 USD 52.41 K -\u20ac52.41 USD fail -EUR52.41 USD fail -$52.41 EUR fail -USD52.41 EUR fail +\u20ac52.41 USD fail P +EUR52.41 USD fail P +$52.41 EUR fail P +USD52.41 EUR fail P \u20ac52.41 EUR 52.41 K EUR52.41 EUR 52.41 @@ -1307,11 +1307,11 @@ set locale en_US set lenient 0 begin parse output outputCurrency breaks -$53.45 53.45 USD +$53.45 53.45 USD P 53.45 USD 53.45 USD USD 53.45 fail USD 53.45USD fail USD -USD53.45 53.45 USD +USD53.45 53.45 USD P (7.92) USD -7.92 USD (7.92) EUR -7.92 EUR (7.926) USD -7.926 USD @@ -1329,9 +1329,9 @@ US Dollars 53.45 fail USD 53.45 US Dollars 53.45 USD US Dollar 53.45 fail USD 53.45 US Dollar 53.45 USD -US Dollars53.45 53.45 USD +US Dollars53.45 53.45 USD P 53.45US Dollars fail USD -US Dollar53.45 53.45 USD +US Dollar53.45 53.45 USD P US Dollat53.45 fail USD 53.45US Dollar fail USD US Dollars (53.45) fail USD @@ -1376,13 +1376,15 @@ test parse minus sign set locale en set pattern # begin -parse output breaks --123 -123 -- 123 -123 JK - -123 -123 JK - - 123 -123 JK -123- -123 CJKS -123 - -123 CJKS +pattern parse output breaks +# -123 -123 +# - 123 -123 JK +# -123 -123 JK +# - 123 -123 JK +# 123- 123 +# 123 - 123 +#;#- 123- -123 +#;#- 123 - -123 JK test parse case sensitive set locale en @@ -1423,8 +1425,8 @@ NaN NaN K 1E2147483646 1E2147483646 1E-2147483649 0 1E-2147483648 0 -// S returns zero here -1E-2147483647 1E-2147483647 S +// P returns zero here +1E-2147483647 1E-2147483647 P 1E-2147483646 1E-2147483646 test format push limits @@ -1439,7 +1441,7 @@ maxFractionDigits format output breaks 100 9999999999999.9950000000001 9999999999999.9950000000001 C 2 9999999999999.9950000000001 10000000000000.00 C 2 9999999.99499999 9999999.99 -// K doesn't support halfDowm rounding mode? +// K doesn't support halfDown rounding mode? 2 9999999.995 9999999.99 K 2 9999999.99500001 10000000.00 100 56565656565656565656565656565656565656565656565656565656565656 56565656565656565656565656565656565656565656565656565656565656.00 C @@ -1453,8 +1455,8 @@ set locale en set pattern #,##0 begin parse output breaks -// K and J return null; S and C return 99 - 9 9 9 CJKS +// K and J return null; S, C, and P return 99 + 9 9 9 CJKP // K returns null 9 999 9999 K @@ -1497,7 +1499,7 @@ y g h56 -56 JK 56i j‎k -56 CJK 56‎i jk -56 CJK // S and C get 56 (accepts ' ' gs grouping); J and K get null -5 6 fail CS +5 6 fail CP 5‎6 5 JK test parse spaces in grouping @@ -1507,9 +1509,9 @@ set locale en set pattern #,##0 begin parse output breaks -// C, J and S get "12" here -1 2 1 CJS -1 23 1 CJS +// C, J, S, and P get "12" here +1 2 1 CJP +1 23 1 CJP // K gets 1 here; doesn't pick up the grouping separator 1 234 1234 K @@ -1543,7 +1545,8 @@ begin parse output breaks 55% 0.55 // J and K get null -55 0.55 JK +// P requires the symbol to be present and gets 55 +55 0.55 JKP test trailing grouping separators in pattern // This test is for #13115 @@ -1573,6 +1576,34 @@ begin parse output breaks 9223372036854775807% 92233720368547758.07 +test sign always shown +set locale en +set pattern 0 +set signAlwaysShown 1 +begin +format output breaks +// C, J and K do not support this feature +42 +42 CJK +0 +0 CJK +-42 -42 + +test parse strict with plus sign +set locale en +set pattern 0 +set signAlwaysShown 1 +begin +lenient parse output breaks +1 42 42 +1 -42 -42 +1 +42 42 CJK +1 0 0 +1 +0 0 CJK +0 42 fail CJK +0 -42 -42 +0 +42 42 CJK +0 0 fail CJK +0 +0 0 CJK + diff --git a/source/test/testdata/rbbitst.txt b/source/test/testdata/rbbitst.txt index 1450a98..761b3e0 100644 --- a/source/test/testdata/rbbitst.txt +++ b/source/test/testdata/rbbitst.txt @@ -38,19 +38,8 @@ # Temp debugging tests - - -<0>コンピューター<400>は<400>、<0>本質<400>的<400>に<400>は<400>数字<400>しか<400>扱う<400>こと<400>が<400>でき<400>ま<400>せん<400>。<0>\ -コンピューター<400>は<400>、<0>文字<400>や<400>記号<400>など<400>の<400>それぞれに<400>番号<400>を<400>割り振る<400>こと<400>によって<400>扱える<400>\ -よう<400>にし<400>ます<400>。<0>ユニ<400>コード<400>が<400>出来る<400>まで<400>は<400>、<0>これらの<400>番号<400>を<400>割り振る<400>仕組み<400>が<400>\ -何<400>百<400>種類<400>も<400>存在<400>しま<400>した<400>。<0>どの<400>一つ<400>を<400>とっても<400>、<0>十分<400>な<400>文字<400>を<400>含<400>\ -んで<400>は<400>いま<400>せん<400>で<400>した<400>。<0>例えば<400>、<0>欧州<400>連合<400>一つ<400>を<400>見<400>て<400>も<400>、<0>その<400>\ -すべて<400>の<400>言語<400>を<400>カバー<400>する<400>ため<400>に<400>は<400>、<0>いくつか<400>の<400>異なる<400>符号<400>化<400>の<400>仕組み<400>\ -が<400>必要<400>で<400>した<400>。<0>英語<400>の<400>よう<400>な<400>一つ<400>の<400>言語<400>に<400>限<400>って<400>も<400>、<0>一つ<400>だけ<400>\ -の<400>符号<400>化<400>の<400>仕組み<400>では<400>、<0>一般<400>的<400>に<400>使<400>われる<400>すべて<400>の<400>文字<400>、<0>句読点<400>、<0>\ -。<0> +# -#<0>コンピューター<400>は<400>、<0>本質<400>的<400>に<400>は<400>数字<400>しか<400>扱う<400>こと<400>が<400>でき<400>ま<400>せん<400>。<0>\ ## FILTERED BREAK TESTS @@ -330,6 +319,15 @@ •\U00011700<200>ロ<400>から<400>売却<400>完了<400>時<400>の<400>時価<400>が<400>提示<400>さ<400>れ<400>て<400>いる<400> # +# Ticket #13549 +# CjiBreakEngine::divideUpDictionaryRange: assertion failure. +# + + +•\U00020029<400>\u3300<400>\U0002C400<400> +•\uFAD7<400>\u331B<400>\u87DF<400>\u006D<200>\uFFFD• + +# # What Is Unicode in Japanese # From http://unicode.org/standard/translations/japanese.html diff --git a/source/test/testdata/root.txt b/source/test/testdata/root.txt index d619b63..8ba0f07 100644 --- a/source/test/testdata/root.txt +++ b/source/test/testdata/root.txt @@ -13,8 +13,8 @@ root { Version { 44.0 } - ExpectCLDRVersionAtLeast { 32.0 } // 'base' cldr version. Allow up to version =.=.* of this - CurrentCLDRVersion { 32.0 } // Current CLDR version as of the test update. Warn if not an exact match. + ExpectCLDRVersionAtLeast { 33.0 } // 'base' cldr version. Allow up to version =.=.* of this + CurrentCLDRVersion { 33.0 } // Current CLDR version as of the test update. Warn if not an exact match. ShortLanguage { xxx } diff --git a/source/test/testdata/structLocale.txt b/source/test/testdata/structLocale.txt index bd3d2b9..983a744 100644 --- a/source/test/testdata/structLocale.txt +++ b/source/test/testdata/structLocale.txt @@ -4134,6 +4134,10 @@ structLocale:table(nofallback){ 2, 2, } + typographicNames:intvector{ + 2, + 2, + } unit-pattern:intvector{ 2, 2, @@ -8349,6 +8353,7 @@ structLocale:table(nofallback){ } } default{""} + default_latn{""} deva{ miscPatterns{ atLeast{""} diff --git a/source/tools/ctestfw/ctestfw.vcxproj b/source/tools/ctestfw/ctestfw.vcxproj index 444860f..de4818c 100644 --- a/source/tools/ctestfw/ctestfw.vcxproj +++ b/source/tools/ctestfw/ctestfw.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {ECA6B435-B4FA-4F9F-BF95-F451D078FC47} - 8.1 - - DynamicLibrary - false - MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 - - + DynamicLibrary false MultiByte - v140 @@ -82,6 +47,15 @@ .\x64\Debug\ true + + + + ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) + true + Level3 + + NDEBUG;%(PreprocessorDefinitions) @@ -92,31 +66,19 @@ true - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true .\x86\Release/icutest.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin\icutest60.dll - true + ..\..\..\bin\icutest61.dll + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\..\..\..\lib\icutest.pdb - true UseLinkTimeCodeGeneration false @@ -126,39 +88,22 @@ - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\..\..\..\lib\icutestd.tlb - Disabled - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true .\x86\Debug/icutest.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin\icutest60d.dll - true + ..\..\..\bin\icutest61d.dll + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\..\..\..\lib\icutestd.pdb false @@ -169,83 +114,48 @@ - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 .\..\..\..\lib64\icutest.tlb true - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true .\x64\Release/icutest.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin64\icutest60.dll - true + ..\..\..\bin64\icutest61.dll + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\..\..\..\lib64\icutest.pdb - true UseLinkTimeCodeGeneration .\..\..\..\lib64\icutest.lib - MachineX64 - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 .\..\..\..\lib64\icutestd.tlb - Disabled - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true .\x64\Debug/icutest.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin64\icutest60d.dll - true + ..\..\..\bin64\icutest61d.dll + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\..\..\..\lib64\icutestd.pdb .\..\..\..\lib64\icutestd.lib - MachineX64 @@ -274,17 +184,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/escapesrc/escapesrc.cpp b/source/tools/escapesrc/escapesrc.cpp index 5e96484..c90dafa 100644 --- a/source/tools/escapesrc/escapesrc.cpp +++ b/source/tools/escapesrc/escapesrc.cpp @@ -4,39 +4,71 @@ #include #include #include -#include #include #include #include #include -// with caution: +// We only use U8_* macros, which are entirely inline. #include "unicode/utf8.h" +// This contains a codepage and ISO 14882:1998 illegality table. +// Use "make gen-table" to rebuild it. +#include "cptbl.h" + +/** + * What is this? + * + * "This" is a preprocessor that makes an attempt to convert fully valid C++11 source code + * in utf-8 into something consumable by certain compilers (Solaris, xlC) + * which aren't quite standards compliant. + * + * - u"" or u'' gets converted to u"\uNNNN" or u'\uNNNN' + * - u8"" gets converted to "\xAA\xBB\xCC\xDD" etc. + * (some compilers do not support the u8 prefix correctly.) + * - if the system is EBCDIC-based, that is used to correct the input characters. + * + * Usage: + * escapesrc infile.cpp outfile.cpp + * Normally this is invoked by the build stage, with a rule such as: + * + * _%.cpp: $(srcdir)/%.cpp + * @$(BINDIR)/escapesrc$(EXEEXT) $< $@ + * %.o: _%.cpp + * $(COMPILE.cc) ... $@ $< + * + * In the Makefiles, SKIP_ESCAPING=YES is used to prevent escapesrc.cpp + * from being itself escaped. + */ + + static const char kSPACE = 0x20, kTAB = 0x09, kLF = 0x0A, kCR = 0x0D; - // kHASH = 0x23, - // kSLASH = 0x2f, - // kSTAR = 0x2A, - -# include "cptbl.h" +// For convenience # define cp1047_to_8859(c) cp1047_8859_1[c] +// Our app's name std::string prog; +/** + * Give the usual 1-line documentation and exit + */ void usage() { fprintf(stderr, "%s: usage: %s infile.cpp outfile.cpp\n", prog.c_str(), prog.c_str()); } - +/** + * Delete the output file (if any) + * We want to delete even if we didn't generate, because it might be stale. + */ int cleanup(const std::string &outfile) { const char *outstr = outfile.c_str(); if(outstr && *outstr) { - int rc = unlink(outstr); + int rc = std::remove(outstr); if(rc == 0) { fprintf(stderr, "%s: deleted %s\n", prog.c_str(), outstr); return 0; @@ -44,7 +76,7 @@ int cleanup(const std::string &outfile) { if( errno == ENOENT ) { return 0; // File did not exist - no error. } else { - perror("unlink"); + perror("std::remove"); return 1; } } @@ -52,16 +84,12 @@ int cleanup(const std::string &outfile) { return 0; } -// inline bool hasNonAscii(const char *line, size_t len) { -// const unsigned char *uline = reinterpret_cast(line); -// for(size_t i=0;i 0x7F) { -// return true; -// } -// } -// return false; -// } - +/** + * Skip across any known whitespace. + * @param p startpoint + * @param e limit + * @return first non-whitespace char + */ inline const char *skipws(const char *p, const char *e) { for(;p0) && (pos = linestr.rfind("u\"", pos)) != std::string::npos) { @@ -345,6 +355,12 @@ bool fixLine(int /*no*/, std::string &linestr) { return false; } +/** + * Convert a whole file + * @param infile + * @param outfile + * @return 1 on err, 0 otherwise + */ int convert(const std::string &infile, const std::string &outfile) { fprintf(stderr, "escapesrc: %s -> %s\n", infile.c_str(), outfile.c_str()); @@ -386,6 +402,9 @@ int convert(const std::string &infile, const std::string &outfile) { return 0; } +/** + * Main function + */ int main(int argc, const char *argv[]) { prog = argv[0]; @@ -399,6 +418,3 @@ int main(int argc, const char *argv[]) { return convert(infile, outfile); } - - -#include "utf_impl.cpp" diff --git a/source/tools/genbrk/genbrk.vcxproj b/source/tools/genbrk/genbrk.vcxproj index e7953e9..b8aa0ab 100644 --- a/source/tools/genbrk/genbrk.vcxproj +++ b/source/tools/genbrk/genbrk.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {C2BE5000-7501-4E87-9724-B8D82494FAE6} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -93,7 +58,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -106,6 +71,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -114,6 +81,8 @@ .\x86\Release/genbrk.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/genbrk.pdb Console false @@ -133,7 +102,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -148,6 +117,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -156,6 +127,8 @@ .\x86\Debug/genbrk.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/genbrk.pdb Console @@ -176,7 +149,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -189,6 +162,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -197,6 +172,8 @@ .\x64\Release/genbrk.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/genbrk.pdb Console MachineX64 @@ -215,7 +192,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -230,6 +207,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -238,6 +217,8 @@ .\x64\Debug/genbrk.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/genbrk.pdb Console @@ -247,17 +228,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/genccode/genccode.vcxproj b/source/tools/genccode/genccode.vcxproj index c835f32..e7dc0e5 100644 --- a/source/tools/genccode/genccode.vcxproj +++ b/source/tools/genccode/genccode.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {FDD3C4F2-9805-44EB-9A77-BC1C1C95B547} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -93,7 +58,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -105,6 +70,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -113,6 +80,8 @@ .\x86\Release/genccode.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/genccode.pdb Console false @@ -132,7 +101,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -146,6 +115,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -154,6 +125,8 @@ .\x86\Debug/genccode.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/genccode.pdb Console @@ -174,7 +147,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -186,6 +159,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -194,6 +169,8 @@ .\x64\Release/genccode.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/genccode.pdb Console MachineX64 @@ -212,7 +189,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -226,6 +203,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -234,6 +213,8 @@ .\x64\Debug/genccode.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/genccode.pdb Console @@ -243,17 +224,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/gencfu/gencfu.vcxproj b/source/tools/gencfu/gencfu.vcxproj index 50ee280..fbae8f5 100644 --- a/source/tools/gencfu/gencfu.vcxproj +++ b/source/tools/gencfu/gencfu.vcxproj @@ -1,51 +1,17 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {691EE0C0-DC57-4A48-8AEE-8ED75EB3A057} - 8.1 Win32Proj - - Application - false - MultiByte - v140 - - - Application - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -90,7 +56,7 @@ Disabled ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) false EnableFastChecks MultiThreadedDebugDLL @@ -105,10 +71,14 @@ Level3 EditAndContinue Default + /utf-8 %(AdditionalOptions) + true .\x86\Debug\gencfu.exe true + icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true Console @@ -120,7 +90,7 @@ ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true false MultiThreadedDLL @@ -135,10 +105,15 @@ Level3 ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true .\x86\Release\gencfu.exe true + true + icuuc.lib;icuin.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) Console false @@ -156,7 +131,7 @@ ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -169,6 +144,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -177,6 +154,8 @@ .\x64\Release/gencfu.exe true + icuuc.lib;icuin.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/gencfu.pdb Console MachineX64 @@ -194,7 +173,7 @@ Disabled ..\..\common;..\..\i18n;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -209,6 +188,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -217,6 +198,8 @@ .\x64\Debug/gencfu.exe true + icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/gencfu.pdb Console @@ -226,21 +209,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/gencmn/gencmn.vcxproj b/source/tools/gencmn/gencmn.vcxproj index 54dfbf8..87aeef3 100644 --- a/source/tools/gencmn/gencmn.vcxproj +++ b/source/tools/gencmn/gencmn.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {A8D36F8D-09E6-4174-91C3-7BEAA9C3F04F} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -93,7 +58,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -106,6 +71,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -114,6 +81,8 @@ .\x86\Release/gencmn.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/gencmn.pdb Console false @@ -133,7 +102,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -148,6 +117,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -156,6 +127,8 @@ .\x86\Debug/gencmn.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/gencmn.pdb Console @@ -176,7 +149,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -189,6 +162,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -197,6 +172,8 @@ .\x64\Release/gencmn.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/gencmn.pdb Console MachineX64 @@ -215,7 +192,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -230,6 +207,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -238,6 +217,8 @@ .\x64\Debug/gencmn.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/gencmn.pdb Console @@ -247,17 +228,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/gencnval/gencnval.vcxproj b/source/tools/gencnval/gencnval.vcxproj index d29c61f..d2becad 100644 --- a/source/tools/gencnval/gencnval.vcxproj +++ b/source/tools/gencnval/gencnval.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {8B41752B-5A52-41E4-B7E0-07921C0CC6BF} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -93,7 +58,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -106,6 +71,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -114,6 +81,8 @@ .\x86\Release/gencnval.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/gencnval.pdb Console false @@ -133,7 +102,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -148,6 +117,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -156,6 +127,8 @@ .\x86\Debug/gencnval.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/gencnval.pdb Console @@ -176,7 +149,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -189,6 +162,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -197,6 +172,8 @@ .\x64\Release/gencnval.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/gencnval.pdb Console MachineX64 @@ -215,7 +192,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -230,6 +207,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -238,6 +217,8 @@ .\x64\Debug/gencnval.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/gencnval.pdb Console @@ -247,17 +228,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/gendict/gendict.vcxproj b/source/tools/gendict/gendict.vcxproj index 7984a31..a419abb 100644 --- a/source/tools/gendict/gendict.vcxproj +++ b/source/tools/gendict/gendict.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {9D4211F7-2C77-439C-82F0-30A4E43BA569} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -93,7 +58,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -106,6 +71,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -114,6 +81,8 @@ .\x86\Release/gendict.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/gendict.pdb Console false @@ -133,7 +102,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -148,6 +117,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -156,6 +127,8 @@ .\x86\Debug/gendict.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/gendict.pdb Console @@ -176,7 +149,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -189,6 +162,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -197,6 +172,8 @@ .\x64\Release/gendict.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/gendict.pdb Console MachineX64 @@ -215,7 +192,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -230,6 +207,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -238,6 +217,8 @@ .\x64\Debug/gendict.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/gendict.pdb Console @@ -247,17 +228,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/gennorm2/gennorm2.vcxproj b/source/tools/gennorm2/gennorm2.vcxproj index 9feb10e..ec408e2 100644 --- a/source/tools/gennorm2/gennorm2.vcxproj +++ b/source/tools/gennorm2/gennorm2.vcxproj @@ -1,51 +1,20 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {C7891A65-80AB-4245-912E-5F1E17B0E6C4} - 8.1 gennorm2 Win32Proj - - Application - Unicode - v140 - - - Application - Unicode - true - v140 - - + Application Unicode - v140 - - Application - Unicode + true - v140 @@ -78,6 +47,14 @@ .\x64\Debug\ true + + + + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + false + Level3 + + copy "$(TargetPath)" ..\..\..\bin @@ -85,31 +62,22 @@ ..\..\..\bin\$(TargetFileName);%(Outputs) - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) MaxSpeed true - true MultiThreadedDLL true - false - true .\x86\Release\gennorm2.pch .\x86\Release\ .\x86\Release\ .\x86\Release\ - Level3 ProgramDatabase - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Release\gennorm2.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release\gennorm2.pdb true Console @@ -127,38 +95,23 @@ ..\..\..\bin\$(TargetFileName);%(Outputs) - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true - true - EnableFastChecks - true MultiThreadedDebugDLL - true - false - true .\x86\Debug\gennorm2.pch .\x86\Debug\ .\x86\Debug\ .\x86\Debug\ true - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Debug\gennorm2.exe - true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug\gennorm2.pdb Console - MachineX86 false false @@ -170,37 +123,25 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) MaxSpeed true - true MultiThreadedDLL true - false - true .\x64\Release\gennorm2.pch .\x64\Release\ .\x64\Release\ .\x64\Release\ - Level3 ProgramDatabase - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Release\gennorm2.exe - true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release\gennorm2.pdb true Console true - true - MachineX64 false false @@ -212,38 +153,24 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true - true - EnableFastChecks - true MultiThreadedDebugDLL - true - false - true .\x64\Debug\gennorm2.pch .\x64\Debug\ .\x64\Debug\ .\x64\Debug\ true - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Debug\gennorm2.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug\gennorm2.pdb Console - MachineX64 false false @@ -259,17 +186,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/genrb/derb.vcxproj b/source/tools/genrb/derb.vcxproj index bf8fb1b..d76c3d2 100644 --- a/source/tools/genrb/derb.vcxproj +++ b/source/tools/genrb/derb.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {D3065ADB-8820-4CC7-9B6C-9510833961A3} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -97,7 +62,7 @@ ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -110,6 +75,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -118,6 +85,8 @@ .\x86\Release_derb/derb.exe true + icuuc.lib;icuin.lib;icuio.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release_derb/derb.pdb Console false @@ -141,7 +110,7 @@ Disabled ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -155,6 +124,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -163,6 +134,8 @@ .\x86\Debug_derb/derb.exe true + icuucd.lib;icuind.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug_derb/derb.pdb Console @@ -186,7 +159,7 @@ ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -199,6 +172,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -207,6 +182,8 @@ .\x64\Release_derb/derb.exe true + icuuc.lib;icuin.lib;icuio.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release_derb/derb.pdb Console MachineX64 @@ -228,7 +205,7 @@ Disabled ..\..\i18n;..\..\common;..\toolutil;..\..\io;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -242,6 +219,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -250,6 +229,8 @@ .\x64\Debug_derb/derb.exe true + icuucd.lib;icuind.lib;icuiod.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug_derb/derb.pdb Console @@ -259,28 +240,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - - - {c2b04507-2521-4801-bf0d-5fd79d6d518c} - true - false - false - true - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/genrb/genrb.vcxproj b/source/tools/genrb/genrb.vcxproj index 0b2d62c..13c8aa8 100644 --- a/source/tools/genrb/genrb.vcxproj +++ b/source/tools/genrb/genrb.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {97521D06-EC47-45D4-8BD0-9E16B3F93B2A} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -82,6 +47,12 @@ .\x64\Debug\ true + + + + WINVER=0x0601;_WIN32_WINNT=0x0601;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + + copy "$(TargetPath)" ..\..\..\bin @@ -93,7 +64,6 @@ ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -105,6 +75,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -113,6 +85,8 @@ .\x86\Release/genrb.exe true + icuuc.lib;icuin.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/genrb.pdb Console false @@ -132,7 +106,6 @@ Disabled ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -147,6 +120,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -155,6 +130,8 @@ .\x86\Debug/genrb.exe true + icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/genrb.pdb Console @@ -175,7 +152,6 @@ ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -187,6 +163,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -195,6 +173,8 @@ .\x64\Release/genrb.exe true + icuuc.lib;icuin.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/genrb.pdb Console MachineX64 @@ -213,7 +193,6 @@ Disabled ..\..\..\include;..\..\common;..\toolutil;..\..\i18n;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -228,6 +207,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -236,6 +217,8 @@ .\x64\Debug/genrb.exe true + icuucd.lib;icuind.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/genrb.pdb Console @@ -276,21 +259,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/gensprep/gensprep.vcxproj b/source/tools/gensprep/gensprep.vcxproj index 4e56344..3dde2db 100644 --- a/source/tools/gensprep/gensprep.vcxproj +++ b/source/tools/gensprep/gensprep.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {631C23CE-6C1D-4875-88F0-85E0A42B36EA} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -93,7 +58,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -106,6 +71,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -114,6 +81,8 @@ .\x86\Release/gensprep.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/gensprep.pdb Console false @@ -133,7 +102,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -147,6 +116,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -155,6 +126,8 @@ .\x86\Debug/gensprep.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/gensprep.pdb Console @@ -175,7 +148,7 @@ ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -188,6 +161,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -196,6 +171,8 @@ .\x64\Release/gensprep.exe true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/gensprep.pdb Console MachineX64 @@ -214,7 +191,7 @@ Disabled ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -228,6 +205,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -236,6 +215,8 @@ .\x64\Debug/gensprep.exe true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/gensprep.pdb Console @@ -249,17 +230,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/gentest/gentest.vcxproj b/source/tools/gentest/gentest.vcxproj index 078fc79..4104b48 100644 --- a/source/tools/gentest/gentest.vcxproj +++ b/source/tools/gentest/gentest.vcxproj @@ -1,52 +1,17 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {77C78066-746F-4EA6-B3FE-B8C8A4A97891} - 8.1 gentest - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -89,7 +54,7 @@ ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -102,6 +67,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -110,6 +77,8 @@ .\x86\Release/gentest.exe true + icuuc.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/gentest.pdb Console false @@ -124,7 +93,7 @@ Disabled ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -139,6 +108,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -147,6 +118,8 @@ .\x86\Debug/gentest.exe true + icuucd.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/gentest.pdb Console @@ -162,7 +135,7 @@ ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -175,6 +148,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -183,6 +158,8 @@ .\x64\Release/gentest.exe true + icuuc.lib;icutest.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/gentest.pdb Console MachineX64 @@ -196,7 +173,7 @@ Disabled ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -211,6 +188,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -219,6 +198,8 @@ .\x64\Debug/gentest.exe true + icuucd.lib;icutestd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\x64\Debug/gentest.pdb Console @@ -232,21 +213,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {eca6b435-b4fa-4f9f-bf95-f451d078fc47} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/icu-svnprops-check.py b/source/tools/icu-svnprops-check.py index 080b9fe..b0e86b3 100755 --- a/source/tools/icu-svnprops-check.py +++ b/source/tools/icu-svnprops-check.py @@ -75,6 +75,11 @@ def parse_auto_props(): # unescape any ";;" in a property value, e.g. the mime-type from # *.java = svn:eol-style=native;svn:mime-type=text/plain;;charset=utf-8 prop_val = prop_val.replace(";;", ";"); + # If the prop value "is quoted", remove the quotes. + # See svn:keywords for an example of a quoted prop value. + match = re.match('^"(.+)"$', prop_val) + if match: + prop_val = match.group(1) proplist.append((prop_name, prop_val)) file_types.append((file_type, proplist)) diff --git a/source/tools/icuinfo/icuinfo.vcxproj b/source/tools/icuinfo/icuinfo.vcxproj index 964ee94..ba33286 100644 --- a/source/tools/icuinfo/icuinfo.vcxproj +++ b/source/tools/icuinfo/icuinfo.vcxproj @@ -1,53 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {E7611F49-F088-4175-9446-6111444E72C8} - 8.1 - icuinfo - Win32Proj - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -84,6 +47,14 @@ .\x64\Debug\ true + + + + ..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) + true + Level4 + + copy "$(TargetPath)" ..\..\..\bin @@ -91,27 +62,18 @@ ..\..\..\bin\$(TargetFileName);%(Outputs) - ..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true x86\Release/icuinfo.pch x86\Release/ x86\Release/ x86\Release/ - Level4 - true Default - - NDEBUG;%(PreprocessorDefinitions) - $(OutDir)icuinfo.exe - true + icuuc.lib;icuin.lib;icutu.lib;icutest.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) x86\Release/icuinfo.pdb Console false @@ -126,31 +88,19 @@ ..\..\..\bin\$(TargetFileName);%(Outputs) - Disabled - ..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true Debug/icuinfo.pch Debug/ Debug/ Debug/ true - Level4 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - $(OutDir)icuinfo.exe - true - true + icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) $(OutDir)icuinfo.pdb Console false @@ -164,34 +114,21 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - - X64 - - ..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true x64\Release/icuinfo.pch x64\Release/ x64\Release/ x64\Release/ - Level4 - true Default - - NDEBUG;%(PreprocessorDefinitions) - $(OutDir)icuinfo.exe - true + icuuc.lib;icuin.lib;icutu.lib;icutest.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) x64\Release/icuinfo.pdb Console - MachineX64 @@ -200,38 +137,22 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - - X64 - - Disabled - ..\..\common;..\..\i18n;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true Debug/icuinfo.pch Debug/ Debug/ Debug/ true - Level4 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - $(OutDir)icuinfo.exe - true - true + icuucd.lib;icuind.lib;icutud.lib;icutestd.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) $(OutDir)icuinfo.pdb Console - MachineX64 @@ -240,25 +161,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - {eca6b435-b4fa-4f9f-bf95-f451d078fc47} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/icuinfo/testplug.vcxproj b/source/tools/icuinfo/testplug.vcxproj index 39cfcd2..058c495 100644 --- a/source/tools/icuinfo/testplug.vcxproj +++ b/source/tools/icuinfo/testplug.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {659D0C08-D4ED-4BF3-B02B-2D8D4B5A7A7A} - 8.1 - - DynamicLibrary - false - MultiByte - v140 - - + DynamicLibrary false MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 @@ -93,7 +58,7 @@ true ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -106,6 +71,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -114,6 +81,8 @@ ..\..\..\bin\testplug.dll true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\..\..\..\lib\testplug.pdb true UseLinkTimeCodeGeneration @@ -134,7 +103,7 @@ Disabled ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -149,6 +118,8 @@ true EditAndContinue Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -157,6 +128,8 @@ ..\..\..\bin\testplug.dll true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\..\..\..\lib\testplugd.pdb false @@ -176,7 +149,7 @@ true ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) true MultiThreadedDLL true @@ -189,6 +162,8 @@ Level3 true Default + /utf-8 %(AdditionalOptions) + true NDEBUG;%(PreprocessorDefinitions) @@ -197,6 +172,8 @@ ..\..\..\bin64\testplug.dll true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\..\..\..\lib64\testplug.pdb true UseLinkTimeCodeGeneration @@ -215,7 +192,7 @@ Disabled ..\..\..\include;..\..\common;..\toolutil;..\ctestfw;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) + WINVER=0x0601;_WIN32_WINNT=0x0601;WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;T_CTEST_IMPLEMENTATION;%(PreprocessorDefinitions) EnableFastChecks MultiThreadedDebugDLL true @@ -230,6 +207,8 @@ true ProgramDatabase Default + /utf-8 %(AdditionalOptions) + true _DEBUG;%(PreprocessorDefinitions) @@ -238,6 +217,8 @@ ..\..\..\bin64\testplug.dll true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) true .\..\..\..\lib64\testplugd.pdb .\..\..\..\lib64\testplugd.lib @@ -247,17 +228,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/icupkg/icupkg.vcxproj b/source/tools/icupkg/icupkg.vcxproj index 6e0e998..f75d40a 100644 --- a/source/tools/icupkg/icupkg.vcxproj +++ b/source/tools/icupkg/icupkg.vcxproj @@ -1,52 +1,17 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {62D4B15D-7A90-4ECB-BA19-5E021D6A21BC} - 8.1 Win32Proj - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -83,6 +48,14 @@ .\x64\Debug\ true + + + + ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + true + Level4 + + copy "$(TargetPath)" ..\..\..\bin @@ -90,27 +63,18 @@ ..\..\..\bin\$(TargetFileName);%(Outputs) - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true x86\Release/icupkg.pch x86\Release/ x86\Release/ x86\Release/ - Level4 - true Default - - NDEBUG;%(PreprocessorDefinitions) - $(OutDir)icupkg.exe - true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) x86\Release/icupkg.pdb Console false @@ -125,30 +89,19 @@ ..\..\..\bin\$(TargetFileName);%(Outputs) - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true Debug/icupkg.pch Debug/ Debug/ Debug/ true - Level4 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - $(OutDir)icupkg.exe - true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true $(OutDir)icupkg.pdb Console @@ -163,34 +116,21 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - - X64 - - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true x64\Release/icupkg.pch x64\Release/ x64\Release/ x64\Release/ - Level4 - true Default - - NDEBUG;%(PreprocessorDefinitions) - $(OutDir)icupkg.exe - true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) x64\Release/icupkg.pdb Console - MachineX64 @@ -199,54 +139,28 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - - X64 - - Disabled - ..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true Debug/icupkg.pch Debug/ Debug/ Debug/ true - Level4 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - $(OutDir)icupkg.exe - true - true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) $(OutDir)icupkg.pdb Console - MachineX64 - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/makeconv/makeconv.vcxproj b/source/tools/makeconv/makeconv.vcxproj index 4a95965..b5a1527 100644 --- a/source/tools/makeconv/makeconv.vcxproj +++ b/source/tools/makeconv/makeconv.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {F5AD9738-1A3D-4906-B9C4-A7D9CE33DC2C} - 8.1 - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -82,6 +47,14 @@ .\x64\Release\ false + + + + ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) + false + Level3 + + copy "$(TargetPath)" ..\..\..\bin @@ -92,32 +65,19 @@ .\x86\Debug/makeconv.tlb - Disabled - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - false - true .\x86\Debug/makeconv.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Debug/makeconv.exe - true - true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Debug/makeconv.pdb Console false @@ -135,27 +95,17 @@ .\x86\Release/makeconv.tlb - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE=1;%(PreprocessorDefinitions) - true MultiThreadedDLL - false - true .\x86\Release/makeconv.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x86\Release/makeconv.exe - true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/makeconv.pdb Console false @@ -170,39 +120,24 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - X64 .\x64\Debug/makeconv.tlb - Disabled - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - false - true .\x64\Debug/makeconv.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Debug/makeconv.exe - true - true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Debug/makeconv.pdb Console - MachineX64 @@ -212,34 +147,22 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - X64 .\x64\Release/makeconv.tlb - ..\..\..\include;..\..\common;..\toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE=1;%(PreprocessorDefinitions) - true MultiThreadedDLL - false - true .\x64\Release/makeconv.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - .\x64\Release/makeconv.exe - true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/makeconv.pdb Console - MachineX64 @@ -252,17 +175,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/pkgdata/pkgdata.vcxproj b/source/tools/pkgdata/pkgdata.vcxproj index 9f723c0..680cc2f 100644 --- a/source/tools/pkgdata/pkgdata.vcxproj +++ b/source/tools/pkgdata/pkgdata.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {4C8454FE-81D3-4CA3-9927-29BA96F03DAC} - 8.1 - - Application - false - MultiByte - v140 - - + Application false MultiByte - v140 - - - Application - false - MultiByte - v140 - - - Application - false - MultiByte - v140 @@ -82,6 +47,14 @@ .\x64\Release\ false + + + + ../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories) + true + Level3 + + copy "$(TargetPath)" ..\..\..\bin @@ -92,31 +65,22 @@ .\x86\Debug/pkgdata.tlb - Disabled - ../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true .\x86\Debug/pkgdata.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ true - Level3 - true EditAndContinue Default - _DEBUG;%(PreprocessorDefinitions) 0x0411 .\x86\Debug/pkgdata.exe - true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) true .\x86\Debug/pkgdata.pdb Console @@ -135,28 +99,21 @@ .\x86\Release/pkgdata.tlb - ../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true .\x86\Release/pkgdata.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - NDEBUG;%(PreprocessorDefinitions) 0x0411 .\x86\Release/pkgdata.exe - true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib;%(AdditionalLibraryDirectories) .\x86\Release/pkgdata.pdb Console false @@ -171,39 +128,27 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - X64 .\x64\Debug/pkgdata.tlb - Disabled - ../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - true - true .\x64\Debug/pkgdata.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ true - Level3 - true ProgramDatabase Default - _DEBUG;%(PreprocessorDefinitions) 0x0411 .\x64\Debug/pkgdata.exe - true - true + icuucd.lib;icutud.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Debug/pkgdata.pdb Console - MachineX64 @@ -213,35 +158,27 @@ ..\..\..\bin64\$(TargetFileName);%(Outputs) - X64 .\x64\Release/pkgdata.tlb - ../../../include;../../common;../toolutil;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions) - true MultiThreadedDLL true - true - true .\x64\Release/pkgdata.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 true Default - NDEBUG;%(PreprocessorDefinitions) 0x0411 .\x64\Release/pkgdata.exe - true + icuuc.lib;icutu.lib;%(AdditionalDependencies) + ..\..\..\lib64;%(AdditionalLibraryDirectories) .\x64\Release/pkgdata.pdb Console - MachineX64 @@ -251,29 +188,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {fdd3c4f2-9805-44eb-9a77-bc1c1c95b547} - false - - - {a8d36f8d-09e6-4174-91c3-7beaa9c3f04f} - false - - - {62d4b15d-7a90-4ecb-ba19-5e021d6a21bc} - false - - - {6b231032-3cb5-4eed-9210-810d666a23a0} - false - - - + \ No newline at end of file diff --git a/source/tools/toolutil/toolutil.vcxproj b/source/tools/toolutil/toolutil.vcxproj index 7197635..4df76dd 100644 --- a/source/tools/toolutil/toolutil.vcxproj +++ b/source/tools/toolutil/toolutil.vcxproj @@ -1,51 +1,16 @@  - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - + + + {6B231032-3CB5-4EED-9210-810D666A23A0} - 8.1 - - DynamicLibrary - false - MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 - - + DynamicLibrary false MultiByte - v140 - - - DynamicLibrary - false - MultiByte - v140 @@ -82,42 +47,34 @@ .\x64\Debug\ true + + + + ..\..\..\include;..\..\common;..\..\i18n;%(AdditionalIncludeDirectories) + U_TOOLUTIL_IMPLEMENTATION;%(PreprocessorDefinitions) + false + Level3 + + - NDEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\..\..\..\lib\icutu.tlb true - ..\..\..\include;..\..\common;..\..\i18n;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;U_TOOLUTIL_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true - false - true .\x86\Release/toolutil.pch .\x86\Release/ .\x86\Release/ .\x86\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin\icutu60.dll - true + ..\..\..\bin\icutu61.dll + icuuc.lib;icuin.lib;%(AdditionalDependencies) ..\..\..\lib;%(AdditionalLibraryDirectories) .\..\..\..\lib\icutu.pdb - true UseLinkTimeCodeGeneration 0x4ac00000 false @@ -128,40 +85,21 @@ - _DEBUG;%(PreprocessorDefinitions) - true - true - Win32 .\..\..\..\lib\icutud.tlb - Disabled - ..\..\..\include;..\..\common;..\..\i18n;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;U_TOOLUTIL_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - false - true .\x86\Debug/toolutil.pch .\x86\Debug/ .\x86\Debug/ .\x86\Debug/ - Level3 - true EditAndContinue Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin\icutu60d.dll - true + ..\..\..\bin\icutu61d.dll + icuucd.lib;icuind.lib;%(AdditionalDependencies) ..\..\..\lib;%(AdditionalLibraryDirectories) - true .\..\..\..\lib\icutud.pdb 0x4ac00000 false @@ -172,86 +110,48 @@ - NDEBUG;%(PreprocessorDefinitions) - true - true - X64 .\..\..\..\lib64\icutu.tlb true - ..\..\..\include;..\..\common;..\..\i18n;%(AdditionalIncludeDirectories) - WIN64;WIN32;NDEBUG;_CRT_SECURE_NO_DEPRECATE;U_TOOLUTIL_IMPLEMENTATION;%(PreprocessorDefinitions) - true MultiThreadedDLL true - false - true .\x64\Release/toolutil.pch .\x64\Release/ .\x64\Release/ .\x64\Release/ - Level3 - true Default - /utf-8 %(AdditionalOptions) - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin64\icutu60.dll - true + ..\..\..\bin64\icutu61.dll + icuuc.lib;icuin.lib;%(AdditionalDependencies) ..\..\..\lib64;%(AdditionalLibraryDirectories) .\..\..\..\lib64\icutu.pdb - true UseLinkTimeCodeGeneration 0x4ac00000 ..\..\..\lib64\icutu.lib - MachineX64 - _DEBUG;%(PreprocessorDefinitions) - true - true - X64 .\..\..\..\lib64\icutud.tlb - Disabled - ..\..\..\include;..\..\common;..\..\i18n;%(AdditionalIncludeDirectories) - WIN64;WIN32;_DEBUG;_CRT_SECURE_NO_DEPRECATE;U_TOOLUTIL_IMPLEMENTATION;%(PreprocessorDefinitions) - EnableFastChecks MultiThreadedDebugDLL - true - false - true .\x64\Debug/toolutil.pch .\x64\Debug/ .\x64\Debug/ .\x64\Debug/ - Level3 - true ProgramDatabase Default - /utf-8 %(AdditionalOptions) - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - ..\..\..\bin64\icutu60d.dll - true + ..\..\..\bin64\icutu61d.dll + icuucd.lib;icuind.lib;%(AdditionalDependencies) ..\..\..\lib64;%(AdditionalLibraryDirectories) - true .\..\..\..\lib64\icutud.pdb 0x4ac00000 ..\..\..\lib64\icutud.lib - MachineX64 @@ -324,17 +224,7 @@ - - - {73c0a65b-d1f2-4de1-b3a6-15dad2c23f3d} - false - - - {0178b127-6269-407d-b112-93877bb62776} - false - - - + \ No newline at end of file diff --git a/source/tools/tzcode/Makefile.in b/source/tools/tzcode/Makefile.in index f8ab02d..63c9230 100644 --- a/source/tools/tzcode/Makefile.in +++ b/source/tools/tzcode/Makefile.in @@ -77,12 +77,12 @@ tzorig: $(TZCODE) $(TZDATA) -mv $(TZORIG)/zishrink.awk $(TZORIG)/zishrink.awk.orig sed -e '/if (line ~ \/^R SystemV \/) return/s/^/#/' $(TZORIG)/zishrink.awk.orig > $(TZORIG)/zishrink.awk -mv $(TZORIG)/Makefile $(TZORIG)/Makefile.orig - sed -e "s/BACKWARD=\$$(BACKWARD)/BACKWARD='\$$(BACKWARD)'/" $(TZORIG)/Makefile.orig > $(TZORIG)/Makefile + sed -e "s/^BACKWARD=.*/BACKWARD= backward pacificnew/" $(TZORIG)/Makefile.orig > $(TZORIG)/Makefile $(MAKE) -C $@ $(TZORIG_OPTS) zdump zones $(ZDUMPOUT): tzorig ( cd $(TZORIG) ; ./zdump$(EXEEXT) $(ZDUMP_OPTS) ) - + find $(ZDUMPOUT) -name '*--ICU' -exec sh -c 'mv "$${0}" $${0%--ICU}' {} \; dump-out: $(ZDUMPOUT) $(ICUZDUMPOUT) diff --git a/source/tools/tzcode/icuzdump.cpp b/source/tools/tzcode/icuzdump.cpp index 3e5ed1d..71551ed 100644 --- a/source/tools/tzcode/icuzdump.cpp +++ b/source/tools/tzcode/icuzdump.cpp @@ -40,6 +40,7 @@ #include "uoptions.h" using namespace std; +using namespace icu; class DumpFormatter { public: diff --git a/source/tools/tzcode/icuzones b/source/tools/tzcode/icuzones index 9e3c7c9..168a86f 100644 --- a/source/tools/tzcode/icuzones +++ b/source/tools/tzcode/icuzones @@ -78,3 +78,52 @@ Link Asia/Ho_Chi_Minh VST # Link America/Regina Canada/East-Saskatchewan # removed from backward in 2017c + +# Note: +# Following section was added for tz database 2018a and 2018b. +# ICU has a bug handling negative DST, and we also don't want to +# flip sumer time name and winter time name for Dublin at least for +# now. Because the change had major impacts to tz database external +# consumers, the tz database maintainer once reverted the Europe/Dublin +# rules (same as 2017c or older) in 2018c. The tz database maintainer +# thinks the changes in 2018a should be brought back when external +# tz database consumers are ready to adopt the change. We don't know +# what CLDR TC want to do with this for now. But if tz database brings +# back the change, and CLDR TC (and ICU TC) want to keep the display name +# unchanged, then we can uncomment the block below to restore ICU +# custom override. (Yoshito 2018-01-23) + +# +# tzdata2018a changed Europe/Dublin to use IST (UTC+1) as the standard time +# of the region, and GMT (UTC) as the daylight saving time with negative +# offset (-1 hour) in winter. ICU SimpleTimeZone rejects a zone with negative +# daylight saving time offset. We could remove the restriction in newer version +# of ICU, but such data does not work well with older ICU runtime without +# fixing the issue. For now, we define our own Europe/Dubin in ICU, replacing +# Europe/Dublin data from the tz database. +# + +# Rule NAME FROM TO TYPE IN ON AT SAVE LETTER/S +# Rule Eire--ICU 1971 only - Oct 31 2:00u 0 GMT +# Rule Eire--ICU 1972 1980 - Mar Sun>=16 2:00u 1:00 IST +# Rule Eire--ICU 1972 1980 - Oct Sun>=23 2:00u 0 GMT +# Rule Eire--ICU 1981 max - Mar lastSun 1:00u 1:00 IST +# Rule Eire--ICU 1981 1989 - Oct Sun>=23 1:00u 0 GMT +# Rule Eire--ICU 1990 1995 - Oct Sun>=22 1:00u 0 GMT +# Rule Eire--ICU 1996 max - Oct lastSun 1:00u 0 GMT + +# Zone NAME GMTOFF RULES FORMAT [UNTIL] +# Zone Europe/Dublin--ICU -0:25:00 - LMT 1880 Aug 2 +# -0:25:21 - DMT 1916 May 21 2:00s +# -0:25:21 1:00 IST 1916 Oct 1 2:00s +# 0:00 GB-Eire %s 1921 Dec 6 # independence +# 0:00 GB-Eire GMT/IST 1940 Feb 25 2:00s +# 0:00 1:00 IST 1946 Oct 6 2:00s +# 0:00 - GMT 1947 Mar 16 2:00s +# 0:00 1:00 IST 1947 Nov 2 2:00s +# 0:00 - GMT 1948 Apr 18 2:00s +# 0:00 GB-Eire GMT/IST 1968 Oct 27 +# 0:00 Eire--ICU GMT/IST + +# Link Europe/Dublin--ICU Eire--ICU + diff --git a/source/tools/tzcode/tz2icu.cpp b/source/tools/tzcode/tz2icu.cpp index f0ee63e..b946ffb 100644 --- a/source/tools/tzcode/tz2icu.cpp +++ b/source/tools/tzcode/tz2icu.cpp @@ -830,7 +830,7 @@ struct FinalRulePart { if (mode != DOM && (dow < 0 || dow >= 7)) { os << "Invalid input day of week " << dow; } - if (offset < 0 || offset > (2 * HOUR)) { + if (offset < (-1 * HOUR) || offset > (2 * HOUR)) { os << "Invalid input offset " << offset; } if (isgmt && !isstd) { @@ -903,7 +903,6 @@ map finalRules; map > links; map reverseLinks; -map linkSource; // id => "Olson link" or "ICU alias" /** * Predicate used to find FinalRule objects that do not have both @@ -975,9 +974,6 @@ void readFinalZonesAndRules(istream& in) { links[fromid].insert(toid); reverseLinks[toid] = fromid; - - linkSource[fromid] = "Olson link"; - linkSource[toid] = "Olson link"; } else if (token.length() > 0 && token[0] == '#') { consumeLine(in); } else { @@ -1430,6 +1426,9 @@ void FinalRule::print(ostream& os) const { os << part[whichpart].offset << endl; } +#define ICU_ZONE_OVERRIDE_SUFFIX "--ICU" +#define ICU_ZONE_OVERRIDE_SUFFIX_LEN 5 + int main(int argc, char *argv[]) { string rootpath, zonetab, version; bool validArgs = FALSE; @@ -1493,6 +1492,82 @@ int main(int argc, char *argv[]) { << (ZONEINFO.begin())->first << ".." << (--ZONEINFO.end())->first << "]" << endl; + // Overrides TZ database zones with ICU custom zone definition. + // These ICU zone overrides are defined in icuzones, with suffix --ICU. + // If there is a matching TZ database zone, the zoneinfo is replaced + // with the ICU definition. Then, the zone ID with --ICU suffix + // will be deleted from the final list. + // For example, zoneinfo for Europe/Dublin imported from the TZ database + // will be replaced with the zone definition for Europe/Dublin--ICU + // in icuzones. + + // Collect zone IDs to be modified with ICU definition. + vector customZones; + for (ZoneMapIter i = ZONEINFO.begin(); i != ZONEINFO.end(); ++i) { + const string& id = i->first; + size_t idx = id.rfind(ICU_ZONE_OVERRIDE_SUFFIX); + if (idx != string::npos && idx == id.length() - ICU_ZONE_OVERRIDE_SUFFIX_LEN) { + cout << "ICU zone override: " << id << endl; + customZones.push_back(id.substr(0, idx)); + } + } + + // + // BEGIN ICU Custom ZoneInfo Override Handling + // + + // Replace zoneinfo with ICU definition, then remove ICU zone ID with + // the special suffix. + for (vector::iterator i = customZones.begin(); i != customZones.end(); i++) { + string& origId = *i; + string custId = origId + ICU_ZONE_OVERRIDE_SUFFIX; + + map::iterator origZi = ZONEINFO.find(origId); + map::iterator custZi = ZONEINFO.find(custId); + if (origZi != ZONEINFO.end() && custZi != ZONEINFO.end()) { + // replace original zone info with custom override, + // then delete one custom ID + cout << "Replacing ZoneInfo " << origId << " with " << custId << endl; + origZi->second = custZi->second; + ZONEINFO.erase(custZi); + } + + // Also replace final rule + map::iterator origFz = finalZones.find(origId); + map::iterator custFz = finalZones.find(custId); + if (origFz != finalZones.end() && custFz != finalZones.end()) { + // replace original final zone with custom override, + // then delete one for custom ID + cout << "Replacing FinalZone for " << origId << " with " << custId << endl; + origFz->second = custFz->second; + finalZones.erase(custFz); + } + } + + // Also remove aliases for ICU custom zoneinfo overrides. + for (map>::const_iterator i = links.begin(); i != links.end(); ) { + const string& id = i->first; + size_t idx = id.rfind(ICU_ZONE_OVERRIDE_SUFFIX); + if (idx != string::npos && idx == id.length() - ICU_ZONE_OVERRIDE_SUFFIX_LEN) { + const set& aliases = i->second; + // Also remove all revserse links + for (set::const_iterator j = aliases.begin(); j != aliases.end(); j++) { + const string& alias = *j; + cout << "Removing alias " << alias << endl; + reverseLinks.erase(alias); + } + + links.erase(i++); + } else { + i++; + } + } + + + // + // END ICU Custom ZoneInfo Override Handling + // + try { for_each(finalZones.begin(), finalZones.end(), mergeFinalZone); } catch (const exception& error) { @@ -1510,7 +1585,7 @@ int main(int argc, char *argv[]) { const string& olson = i->first; const set& aliases = i->second; if (ZONEINFO.find(olson) == ZONEINFO.end()) { - cerr << "Error: Invalid " << linkSource[olson] << " to non-existent \"" + cerr << "Error: Invalid 'Link' to non-existent \"" << olson << "\"" << endl; return 1; } -- 2.7.4