pango 2.2.5-x86-mingw32 → 3.0.0-x86-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (232) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +19 -3
  3. data/ext/pango/depend +0 -1
  4. data/ext/pango/extconf.rb +0 -2
  5. data/ext/pango/rbpango.c +44 -6
  6. data/ext/pango/rbpango.h +0 -1
  7. data/ext/pango/rbpangoattribute.c +2 -2
  8. data/ext/pango/rbpangocairo.c +4 -4
  9. data/ext/pango/rbpangocontext.c +2 -2
  10. data/ext/pango/rbpangofontdescription.c +2 -2
  11. data/ext/pango/rbpangogravity.c +2 -2
  12. data/ext/pango/rbpangolanguage.c +8 -0
  13. data/ext/pango/rbpangolayout.c +15 -4
  14. data/ext/pango/rbpangomatrix.c +2 -2
  15. data/ext/pango/rbpangoscript.c +3 -3
  16. data/lib/2.0/pango.so +0 -0
  17. data/lib/2.1/pango.so +0 -0
  18. data/lib/2.2/pango.so +0 -0
  19. data/test/test-language.rb +5 -0
  20. data/test/test-layout.rb +7 -1
  21. data/vendor/local/bin/derb.exe +0 -0
  22. data/vendor/local/bin/genbrk.exe +0 -0
  23. data/vendor/local/bin/genccode.exe +0 -0
  24. data/vendor/local/bin/gencfu.exe +0 -0
  25. data/vendor/local/bin/gencmn.exe +0 -0
  26. data/vendor/local/bin/gencnval.exe +0 -0
  27. data/vendor/local/bin/gendict.exe +0 -0
  28. data/vendor/local/bin/gennorm2.exe +0 -0
  29. data/vendor/local/bin/genrb.exe +0 -0
  30. data/vendor/local/bin/gensprep.exe +0 -0
  31. data/vendor/local/bin/hb-ot-shape-closure.exe +0 -0
  32. data/vendor/local/bin/hb-shape.exe +0 -0
  33. data/vendor/local/bin/hb-view.exe +0 -0
  34. data/vendor/local/bin/icu-config +6 -6
  35. data/vendor/local/bin/icuinfo.exe +0 -0
  36. data/vendor/local/bin/icupkg.exe +0 -0
  37. data/vendor/local/bin/libharfbuzz-0.dll +0 -0
  38. data/vendor/local/bin/libpango-1.0-0.dll +0 -0
  39. data/vendor/local/bin/libpangocairo-1.0-0.dll +0 -0
  40. data/vendor/local/bin/libpangoft2-1.0-0.dll +0 -0
  41. data/vendor/local/bin/libpangowin32-1.0-0.dll +0 -0
  42. data/vendor/local/bin/makeconv.exe +0 -0
  43. data/vendor/local/bin/pango-querymodules.exe +0 -0
  44. data/vendor/local/bin/pango-view.exe +0 -0
  45. data/vendor/local/bin/pkgdata.exe +0 -0
  46. data/vendor/local/bin/uconv.exe +0 -0
  47. data/vendor/local/etc/pango/pango.modules +1 -1
  48. data/vendor/local/include/harfbuzz/hb-buffer.h +26 -1
  49. data/vendor/local/include/harfbuzz/hb-common.h +7 -0
  50. data/vendor/local/include/harfbuzz/hb-font.h +7 -6
  51. data/vendor/local/include/harfbuzz/hb-ft.h +58 -1
  52. data/vendor/local/include/harfbuzz/hb-glib.h +3 -0
  53. data/vendor/local/include/harfbuzz/hb-ot-font.h +4 -0
  54. data/vendor/local/include/harfbuzz/hb-shape.h +0 -3
  55. data/vendor/local/include/harfbuzz/hb-unicode.h +28 -3
  56. data/vendor/local/include/harfbuzz/hb-version.h +4 -4
  57. data/vendor/local/include/layout/LEFontInstance.h +2 -28
  58. data/vendor/local/include/layout/LETableReference.h +7 -2
  59. data/vendor/local/include/unicode/calendar.h +32 -2
  60. data/vendor/local/include/unicode/coll.h +9 -7
  61. data/vendor/local/include/unicode/datefmt.h +102 -13
  62. data/vendor/local/include/unicode/dcfmtsym.h +4 -2
  63. data/vendor/local/include/unicode/decimfmt.h +4 -5
  64. data/vendor/local/include/unicode/dtfmtsym.h +60 -1
  65. data/vendor/local/include/unicode/dtptngen.h +21 -7
  66. data/vendor/local/include/unicode/localpointer.h +49 -1
  67. data/vendor/local/include/unicode/locid.h +2 -3
  68. data/vendor/local/include/unicode/measfmt.h +30 -37
  69. data/vendor/local/include/unicode/measunit.h +65 -152
  70. data/vendor/local/include/unicode/measure.h +3 -3
  71. data/vendor/local/include/unicode/numfmt.h +3 -5
  72. data/vendor/local/include/unicode/platform.h +12 -2
  73. data/vendor/local/include/unicode/plurrule.h +18 -14
  74. data/vendor/local/include/unicode/rbnf.h +3 -4
  75. data/vendor/local/include/unicode/regex.h +42 -26
  76. data/vendor/local/include/unicode/region.h +9 -9
  77. data/vendor/local/include/unicode/reldatefmt.h +50 -45
  78. data/vendor/local/include/unicode/scientificnumberformatter.h +222 -0
  79. data/vendor/local/include/unicode/smpdtfmt.h +30 -24
  80. data/vendor/local/include/unicode/tblcoll.h +5 -4
  81. data/vendor/local/include/unicode/timezone.h +18 -1
  82. data/vendor/local/include/unicode/ucal.h +2 -2
  83. data/vendor/local/include/unicode/ucol.h +22 -18
  84. data/vendor/local/include/unicode/uconfig.h +17 -2
  85. data/vendor/local/include/unicode/udat.h +164 -56
  86. data/vendor/local/include/unicode/udatpg.h +9 -7
  87. data/vendor/local/include/unicode/ufieldpositer.h +121 -0
  88. data/vendor/local/include/unicode/uidna.h +21 -13
  89. data/vendor/local/include/unicode/ulistformatter.h +130 -0
  90. data/vendor/local/include/unicode/ulocdata.h +4 -3
  91. data/vendor/local/include/unicode/unistr.h +101 -53
  92. data/vendor/local/include/unicode/unum.h +7 -10
  93. data/vendor/local/include/unicode/uregex.h +52 -29
  94. data/vendor/local/include/unicode/urename.h +14 -3
  95. data/vendor/local/include/unicode/uscript.h +30 -16
  96. data/vendor/local/include/unicode/uspoof.h +13 -9
  97. data/vendor/local/include/unicode/utrans.h +5 -7
  98. data/vendor/local/include/unicode/utypes.h +9 -3
  99. data/vendor/local/include/unicode/uvernum.h +8 -8
  100. data/vendor/local/lib/icu/{54.1 → 55.1}/Makefile.inc +5 -5
  101. data/vendor/local/lib/icu/{54.1 → 55.1}/pkgdata.inc +1 -1
  102. data/vendor/local/lib/icu/Makefile.inc +5 -5
  103. data/vendor/local/lib/icu/pkgdata.inc +1 -1
  104. data/vendor/local/lib/icudt.dll +0 -0
  105. data/vendor/local/lib/{icudt54.dll → icudt55.dll} +0 -0
  106. data/vendor/local/lib/icuin.dll +0 -0
  107. data/vendor/local/lib/icuin55.dll +0 -0
  108. data/vendor/local/lib/icuio.dll +0 -0
  109. data/vendor/local/lib/icuio55.dll +0 -0
  110. data/vendor/local/lib/icule.dll +0 -0
  111. data/vendor/local/lib/icule55.dll +0 -0
  112. data/vendor/local/lib/iculx.dll +0 -0
  113. data/vendor/local/lib/iculx55.dll +0 -0
  114. data/vendor/local/lib/icutest.dll +0 -0
  115. data/vendor/local/lib/icutest55.dll +0 -0
  116. data/vendor/local/lib/icutu.dll +0 -0
  117. data/vendor/local/lib/icutu55.dll +0 -0
  118. data/vendor/local/lib/icuuc.dll +0 -0
  119. data/vendor/local/lib/icuuc55.dll +0 -0
  120. data/vendor/local/lib/libharfbuzz-icu.a +0 -0
  121. data/vendor/local/lib/libharfbuzz-icu.la +7 -7
  122. data/vendor/local/lib/libharfbuzz.dll.a +0 -0
  123. data/vendor/local/lib/libharfbuzz.la +7 -7
  124. data/vendor/local/lib/libicudt.dll.a +0 -0
  125. data/vendor/local/lib/libicuin.dll.a +0 -0
  126. data/vendor/local/lib/libicuio.dll.a +0 -0
  127. data/vendor/local/lib/libicule.dll.a +0 -0
  128. data/vendor/local/lib/libiculx.dll.a +0 -0
  129. data/vendor/local/lib/libicutest.dll.a +0 -0
  130. data/vendor/local/lib/libicutu.dll.a +0 -0
  131. data/vendor/local/lib/libicuuc.dll.a +0 -0
  132. data/vendor/local/lib/libpango-1.0.dll.a +0 -0
  133. data/vendor/local/lib/libpango-1.0.la +2 -2
  134. data/vendor/local/lib/libpangocairo-1.0.dll.a +0 -0
  135. data/vendor/local/lib/libpangocairo-1.0.la +1 -1
  136. data/vendor/local/lib/libpangoft2-1.0.dll.a +0 -0
  137. data/vendor/local/lib/libpangoft2-1.0.la +2 -2
  138. data/vendor/local/lib/libpangowin32-1.0.dll.a +0 -0
  139. data/vendor/local/lib/libpangowin32-1.0.la +2 -2
  140. data/vendor/local/lib/pango/1.8.0/modules/pango-arabic-lang.dll +0 -0
  141. data/vendor/local/lib/pango/1.8.0/modules/pango-arabic-lang.dll.a +0 -0
  142. data/vendor/local/lib/pango/1.8.0/modules/pango-arabic-lang.la +2 -2
  143. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-fc.dll +0 -0
  144. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-fc.dll.a +0 -0
  145. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-fc.la +2 -2
  146. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-win32.dll +0 -0
  147. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-win32.dll.a +0 -0
  148. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-win32.la +2 -2
  149. data/vendor/local/lib/pango/1.8.0/modules/pango-indic-lang.dll +0 -0
  150. data/vendor/local/lib/pango/1.8.0/modules/pango-indic-lang.dll.a +0 -0
  151. data/vendor/local/lib/pango/1.8.0/modules/pango-indic-lang.la +2 -2
  152. data/vendor/local/lib/pkgconfig/harfbuzz-icu.pc +1 -1
  153. data/vendor/local/lib/pkgconfig/harfbuzz.pc +3 -1
  154. data/vendor/local/lib/pkgconfig/icu-i18n.pc +5 -5
  155. data/vendor/local/lib/pkgconfig/icu-io.pc +5 -5
  156. data/vendor/local/lib/pkgconfig/icu-le.pc +5 -5
  157. data/vendor/local/lib/pkgconfig/icu-lx.pc +5 -5
  158. data/vendor/local/lib/pkgconfig/icu-uc.pc +5 -5
  159. data/vendor/local/share/gtk-doc/html/harfbuzz/adding-text-to-the-buffer.html +35 -0
  160. data/vendor/local/share/gtk-doc/html/harfbuzz/annotation-glossary.html +30 -35
  161. data/vendor/local/share/gtk-doc/html/harfbuzz/api-index-full.html +158 -27
  162. data/vendor/local/share/gtk-doc/html/harfbuzz/buffers-language-script-and-direction.html +87 -0
  163. data/vendor/local/share/gtk-doc/html/harfbuzz/{ch01.html → ch06.html} +12 -13
  164. data/vendor/local/share/gtk-doc/html/harfbuzz/customizing-unicode-functions.html +31 -0
  165. data/vendor/local/share/gtk-doc/html/harfbuzz/deprecated-api-index.html +7 -8
  166. data/vendor/local/share/gtk-doc/html/harfbuzz/fonts-and-faces.html +40 -0
  167. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-Shaping.html +352 -0
  168. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-blob.html +88 -47
  169. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-buffer.html +128 -204
  170. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-common.html +290 -304
  171. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-coretext.html +14 -23
  172. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-deprecated.html +14 -17
  173. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-face.html +40 -51
  174. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-font.html +126 -190
  175. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ft.html +19 -24
  176. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-glib.html +14 -29
  177. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-gobject.html +438 -11
  178. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-graphite2.html +14 -25
  179. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-icu.html +14 -29
  180. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ot-layout.html +19 -160
  181. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ot-tag.html +21 -36
  182. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ot.html +14 -11
  183. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-set.html +70 -81
  184. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-shape-plan.html +33 -44
  185. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-unicode.html +290 -323
  186. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-uniscribe.html +14 -23
  187. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-version.html +59 -27
  188. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb.html +16 -13
  189. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz.devhelp2 +415 -104
  190. data/vendor/local/share/gtk-doc/html/harfbuzz/hello-harfbuzz.html +181 -0
  191. data/vendor/local/share/gtk-doc/html/harfbuzz/index.html +43 -12
  192. data/vendor/local/share/gtk-doc/html/harfbuzz/object-tree.html +11 -13
  193. data/vendor/local/share/gtk-doc/html/harfbuzz/plans-and-caching.html +31 -0
  194. data/vendor/local/share/gtk-doc/html/harfbuzz/pt01.html +70 -0
  195. data/vendor/local/share/gtk-doc/html/harfbuzz/pt02.html +107 -0
  196. data/vendor/local/share/gtk-doc/html/harfbuzz/setting-buffer-properties.html +31 -0
  197. data/vendor/local/share/gtk-doc/html/harfbuzz/shaping-and-shape-plans.html +39 -0
  198. data/vendor/local/share/gtk-doc/html/harfbuzz/style.css +9 -6
  199. data/vendor/local/share/gtk-doc/html/harfbuzz/using-harfbuzzs-native-opentype-implementation.html +31 -0
  200. data/vendor/local/share/gtk-doc/html/harfbuzz/using-your-own-font-functions.html +31 -0
  201. data/vendor/local/share/gtk-doc/html/harfbuzz/what-about-the-other-scripts.html +31 -0
  202. data/vendor/local/share/gtk-doc/html/harfbuzz/what-is-harfbuzz.html +124 -0
  203. data/vendor/local/share/gtk-doc/html/harfbuzz/why-is-it-called-harfbuzz.html +38 -0
  204. data/vendor/local/share/icu/{54.1 → 55.1}/config/mh-mingw +0 -0
  205. data/vendor/local/share/icu/{54.1 → 55.1}/install-sh +0 -0
  206. data/vendor/local/share/icu/{54.1 → 55.1}/license.html +3 -4
  207. data/vendor/local/share/icu/{54.1 → 55.1}/mkinstalldirs +0 -0
  208. data/vendor/local/share/man/man1/derb.1 +2 -2
  209. data/vendor/local/share/man/man1/genbrk.1 +2 -2
  210. data/vendor/local/share/man/man1/gencfu.1 +1 -1
  211. data/vendor/local/share/man/man1/gencnval.1 +3 -3
  212. data/vendor/local/share/man/man1/gendict.1 +2 -2
  213. data/vendor/local/share/man/man1/genrb.1 +3 -3
  214. data/vendor/local/share/man/man1/icu-config.1 +2 -2
  215. data/vendor/local/share/man/man1/makeconv.1 +3 -3
  216. data/vendor/local/share/man/man1/pkgdata.1 +2 -2
  217. data/vendor/local/share/man/man1/uconv.1 +2 -2
  218. data/vendor/local/share/man/man8/genccode.8 +2 -2
  219. data/vendor/local/share/man/man8/gencmn.8 +3 -3
  220. data/vendor/local/share/man/man8/gensprep.8 +3 -3
  221. data/vendor/local/share/man/man8/icupkg.8 +1 -1
  222. metadata +38 -22
  223. data/vendor/local/include/unicode/scientificformathelper.h +0 -139
  224. data/vendor/local/lib/icuin54.dll +0 -0
  225. data/vendor/local/lib/icuio54.dll +0 -0
  226. data/vendor/local/lib/icule54.dll +0 -0
  227. data/vendor/local/lib/iculx54.dll +0 -0
  228. data/vendor/local/lib/icutest54.dll +0 -0
  229. data/vendor/local/lib/icutu54.dll +0 -0
  230. data/vendor/local/lib/icuuc54.dll +0 -0
  231. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-shape.html +0 -286
  232. data/vendor/local/share/gtk-doc/html/harfbuzz/index.sgml +0 -496
