pango 3.2.7-x64-mingw32 → 3.2.8-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (236) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +10 -7
  3. data/lib/2.2/pango.so +0 -0
  4. data/lib/2.3/pango.so +0 -0
  5. data/lib/2.4/pango.so +0 -0
  6. data/lib/2.5/pango.so +0 -0
  7. data/pango.gemspec +2 -0
  8. data/vendor/local/bin/derb.exe +0 -0
  9. data/vendor/local/bin/escapesrc.exe +0 -0
  10. data/vendor/local/bin/fribidi.exe +0 -0
  11. data/vendor/local/bin/genbrk.exe +0 -0
  12. data/vendor/local/bin/genccode.exe +0 -0
  13. data/vendor/local/bin/gencfu.exe +0 -0
  14. data/vendor/local/bin/gencmn.exe +0 -0
  15. data/vendor/local/bin/gencnval.exe +0 -0
  16. data/vendor/local/bin/gendict.exe +0 -0
  17. data/vendor/local/bin/gennorm2.exe +0 -0
  18. data/vendor/local/bin/genrb.exe +0 -0
  19. data/vendor/local/bin/gensprep.exe +0 -0
  20. data/vendor/local/bin/hb-ot-shape-closure.exe +0 -0
  21. data/vendor/local/bin/hb-shape.exe +0 -0
  22. data/vendor/local/bin/hb-subset.exe +0 -0
  23. data/vendor/local/bin/hb-view.exe +0 -0
  24. data/vendor/local/bin/icu-config +6 -6
  25. data/vendor/local/bin/icuinfo.exe +0 -0
  26. data/vendor/local/bin/icupkg.exe +0 -0
  27. data/vendor/local/bin/libfribidi-0.dll +0 -0
  28. data/vendor/local/bin/libgraphene-1.0-0.dll +0 -0
  29. data/vendor/local/bin/libharfbuzz-0.dll +0 -0
  30. data/vendor/local/bin/libharfbuzz-subset-0.dll +0 -0
  31. data/vendor/local/bin/libpango-1.0-0.dll +0 -0
  32. data/vendor/local/bin/libpangocairo-1.0-0.dll +0 -0
  33. data/vendor/local/bin/libpangoft2-1.0-0.dll +0 -0
  34. data/vendor/local/bin/libpangowin32-1.0-0.dll +0 -0
  35. data/vendor/local/bin/makeconv.exe +0 -0
  36. data/vendor/local/{libexec/installed-tests/graphene-1.0/quad.exe → bin/pango-list.exe} +0 -0
  37. data/vendor/local/bin/pango-view.exe +0 -0
  38. data/vendor/local/bin/pkgdata.exe +0 -0
  39. data/vendor/local/bin/uconv.exe +0 -0
  40. data/vendor/local/include/fribidi/fribidi-config.h +2 -2
  41. data/vendor/local/include/graphene-1.0/graphene-macros.h +1 -1
  42. data/vendor/local/include/graphene-1.0/graphene-matrix.h +1 -1
  43. data/vendor/local/include/graphene-1.0/graphene-vec2.h +1 -1
  44. data/vendor/local/include/graphene-1.0/graphene-vec3.h +1 -1
  45. data/vendor/local/include/graphene-1.0/graphene-vec4.h +1 -1
  46. data/vendor/local/include/graphene-1.0/graphene-version.h +2 -2
  47. data/vendor/local/include/harfbuzz/hb-ot-layout.h +13 -0
  48. data/vendor/local/include/harfbuzz/hb-set.h +4 -0
  49. data/vendor/local/include/harfbuzz/hb-subset-plan.hh +1 -1
  50. data/vendor/local/include/harfbuzz/hb-subset-private.hh +1 -0
  51. data/vendor/local/include/harfbuzz/hb-subset.h +3 -0
  52. data/vendor/local/include/harfbuzz/hb-version.h +2 -2
  53. data/vendor/local/include/pango-1.0/pango/pango-features.h +2 -2
  54. data/vendor/local/include/unicode/brkiter.h +1 -1
  55. data/vendor/local/include/unicode/bytestriebuilder.h +1 -1
  56. data/vendor/local/include/unicode/caniter.h +2 -2
  57. data/vendor/local/include/unicode/compactdecimalformat.h +17 -250
  58. data/vendor/local/include/unicode/currunit.h +3 -2
  59. data/vendor/local/include/unicode/dcfmtsym.h +8 -1
  60. data/vendor/local/include/unicode/decimfmt.h +301 -439
  61. data/vendor/local/include/unicode/docmain.h +1 -1
  62. data/vendor/local/include/unicode/edits.h +129 -21
  63. data/vendor/local/include/unicode/fmtable.h +14 -21
  64. data/vendor/local/include/unicode/fpositer.h +0 -8
  65. data/vendor/local/include/unicode/measunit.h +0 -8
  66. data/vendor/local/include/unicode/nounit.h +6 -6
  67. data/vendor/local/include/unicode/numberformatter.h +1005 -553
  68. data/vendor/local/include/unicode/numfmt.h +10 -10
  69. data/vendor/local/include/unicode/platform.h +0 -14
  70. data/vendor/local/include/unicode/plurrule.h +0 -21
  71. data/vendor/local/include/unicode/rbbi.h +9 -15
  72. data/vendor/local/include/unicode/rbnf.h +2 -2
  73. data/vendor/local/include/unicode/scientificnumberformatter.h +0 -5
  74. data/vendor/local/include/unicode/smpdtfmt.h +33 -6
  75. data/vendor/local/include/unicode/timezone.h +2 -0
  76. data/vendor/local/include/unicode/uchar.h +42 -3
  77. data/vendor/local/include/unicode/unistr.h +3 -3
  78. data/vendor/local/include/unicode/unum.h +26 -5
  79. data/vendor/local/include/unicode/unumberformatter.h +717 -0
  80. data/vendor/local/include/unicode/urename.h +13 -0
  81. data/vendor/local/include/unicode/uscript.h +16 -1
  82. data/vendor/local/include/unicode/uspoof.h +24 -1
  83. data/vendor/local/include/unicode/utypes.h +4 -1
  84. data/vendor/local/include/unicode/uvernum.h +5 -5
  85. data/vendor/local/lib/cmake/harfbuzz/harfbuzz-config.cmake +1 -1
  86. data/vendor/local/lib/graphene-1.0/include/graphene-config.h +3 -1
  87. data/vendor/local/lib/icu/{61.1 → 62.1}/Makefile.inc +6 -6
  88. data/vendor/local/lib/icu/{61.1 → 62.1}/pkgdata.inc +3 -3
  89. data/vendor/local/lib/icu/Makefile.inc +6 -6
  90. data/vendor/local/lib/icu/pkgdata.inc +3 -3
  91. data/vendor/local/lib/icudt.dll +0 -0
  92. data/vendor/local/lib/{icudt61.dll → icudt62.dll} +0 -0
  93. data/vendor/local/lib/icuin.dll +0 -0
  94. data/vendor/local/lib/icuin62.dll +0 -0
  95. data/vendor/local/lib/icuio.dll +0 -0
  96. data/vendor/local/lib/{icuio61.dll → icuio62.dll} +0 -0
  97. data/vendor/local/lib/icutest.dll +0 -0
  98. data/vendor/local/lib/{icutest61.dll → icutest62.dll} +0 -0
  99. data/vendor/local/lib/icutu.dll +0 -0
  100. data/vendor/local/lib/{icutu61.dll → icutu62.dll} +0 -0
  101. data/vendor/local/lib/icuuc.dll +0 -0
  102. data/vendor/local/lib/{icuuc61.dll → icuuc62.dll} +0 -0
  103. data/vendor/local/lib/libfribidi.dll.a +0 -0
  104. data/vendor/local/lib/libgraphene-1.0.dll.a +0 -0
  105. data/vendor/local/lib/libharfbuzz-icu.a +0 -0
  106. data/vendor/local/lib/libharfbuzz-icu.la +2 -2
  107. data/vendor/local/lib/libharfbuzz-subset.dll.a +0 -0
  108. data/vendor/local/lib/libharfbuzz-subset.la +2 -2
  109. data/vendor/local/lib/libharfbuzz.dll.a +0 -0
  110. data/vendor/local/lib/libharfbuzz.la +2 -2
  111. data/vendor/local/lib/libicudt.dll.a +0 -0
  112. data/vendor/local/lib/libicuin.dll.a +0 -0
  113. data/vendor/local/lib/libicuio.dll.a +0 -0
  114. data/vendor/local/lib/libicutest.dll.a +0 -0
  115. data/vendor/local/lib/libicutu.dll.a +0 -0
  116. data/vendor/local/lib/libicuuc.dll.a +0 -0
  117. data/vendor/local/lib/libpango-1.0.dll.a +0 -0
  118. data/vendor/local/lib/libpango-1.0.la +2 -2
  119. data/vendor/local/lib/libpangocairo-1.0.dll.a +0 -0
  120. data/vendor/local/lib/libpangocairo-1.0.la +2 -2
  121. data/vendor/local/lib/libpangoft2-1.0.dll.a +0 -0
  122. data/vendor/local/lib/libpangoft2-1.0.la +2 -2
  123. data/vendor/local/lib/libpangowin32-1.0.dll.a +0 -0
  124. data/vendor/local/lib/libpangowin32-1.0.la +2 -2
  125. data/vendor/local/lib/pkgconfig/fribidi.pc +1 -1
  126. data/vendor/local/lib/pkgconfig/graphene-1.0.pc +7 -11
  127. data/vendor/local/lib/pkgconfig/graphene-gobject-1.0.pc +6 -12
  128. data/vendor/local/lib/pkgconfig/harfbuzz-icu.pc +1 -1
  129. data/vendor/local/lib/pkgconfig/harfbuzz-subset.pc +1 -1
  130. data/vendor/local/lib/pkgconfig/harfbuzz.pc +1 -1
  131. data/vendor/local/lib/pkgconfig/icu-i18n.pc +6 -6
  132. data/vendor/local/lib/pkgconfig/icu-io.pc +6 -6
  133. data/vendor/local/lib/pkgconfig/icu-uc.pc +6 -6
  134. data/vendor/local/lib/pkgconfig/pango.pc +3 -2
  135. data/vendor/local/lib/pkgconfig/pangocairo.pc +1 -1
  136. data/vendor/local/lib/pkgconfig/pangoft2.pc +1 -1
  137. data/vendor/local/lib/pkgconfig/pangowin32.pc +2 -2
  138. data/vendor/local/share/gir-1.0/Graphene-1.0.gir +1 -1
  139. data/vendor/local/share/gtk-doc/html/harfbuzz/api-index-full.html +80 -0
  140. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-blob.html +34 -0
  141. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-face.html +13 -0
  142. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ot-layout.html +20 -0
  143. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-set.html +83 -28
  144. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz.devhelp2 +5 -1
  145. data/vendor/local/share/gtk-doc/html/harfbuzz/object-tree.html +1 -0
  146. data/vendor/local/share/gtk-doc/html/harfbuzz/pt02.html +1 -1
  147. data/vendor/local/share/gtk-doc/html/pango/PangoEngineLang.html +2 -2
  148. data/vendor/local/share/gtk-doc/html/pango/PangoEngineShape.html +2 -2
  149. data/vendor/local/share/gtk-doc/html/pango/PangoFcDecoder.html +2 -2
  150. data/vendor/local/share/gtk-doc/html/pango/PangoFcFont.html +2 -2
  151. data/vendor/local/share/gtk-doc/html/pango/PangoFcFontMap.html +2 -2
  152. data/vendor/local/share/gtk-doc/html/pango/PangoMarkupFormat.html +2 -2
  153. data/vendor/local/share/gtk-doc/html/pango/PangoRenderer.html +2 -2
  154. data/vendor/local/share/gtk-doc/html/pango/annotation-glossary.html +2 -2
  155. data/vendor/local/share/gtk-doc/html/pango/api-index-full.html +2 -2
  156. data/vendor/local/share/gtk-doc/html/pango/index.html +3 -3
  157. data/vendor/local/share/gtk-doc/html/pango/lowlevel.html +2 -2
  158. data/vendor/local/share/gtk-doc/html/pango/pango-Bidirectional-Text.html +2 -2
  159. data/vendor/local/share/gtk-doc/html/pango/pango-Cairo-Rendering.html +2 -2
  160. data/vendor/local/share/gtk-doc/html/pango/pango-CoreText-Fonts.html +2 -2
  161. data/vendor/local/share/gtk-doc/html/pango/pango-Coverage-Maps.html +2 -2
  162. data/vendor/local/share/gtk-doc/html/pango/pango-Engines.html +2 -2
  163. data/vendor/local/share/gtk-doc/html/pango/pango-Fonts.html +2 -2
  164. data/vendor/local/share/gtk-doc/html/pango/pango-FreeType-Fonts-and-Rendering.html +2 -2
  165. data/vendor/local/share/gtk-doc/html/pango/pango-Glyph-Storage.html +2 -2
  166. data/vendor/local/share/gtk-doc/html/pango/pango-Layout-Objects.html +2 -2
  167. data/vendor/local/share/gtk-doc/html/pango/pango-Miscellaneous-Utilities.html +2 -2
  168. data/vendor/local/share/gtk-doc/html/pango/pango-Modules.html +2 -2
  169. data/vendor/local/share/gtk-doc/html/pango/pango-OpenType-Font-Handling.html +2 -2
  170. data/vendor/local/share/gtk-doc/html/pango/pango-Scripts-and-Languages.html +2 -2
  171. data/vendor/local/share/gtk-doc/html/pango/pango-Tab-Stops.html +2 -2
  172. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Attributes.html +2 -2
  173. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Processing.html +2 -2
  174. data/vendor/local/share/gtk-doc/html/pango/pango-Version-Checking.html +4 -4
  175. data/vendor/local/share/gtk-doc/html/pango/pango-Vertical-Text.html +2 -2
  176. data/vendor/local/share/gtk-doc/html/pango/pango-Win32-Fonts-and-Rendering.html +2 -2
  177. data/vendor/local/share/gtk-doc/html/pango/pango-Xft-Fonts-and-Rendering.html +2 -2
  178. data/vendor/local/share/gtk-doc/html/pango/pango-hierarchy.html +2 -2
  179. data/vendor/local/share/gtk-doc/html/pango/pango.html +2 -2
  180. data/vendor/local/share/gtk-doc/html/pango/rendering.html +2 -2
  181. data/vendor/local/share/gtk-doc/html/pango/style.css +4 -0
  182. data/vendor/local/share/icu/{61.1 → 62.1}/LICENSE +0 -0
  183. data/vendor/local/share/icu/{61.1 → 62.1}/config/mh-mingw64 +0 -0
  184. data/vendor/local/share/icu/{61.1 → 62.1}/install-sh +0 -0
  185. data/vendor/local/share/icu/{61.1 → 62.1}/mkinstalldirs +0 -0
  186. data/vendor/local/share/man/man1/derb.1 +2 -2
  187. data/vendor/local/share/man/man1/genbrk.1 +2 -2
  188. data/vendor/local/share/man/man1/gencfu.1 +1 -1
  189. data/vendor/local/share/man/man1/gencnval.1 +3 -3
  190. data/vendor/local/share/man/man1/gendict.1 +2 -2
  191. data/vendor/local/share/man/man1/genrb.1 +3 -3
  192. data/vendor/local/share/man/man1/icu-config.1 +2 -2
  193. data/vendor/local/share/man/man1/makeconv.1 +3 -3
  194. data/vendor/local/share/man/man1/pkgdata.1 +2 -2
  195. data/vendor/local/share/man/man1/uconv.1 +2 -2
  196. data/vendor/local/share/man/man8/genccode.8 +2 -2
  197. data/vendor/local/share/man/man8/gencmn.8 +3 -3
  198. data/vendor/local/share/man/man8/gensprep.8 +3 -3
  199. data/vendor/local/share/man/man8/icupkg.8 +1 -1
  200. metadata +20 -54
  201. data/vendor/local/lib/icuin61.dll +0 -0
  202. data/vendor/local/libexec/installed-tests/graphene-1.0/box.exe +0 -0
  203. data/vendor/local/libexec/installed-tests/graphene-1.0/euler.exe +0 -0
  204. data/vendor/local/libexec/installed-tests/graphene-1.0/frustum.exe +0 -0
  205. data/vendor/local/libexec/installed-tests/graphene-1.0/matrix.exe +0 -0
  206. data/vendor/local/libexec/installed-tests/graphene-1.0/plane.exe +0 -0
  207. data/vendor/local/libexec/installed-tests/graphene-1.0/point.exe +0 -0
  208. data/vendor/local/libexec/installed-tests/graphene-1.0/point3d.exe +0 -0
  209. data/vendor/local/libexec/installed-tests/graphene-1.0/quaternion.exe +0 -0
  210. data/vendor/local/libexec/installed-tests/graphene-1.0/ray.exe +0 -0
  211. data/vendor/local/libexec/installed-tests/graphene-1.0/rect.exe +0 -0
  212. data/vendor/local/libexec/installed-tests/graphene-1.0/simd.exe +0 -0
  213. data/vendor/local/libexec/installed-tests/graphene-1.0/size.exe +0 -0
  214. data/vendor/local/libexec/installed-tests/graphene-1.0/sphere.exe +0 -0
  215. data/vendor/local/libexec/installed-tests/graphene-1.0/triangle.exe +0 -0
  216. data/vendor/local/libexec/installed-tests/graphene-1.0/vec2.exe +0 -0
  217. data/vendor/local/libexec/installed-tests/graphene-1.0/vec3.exe +0 -0
  218. data/vendor/local/libexec/installed-tests/graphene-1.0/vec4.exe +0 -0
  219. data/vendor/local/share/installed-tests/graphene-1.0/box.test +0 -3
  220. data/vendor/local/share/installed-tests/graphene-1.0/euler.test +0 -3
  221. data/vendor/local/share/installed-tests/graphene-1.0/frustum.test +0 -3
  222. data/vendor/local/share/installed-tests/graphene-1.0/matrix.test +0 -3
  223. data/vendor/local/share/installed-tests/graphene-1.0/plane.test +0 -3
  224. data/vendor/local/share/installed-tests/graphene-1.0/point.test +0 -3
  225. data/vendor/local/share/installed-tests/graphene-1.0/point3d.test +0 -3
  226. data/vendor/local/share/installed-tests/graphene-1.0/quad.test +0 -3
  227. data/vendor/local/share/installed-tests/graphene-1.0/quaternion.test +0 -3
  228. data/vendor/local/share/installed-tests/graphene-1.0/ray.test +0 -3
  229. data/vendor/local/share/installed-tests/graphene-1.0/rect.test +0 -3
  230. data/vendor/local/share/installed-tests/graphene-1.0/simd.test +0 -3
  231. data/vendor/local/share/installed-tests/graphene-1.0/size.test +0 -3
  232. data/vendor/local/share/installed-tests/graphene-1.0/sphere.test +0 -3
  233. data/vendor/local/share/installed-tests/graphene-1.0/triangle.test +0 -3
  234. data/vendor/local/share/installed-tests/graphene-1.0/vec2.test +0 -3
  235. data/vendor/local/share/installed-tests/graphene-1.0/vec3.test +0 -3
  236. data/vendor/local/share/installed-tests/graphene-1.0/vec4.test +0 -3
@@ -44,8 +44,9 @@ class U_I18N_API CurrencyUnit: public MeasureUnit {
44
44
 
45
45
  /**
46
46
  * Construct an object with the given ISO currency code.
47
- * @param isoCode the 3-letter ISO 4217 currency code; must not be
48
- * NULL and must have length 3
47
+ * @param isoCode the 3-letter ISO 4217 currency code; must have
48
+ * length 3 and need not be NUL-terminated. If NULL, the currency
49
+ * is initialized to the unknown currency XXX.
49
50
  * @param ec input-output error code. If the isoCode is invalid,
50
51
  * then this will be set to a failing value.
51
52
  * @stable ICU 3.0
@@ -406,9 +406,12 @@ public:
406
406
  * returning a const reference to one of the symbol strings.
407
407
  * The returned reference becomes invalid when the symbol is changed
408
408
  * or when the DecimalFormatSymbols are destroyed.
409
- * ### TODO markus 2002oct11: Consider proposing getConstSymbol() to be really public.
410
409
  * Note: moved #ifndef U_HIDE_INTERNAL_API after this, since this is needed for inline in DecimalFormat
411
410
  *
411
+ * This is not currently stable API, but if you think it should be stable,
412
+ * post a comment on the following ticket and the ICU team will take a look:
413
+ * http://bugs.icu-project.org/trac/ticket/13580
414
+ *
412
415
  * @param symbol Constant to indicate a number format symbol.
413
416
  * @return the format symbol by the param 'symbol'
414
417
  * @internal
@@ -422,6 +425,10 @@ public:
422
425
  * to accessing the symbol from getConstSymbol with the corresponding
423
426
  * key, such as kZeroDigitSymbol or kOneDigitSymbol.
424
427
  *
428
+ * This is not currently stable API, but if you think it should be stable,
429
+ * post a comment on the following ticket and the ICU team will take a look:
430
+ * http://bugs.icu-project.org/trac/ticket/13580
431
+ *
425
432
  * @param digit The digit, an integer between 0 and 9 inclusive.
426
433
  * If outside the range 0 to 9, the zero digit is returned.
427
434
  * @return the format symbol for the given digit.
@@ -43,28 +43,25 @@
43
43
  #include "unicode/curramt.h"
44
44
  #include "unicode/enumset.h"
45
45
 
46
- #ifndef U_HIDE_INTERNAL_API
47
- /**
48
- * \def UNUM_DECIMALFORMAT_INTERNAL_SIZE
49
- * @internal
50
- */
51
- #if UCONFIG_FORMAT_FASTPATHS_49
52
- #define UNUM_DECIMALFORMAT_INTERNAL_SIZE 16
53
- #endif
54
- #endif /* U_HIDE_INTERNAL_API */
55
-
56
46
  U_NAMESPACE_BEGIN
57
47
 
58
- class DigitList;
59
48
  class CurrencyPluralInfo;
60
- class Hashtable;
61
- class UnicodeSet;
62
- class FieldPositionHandler;
63
- class DecimalFormatStaticSets;
64
- class FixedDecimal;
65
- class DecimalFormatImpl;
66
- class PluralRules;
67
- class VisibleDigitsWithExponent;
49
+ class CompactDecimalFormat;
50
+
51
+ namespace number {
52
+ class LocalizedNumberFormatter;
53
+ class FormattedNumber;
54
+ namespace impl {
55
+ class DecimalQuantity;
56
+ struct DecimalFormatFields;
57
+ }
58
+ }
59
+
60
+ namespace numparse {
61
+ namespace impl {
62
+ class NumberParserImpl;
63
+ }
64
+ }
68
65
 
69
66
  // explicit template instantiation. see digitlst.h
70
67
  // (When building DLLs for Windows this is required.)
@@ -672,17 +669,14 @@ template class U_I18N_API EnumSet<UNumberFormatAttribute,
672
669
  * subclasses, such code will not necessarily work and will not be
673
670
  * guaranteed to work stably from release to release.
674
671
  */
675
- class U_I18N_API DecimalFormat: public NumberFormat {
676
- public:
672
+ class U_I18N_API DecimalFormat : public NumberFormat {
673
+ public:
677
674
  /**
678
675
  * Pad position.
679
676
  * @stable ICU 2.4
680
677
  */
681
678
  enum EPadPosition {
682
- kPadBeforePrefix,
683
- kPadAfterPrefix,
684
- kPadBeforeSuffix,
685
- kPadAfterSuffix
679
+ kPadBeforePrefix, kPadAfterPrefix, kPadBeforeSuffix, kPadAfterSuffix
686
680
  };
687
681
 
688
682
  /**
@@ -720,8 +714,7 @@ public:
720
714
  * pattern is invalid this will be set to a failure code.
721
715
  * @stable ICU 2.0
722
716
  */
723
- DecimalFormat(const UnicodeString& pattern,
724
- UErrorCode& status);
717
+ DecimalFormat(const UnicodeString& pattern, UErrorCode& status);
725
718
 
726
719
  /**
727
720
  * Create a DecimalFormat from the given pattern and symbols.
@@ -744,11 +737,10 @@ public:
744
737
  * pattern is invalid this will be set to a failure code.
745
738
  * @stable ICU 2.0
746
739
  */
747
- DecimalFormat( const UnicodeString& pattern,
748
- DecimalFormatSymbols* symbolsToAdopt,
749
- UErrorCode& status);
740
+ DecimalFormat(const UnicodeString& pattern, DecimalFormatSymbols* symbolsToAdopt, UErrorCode& status);
750
741
 
751
742
  #ifndef U_HIDE_INTERNAL_API
743
+
752
744
  /**
753
745
  * This API is for ICU use only.
754
746
  * Create a DecimalFormat from the given pattern, symbols, and style.
@@ -761,20 +753,29 @@ public:
761
753
  * pattern is invalid this will be set to a failure code.
762
754
  * @internal
763
755
  */
764
- DecimalFormat( const UnicodeString& pattern,
765
- DecimalFormatSymbols* symbolsToAdopt,
766
- UNumberFormatStyle style,
767
- UErrorCode& status);
756
+ DecimalFormat(const UnicodeString& pattern, DecimalFormatSymbols* symbolsToAdopt,
757
+ UNumberFormatStyle style, UErrorCode& status);
768
758
 
769
759
  #if UCONFIG_HAVE_PARSEALLINPUT
760
+
770
761
  /**
771
762
  * @internal
772
763
  */
773
764
  void setParseAllInput(UNumberFormatAttributeValue value);
765
+
774
766
  #endif
775
767
 
776
768
  #endif /* U_HIDE_INTERNAL_API */
777
769
 
770
+ private:
771
+
772
+ /**
773
+ * Internal constructor for DecimalFormat; sets up internal fields. All public constructors should
774
+ * call this constructor.
775
+ */
776
+ DecimalFormat(const DecimalFormatSymbols* symbolsToAdopt, UErrorCode& status);
777
+
778
+ public:
778
779
 
779
780
  /**
780
781
  * Set an integer attribute on this DecimalFormat.
@@ -786,9 +787,7 @@ public:
786
787
  * @return *this - for chaining (example: format.setAttribute(...).setAttribute(...) )
787
788
  * @stable ICU 51
788
789
  */
789
- virtual DecimalFormat& setAttribute( UNumberFormatAttribute attr,
790
- int32_t newvalue,
791
- UErrorCode &status);
790
+ virtual DecimalFormat& setAttribute(UNumberFormatAttribute attr, int32_t newValue, UErrorCode& status);
792
791
 
793
792
  /**
794
793
  * Get an integer
@@ -799,8 +798,7 @@ public:
799
798
  * @return the attribute value. Undefined if there is an error.
800
799
  * @stable ICU 51
801
800
  */
802
- virtual int32_t getAttribute( UNumberFormatAttribute attr,
803
- UErrorCode &status) const;
801
+ virtual int32_t getAttribute(UNumberFormatAttribute attr, UErrorCode& status) const;
804
802
 
805
803
 
806
804
  /**
@@ -809,7 +807,7 @@ public:
809
807
  * @see getGroupingUsed
810
808
  * @stable ICU 53
811
809
  */
812
- virtual void setGroupingUsed(UBool newValue);
810
+ void setGroupingUsed(UBool newValue) U_OVERRIDE;
813
811
 
814
812
  /**
815
813
  * Sets whether or not numbers should be parsed as integers only.
@@ -818,18 +816,16 @@ public:
818
816
  * @see isParseIntegerOnly
819
817
  * @stable ICU 53
820
818
  */
821
- virtual void setParseIntegerOnly(UBool value);
819
+ void setParseIntegerOnly(UBool value) U_OVERRIDE;
822
820
 
823
821
  /**
824
- * Set a particular UDisplayContext value in the formatter, such as
825
- * UDISPCTX_CAPITALIZATION_FOR_STANDALONE.
826
- * @param value The UDisplayContext value to set.
827
- * @param status Input/output status. If at entry this indicates a failure
828
- * status, the function will do nothing; otherwise this will be
829
- * updated with any new status from the function.
830
- * @stable ICU 53
822
+ * Sets whether lenient parsing should be enabled (it is off by default).
823
+ *
824
+ * @param enable \c TRUE if lenient parsing should be used,
825
+ * \c FALSE otherwise.
826
+ * @stable ICU 4.8
831
827
  */
832
- virtual void setContext(UDisplayContext value, UErrorCode& status);
828
+ void setLenient(UBool enable) U_OVERRIDE;
833
829
 
834
830
  /**
835
831
  * Create a DecimalFormat from the given pattern and symbols.
@@ -853,10 +849,9 @@ public:
853
849
  * pattern is invalid this will be set to a failure code.
854
850
  * @stable ICU 2.0
855
851
  */
856
- DecimalFormat( const UnicodeString& pattern,
857
- DecimalFormatSymbols* symbolsToAdopt,
858
- UParseError& parseError,
859
- UErrorCode& status);
852
+ DecimalFormat(const UnicodeString& pattern, DecimalFormatSymbols* symbolsToAdopt,
853
+ UParseError& parseError, UErrorCode& status);
854
+
860
855
  /**
861
856
  * Create a DecimalFormat from the given pattern and symbols.
862
857
  * Use this constructor when you need to completely customize the
@@ -877,9 +872,7 @@ public:
877
872
  * pattern is invalid this will be set to a failure code.
878
873
  * @stable ICU 2.0
879
874
  */
880
- DecimalFormat( const UnicodeString& pattern,
881
- const DecimalFormatSymbols& symbols,
882
- UErrorCode& status);
875
+ DecimalFormat(const UnicodeString& pattern, const DecimalFormatSymbols& symbols, UErrorCode& status);
883
876
 
884
877
  /**
885
878
  * Copy constructor.
@@ -901,7 +894,7 @@ public:
901
894
  * Destructor.
902
895
  * @stable ICU 2.0
903
896
  */
904
- virtual ~DecimalFormat();
897
+ ~DecimalFormat() U_OVERRIDE;
905
898
 
906
899
  /**
907
900
  * Clone this Format object polymorphically. The caller owns the
@@ -910,7 +903,7 @@ public:
910
903
  * @return a polymorphic copy of this DecimalFormat.
911
904
  * @stable ICU 2.0
912
905
  */
913
- virtual Format* clone(void) const;
906
+ Format* clone(void) const U_OVERRIDE;
914
907
 
915
908
  /**
916
909
  * Return true if the given Format objects are semantically equal.
@@ -920,7 +913,7 @@ public:
920
913
  * @return true if the given Format objects are semantically equal.
921
914
  * @stable ICU 2.0
922
915
  */
923
- virtual UBool operator==(const Format& other) const;
916
+ UBool operator==(const Format& other) const U_OVERRIDE;
924
917
 
925
918
 
926
919
  using NumberFormat::format;
@@ -936,11 +929,9 @@ public:
936
929
  * @return Reference to 'appendTo' parameter.
937
930
  * @stable ICU 2.0
938
931
  */
939
- virtual UnicodeString& format(double number,
940
- UnicodeString& appendTo,
941
- FieldPosition& pos) const;
942
-
932
+ UnicodeString& format(double number, UnicodeString& appendTo, FieldPosition& pos) const U_OVERRIDE;
943
933
 
934
+ #ifndef U_HIDE_INTERNAL_API
944
935
  /**
945
936
  * Format a double or long number using base-10 representation.
946
937
  *
@@ -953,10 +944,9 @@ public:
953
944
  * @return Reference to 'appendTo' parameter.
954
945
  * @internal
955
946
  */
956
- virtual UnicodeString& format(double number,
957
- UnicodeString& appendTo,
958
- FieldPosition& pos,
959
- UErrorCode &status) const;
947
+ UnicodeString& format(double number, UnicodeString& appendTo, FieldPosition& pos,
948
+ UErrorCode& status) const U_OVERRIDE;
949
+ #endif /* U_HIDE_INTERNAL_API */
960
950
 
961
951
  /**
962
952
  * Format a double or long number using base-10 representation.
@@ -971,10 +961,8 @@ public:
971
961
  * @return Reference to 'appendTo' parameter.
972
962
  * @stable ICU 4.4
973
963
  */
974
- virtual UnicodeString& format(double number,
975
- UnicodeString& appendTo,
976
- FieldPositionIterator* posIter,
977
- UErrorCode& status) const;
964
+ UnicodeString& format(double number, UnicodeString& appendTo, FieldPositionIterator* posIter,
965
+ UErrorCode& status) const U_OVERRIDE;
978
966
 
979
967
  /**
980
968
  * Format a long number using base-10 representation.
@@ -987,10 +975,9 @@ public:
987
975
  * @return Reference to 'appendTo' parameter.
988
976
  * @stable ICU 2.0
989
977
  */
990
- virtual UnicodeString& format(int32_t number,
991
- UnicodeString& appendTo,
992
- FieldPosition& pos) const;
978
+ UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPosition& pos) const U_OVERRIDE;
993
979
 
980
+ #ifndef U_HIDE_INTERNAL_API
994
981
  /**
995
982
  * Format a long number using base-10 representation.
996
983
  *
@@ -1002,10 +989,9 @@ public:
1002
989
  * @return Reference to 'appendTo' parameter.
1003
990
  * @internal
1004
991
  */
1005
- virtual UnicodeString& format(int32_t number,
1006
- UnicodeString& appendTo,
1007
- FieldPosition& pos,
1008
- UErrorCode &status) const;
992
+ UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPosition& pos,
993
+ UErrorCode& status) const U_OVERRIDE;
994
+ #endif /* U_HIDE_INTERNAL_API */
1009
995
 
1010
996
  /**
1011
997
  * Format a long number using base-10 representation.
@@ -1020,10 +1006,8 @@ public:
1020
1006
  * @return Reference to 'appendTo' parameter.
1021
1007
  * @stable ICU 4.4
1022
1008
  */
1023
- virtual UnicodeString& format(int32_t number,
1024
- UnicodeString& appendTo,
1025
- FieldPositionIterator* posIter,
1026
- UErrorCode& status) const;
1009
+ UnicodeString& format(int32_t number, UnicodeString& appendTo, FieldPositionIterator* posIter,
1010
+ UErrorCode& status) const U_OVERRIDE;
1027
1011
 
1028
1012
  /**
1029
1013
  * Format an int64 number using base-10 representation.
@@ -1036,10 +1020,9 @@ public:
1036
1020
  * @return Reference to 'appendTo' parameter.
1037
1021
  * @stable ICU 2.8
1038
1022
  */
1039
- virtual UnicodeString& format(int64_t number,
1040
- UnicodeString& appendTo,
1041
- FieldPosition& pos) const;
1023
+ UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPosition& pos) const U_OVERRIDE;
1042
1024
 