@@ -0,0 +1,121 @@
1
+ /*
2
+ *****************************************************************************************
3
+ * Copyright (C) 2015, International Business Machines
4
+ * Corporation and others. All Rights Reserved.
5
+ *****************************************************************************************
6
+ */
7
+
8
+ #ifndef UFIELDPOSITER_H
9
+ #define UFIELDPOSITER_H
10
+
11
+ #include "unicode/utypes.h"
12
+
13
+ #if !UCONFIG_NO_FORMATTING
14
+ #ifndef U_HIDE_DRAFT_API
15
+
16
+ #include "unicode/localpointer.h"
17
+
18
+ /**
19
+ * \file
20
+ * \brief C API: UFieldPositionIterator for use with format APIs.
21
+ *
22
+ * Usage:
23
+ * ufieldpositer_open creates an empty (unset) UFieldPositionIterator.
24
+ * This can be passed to format functions such as {@link #udat_formatForFields},
25
+ * which will set it to apply to the fields in a particular formatted string.
26
+ * ufieldpositer_next can then be used to iterate over those fields,
27
+ * providing for each field its type (using values that are specific to the
28
+ * particular format type, such as date or number formats), as well as the
29
+ * start and end positions of the field in the formatted string.
30
+ * A given UFieldPositionIterator can be re-used for different format calls;
31
+ * each such call resets it to apply to that format string.
32
+ * ufieldpositer_close should be called to dispose of the UFieldPositionIterator
33
+ * when it is no longer needed.
34
+ *
35
+ * @see FieldPositionIterator
36
+ */
37
+
38
+ /**
39
+ * Opaque UFieldPositionIterator object for use in C.
40
+ * @draft ICU 55
41
+ */
42
+ struct UFieldPositionIterator;
43
+ typedef struct UFieldPositionIterator UFieldPositionIterator; /**< C typedef for struct UFieldPositionIterator. @draft ICU 55 */
44
+
45
+ /**
46
+ * Open a new, unset UFieldPositionIterator object.
47
+ * @param status
48
+ * A pointer to a UErrorCode to receive any errors.
49
+ * @return
50
+ * A pointer to an empty (unset) UFieldPositionIterator object,
51
+ * or NULL if an error occurred.
52
+ * @draft ICU 55
53
+ */
54
+ U_DRAFT UFieldPositionIterator* U_EXPORT2
55
+ ufieldpositer_open(UErrorCode* status);
56
+
57
+ /**
58
+ * Close a UFieldPositionIterator object. Once closed it may no longer be used.
59
+ * @param fpositer
60
+ * A pointer to the UFieldPositionIterator object to close.
61
+ * @draft ICU 55
62
+ */
63
+ U_DRAFT void U_EXPORT2
64
+ ufieldpositer_close(UFieldPositionIterator *fpositer);
65
+
66
+
67
+ #if U_SHOW_CPLUSPLUS_API
68
+
69
+ U_NAMESPACE_BEGIN
70
+
71
+ /**
72
+ * \class LocalUFieldPositionIteratorPointer
73
+ * "Smart pointer" class, closes a UFieldPositionIterator via ufieldpositer_close().
74
+ * For most methods see the LocalPointerBase base class.
75
+ *
76
+ * @see LocalPointerBase
77
+ * @see LocalPointer
78
+ * @draft ICU 55
79
+ */
80
+ U_DEFINE_LOCAL_OPEN_POINTER(LocalUFieldPositionIteratorPointer, UFieldPositionIterator, ufieldpositer_close);
81
+
82
+ U_NAMESPACE_END
83
+
84
+ #endif
85
+
86
+ /**
87
+ * Get information for the next field in the formatted string to which this
88
+ * UFieldPositionIterator currently applies, or return FALSE if there are
89
+ * no more fields.
90
+ * @param fpositer
91
+ * A pointer to the UFieldPositionIterator object containing iteration
92
+ * state for the format fields.
93
+ * @param beginIndex
94
+ * A pointer to an int32_t to receive information about the start offset
95
+ * of the field in the formatted string (undefined if the function
96
+ * returns a negative value). May be NULL if this information is not needed.
97
+ * @param endIndex
98
+ * A pointer to an int32_t to receive information about the end offset
99
+ * of the field in the formatted string (undefined if the function
100
+ * returns a negative value). May be NULL if this information is not needed.
101
+ * @return
102
+ * The field type (non-negative value), or a negative value if there are
103
+ * no more fields for which to provide information. If negative, then any
104
+ * values pointed to by beginIndex and endIndex are undefined.
105
+ *
106
+ * The values for field type depend on what type of formatter the
107
+ * UFieldPositionIterator has been set by; for a date formatter, the
108
+ * values from the UDateFormatField enum. For more information, see the
109
+ * descriptions of format functions that take a UFieldPositionIterator*
110
+ * parameter, such as {@link #udat_formatForFields}.
111
+ *
112
+ * @draft ICU 55
113
+ */
114
+ U_DRAFT int32_t U_EXPORT2
115
+ ufieldpositer_next(UFieldPositionIterator *fpositer,
116
+ int32_t *beginIndex, int32_t *endIndex);
117
+
118
+ #endif /* U_HIDE_DRAFT_API */
119
+ #endif /* #if !UCONFIG_NO_FORMATTING */
120
+
121
+ #endif
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  *******************************************************************************
3
3
  *