1025
+ #ifndef U_HIDE_INTERNAL_API
1043
1026
  /**
1044
1027
  * Format an int64 number using base-10 representation.
1045
1028
  *
@@ -1051,10 +1034,9 @@ public:
1051
1034
  * @return Reference to 'appendTo' parameter.
1052
1035
  * @internal
1053
1036
  */
1054
- virtual UnicodeString& format(int64_t number,
1055
- UnicodeString& appendTo,
1056
- FieldPosition& pos,
1057
- UErrorCode &status) const;
1037
+ UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPosition& pos,
1038
+ UErrorCode& status) const U_OVERRIDE;
1039
+ #endif /* U_HIDE_INTERNAL_API */
1058
1040
 
1059
1041
  /**
1060
1042
  * Format an int64 number using base-10 representation.
@@ -1069,10 +1051,8 @@ public:
1069
1051
  * @return Reference to 'appendTo' parameter.
1070
1052
  * @stable ICU 4.4
1071
1053
  */
1072
- virtual UnicodeString& format(int64_t number,
1073
- UnicodeString& appendTo,
1074
- FieldPositionIterator* posIter,
1075
- UErrorCode& status) const;
1054
+ UnicodeString& format(int64_t number, UnicodeString& appendTo, FieldPositionIterator* posIter,
1055
+ UErrorCode& status) const U_OVERRIDE;
1076
1056
 
1077
1057
  /**
1078
1058
  * Format a decimal number.
@@ -1090,19 +1070,18 @@ public:
1090
1070
  * @return Reference to 'appendTo' parameter.
1091
1071
  * @stable ICU 4.4
1092
1072
  */
1093
- virtual UnicodeString& format(StringPiece number,
1094
- UnicodeString& appendTo,
1095
- FieldPositionIterator* posIter,
1096
- UErrorCode& status) const;
1073
+ UnicodeString& format(StringPiece number, UnicodeString& appendTo, FieldPositionIterator* posIter,
1074
+ UErrorCode& status) const U_OVERRIDE;
1097
1075
 
1076
+ #ifndef U_HIDE_INTERNAL_API
1098
1077
 
1099
1078
  /**
1100
1079
  * Format a decimal number.
1101
- * The number is a DigitList wrapper onto a floating point decimal number.
1080
+ * The number is a DecimalQuantity wrapper onto a floating point decimal number.
1102
1081
  * The default implementation in NumberFormat converts the decimal number
1103
1082
  * to a double and formats that.
1104
1083
  *
1105
- * @param number The number, a DigitList format Decimal Floating Point.
1084
+ * @param number The number, a DecimalQuantity format Decimal Floating Point.
1106
1085
  * @param appendTo Output parameter to receive result.
1107
1086
  * Result is appended to existing contents.
1108
1087
  * @param posIter On return, can be used to iterate over positions
@@ -1111,14 +1090,16 @@ public:
1111
1090
  * @return Reference to 'appendTo' parameter.
1112
1091
  * @internal
1113
1092
  */