4
- * Copyright (C) 2003-2013, International Business Machines
4
+ * Copyright (C) 2003-2014, International Business Machines
5
5
  * Corporation and others. All Rights Reserved.
6
6
  *
7
7
  *******************************************************************************
@@ -32,8 +32,10 @@
32
32
  *
33
33
  * The C API functions which do take a UIDNA * service object pointer
34
34
  * implement UTS #46 and IDNA2008.
35
+ *
36
+ * IDNA2003 is obsolete.
35
37
  * The C API functions which do not take a service object pointer
36
- * implement IDNA2003.
38
+ * implement IDNA2003. They are all deprecated.
37
39
  */
38
40
 
39
41
  /*
@@ -46,14 +48,16 @@ enum {
46
48
  * @stable ICU 2.6
47
49
  */
48
50
  UIDNA_DEFAULT=0,
51
+ #ifndef U_HIDE_DEPRECATED_API
49
52
  /**
50
53
  * Option to allow unassigned code points in domain names and labels.
51
54
  * For use in static worker and factory methods.
52
55
  * <p>This option is ignored by the UTS46 implementation.
53
56
  * (UTS #46 disallows unassigned code points.)
54
- * @stable ICU 2.6
57
+ * @deprecated ICU 55 Use UTS #46 instead via uidna_openUTS46() or class IDNA.
55
58
  */
56
59
  UIDNA_ALLOW_UNASSIGNED=1,
60
+ #endif /* U_HIDE_DEPRECATED_API */
57
61
  /**
58
62
  * Option to check whether the input conforms to the STD3 ASCII rules,
59
63
  * for example the restriction of labels to LDH characters
@@ -503,6 +507,8 @@ enum {
503
507
  UIDNA_ERROR_CONTEXTO_DIGITS=0x4000
504
508
  };
505
509
 
510
+ #ifndef U_HIDE_DEPRECATED_API
511
+
506
512
  /* IDNA2003 API ------------------------------------------------------------- */
507
513
 
508
514
  /**
@@ -562,9 +568,9 @@ enum {
562
568
  * U_BUFFER_OVERFLOW_ERROR if destCapacity is not enough
563
569
  * @return The length of the result string, if successful - or in case of a buffer overflow,
564
570
  * in which case it will be greater than destCapacity.
565
- * @stable ICU 2.6
571
+ * @deprecated ICU 55 Use UTS #46 instead via uidna_openUTS46() or class IDNA.
566
572
  */
567
- U_STABLE int32_t U_EXPORT2
573
+ U_DEPRECATED int32_t U_EXPORT2
568
574
  uidna_toASCII(const UChar* src, int32_t srcLength,
569
575
  UChar* dest, int32_t destCapacity,
570
576
  int32_t options,
@@ -610,9 +616,9 @@ uidna_toASCII(const UChar* src, int32_t srcLength,
610
616
  * U_BUFFER_OVERFLOW_ERROR if destCapacity is not enough
611
617
  * @return The length of the result string, if successful - or in case of a buffer overflow,
612
618
  * in which case it will be greater than destCapacity.
613
- * @stable ICU 2.6
619
+ * @deprecated ICU 55 Use UTS #46 instead via uidna_openUTS46() or class IDNA.
614
620
  */
615
- U_STABLE int32_t U_EXPORT2
621
+ U_DEPRECATED int32_t U_EXPORT2
616
622
  uidna_toUnicode(const UChar* src, int32_t srcLength,
617
623
  UChar* dest, int32_t destCapacity,
618
624
  int32_t options,
@@ -661,9 +667,9 @@ uidna_toUnicode(const UChar* src, int32_t srcLength,
661
667
  * U_BUFFER_OVERFLOW_ERROR if destCapacity is not enough
662
668
  * @return The length of the result string, if successful - or in case of a buffer overflow,
663
669
  * in which case it will be greater than destCapacity.
664
- * @stable ICU 2.6
670
+ * @deprecated ICU 55 Use UTS #46 instead via uidna_openUTS46() or class IDNA.
665
671
  */
666
- U_STABLE int32_t U_EXPORT2
672
+ U_DEPRECATED int32_t U_EXPORT2
667
673
  uidna_IDNToASCII( const UChar* src, int32_t srcLength,
668
674
  UChar* dest, int32_t destCapacity,
669
675
  int32_t options,
@@ -708,9 +714,9 @@ uidna_IDNToASCII( const UChar* src, int32_t srcLength,
708
714
  * U_BUFFER_OVERFLOW_ERROR if destCapacity is not enough
709
715
  * @return The length of the result string, if successful - or in case of a buffer overflow,
710
716
  * in which case it will be greater than destCapacity.
711
- * @stable ICU 2.6
717
+ * @deprecated ICU 55 Use UTS #46 instead via uidna_openUTS46() or class IDNA.
712
718
  */
713
- U_STABLE int32_t U_EXPORT2
719
+ U_DEPRECATED int32_t U_EXPORT2
714
720
  uidna_IDNToUnicode( const UChar* src, int32_t srcLength,
715
721
  UChar* dest, int32_t destCapacity,
716
722
  int32_t options,
@@ -749,14 +755,16 @@ uidna_IDNToUnicode( const UChar* src, int32_t srcLength,
749
755
  * @param status ICU error code in/out parameter.
750
756
  * Must fulfill U_SUCCESS before the function call.
751
757
  * @return <0 or 0 or >0 as usual for string comparisons
752
- * @stable ICU 2.6
758
+ * @deprecated ICU 55 Use UTS #46 instead via uidna_openUTS46() or class IDNA.
753
759
  */
754
- U_STABLE int32_t U_EXPORT2
760
+ U_DEPRECATED int32_t U_EXPORT2
755
761
  uidna_compare( const UChar *s1, int32_t length1,
756
762
  const UChar *s2, int32_t length2,
757
763
  int32_t options,
758
764
  UErrorCode* status);
759
765
 
766
+ #endif /* U_HIDE_DEPRECATED_API */
767
+
760
768
  #endif /* #if !UCONFIG_NO_IDNA */
761
769
 
762
770
  #endif
@@ -0,0 +1,130 @@
1
+ /*
2
+ *****************************************************************************************
3
+ * Copyright (C) 2015, International Business Machines
4
+ * Corporation and others. All Rights Reserved.
5
+ *****************************************************************************************
6
+ */
7
+
8
+ #ifndef ULISTFORMATTER_H
9
+ #define ULISTFORMATTER_H
10
+
11
+ #include "unicode/utypes.h"
12
+
13
+ #if !UCONFIG_NO_FORMATTING
14
+ #ifndef U_HIDE_DRAFT_API
15
+
16
+ #include "unicode/localpointer.h"
17
+
18
+ /**
19
+ * \file
20
+ * \brief C API: Format a list in a locale-appropriate way.
21
+ *
22
+ * A UListFormatter is used to format a list of items in a locale-appropriate way,
23
+ * using data from CLDR.
24
+ * Example: Input data ["Alice", "Bob", "Charlie", "Delta"] will be formatted
25
+ * as "Alice, Bob, Charlie, and Delta" in English.
26
+ */
27
+
28
+ /**
29
+ * Opaque UListFormatter object for use in C
30
+ * @draft ICU 55
31
+ */
32
+ struct UListFormatter;
33
+ typedef struct UListFormatter UListFormatter; /**< C typedef for struct UListFormatter. @draft ICU 55 */
34
+
35
+ /**
36
+ * Open a new UListFormatter object using the rules for a given locale.
37
+ * @param locale
38
+ * The locale whose rules should be used; may be NULL for
39
+ * default locale.
40
+ * @param status
41
+ * A pointer to a standard ICU UErrorCode (input/output parameter).
42
+ * Its input value must pass the U_SUCCESS() test, or else the
43
+ * function returns immediately. The caller should check its output
44
+ * value with U_FAILURE(), or use with function chaining (see User
45
+ * Guide for details).
46
+ * @return
47
+ * A pointer to a UListFormatter object for the specified locale,
48
+ * or NULL if an error occurred.
49
+ * @draft ICU 55
50
+ */
51
+ U_DRAFT UListFormatter* U_EXPORT2
52
+ ulistfmt_open(const char* locale,
53
+ UErrorCode* status);
54
+
55
+ /**
56
+ * Close a UListFormatter object. Once closed it may no longer be used.
57
+ * @param listfmt
58
+ * The UListFormatter object to close.
59
+ * @draft ICU 55
60
+ */
61
+ U_DRAFT void U_EXPORT2
62
+ ulistfmt_close(UListFormatter *listfmt);
63
+
64
+
65
+ #if U_SHOW_CPLUSPLUS_API
66
+
67
+ U_NAMESPACE_BEGIN
68
+
69
+ /**
70
+ * \class LocalUListFormatterPointer
71
+ * "Smart pointer" class, closes a UListFormatter via ulistfmt_close().
72
+ * For most methods see the LocalPointerBase base class.
73
+ *
74
+ * @see LocalPointerBase
75
+ * @see LocalPointer
76
+ * @draft ICU 55
77
+ */
78
+ U_DEFINE_LOCAL_OPEN_POINTER(LocalUListFormatterPointer, UListFormatter, ulistfmt_close);
79
+
80
+ U_NAMESPACE_END
81
+
82
+ #endif
83
+
84
+ /**
85
+ * Formats a list of strings using the conventions established for the
86
+ * UListFormatter object.
87
+ * @param listfmt
88
+ * The UListFormatter object specifying the list conventions.
89
+ * @param strings
90
+ * An array of pointers to UChar strings; the array length is
91
+ * specified by stringCount. Must be non-NULL if stringCount > 0.
92
+ * @param stringLengths
93
+ * An array of string lengths corresponding to the strings[]
94
+ * parameter; any individual length value may be negative to indicate
95
+ * that the corresponding strings[] entry is 0-terminated, or
96
+ * stringLengths itself may be NULL if all of the strings are
97
+ * 0-terminated. If non-NULL, the stringLengths array must have
98
+ * stringCount entries.
99
+ * @param stringCount
100
+ * the number of entries in strings[], and the number of entries
101
+ * in the stringLengths array if it is not NULL. Must be >= 0.
102
+ * @param result
103
+ * A pointer to a buffer to receive the formatted list.
104
+ * @param resultCapacity
105
+ * The maximum size of result.
106
+ * @param status
107
+ * A pointer to a standard ICU UErrorCode (input/output parameter).
108
+ * Its input value must pass the U_SUCCESS() test, or else the
109
+ * function returns immediately. The caller should check its output
110
+ * value with U_FAILURE(), or use with function chaining (see User
111
+ * Guide for details).
112
+ * @return
113
+ * The total buffer size needed; if greater than resultLength, the
114
+ * output was truncated. May be <=0 if unable to determine the
115
+ * total buffer size needed (e.g. for illegal arguments).
116
+ * @draft ICU 55
117
+ */
118
+ U_DRAFT int32_t U_EXPORT2
119
+ ulistfmt_format(const UListFormatter* listfmt,
120
+ const UChar* const strings[],
121
+ const int32_t * stringLengths,
122
+ int32_t stringCount,
123
+ UChar* result,
124
+ int32_t resultCapacity,
125
+ UErrorCode* status);
126
+
127
+ #endif /* U_HIDE_DRAFT_API */
128
+ #endif /* #if !UCONFIG_NO_FORMATTING */
129
+
130
+ #endif
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  ******************************************************************************
3
3
  * *
4
- * Copyright (C) 2003-2014, International Business Machines *
4
+ * Copyright (C) 2003-2015, International Business Machines *
5
5
  * Corporation and others. All Rights Reserved. *
6
6
  * *
7
7
  ******************************************************************************
@@ -186,8 +186,9 @@ ulocdata_getDelimiter(ULocaleData *uld, ULocaleDataDelimiterType type, UChar *re
186
186
  * @stable ICU 2.8
187
187
  */
188
188
  typedef enum UMeasurementSystem {
189
- UMS_SI, /** Measurement system specified by SI otherwise known as Metric system. */
190
- UMS_US, /** Measurement system followed in the United States of America. */
189
+ UMS_SI, /**< Measurement system specified by SI otherwise known as Metric system. @stable ICU 2.8 */
190
+ UMS_US, /**< Measurement system followed in the United States of America. @stable ICU 2.8 */
191
+ UMS_UK, /**< Mix of metric and imperial units used in Great Britain. @stable ICU 55 */
191
192
  UMS_LIMIT
192
193
  } UMeasurementSystem;
193
194
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  **********************************************************************
3
- * Copyright (C) 1998-2013, International Business Machines
3
+ * Copyright (C) 1998-2014, International Business Machines
4
4
  * Corporation and others. All Rights Reserved.
5
5
  **********************************************************************
6
6
  *
@@ -3370,6 +3370,9 @@ private:
3370
3370
  inline UChar* getArrayStart(void);
3371
3371
  inline const UChar* getArrayStart(void) const;
3372
3372
 
3373
+ inline UBool hasShortLength() const;
3374
+ inline int32_t getShortLength() const;
3375
+
3373
3376
  // A UnicodeString object (not necessarily its current buffer)
3374
3377
  // is writable unless it isBogus() or it has an "open" getBuffer(minCapacity).
3375
3378
  inline UBool isWritable() const;
@@ -3378,13 +3381,16 @@ private:
3378
3381
  inline UBool isBufferWritable() const;
3379
3382
 
3380
3383
  // None of the following does releaseArray().
3381
- inline void setLength(int32_t len); // sets only fShortLength and fLength
3382
- inline void setToEmpty(); // sets fFlags=kShortString
3383
- inline void setArray(UChar *array, int32_t len, int32_t capacity); // does not set fFlags
3384
+ inline void setZeroLength();
3385
+ inline void setShortLength(int32_t len);
3386
+ inline void setLength(int32_t len);
3387
+ inline void setToEmpty();
3388
+ inline void setArray(UChar *array, int32_t len, int32_t capacity); // sets length but not flags
3384
3389
 
3385
- // allocate the array; result may be fStackBuffer
3390
+ // allocate the array; result may be the stack buffer
3386
3391
  // sets refCount to 1 if appropriate
3387
- // sets fArray, fCapacity, and fFlags
3392
+ // sets fArray, fCapacity, and flags
3393
+ // sets length to 0
3388
3394
  // returns boolean for success or failure
3389
3395
  UBool allocate(int32_t capacity);
3390
3396
 
@@ -3471,18 +3477,24 @@ private:
3471
3477
  // Set the stack buffer size so that sizeof(UnicodeString) is,
3472
3478
  // naturally (without padding), a multiple of sizeof(pointer).
3473
3479
  US_STACKBUF_SIZE= sizeof(void *)==4 ? 13 : 15, // Size of stack buffer for short strings
3474
- kInvalidUChar=0xffff, // invalid UChar index
3480
+ kInvalidUChar=0xffff, // U+FFFF returned by charAt(invalid index)
3475
3481
  kGrowSize=128, // grow size for this buffer
3476
3482
  kInvalidHashCode=0, // invalid hash code
3477
3483
  kEmptyHashCode=1, // hash code for empty string
3478
3484
 
3479
- // bit flag values for fFlags
3485
+ // bit flag values for fLengthAndFlags
3480
3486
  kIsBogus=1, // this string is bogus, i.e., not valid or NULL
3481
- kUsingStackBuffer=2,// using fUnion.fStackBuffer instead of fUnion.fFields
3487
+ kUsingStackBuffer=2,// using fUnion.fStackFields instead of fUnion.fFields
3482
3488
  kRefCounted=4, // there is a refCount field before the characters in fArray
3483
3489
  kBufferIsReadonly=8,// do not write to this buffer
3484
3490
  kOpenGetBuffer=16, // getBuffer(minCapacity) was called (is "open"),
3485
3491
  // and releaseBuffer(newLength) must be called
3492
+ kAllStorageFlags=0x1f,
3493
+
3494
+ kLengthShift=5, // remaining 11 bits for non-negative short length, or negative if long
3495
+ kLength1=1<<kLengthShift,
3496
+ kMaxShortLength=0x3ff, // max non-negative short length (leaves top bit 0)
3497
+ kLengthIsLarge=0xffe0, // short length < 0, real length is in fUnion.fFields.fLength
3486
3498
 
3487
3499
  // combined values for convenience
3488
3500
  kShortString=kUsingStackBuffer,
@@ -3515,36 +3527,42 @@ private:
3515
3527
  * - sizeof(class UnicodeString)
3516
3528
  * - offsetof(UnicodeString, fUnion)
3517
3529
  * - sizeof(fUnion)
3518
- * - sizeof(fFields)
3530
+ * - sizeof(fStackFields)
3519
3531
  *
3520
- * In order to avoid padding, we make sizeof(fStackBuffer)=16 (=8 UChars)
3521
- * which is at least as large as sizeof(fFields) on 32-bit and 64-bit machines.
3522
- * (Padding at the end of fFields is ok:
3523
- * As long as there is no padding after fStackBuffer, it is not wasted space.)
3532
+ * We optimize for the longest possible internal buffer for short strings.
3533
+ * fUnion.fStackFields begins with 2 bytes for storage flags
3534
+ * and the length of relatively short strings,
3535
+ * followed by the buffer for short string contents.
3536
+ * There is no padding inside fStackFields.
3524
3537
  *
3525
- * We further assume that the compiler does not reorder the fields,
3526
- * so that fRestOfStackBuffer (which holds a few more UChars) immediately follows after fUnion,
3527
- * with at most some padding (but no other field) in between.
3528
- * (Padding there would be wasted space, but functionally harmless.)
3538
+ * Heap-allocated and aliased strings use fUnion.fFields.
3539
+ * Both fStackFields and fFields must begin with the same fields for flags and short length,
3540
+ * that is, those must have the same memory offsets inside the object,
3541
+ * because the flags must be inspected in order to decide which half of fUnion is being used.
3542
+ * We assume that the compiler does not reorder the fields.
3529
3543
  *
3530
- * We use a few more sizeof(pointer)'s chunks of space with
3531
- * fRestOfStackBuffer, fShortLength and fFlags,
3532
- * to get up exactly to the intended sizeof(UnicodeString).
3544
+ * (Padding at the end of fFields is ok:
3545
+ * As long as it is no larger than fStackFields, it is not wasted space.)
3546
+ *
3547
+ * For some of the history of the UnicodeString class fields layout,
3548
+ * see ICU ticket #11336 "UnicodeString: recombine stack buffer arrays"
3549
+ * and ticket #8322 "why is sizeof(UnicodeString)==48?".
3533
3550
  */
3534
3551
  // (implicit) *vtable;
3535
3552
  union StackBufferOrFields {
3536
- // fStackBuffer is used iff (fFlags&kUsingStackBuffer)
3537
- // else fFields is used
3538
- UChar fStackBuffer[8]; // buffer for short strings, together with fRestOfStackBuffer
3553
+ // fStackFields is used iff (fLengthAndFlags&kUsingStackBuffer) else fFields is used.
3554
+ // Each struct of the union must begin with fLengthAndFlags.
3555
+ struct {
3556
+ int16_t fLengthAndFlags; // bit fields: see constants above
3557
+ UChar fBuffer[US_STACKBUF_SIZE]; // buffer for short strings
3558
+ } fStackFields;
3539
3559
  struct {
3560
+ int16_t fLengthAndFlags; // bit fields: see constants above
3540
3561
  UChar *fArray; // the Unicode data
3541
3562
  int32_t fCapacity; // capacity of fArray (in UChars)
3542
3563
  int32_t fLength; // number of characters in fArray if >127; else undefined
3543
3564
  } fFields;
3544
3565
  } fUnion;
3545
- UChar fRestOfStackBuffer[US_STACKBUF_SIZE-8];
3546
- int8_t fShortLength; // 0..127: length <0: real length is in fUnion.fFields.fLength
3547
- uint8_t fFlags; // bit flags: see constants above
3548
3566
  };
3549
3567
 
3550
3568
  /**
@@ -3596,33 +3614,51 @@ UnicodeString::pinIndices(int32_t& start,
3596
3614
  }
3597
3615
 
3598
3616
  inline UChar*
3599
- UnicodeString::getArrayStart()
3600
- { return (fFlags&kUsingStackBuffer) ? fUnion.fStackBuffer : fUnion.fFields.fArray; }
3617
+ UnicodeString::getArrayStart() {
3618
+ return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ?
3619
+ fUnion.fStackFields.fBuffer : fUnion.fFields.fArray;
3620
+ }
3601
3621
 
3602
3622
  inline const UChar*
3603
- UnicodeString::getArrayStart() const
3604
- { return (fFlags&kUsingStackBuffer) ? fUnion.fStackBuffer : fUnion.fFields.fArray; }
3623
+ UnicodeString::getArrayStart() const {
3624
+ return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ?
3625
+ fUnion.fStackFields.fBuffer : fUnion.fFields.fArray;
3626
+ }
3605
3627
 
3606
3628
  //========================================
3607
3629
  // Default constructor
3608
3630
  //========================================
3609
3631
 
3610
3632
  inline
3611
- UnicodeString::UnicodeString()
3612
- : fShortLength(0),
3613
- fFlags(kShortString)
3614
- {}
3633
+ UnicodeString::UnicodeString() {
3634
+ fUnion.fStackFields.fLengthAndFlags=kShortString;
3635
+ }
3615
3636
 
3616
3637
  //========================================
3617
3638
  // Read-only implementation methods
3618
3639
  //========================================
3640
+ inline UBool
3641
+ UnicodeString::hasShortLength() const {
3642
+ return fUnion.fFields.fLengthAndFlags>=0;
3643
+ }
3644
+
3619
3645
  inline int32_t
3620
- UnicodeString::length() const
3621
- { return fShortLength>=0 ? fShortLength : fUnion.fFields.fLength; }
3646
+ UnicodeString::getShortLength() const {
3647
+ // fLengthAndFlags must be non-negative -> short length >= 0
3648
+ // and arithmetic or logical shift does not matter.
3649
+ return fUnion.fFields.fLengthAndFlags>>kLengthShift;
3650
+ }
3651
+
3652
+ inline int32_t
3653
+ UnicodeString::length() const {
3654
+ return hasShortLength() ? getShortLength() : fUnion.fFields.fLength;
3655
+ }
3622
3656
 
3623
3657
  inline int32_t
3624
- UnicodeString::getCapacity() const
3625
- { return (fFlags&kUsingStackBuffer) ? US_STACKBUF_SIZE : fUnion.fFields.fCapacity; }
3658
+ UnicodeString::getCapacity() const {
3659
+ return (fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) ?
3660
+ US_STACKBUF_SIZE : fUnion.fFields.fCapacity;
3661
+ }
3626
3662
 
3627
3663
  inline int32_t
3628
3664
  UnicodeString::hashCode() const
@@ -3630,26 +3666,26 @@ UnicodeString::hashCode() const
3630
3666
 
3631
3667
  inline UBool
3632
3668
  UnicodeString::isBogus() const
3633
- { return (UBool)(fFlags & kIsBogus); }
3669
+ { return (UBool)(fUnion.fFields.fLengthAndFlags & kIsBogus); }
3634
3670
 
3635
3671
  inline UBool
3636
3672
  UnicodeString::isWritable() const
3637
- { return (UBool)!(fFlags&(kOpenGetBuffer|kIsBogus)); }
3673
+ { return (UBool)!(fUnion.fFields.fLengthAndFlags&(kOpenGetBuffer|kIsBogus)); }
3638
3674
 
3639
3675
  inline UBool
3640
3676
  UnicodeString::isBufferWritable() const
3641
3677
  {
3642
3678
  return (UBool)(
3643
- !(fFlags&(kOpenGetBuffer|kIsBogus|kBufferIsReadonly)) &&
3644
- (!(fFlags&kRefCounted) || refCount()==1));
3679
+ !(fUnion.fFields.fLengthAndFlags&(kOpenGetBuffer|kIsBogus|kBufferIsReadonly)) &&
3680
+ (!(fUnion.fFields.fLengthAndFlags&kRefCounted) || refCount()==1));
3645
3681
  }
3646
3682
 
3647
3683
  inline const UChar *
3648
3684
  UnicodeString::getBuffer() const {
3649
- if(fFlags&(kIsBogus|kOpenGetBuffer)) {
3685
+ if(fUnion.fFields.fLengthAndFlags&(kIsBogus|kOpenGetBuffer)) {
3650
3686
  return 0;
3651
- } else if(fFlags&kUsingStackBuffer) {
3652
- return fUnion.fStackBuffer;
3687
+ } else if(fUnion.fFields.fLengthAndFlags&kUsingStackBuffer) {
3688
+ return fUnion.fStackFields.fBuffer;
3653
3689
  } else {
3654
3690
  return fUnion.fFields.fArray;
3655
3691
  }
@@ -4250,26 +4286,38 @@ UnicodeString::operator[] (int32_t offset) const
4250
4286
 
4251
4287
  inline UBool
4252
4288
  UnicodeString::isEmpty() const {
4253
- return fShortLength == 0;
4289
+ // Arithmetic or logical right shift does not matter: only testing for 0.
4290
+ return (fUnion.fFields.fLengthAndFlags>>kLengthShift) == 0;
4254
4291
  }
4255
4292
 
4256
4293
  //========================================
4257
4294
  // Write implementation methods
4258
4295
  //========================================
4296
+ inline void
4297
+ UnicodeString::setZeroLength() {
4298
+ fUnion.fFields.fLengthAndFlags &= kAllStorageFlags;
4299
+ }
4300
+
4301
+ inline void
4302
+ UnicodeString::setShortLength(int32_t len) {
4303
+ // requires 0 <= len <= kMaxShortLength
4304
+ fUnion.fFields.fLengthAndFlags =
4305
+ (int16_t)((fUnion.fFields.fLengthAndFlags & kAllStorageFlags) | (len << kLengthShift));
4306
+ }
4307
+
4259
4308
  inline void
4260
4309
  UnicodeString::setLength(int32_t len) {
4261
- if(len <= 127) {
4262
- fShortLength = (int8_t)len;
4310
+ if(len <= kMaxShortLength) {
4311
+ setShortLength(len);
4263
4312
  } else {
4264
- fShortLength = (int8_t)-1;
4313
+ fUnion.fFields.fLengthAndFlags |= kLengthIsLarge;
4265
4314
  fUnion.fFields.fLength = len;
4266
4315
  }
4267
4316
  }
4268
4317
 
4269
4318
  inline void
4270
4319
  UnicodeString::setToEmpty() {
4271
- fShortLength = 0;
4272
- fFlags = kShortString;
4320
+ fUnion.fFields.fLengthAndFlags = kShortString;
4273
4321
  }
4274
4322
 
4275
4323
  inline void
@@ -4414,7 +4462,7 @@ UnicodeString::remove()
4414
4462
  if(isBogus()) {
4415
4463
  setToEmpty();
4416
4464
  } else {
4417
- fShortLength = 0;
4465
+ setZeroLength();
4418
4466
  }
4419
4467
  return *this;
4420
4468
  }