1114
- virtual UnicodeString& format(const DigitList &number,
1115
- UnicodeString& appendTo,
1116
- FieldPositionIterator* posIter,
1117
- UErrorCode& status) const;
1093
+ UnicodeString& format(const number::impl::DecimalQuantity& number, UnicodeString& appendTo,
1094
+ FieldPositionIterator* posIter, UErrorCode& status) const U_OVERRIDE;
1118
1095
 
1119
1096
  /**
1120
1097
  * Format a decimal number.
1121
- * @param number The number
1098
+ * The number is a DecimalQuantity wrapper onto a floating point decimal number.
1099
+ * The default implementation in NumberFormat converts the decimal number
1100
+ * to a double and formats that.
1101
+ *
1102
+ * @param number The number, a DecimalQuantity format Decimal Floating Point.
1122
1103
  * @param appendTo Output parameter to receive result.
1123
1104
  * Result is appended to existing contents.
1124
1105
  * @param pos On input: an alignment field, if desired.
@@ -1127,73 +1108,34 @@ public:
1127
1108
  * @return Reference to 'appendTo' parameter.
1128
1109
  * @internal
1129
1110
  */
1130
- virtual UnicodeString& format(
1131
- const VisibleDigitsWithExponent &number,
1132
- UnicodeString& appendTo,
1133
- FieldPosition& pos,
1134
- UErrorCode& status) const;
1111
+ UnicodeString& format(const number::impl::DecimalQuantity& number, UnicodeString& appendTo,
1112
+ FieldPosition& pos, UErrorCode& status) const U_OVERRIDE;
1135
1113
 
1136
- /**
1137
- * Format a decimal number.
1138
- * @param number The number
1139
- * @param appendTo Output parameter to receive result.
1140
- * Result is appended to existing contents.
1141
- * @param posIter On return, can be used to iterate over positions
1142
- * of fields generated by this format call.
1143
- * @param status Output param filled with success/failure status.
1144
- * @return Reference to 'appendTo' parameter.
1145
- * @internal
1146
- */
1147
- virtual UnicodeString& format(
1148
- const VisibleDigitsWithExponent &number,
1149
- UnicodeString& appendTo,
1150
- FieldPositionIterator* posIter,
1151
- UErrorCode& status) const;
1114
+ #endif // U_HIDE_INTERNAL_API
1115
+
1116
+ using NumberFormat::parse;
1152
1117
 
1153
1118
  /**
1154
- * Format a decimal number.
1155
- * The number is a DigitList wrapper onto a floating point decimal number.
1156
- * The default implementation in NumberFormat converts the decimal number
1157
- * to a double and formats that.
1119
+ * Parse the given string using this object's choices. The method
1120
+ * does string comparisons to try to find an optimal match.
1121
+ * If no object can be parsed, index is unchanged, and NULL is
1122
+ * returned. The result is returned as the most parsimonious
1123
+ * type of Formattable that will accomodate all of the
1124
+ * necessary precision. For example, if the result is exactly 12,
1125
+ * it will be returned as a long. However, if it is 1.5, it will
1126
+ * be returned as a double.
1158
1127
  *
1159
- * @param number The number, a DigitList format Decimal Floating Point.
1160
- * @param appendTo Output parameter to receive result.
1161
- * Result is appended to existing contents.
1162
- * @param pos On input: an alignment field, if desired.
1163
- * On output: the offsets of the alignment field.
1164
- * @param status Output param filled with success/failure status.
1165
- * @return Reference to 'appendTo' parameter.
1166
- * @internal
1128
+ * @param text The text to be parsed.
1129
+ * @param result Formattable to be set to the parse result.
1130
+ * If parse fails, return contents are undefined.
1131
+ * @param parsePosition The position to start parsing at on input.
1132
+ * On output, moved to after the last successfully
1133
+ * parse character. On parse failure, does not change.
1134
+ * @see Formattable
1135
+ * @stable ICU 2.0
1167
1136
  */
1168
- virtual UnicodeString& format(const DigitList &number,
1169
- UnicodeString& appendTo,
1170
- FieldPosition& pos,
1171
- UErrorCode& status) const;
1172
-
1173
- using NumberFormat::parse;
1174
-
1175
- /**
1176
- * Parse the given string using this object's choices. The method
1177
- * does string comparisons to try to find an optimal match.
1178
- * If no object can be parsed, index is unchanged, and NULL is
1179
- * returned. The result is returned as the most parsimonious
1180
- * type of Formattable that will accomodate all of the
1181
- * necessary precision. For example, if the result is exactly 12,
1182
- * it will be returned as a long. However, if it is 1.5, it will
1183
- * be returned as a double.
1184
- *
1185
- * @param text The text to be parsed.
1186
- * @param result Formattable to be set to the parse result.
1187
- * If parse fails, return contents are undefined.
1188
- * @param parsePosition The position to start parsing at on input.
1189
- * On output, moved to after the last successfully
1190
- * parse character. On parse failure, does not change.
1191
- * @see Formattable
1192
- * @stable ICU 2.0
1193
- */
1194
- virtual void parse(const UnicodeString& text,
1195
- Formattable& result,
1196
- ParsePosition& parsePosition) const;
1137
+ void parse(const UnicodeString& text, Formattable& result,
1138
+ ParsePosition& parsePosition) const U_OVERRIDE;
1197
1139
 
1198
1140
  /**
1199
1141
  * Parses text from the given string as a currency amount. Unlike
@@ -1214,8 +1156,7 @@ public:
1214
1156
  * the parsed currency; if parse fails, this is NULL.
1215
1157
  * @stable ICU 49
1216
1158
  */
1217
- virtual CurrencyAmount* parseCurrency(const UnicodeString& text,
1218
- ParsePosition& pos) const;
1159
+ CurrencyAmount* parseCurrency(const UnicodeString& text, ParsePosition& pos) const U_OVERRIDE;
1219
1160
 
1220
1161
  /**
1221
1162
  * Returns the decimal format symbols, which is generally not changed
@@ -1344,12 +1285,29 @@ public:
1344
1285
  */
1345
1286
  virtual void setNegativeSuffix(const UnicodeString& newValue);
1346
1287
 
1288
+ #ifndef U_HIDE_INTERNAL_API
1289
+ /**
1290
+ * Whether to show the plus sign on positive (non-negative) numbers; for example, "+12"
1291
+ * @internal Technical Preview
1292
+ */
1293
+ UBool isSignAlwaysShown() const;
1294
+ #endif /* U_HIDE_INTERNAL_API */
1295
+
1296
+ /**
1297
+ * Set whether to show the plus sign on positive (non-negative) numbers; for example, "+12"
1298
+ * @param value The new setting for whether to show plus sign on positive numbers
1299
+ * @internal Technical Preview
1300
+ */
1301
+ virtual void setSignAlwaysShown(UBool value);
1302
+
1347
1303
  /**
1348
1304
  * Get the multiplier for use in percent, permill, etc.
1349
1305
  * For a percentage, set the suffixes to have "%" and the multiplier to be 100.
1350
1306
  * (For Arabic, use arabic percent symbol).
1351
1307
  * For a permill, set the suffixes to have "\\u2031" and the multiplier to be 1000.
1352
1308
  *
1309
+ * The number may also be multiplied by a power of ten; see getMultiplierScale().
1310
+ *
1353
1311
  * @return the multiplier for use in percent, permill, etc.
1354
1312
  * Examples: with 100, 1.23 -> "123", and "123" -> 1.23
1355
1313
  * @stable ICU 2.0
@@ -1362,12 +1320,52 @@ public:
1362
1320
  * (For Arabic, use arabic percent symbol).
1363
1321
  * For a permill, set the suffixes to have "\\u2031" and the multiplier to be 1000.
1364
1322
  *
1323
+ * This method only supports integer multipliers. To multiply by a non-integer, pair this
1324
+ * method with setMultiplierScale().
1325
+ *
1365
1326
  * @param newValue the new value of the multiplier for use in percent, permill, etc.
1366
1327
  * Examples: with 100, 1.23 -> "123", and "123" -> 1.23
1367
1328
  * @stable ICU 2.0
1368
1329
  */
1369
1330
  virtual void setMultiplier(int32_t newValue);
1370
1331
 
1332
+ #ifndef U_HIDE_DRAFT_API
1333
+ /**
1334
+ * Gets the power of ten by which number should be multiplied before formatting, which
1335
+ * can be combined with setMultiplier() to multiply by any arbitrary decimal value.
1336
+ *
1337
+ * A multiplier scale of 2 corresponds to multiplication by 100, and a multiplier scale
1338
+ * of -2 corresponds to multiplication by 0.01.
1339
+ *
1340
+ * This method is analogous to UNUM_SCALE in getAttribute.
1341
+ *
1342
+ * @return the current value of the power-of-ten multiplier.
1343
+ * @draft ICU 62
1344
+ */
1345
+ int32_t getMultiplierScale(void) const;
1346
+ #endif /* U_HIDE_DRAFT_API */
1347
+
1348
+ /**
1349
+ * Sets a power of ten by which number should be multiplied before formatting, which
1350
+ * can be combined with setMultiplier() to multiply by any arbitrary decimal value.
1351
+ *
1352
+ * A multiplier scale of 2 corresponds to multiplication by 100, and a multiplier scale
1353
+ * of -2 corresponds to multiplication by 0.01.
1354
+ *
1355
+ * For example, to multiply numbers by 0.5 before formatting, you can do:
1356
+ *
1357
+ * <pre>
1358
+ * df.setMultiplier(5);
1359
+ * df.setMultiplierScale(-1);
1360
+ * </pre>
1361
+ *
1362
+ * This method is analogous to UNUM_SCALE in setAttribute.
1363
+ *
1364
+ * @param newValue the new value of the power-of-ten multiplier.
1365
+ * @draft ICU 62
1366
+ */
1367
+ virtual void setMultiplierScale(int32_t newValue);
1368
+
1371
1369
  /**
1372
1370
  * Get the rounding increment.
1373
1371
  * @return A positive rounding increment, or 0.0 if a custom rounding
@@ -1400,7 +1398,7 @@ public:
1400
1398
  * @see #setRoundingMode
1401
1399
  * @stable ICU 2.0
1402
1400
  */
1403
- virtual ERoundingMode getRoundingMode(void) const;
1401
+ virtual ERoundingMode getRoundingMode(void) const U_OVERRIDE;
1404
1402
 
1405
1403
  /**
1406
1404
  * Set the rounding mode.
@@ -1410,7 +1408,7 @@ public:
1410
1408
  * @see #getRoundingMode
1411
1409
  * @stable ICU 2.0
1412
1410
  */
1413
- virtual void setRoundingMode(ERoundingMode roundingMode);
1411
+ virtual void setRoundingMode(ERoundingMode roundingMode) U_OVERRIDE;
1414
1412
 
1415
1413
  /**
1416
1414
  * Get the width to which the output of format() is padded.
@@ -1469,7 +1467,7 @@ public:
1469
1467
  * @see #setPadPosition
1470
1468
  * @stable ICU 2.0
1471
1469
  */
1472
- virtual void setPadCharacter(const UnicodeString &padChar);
1470
+ virtual void setPadCharacter(const UnicodeString& padChar);
1473
1471
 
1474
1472
  /**
1475
1473
  * Get the position at which padding will take place. This is the location
@@ -1676,7 +1674,7 @@ public:
1676
1674
 
1677
1675
  #endif /* U_HIDE_INTERNAL_API */
1678
1676
 
1679
- /* Cannot use #ifndef U_HIDE_INTERNAL_API for the following draft method since it is virtual. */
1677
+ /* Cannot use #ifndef U_HIDE_INTERNAL_API for the following draft method since it is virtual. */
1680
1678
  /**
1681
1679
  * Sets the minimum grouping digits. Setting to a value less than or
1682
1680
  * equal to 1 turns off minimum grouping digits.
@@ -1717,7 +1715,7 @@ public:
1717
1715
  UBool isDecimalPatternMatchRequired(void) const;
1718
1716
 
1719
1717
  /**
1720
- * Allows you to set the behavior of the pattern decimal mark.
1718
+ * Allows you to set the parse behavior of the pattern decimal mark.
1721
1719
  *
1722
1720
  * if TRUE, the input must have a decimal mark if one was specified in the pattern. When
1723
1721
  * FALSE the decimal mark may be omitted from the input.
@@ -1727,6 +1725,60 @@ public:
1727
1725
  */
1728
1726
  virtual void setDecimalPatternMatchRequired(UBool newValue);
1729
1727
 
1728
+ /**
1729
+ * {@icu} Returns whether to ignore exponents when parsing.
1730
+ *
1731
+ * @see #setParseNoExponent
1732
+ * @internal This API is a technical preview. It may change in an upcoming release.
1733
+ */
1734
+ virtual UBool isParseNoExponent() const;
1735
+
1736
+ /**
1737
+ * {@icu} Specifies whether to stop parsing when an exponent separator is encountered. For
1738
+ * example, parses "123E4" to 123 (with parse position 3) instead of 1230000 (with parse position
1739
+ * 5).
1740
+ *
1741
+ * @param value true to prevent exponents from being parsed; false to allow them to be parsed.
1742
+ * @internal This API is a technical preview. It may change in an upcoming release.
1743
+ */
1744
+ virtual void setParseNoExponent(UBool value);
1745
+
1746
+ /**
1747
+ * {@icu} Returns whether parsing is sensitive to case (lowercase/uppercase).
1748
+ *
1749
+ * @see #setParseCaseSensitive
1750
+ * @internal This API is a technical preview. It may change in an upcoming release.
1751
+ */
1752
+ virtual UBool isParseCaseSensitive() const;
1753
+
1754
+ /**
1755
+ * {@icu} Whether to pay attention to case when parsing; default is to ignore case (perform
1756
+ * case-folding). For example, "A" == "a" in case-insensitive but not case-sensitive mode.
1757
+ *
1758
+ * Currency symbols are never case-folded. For example, "us$1.00" will not parse in case-insensitive
1759
+ * mode, even though "US$1.00" parses.
1760
+ *
1761
+ * @internal This API is a technical preview. It may change in an upcoming release.
1762
+ */
1763
+ virtual void setParseCaseSensitive(UBool value);
1764
+
1765
+ /**
1766
+ * {@icu} Returns whether truncation of high-order integer digits should result in an error.
1767
+ * By default, setMaximumIntegerDigits truncates high-order digits silently.
1768
+ *
1769
+ * @see setFormatFailIfMoreThanMaxDigits
1770
+ * @internal This API is a technical preview. It may change in an upcoming release.
1771
+ */
1772
+ virtual UBool isFormatFailIfMoreThanMaxDigits() const;
1773
+
1774
+ /**
1775
+ * {@icu} Sets whether truncation of high-order integer digits should result in an error.
1776
+ * By default, setMaximumIntegerDigits truncates high-order digits silently.
1777
+ *
1778
+ * @internal This API is a technical preview. It may change in an upcoming release.
1779
+ */
1780
+ virtual void setFormatFailIfMoreThanMaxDigits(UBool value);
1781
+
1730
1782
 
1731
1783
  /**
1732
1784
  * Synthesizes a pattern string that represents the current state
@@ -1781,9 +1833,8 @@ public:
1781
1833
  * set to a failure result.
1782
1834
  * @stable ICU 2.0
1783
1835
  */
1784
- virtual void applyPattern(const UnicodeString& pattern,
1785
- UParseError& parseError,
1786
- UErrorCode& status);
1836
+ virtual void applyPattern(const UnicodeString& pattern, UParseError& parseError, UErrorCode& status);
1837
+
1787
1838
  /**
1788
1839
  * Sets the pattern.
1789
1840
  * @param pattern The pattern to be applied.
@@ -1792,8 +1843,7 @@ public:
1792
1843
  * set to a failure result.
1793
1844
  * @stable ICU 2.0
1794
1845
  */
1795
- virtual void applyPattern(const UnicodeString& pattern,
1796
- UErrorCode& status);
1846
+ virtual void applyPattern(const UnicodeString& pattern, UErrorCode& status);
1797
1847
 
1798
1848
  /**
1799
1849
  * Apply the given pattern to this Format object. The pattern
@@ -1825,8 +1875,7 @@ public:
1825
1875
  * set to a failure result.
1826
1876
  * @stable ICU 2.0
1827
1877
  */
1828
- virtual void applyLocalizedPattern(const UnicodeString& pattern,
1829
- UParseError& parseError,
1878
+ virtual void applyLocalizedPattern(const UnicodeString& pattern, UParseError& parseError,
1830
1879
  UErrorCode& status);
1831
1880
 
1832
1881
  /**
@@ -1838,8 +1887,7 @@ public:
1838
1887
  * set to a failure result.
1839
1888
  * @stable ICU 2.0
1840
1889
  */
1841
- virtual void applyLocalizedPattern(const UnicodeString& pattern,
1842
- UErrorCode& status);
1890
+ virtual void applyLocalizedPattern(const UnicodeString& pattern, UErrorCode& status);
1843
1891
 
1844
1892
 
1845
1893
  /**
@@ -1851,7 +1899,7 @@ public:
1851
1899
  * @see NumberFormat#setMaximumIntegerDigits
1852
1900
  * @stable ICU 2.0
1853
1901
  */
1854
- virtual void setMaximumIntegerDigits(int32_t newValue);
1902
+ void setMaximumIntegerDigits(int32_t newValue) U_OVERRIDE;
1855
1903
 
1856
1904
  /**
1857
1905
  * Sets the minimum number of digits allowed in the integer portion of a
@@ -1862,7 +1910,7 @@ public:
1862
1910
  * @see NumberFormat#setMinimumIntegerDigits
1863
1911
  * @stable ICU 2.0
1864
1912
  */
1865
- virtual void setMinimumIntegerDigits(int32_t newValue);
1913
+ void setMinimumIntegerDigits(int32_t newValue) U_OVERRIDE;
1866
1914
 
1867
1915
  /**
1868
1916
  * Sets the maximum number of digits allowed in the fraction portion of a
@@ -1873,7 +1921,7 @@ public:
1873
1921
  * @see NumberFormat#setMaximumFractionDigits
1874
1922
  * @stable ICU 2.0
1875
1923
  */
1876
- virtual void setMaximumFractionDigits(int32_t newValue);
1924
+ void setMaximumFractionDigits(int32_t newValue) U_OVERRIDE;
1877
1925
 
1878
1926
  /**
1879
1927
  * Sets the minimum number of digits allowed in the fraction portion of a
@@ -1884,7 +1932,7 @@ public:
1884
1932
  * @see NumberFormat#setMinimumFractionDigits
1885
1933
  * @stable ICU 2.0
1886
1934
  */
1887
- virtual void setMinimumFractionDigits(int32_t newValue);
1935
+ void setMinimumFractionDigits(int32_t newValue) U_OVERRIDE;
1888
1936
 
1889
1937
  /**
1890
1938
  * Returns the minimum number of significant digits that will be
@@ -1947,7 +1995,6 @@ public:
1947
1995
  */
1948
1996
  void setSignificantDigitsUsed(UBool useSignificantDigits);
1949
1997
 
1950
- public:
1951
1998
  /**
1952
1999
  * Sets the currency used to display currency
1953
2000
  * amounts. This takes effect immediately, if this format is a
@@ -1960,7 +2007,7 @@ public:
1960
2007
  * @param ec input-output error code
1961
2008
  * @stable ICU 3.0
1962
2009
  */
1963
- virtual void setCurrency(const char16_t* theCurrency, UErrorCode& ec);
2010
+ void setCurrency(const char16_t* theCurrency, UErrorCode& ec) U_OVERRIDE;
1964
2011
 
1965
2012
  /**
1966
2013
  * Sets the currency used to display currency amounts. See
@@ -1984,78 +2031,53 @@ public:
1984
2031
  */
1985
2032
  UCurrencyUsage getCurrencyUsage() const;
1986
2033
 
1987
-
1988
- #ifndef U_HIDE_DEPRECATED_API
1989
- /**
1990
- * The resource tags we use to retrieve decimal format data from
1991
- * locale resource bundles.
1992
- * @deprecated ICU 3.4. This string has no public purpose. Please don't use it.
1993
- */
1994
- static const char fgNumberPatterns[];
1995
- #endif // U_HIDE_DEPRECATED_API
1996
-
1997
2034
  #ifndef U_HIDE_INTERNAL_API
1998
- /**
1999
- * Get a FixedDecimal corresponding to a double as it would be
2000
- * formatted by this DecimalFormat.
2001
- * Internal, not intended for public use.
2002
- * @internal
2003
- */
2004
- FixedDecimal getFixedDecimal(double number, UErrorCode &status) const;
2005
-
2006
- /**
2007
- * Get a FixedDecimal corresponding to a formattable as it would be
2008
- * formatted by this DecimalFormat.
2009
- * Internal, not intended for public use.
2010
- * @internal
2011
- */
2012
- FixedDecimal getFixedDecimal(const Formattable &number, UErrorCode &status) const;
2013
2035
 
2014
2036
  /**
2015
- * Get a FixedDecimal corresponding to a DigitList as it would be
2016
- * formatted by this DecimalFormat. Note: the DigitList may be modified.
2037
+ * Format a number and save it into the given DecimalQuantity.
2017
2038
  * Internal, not intended for public use.
2018
2039
  * @internal
2019
2040
  */
2020
- FixedDecimal getFixedDecimal(DigitList &number, UErrorCode &status) const;
2041
+ void formatToDecimalQuantity(double number, number::impl::DecimalQuantity& output,
2042
+ UErrorCode& status) const;
2021
2043
 
2022
2044
  /**
2023
- * Get a VisibleDigitsWithExponent corresponding to a double
2024
- * as it would be formatted by this DecimalFormat.
2045
+ * Get a DecimalQuantity corresponding to a formattable as it would be
2046
+ * formatted by this DecimalFormat.
2025
2047
  * Internal, not intended for public use.
2026
2048
  * @internal
2027
2049
  */
2028
- VisibleDigitsWithExponent &initVisibleDigitsWithExponent(
2029
- double number,
2030
- VisibleDigitsWithExponent &digits,
2031
- UErrorCode &status) const;
2050
+ void formatToDecimalQuantity(const Formattable& number, number::impl::DecimalQuantity& output,
2051
+ UErrorCode& status) const;
2032
2052
 
2033
- /**
2034
- * Get a VisibleDigitsWithExponent corresponding to a formattable
2035
- * as it would be formatted by this DecimalFormat.
2036
- * Internal, not intended for public use.
2037
- * @internal
2038
- */
2039
- VisibleDigitsWithExponent &initVisibleDigitsWithExponent(
2040
- const Formattable &number,
2041
- VisibleDigitsWithExponent &digits,
2042
- UErrorCode &status) const;
2053
+ #endif
2043
2054
 
2055
+ #ifndef U_HIDE_DRAFT_API
2044
2056
  /**
2045
- * Get a VisibleDigitsWithExponent corresponding to a DigitList
2046
- * as it would be formatted by this DecimalFormat.
2047
- * Note: the DigitList may be modified.
2048
- * Internal, not intended for public use.
2049
- * @internal
2057
+ * Converts this DecimalFormat to a NumberFormatter. Starting in ICU 60,
2058
+ * NumberFormatter is the recommended way to format numbers.
2059
+ *
2060
+ * NOTE: The returned LocalizedNumberFormatter is owned by this DecimalFormat.
2061
+ * If a non-const method is called on the DecimalFormat, or if the DecimalFormat
2062
+ * is deleted, the object becomes invalid. If you plan to keep the return value
2063
+ * beyond the lifetime of the DecimalFormat, copy it to a local variable:
2064
+ *
2065
+ * <pre>
2066
+ * LocalizedNumberFormatter f = df->toNumberFormatter();
2067
+ * </pre>
2068
+ *
2069
+ * It is, however, safe to use the return value for chaining:
2070
+ *
2071
+ * <pre>
2072
+ * FormattedNumber result = df->toNumberFormatter().formatDouble(123, status);
2073
+ * </pre>
2074
+ *
2075
+ * @param output The variable into which to store the LocalizedNumberFormatter.
2076
+ * @return The output variable, for chaining.
2077
+ * @draft ICU 62
2050
2078
  */
2051
- VisibleDigitsWithExponent &initVisibleDigitsWithExponent(
2052
- DigitList &number,
2053
- VisibleDigitsWithExponent &digits,
2054
- UErrorCode &status) const;
2055
-
2056
- #endif /* U_HIDE_INTERNAL_API */
2057
-
2058
- public:
2079
+ const number::LocalizedNumberFormatter& toNumberFormatter() const;
2080
+ #endif /* U_HIDE_DRAFT_API */
2059
2081
 
2060
2082
  /**
2061
2083
  * Return the class ID for this class. This is useful only for
@@ -2081,217 +2103,57 @@ public:
2081
2103
  * other classes have different class IDs.
2082
2104
  * @stable ICU 2.0
2083
2105
  */
2084
- virtual UClassID getDynamicClassID(void) const;
2085
-
2086
- private:
2087
-
2088
- DecimalFormat(); // default constructor not implemented
2089
-
2090
- /**
2091
- * Initialize all fields of a new DecimalFormatter to a safe default value.
2092
- * Common code for use by constructors.
2093
- */
2094
- void init();
2095
-
2096
- /**
2097
- * Do real work of constructing a new DecimalFormat.
2098
- */
2099
- void construct(UErrorCode& status,
2100
- UParseError& parseErr,
2101
- const UnicodeString* pattern = 0,
2102
- DecimalFormatSymbols* symbolsToAdopt = 0
2103
- );
2104
-
2105
- void handleCurrencySignInPattern(UErrorCode& status);
2106
-
2107
- void parse(const UnicodeString& text,
2108
- Formattable& result,
2109
- ParsePosition& pos,
2110
- char16_t* currency) const;
2111
-
2112
- enum {
2113
- fgStatusInfinite,
2114
- fgStatusLength // Leave last in list.
2115
- } StatusFlags;
2116
-
2117
- UBool subparse(const UnicodeString& text,
2118
- const UnicodeString* negPrefix,
2119
- const UnicodeString* negSuffix,
2120
- const UnicodeString* posPrefix,
2121
- const UnicodeString* posSuffix,
2122
- UBool complexCurrencyParsing,
2123
- int8_t type,
2124
- ParsePosition& parsePosition,
2125
- DigitList& digits, UBool* status,
2126
- char16_t* currency) const;
2127
-
2128
- // Mixed style parsing for currency.
2129
- // It parses against the current currency pattern
2130
- // using complex affix comparison
2131
- // parses against the currency plural patterns using complex affix comparison,
2132
- // and parses against the current pattern using simple affix comparison.
2133
- UBool parseForCurrency(const UnicodeString& text,
2134
- ParsePosition& parsePosition,
2135
- DigitList& digits,
2136
- UBool* status,
2137
- char16_t* currency) const;
2138
-
2139
- int32_t skipPadding(const UnicodeString& text, int32_t position) const;
2140
-
2141
- int32_t compareAffix(const UnicodeString& input,
2142
- int32_t pos,
2143
- UBool isNegative,
2144
- UBool isPrefix,
2145
- const UnicodeString* affixPat,
2146
- UBool complexCurrencyParsing,
2147
- int8_t type,
2148
- char16_t* currency) const;
2149
-
2150
- static UnicodeString& trimMarksFromAffix(const UnicodeString& affix, UnicodeString& trimmedAffix);
2151
-
2152
- UBool equalWithSignCompatibility(UChar32 lhs, UChar32 rhs) const;
2153
-
2154
- int32_t compareSimpleAffix(const UnicodeString& affix,
2155
- const UnicodeString& input,
2156
- int32_t pos,
2157
- UBool lenient) const;
2158
-
2159
- static int32_t skipPatternWhiteSpace(const UnicodeString& text, int32_t pos);
2160
-
2161
- static int32_t skipUWhiteSpace(const UnicodeString& text, int32_t pos);
2162
-
2163
- static int32_t skipUWhiteSpaceAndMarks(const UnicodeString& text, int32_t pos);
2164
-
2165
- static int32_t skipBidiMarks(const UnicodeString& text, int32_t pos);
2166
-
2167
- int32_t compareComplexAffix(const UnicodeString& affixPat,
2168
- const UnicodeString& input,
2169
- int32_t pos,
2170
- int8_t type,
2171
- char16_t* currency) const;
2172
-
2173
- static int32_t match(const UnicodeString& text, int32_t pos, UChar32 ch);
2106
+ UClassID getDynamicClassID(void) const U_OVERRIDE;
2174
2107
 
2175
- static int32_t match(const UnicodeString& text, int32_t pos, const UnicodeString& str);
2108
+ private:
2176
2109
 
2177
- static UBool matchSymbol(const UnicodeString &text, int32_t position, int32_t length, const UnicodeString &symbol,
2178
- UnicodeSet *sset, UChar32 schar);
2110
+ /** Rebuilds the formatter object from the property bag. */
2111
+ void touch(UErrorCode& status);
2179
2112
 
2180
- static UBool matchDecimal(UChar32 symbolChar,
2181
- UBool sawDecimal, UChar32 sawDecimalChar,
2182
- const UnicodeSet *sset, UChar32 schar);
2183
-
2184
- static UBool matchGrouping(UChar32 groupingChar,
2185
- UBool sawGrouping, UChar32 sawGroupingChar,
2186
- const UnicodeSet *sset,
2187
- UChar32 decimalChar, const UnicodeSet *decimalSet,
2188
- UChar32 schar);
2189
-
2190
- // set up currency affix patterns for mix parsing.
2191
- // The patterns saved here are the affix patterns of default currency
2192
- // pattern and the unique affix patterns of the plural currency patterns.
2193
- // Those patterns are used by parseForCurrency().
2194
- void setupCurrencyAffixPatterns(UErrorCode& status);
2195
-
2196
- // get the currency rounding with respect to currency usage
2197
- double getCurrencyRounding(const char16_t* currency,
2198
- UErrorCode* ec) const;
2199
-
2200
- // get the currency fraction with respect to currency usage
2201
- int getCurrencyFractionDigits(const char16_t* currency,
2202
- UErrorCode* ec) const;
2203
-
2204
- // hashtable operations
2205
- Hashtable* initHashForAffixPattern(UErrorCode& status);
2206
-
2207
- void deleteHashForAffixPattern();
2208
-
2209
- void copyHashForAffixPattern(const Hashtable* source,
2210
- Hashtable* target, UErrorCode& status);
2211
-
2212
- DecimalFormatImpl *fImpl;
2113
+ /** Rebuilds the formatter object, hiding the error code. */
2114
+ void touchNoError();
2213
2115
 
2214
2116
  /**
2215
- * Constants.
2117
+ * Updates the property bag with settings from the given pattern.
2118
+ *
2119
+ * @param pattern The pattern string to parse.
2120
+ * @param ignoreRounding Whether to leave out rounding information (minFrac, maxFrac, and rounding
2121
+ * increment) when parsing the pattern. This may be desirable if a custom rounding mode, such
2122
+ * as CurrencyUsage, is to be used instead. One of {@link
2123
+ * PatternStringParser#IGNORE_ROUNDING_ALWAYS}, {@link PatternStringParser#IGNORE_ROUNDING_IF_CURRENCY},
2124
+ * or {@link PatternStringParser#IGNORE_ROUNDING_NEVER}.
2125
+ * @see PatternAndPropertyUtils#parseToExistingProperties
2216
2126
  */
2127
+ void setPropertiesFromPattern(const UnicodeString& pattern, int32_t ignoreRounding,
2128
+ UErrorCode& status);
2217
2129
 
2130
+ const numparse::impl::NumberParserImpl* getParser(UErrorCode& status) const;
2218
2131
 
2219
- EnumSet<UNumberFormatAttribute,
2220
- UNUM_MAX_NONBOOLEAN_ATTRIBUTE+1,
2221
- UNUM_LIMIT_BOOLEAN_ATTRIBUTE>
2222
- fBoolFlags;
2132
+ const numparse::impl::NumberParserImpl* getCurrencyParser(UErrorCode& status) const;
2223
2133
 
2134
+ static void fieldPositionHelper(const number::FormattedNumber& formatted, FieldPosition& fieldPosition,
2135
+ int32_t offset, UErrorCode& status);
2224
2136
 
2225
- // style is only valid when decimal formatter is constructed by
2226
- // DecimalFormat(pattern, decimalFormatSymbol, style)
2227
- int fStyle;
2137
+ static void fieldPositionIteratorHelper(const number::FormattedNumber& formatted,
2138
+ FieldPositionIterator* fpi, int32_t offset, UErrorCode& status);
2228
2139
 
2140
+ void setupFastFormat();
2229
2141
 
2230
- // Affix pattern set for currency.
2231
- // It is a set of AffixPatternsForCurrency,
2232
- // each element of the set saves the negative prefix pattern,
2233
- // negative suffix pattern, positive prefix pattern,
2234
- // and positive suffix pattern of a pattern.
2235
- // It is used for currency mixed style parsing.
2236
- // It is actually is a set.
2237
- // The set contains the default currency pattern from the locale,
2238
- // and the currency plural patterns.
2239
- // Since it is a set, it does not contain duplicated items.
2240
- // For example, if 2 currency plural patterns are the same, only one pattern
2241
- // is included in the set. When parsing, we do not check whether the plural
2242
- // count match or not.
2243
- Hashtable* fAffixPatternsForCurrency;
2142
+ bool fastFormatDouble(double input, UnicodeString& output) const;
2244
2143
 
2245
- // Information needed for DecimalFormat to format/parse currency plural.
2246
- CurrencyPluralInfo* fCurrencyPluralInfo;
2144
+ bool fastFormatInt64(int64_t input, UnicodeString& output) const;
2247
2145
 
2248
- #if UCONFIG_HAVE_PARSEALLINPUT
2249
- UNumberFormatAttributeValue fParseAllInput;
2250
- #endif
2146
+ void doFastFormatInt32(int32_t input, bool isNegative, UnicodeString& output) const;
2251
2147
 
2252
- // Decimal Format Static Sets singleton.
2253
- const DecimalFormatStaticSets *fStaticSets;
2148
+ //=====================================================================================//
2149
+ // INSTANCE FIELDS //
2150
+ //=====================================================================================//
2254
2151
 
2255
- protected:
2152
+ // Only one instance field: keep all fields inside of an implementation class defined in number_mapper.h
2153
+ number::impl::DecimalFormatFields* fields;
2256
2154
 
2257
- #ifndef U_HIDE_INTERNAL_API
2258
- /**
2259
- * Rounds a value according to the rules of this object.
2260
- * @internal
2261
- */
2262
- DigitList& _round(const DigitList& number, DigitList& adjustedNum, UBool& isNegative, UErrorCode& status) const;
2263
- #endif /* U_HIDE_INTERNAL_API */
2264
-
2265
- /**
2266
- * Returns the currency in effect for this formatter. Subclasses
2267
- * should override this method as needed. Unlike getCurrency(),
2268
- * this method should never return "".
2269
- * @result output parameter for null-terminated result, which must
2270
- * have a capacity of at least 4
2271
- * @internal
2272
- */
2273
- virtual void getEffectiveCurrency(char16_t* result, UErrorCode& ec) const;
2274
-
2275
- /** number of integer digits
2276
- * @stable ICU 2.4
2277
- */
2278
- static const int32_t kDoubleIntegerDigits;
2279
- /** number of fraction digits
2280
- * @stable ICU 2.4
2281
- */
2282
- static const int32_t kDoubleFractionDigits;
2283
-
2284
- /**
2285
- * When someone turns on scientific mode, we assume that more than this
2286
- * number of digits is due to flipping from some other mode that didn't
2287
- * restrict the maximum, and so we force 1 integer digit. We don't bother
2288
- * to track and see if someone is using exponential notation with more than
2289
- * this number, it wouldn't make sense anyway, and this is just to make sure
2290
- * that someone turning on scientific mode with default settings doesn't
2291
- * end up with lots of zeroes.
2292
- * @stable ICU 2.8
2293
- */
2294
- static const int32_t kMaxScientificIntegerDigits;
2155
+ // Allow child class CompactDecimalFormat to access fProperties:
2156
+ friend class CompactDecimalFormat;
2295
2157
 
2296
2158
  };
2297
2159