pango 2.2.4-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (530) hide show
  1. checksums.yaml +7 -0
  2. data/README +33 -0
  3. data/Rakefile +65 -0
  4. data/ext/pango/depend +12 -0
  5. data/ext/pango/extconf.rb +90 -0
  6. data/ext/pango/pango.def +18 -0
  7. data/ext/pango/rbpango.c +318 -0
  8. data/ext/pango/rbpango.h +96 -0
  9. data/ext/pango/rbpangoanalysis.c +218 -0
  10. data/ext/pango/rbpangoattribute.c +499 -0
  11. data/ext/pango/rbpangoattriterator.c +141 -0
  12. data/ext/pango/rbpangoattrlist.c +101 -0
  13. data/ext/pango/rbpangocairo.c +122 -0
  14. data/ext/pango/rbpangocairocontext.c +131 -0
  15. data/ext/pango/rbpangocolor.c +120 -0
  16. data/ext/pango/rbpangocontext.c +309 -0
  17. data/ext/pango/rbpangoconversions.h +111 -0
  18. data/ext/pango/rbpangocoverage.c +106 -0
  19. data/ext/pango/rbpangoengine.c +73 -0
  20. data/ext/pango/rbpangofont.c +110 -0
  21. data/ext/pango/rbpangofontdescription.c +282 -0
  22. data/ext/pango/rbpangofontface.c +73 -0
  23. data/ext/pango/rbpangofontfamily.c +79 -0
  24. data/ext/pango/rbpangofontmap.c +102 -0
  25. data/ext/pango/rbpangofontmetrics.c +85 -0
  26. data/ext/pango/rbpangofontset.c +69 -0
  27. data/ext/pango/rbpangofontsetsimple.c +60 -0
  28. data/ext/pango/rbpangoglyphinfo.c +123 -0
  29. data/ext/pango/rbpangoglyphitem.c +125 -0
  30. data/ext/pango/rbpangoglyphstring.c +151 -0
  31. data/ext/pango/rbpangogravity.c +54 -0
  32. data/ext/pango/rbpangoitem.c +95 -0
  33. data/ext/pango/rbpangolanguage.c +86 -0
  34. data/ext/pango/rbpangolayout.c +572 -0
  35. data/ext/pango/rbpangolayoutiter.c +189 -0
  36. data/ext/pango/rbpangolayoutline.c +239 -0
  37. data/ext/pango/rbpangologattr.c +109 -0
  38. data/ext/pango/rbpangomatrix.c +143 -0
  39. data/ext/pango/rbpangoprivate.h +49 -0
  40. data/ext/pango/rbpangorectangle.c +170 -0
  41. data/ext/pango/rbpangorenderer.c +193 -0
  42. data/ext/pango/rbpangoscript.c +84 -0
  43. data/ext/pango/rbpangoscriptiter.c +92 -0
  44. data/ext/pango/rbpangotabarray.c +128 -0
  45. data/extconf.rb +49 -0
  46. data/lib/2.0/pango.so +0 -0
  47. data/lib/2.1/pango.so +0 -0
  48. data/lib/2.2/pango.so +0 -0
  49. data/lib/pango.rb +79 -0
  50. data/sample/attribute.rb +82 -0
  51. data/sample/break.rb +28 -0
  52. data/sample/gdk_layout.rb +27 -0
  53. data/sample/glyphstring.rb +61 -0
  54. data/sample/item.rb +37 -0
  55. data/sample/label.rb +23 -0
  56. data/sample/layout.rb +102 -0
  57. data/sample/pango_cairo.rb +66 -0
  58. data/sample/parse.rb +33 -0
  59. data/sample/sample.txt +10 -0
  60. data/sample/script.rb +23 -0
  61. data/test/pango-test-utils.rb +9 -0
  62. data/test/run-test.rb +28 -0
  63. data/test/test-analysis.rb +26 -0
  64. data/test/test-attribute.rb +19 -0
  65. data/test/test-color.rb +47 -0
  66. data/test/test-language.rb +7 -0
  67. data/test/test-layout.rb +34 -0
  68. data/test/test-log-attr.rb +26 -0
  69. data/test/test-matrix.rb +26 -0
  70. data/test/test-rectangle.rb +26 -0
  71. data/vendor/local/bin/derb.exe +0 -0
  72. data/vendor/local/bin/genbrk.exe +0 -0
  73. data/vendor/local/bin/genccode.exe +0 -0
  74. data/vendor/local/bin/gencfu.exe +0 -0
  75. data/vendor/local/bin/gencmn.exe +0 -0
  76. data/vendor/local/bin/gencnval.exe +0 -0
  77. data/vendor/local/bin/gendict.exe +0 -0
  78. data/vendor/local/bin/gennorm2.exe +0 -0
  79. data/vendor/local/bin/genrb.exe +0 -0
  80. data/vendor/local/bin/gensprep.exe +0 -0
  81. data/vendor/local/bin/hb-ot-shape-closure.exe +0 -0
  82. data/vendor/local/bin/hb-shape.exe +0 -0
  83. data/vendor/local/bin/hb-view.exe +0 -0
  84. data/vendor/local/bin/icu-config +820 -0
  85. data/vendor/local/bin/icuinfo.exe +0 -0
  86. data/vendor/local/bin/icupkg.exe +0 -0
  87. data/vendor/local/bin/libharfbuzz-0.dll +0 -0
  88. data/vendor/local/bin/libpango-1.0-0.dll +0 -0
  89. data/vendor/local/bin/libpangocairo-1.0-0.dll +0 -0
  90. data/vendor/local/bin/libpangoft2-1.0-0.dll +0 -0
  91. data/vendor/local/bin/libpangowin32-1.0-0.dll +0 -0
  92. data/vendor/local/bin/makeconv.exe +0 -0
  93. data/vendor/local/bin/pango-querymodules.exe +0 -0
  94. data/vendor/local/bin/pango-view.exe +0 -0
  95. data/vendor/local/bin/pkgdata.exe +0 -0
  96. data/vendor/local/bin/uconv.exe +0 -0
  97. data/vendor/local/etc/pango/pango.modules +19 -0
  98. data/vendor/local/include/harfbuzz/hb-blob.h +126 -0
  99. data/vendor/local/include/harfbuzz/hb-buffer.h +344 -0
  100. data/vendor/local/include/harfbuzz/hb-common.h +344 -0
  101. data/vendor/local/include/harfbuzz/hb-deprecated.h +51 -0
  102. data/vendor/local/include/harfbuzz/hb-face.h +117 -0
  103. data/vendor/local/include/harfbuzz/hb-font.h +507 -0
  104. data/vendor/local/include/harfbuzz/hb-ft.h +62 -0
  105. data/vendor/local/include/harfbuzz/hb-glib.h +52 -0
  106. data/vendor/local/include/harfbuzz/hb-icu.h +52 -0
  107. data/vendor/local/include/harfbuzz/hb-ot-font.h +41 -0
  108. data/vendor/local/include/harfbuzz/hb-ot-layout.h +302 -0
  109. data/vendor/local/include/harfbuzz/hb-ot-shape.h +53 -0
  110. data/vendor/local/include/harfbuzz/hb-ot-tag.h +59 -0
  111. data/vendor/local/include/harfbuzz/hb-ot.h +43 -0
  112. data/vendor/local/include/harfbuzz/hb-set.h +154 -0
  113. data/vendor/local/include/harfbuzz/hb-shape-plan.h +89 -0
  114. data/vendor/local/include/harfbuzz/hb-shape.h +81 -0
  115. data/vendor/local/include/harfbuzz/hb-unicode.h +445 -0
  116. data/vendor/local/include/harfbuzz/hb-version.h +66 -0
  117. data/vendor/local/include/harfbuzz/hb.h +47 -0
  118. data/vendor/local/include/layout/LEFontInstance.h +550 -0
  119. data/vendor/local/include/layout/LEGlyphFilter.h +45 -0
  120. data/vendor/local/include/layout/LEGlyphStorage.h +546 -0
  121. data/vendor/local/include/layout/LEInsertionList.h +177 -0
  122. data/vendor/local/include/layout/LELanguages.h +112 -0
  123. data/vendor/local/include/layout/LEScripts.h +263 -0
  124. data/vendor/local/include/layout/LESwaps.h +100 -0
  125. data/vendor/local/include/layout/LETableReference.h +418 -0
  126. data/vendor/local/include/layout/LETypes.h +728 -0
  127. data/vendor/local/include/layout/LayoutEngine.h +518 -0
  128. data/vendor/local/include/layout/ParagraphLayout.h +747 -0
  129. data/vendor/local/include/layout/RunArrays.h +676 -0
  130. data/vendor/local/include/layout/loengine.h +225 -0
  131. data/vendor/local/include/layout/playout.h +466 -0
  132. data/vendor/local/include/layout/plruns.h +441 -0
  133. data/vendor/local/include/pango-1.0/pango/pango-attributes.h +514 -0
  134. data/vendor/local/include/pango-1.0/pango/pango-bidi-type.h +136 -0
  135. data/vendor/local/include/pango-1.0/pango/pango-break.h +173 -0
  136. data/vendor/local/include/pango-1.0/pango/pango-context.h +112 -0
  137. data/vendor/local/include/pango-1.0/pango/pango-coverage.h +79 -0
  138. data/vendor/local/include/pango-1.0/pango/pango-engine.h +429 -0
  139. data/vendor/local/include/pango-1.0/pango/pango-enum-types.h +69 -0
  140. data/vendor/local/include/pango-1.0/pango/pango-features.h +12 -0
  141. data/vendor/local/include/pango-1.0/pango/pango-font.h +622 -0
  142. data/vendor/local/include/pango-1.0/pango/pango-fontmap.h +167 -0
  143. data/vendor/local/include/pango-1.0/pango/pango-fontset.h +169 -0
  144. data/vendor/local/include/pango-1.0/pango/pango-glyph-item.h +158 -0
  145. data/vendor/local/include/pango-1.0/pango/pango-glyph.h +197 -0
  146. data/vendor/local/include/pango-1.0/pango/pango-gravity.h +128 -0
  147. data/vendor/local/include/pango-1.0/pango/pango-item.h +109 -0
  148. data/vendor/local/include/pango-1.0/pango/pango-language.h +61 -0
  149. data/vendor/local/include/pango-1.0/pango/pango-layout.h +340 -0
  150. data/vendor/local/include/pango-1.0/pango/pango-matrix.h +117 -0
  151. data/vendor/local/include/pango-1.0/pango/pango-modules.h +71 -0
  152. data/vendor/local/include/pango-1.0/pango/pango-ot.h +391 -0
  153. data/vendor/local/include/pango-1.0/pango/pango-renderer.h +260 -0
  154. data/vendor/local/include/pango-1.0/pango/pango-script.h +260 -0
  155. data/vendor/local/include/pango-1.0/pango/pango-tabs.h +87 -0
  156. data/vendor/local/include/pango-1.0/pango/pango-types.h +200 -0
  157. data/vendor/local/include/pango-1.0/pango/pango-utils.h +189 -0
  158. data/vendor/local/include/pango-1.0/pango/pango.h +48 -0
  159. data/vendor/local/include/pango-1.0/pango/pangocairo.h +169 -0
  160. data/vendor/local/include/pango-1.0/pango/pangofc-decoder.h +110 -0
  161. data/vendor/local/include/pango-1.0/pango/pangofc-font.h +153 -0
  162. data/vendor/local/include/pango-1.0/pango/pangofc-fontmap.h +289 -0
  163. data/vendor/local/include/pango-1.0/pango/pangoft2.h +133 -0
  164. data/vendor/local/include/pango-1.0/pango/pangowin32.h +128 -0
  165. data/vendor/local/include/unicode/alphaindex.h +752 -0
  166. data/vendor/local/include/unicode/appendable.h +232 -0
  167. data/vendor/local/include/unicode/basictz.h +214 -0
  168. data/vendor/local/include/unicode/brkiter.h +655 -0
  169. data/vendor/local/include/unicode/bytestream.h +257 -0
  170. data/vendor/local/include/unicode/bytestrie.h +519 -0
  171. data/vendor/local/include/unicode/bytestriebuilder.h +181 -0
  172. data/vendor/local/include/unicode/calendar.h +2519 -0
  173. data/vendor/local/include/unicode/caniter.h +208 -0
  174. data/vendor/local/include/unicode/chariter.h +722 -0
  175. data/vendor/local/include/unicode/choicfmt.h +594 -0
  176. data/vendor/local/include/unicode/coleitr.h +404 -0
  177. data/vendor/local/include/unicode/coll.h +1267 -0
  178. data/vendor/local/include/unicode/compactdecimalformat.h +330 -0
  179. data/vendor/local/include/unicode/curramt.h +130 -0
  180. data/vendor/local/include/unicode/currpinf.h +258 -0
  181. data/vendor/local/include/unicode/currunit.h +110 -0
  182. data/vendor/local/include/unicode/datefmt.h +883 -0
  183. data/vendor/local/include/unicode/dbbi.h +40 -0
  184. data/vendor/local/include/unicode/dcfmtsym.h +482 -0
  185. data/vendor/local/include/unicode/decimfmt.h +2479 -0
  186. data/vendor/local/include/unicode/docmain.h +215 -0
  187. data/vendor/local/include/unicode/dtfmtsym.h +912 -0
  188. data/vendor/local/include/unicode/dtintrv.h +158 -0
  189. data/vendor/local/include/unicode/dtitvfmt.h +985 -0
  190. data/vendor/local/include/unicode/dtitvinf.h +514 -0
  191. data/vendor/local/include/unicode/dtptngen.h +498 -0
  192. data/vendor/local/include/unicode/dtrule.h +250 -0
  193. data/vendor/local/include/unicode/enumset.h +64 -0
  194. data/vendor/local/include/unicode/errorcode.h +137 -0
  195. data/vendor/local/include/unicode/fieldpos.h +291 -0
  196. data/vendor/local/include/unicode/filteredbrk.h +131 -0
  197. data/vendor/local/include/unicode/fmtable.h +760 -0
  198. data/vendor/local/include/unicode/format.h +305 -0
  199. data/vendor/local/include/unicode/fpositer.h +117 -0
  200. data/vendor/local/include/unicode/gender.h +111 -0
  201. data/vendor/local/include/unicode/gregocal.h +777 -0
  202. data/vendor/local/include/unicode/icudataver.h +41 -0
  203. data/vendor/local/include/unicode/icuplug.h +371 -0
  204. data/vendor/local/include/unicode/idna.h +323 -0
  205. data/vendor/local/include/unicode/listformatter.h +167 -0
  206. data/vendor/local/include/unicode/localpointer.h +304 -0
  207. data/vendor/local/include/unicode/locdspnm.h +204 -0
  208. data/vendor/local/include/unicode/locid.h +815 -0
  209. data/vendor/local/include/unicode/measfmt.h +389 -0
  210. data/vendor/local/include/unicode/measunit.h +1443 -0
  211. data/vendor/local/include/unicode/measure.h +159 -0
  212. data/vendor/local/include/unicode/messagepattern.h +943 -0
  213. data/vendor/local/include/unicode/msgfmt.h +1093 -0
  214. data/vendor/local/include/unicode/normalizer2.h +658 -0
  215. data/vendor/local/include/unicode/normlzr.h +797 -0
  216. data/vendor/local/include/unicode/numfmt.h +1187 -0
  217. data/vendor/local/include/unicode/numsys.h +208 -0
  218. data/vendor/local/include/unicode/parseerr.h +92 -0
  219. data/vendor/local/include/unicode/parsepos.h +230 -0
  220. data/vendor/local/include/unicode/platform.h +751 -0
  221. data/vendor/local/include/unicode/plurfmt.h +615 -0
  222. data/vendor/local/include/unicode/plurrule.h +501 -0
  223. data/vendor/local/include/unicode/ptypes.h +126 -0
  224. data/vendor/local/include/unicode/putil.h +181 -0
  225. data/vendor/local/include/unicode/rbbi.h +782 -0
  226. data/vendor/local/include/unicode/rbnf.h +1032 -0
  227. data/vendor/local/include/unicode/rbtz.h +362 -0
  228. data/vendor/local/include/unicode/regex.h +1857 -0
  229. data/vendor/local/include/unicode/region.h +228 -0
  230. data/vendor/local/include/unicode/reldatefmt.h +498 -0
  231. data/vendor/local/include/unicode/rep.h +261 -0
  232. data/vendor/local/include/unicode/resbund.h +490 -0
  233. data/vendor/local/include/unicode/schriter.h +187 -0
  234. data/vendor/local/include/unicode/scientificformathelper.h +139 -0
  235. data/vendor/local/include/unicode/search.h +575 -0
  236. data/vendor/local/include/unicode/selfmt.h +367 -0
  237. data/vendor/local/include/unicode/simpletz.h +928 -0
  238. data/vendor/local/include/unicode/smpdtfmt.h +1592 -0
  239. data/vendor/local/include/unicode/sortkey.h +338 -0
  240. data/vendor/local/include/unicode/std_string.h +37 -0
  241. data/vendor/local/include/unicode/strenum.h +276 -0
  242. data/vendor/local/include/unicode/stringpiece.h +224 -0
  243. data/vendor/local/include/unicode/stringtriebuilder.h +402 -0
  244. data/vendor/local/include/unicode/stsearch.h +504 -0
  245. data/vendor/local/include/unicode/symtable.h +112 -0
  246. data/vendor/local/include/unicode/tblcoll.h +873 -0
  247. data/vendor/local/include/unicode/timezone.h +948 -0
  248. data/vendor/local/include/unicode/tmunit.h +129 -0
  249. data/vendor/local/include/unicode/tmutamt.h +168 -0
  250. data/vendor/local/include/unicode/tmutfmt.h +243 -0
  251. data/vendor/local/include/unicode/translit.h +1342 -0
  252. data/vendor/local/include/unicode/tzfmt.h +1098 -0
  253. data/vendor/local/include/unicode/tznames.h +404 -0
  254. data/vendor/local/include/unicode/tzrule.h +828 -0
  255. data/vendor/local/include/unicode/tztrans.h +195 -0
  256. data/vendor/local/include/unicode/ubidi.h +2186 -0
  257. data/vendor/local/include/unicode/ubrk.h +540 -0
  258. data/vendor/local/include/unicode/ucal.h +1560 -0
  259. data/vendor/local/include/unicode/ucasemap.h +423 -0
  260. data/vendor/local/include/unicode/ucat.h +158 -0
  261. data/vendor/local/include/unicode/uchar.h +3426 -0
  262. data/vendor/local/include/unicode/ucharstrie.h +576 -0
  263. data/vendor/local/include/unicode/ucharstriebuilder.h +185 -0
  264. data/vendor/local/include/unicode/uchriter.h +381 -0
  265. data/vendor/local/include/unicode/uclean.h +258 -0
  266. data/vendor/local/include/unicode/ucnv.h +2036 -0
  267. data/vendor/local/include/unicode/ucnv_cb.h +162 -0
  268. data/vendor/local/include/unicode/ucnv_err.h +463 -0
  269. data/vendor/local/include/unicode/ucnvsel.h +187 -0
  270. data/vendor/local/include/unicode/ucol.h +1474 -0
  271. data/vendor/local/include/unicode/ucoleitr.h +266 -0
  272. data/vendor/local/include/unicode/uconfig.h +430 -0
  273. data/vendor/local/include/unicode/ucsdet.h +413 -0
  274. data/vendor/local/include/unicode/ucurr.h +424 -0
  275. data/vendor/local/include/unicode/udat.h +1536 -0
  276. data/vendor/local/include/unicode/udata.h +430 -0
  277. data/vendor/local/include/unicode/udateintervalformat.h +181 -0
  278. data/vendor/local/include/unicode/udatpg.h +588 -0
  279. data/vendor/local/include/unicode/udisplaycontext.h +150 -0
  280. data/vendor/local/include/unicode/uenum.h +206 -0
  281. data/vendor/local/include/unicode/uformattable.h +280 -0
  282. data/vendor/local/include/unicode/ugender.h +82 -0
  283. data/vendor/local/include/unicode/uidna.h +762 -0
  284. data/vendor/local/include/unicode/uiter.h +707 -0
  285. data/vendor/local/include/unicode/uldnames.h +302 -0
  286. data/vendor/local/include/unicode/uloc.h +1256 -0
  287. data/vendor/local/include/unicode/ulocdata.h +277 -0
  288. data/vendor/local/include/unicode/umachine.h +356 -0
  289. data/vendor/local/include/unicode/umisc.h +60 -0
  290. data/vendor/local/include/unicode/umsg.h +623 -0
  291. data/vendor/local/include/unicode/unifilt.h +120 -0
  292. data/vendor/local/include/unicode/unifunct.h +125 -0
  293. data/vendor/local/include/unicode/unimatch.h +163 -0
  294. data/vendor/local/include/unicode/unirepl.h +97 -0
  295. data/vendor/local/include/unicode/uniset.h +1691 -0
  296. data/vendor/local/include/unicode/unistr.h +4470 -0
  297. data/vendor/local/include/unicode/unorm.h +561 -0
  298. data/vendor/local/include/unicode/unorm2.h +528 -0
  299. data/vendor/local/include/unicode/unum.h +1328 -0
  300. data/vendor/local/include/unicode/unumsys.h +170 -0
  301. data/vendor/local/include/unicode/uobject.h +320 -0
  302. data/vendor/local/include/unicode/upluralrules.h +145 -0
  303. data/vendor/local/include/unicode/uregex.h +1591 -0
  304. data/vendor/local/include/unicode/uregion.h +248 -0
  305. data/vendor/local/include/unicode/urename.h +1784 -0
  306. data/vendor/local/include/unicode/urep.h +155 -0
  307. data/vendor/local/include/unicode/ures.h +887 -0
  308. data/vendor/local/include/unicode/uscript.h +642 -0
  309. data/vendor/local/include/unicode/usearch.h +885 -0
  310. data/vendor/local/include/unicode/uset.h +1126 -0
  311. data/vendor/local/include/unicode/usetiter.h +318 -0
  312. data/vendor/local/include/unicode/ushape.h +474 -0
  313. data/vendor/local/include/unicode/uspoof.h +1064 -0
  314. data/vendor/local/include/unicode/usprep.h +269 -0
  315. data/vendor/local/include/unicode/ustdio.h +1018 -0
  316. data/vendor/local/include/unicode/ustream.h +68 -0
  317. data/vendor/local/include/unicode/ustring.h +1700 -0
  318. data/vendor/local/include/unicode/ustringtrie.h +95 -0
  319. data/vendor/local/include/unicode/utext.h +1600 -0
  320. data/vendor/local/include/unicode/utf.h +223 -0
  321. data/vendor/local/include/unicode/utf16.h +623 -0
  322. data/vendor/local/include/unicode/utf32.h +23 -0
  323. data/vendor/local/include/unicode/utf8.h +824 -0
  324. data/vendor/local/include/unicode/utf_old.h +1169 -0
  325. data/vendor/local/include/unicode/utmscale.h +481 -0
  326. data/vendor/local/include/unicode/utrace.h +359 -0
  327. data/vendor/local/include/unicode/utrans.h +658 -0
  328. data/vendor/local/include/unicode/utypes.h +723 -0
  329. data/vendor/local/include/unicode/uvernum.h +170 -0
  330. data/vendor/local/include/unicode/uversion.h +193 -0
  331. data/vendor/local/include/unicode/vtzone.h +455 -0
  332. data/vendor/local/lib/girepository-1.0/Pango-1.0.typelib +0 -0
  333. data/vendor/local/lib/girepository-1.0/PangoCairo-1.0.typelib +0 -0
  334. data/vendor/local/lib/girepository-1.0/PangoFT2-1.0.typelib +0 -0
  335. data/vendor/local/lib/icu/54.1/Makefile.inc +293 -0
  336. data/vendor/local/lib/icu/54.1/pkgdata.inc +17 -0
  337. data/vendor/local/lib/icu/Makefile.inc +293 -0
  338. data/vendor/local/lib/icu/pkgdata.inc +17 -0
  339. data/vendor/local/lib/icudt.dll +0 -0
  340. data/vendor/local/lib/icudt54.dll +0 -0
  341. data/vendor/local/lib/icuin.dll +0 -0
  342. data/vendor/local/lib/icuin54.dll +0 -0
  343. data/vendor/local/lib/icuio.dll +0 -0
  344. data/vendor/local/lib/icuio54.dll +0 -0
  345. data/vendor/local/lib/icule.dll +0 -0
  346. data/vendor/local/lib/icule54.dll +0 -0
  347. data/vendor/local/lib/iculx.dll +0 -0
  348. data/vendor/local/lib/iculx54.dll +0 -0
  349. data/vendor/local/lib/icutest.dll +0 -0
  350. data/vendor/local/lib/icutest54.dll +0 -0
  351. data/vendor/local/lib/icutu.dll +0 -0
  352. data/vendor/local/lib/icutu54.dll +0 -0
  353. data/vendor/local/lib/icuuc.dll +0 -0
  354. data/vendor/local/lib/icuuc54.dll +0 -0
  355. data/vendor/local/lib/libharfbuzz-icu.a +0 -0
  356. data/vendor/local/lib/libharfbuzz-icu.la +41 -0
  357. data/vendor/local/lib/libharfbuzz.dll.a +0 -0
  358. data/vendor/local/lib/libharfbuzz.la +41 -0
  359. data/vendor/local/lib/libicudt.dll.a +0 -0
  360. data/vendor/local/lib/libicuin.dll.a +0 -0
  361. data/vendor/local/lib/libicuio.dll.a +0 -0
  362. data/vendor/local/lib/libicule.dll.a +0 -0
  363. data/vendor/local/lib/libiculx.dll.a +0 -0
  364. data/vendor/local/lib/libicutest.dll.a +0 -0
  365. data/vendor/local/lib/libicutu.dll.a +0 -0
  366. data/vendor/local/lib/libicuuc.dll.a +0 -0
  367. data/vendor/local/lib/libpango-1.0.dll.a +0 -0
  368. data/vendor/local/lib/libpango-1.0.la +41 -0
  369. data/vendor/local/lib/libpangocairo-1.0.dll.a +0 -0
  370. data/vendor/local/lib/libpangocairo-1.0.la +41 -0
  371. data/vendor/local/lib/libpangoft2-1.0.dll.a +0 -0
  372. data/vendor/local/lib/libpangoft2-1.0.la +41 -0
  373. data/vendor/local/lib/libpangowin32-1.0.dll.a +0 -0
  374. data/vendor/local/lib/libpangowin32-1.0.la +41 -0
  375. data/vendor/local/lib/pango/1.8.0/modules/pango-arabic-lang.dll +0 -0
  376. data/vendor/local/lib/pango/1.8.0/modules/pango-arabic-lang.dll.a +0 -0
  377. data/vendor/local/lib/pango/1.8.0/modules/pango-arabic-lang.la +41 -0
  378. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-fc.dll +0 -0
  379. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-fc.dll.a +0 -0
  380. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-fc.la +41 -0
  381. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-win32.dll +0 -0
  382. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-win32.dll.a +0 -0
  383. data/vendor/local/lib/pango/1.8.0/modules/pango-basic-win32.la +41 -0
  384. data/vendor/local/lib/pango/1.8.0/modules/pango-indic-lang.dll +0 -0
  385. data/vendor/local/lib/pango/1.8.0/modules/pango-indic-lang.dll.a +0 -0
  386. data/vendor/local/lib/pango/1.8.0/modules/pango-indic-lang.la +41 -0
  387. data/vendor/local/lib/pkgconfig/harfbuzz-icu.pc +13 -0
  388. data/vendor/local/lib/pkgconfig/harfbuzz.pc +11 -0
  389. data/vendor/local/lib/pkgconfig/icu-i18n.pc +38 -0
  390. data/vendor/local/lib/pkgconfig/icu-io.pc +38 -0
  391. data/vendor/local/lib/pkgconfig/icu-le.pc +38 -0
  392. data/vendor/local/lib/pkgconfig/icu-lx.pc +38 -0
  393. data/vendor/local/lib/pkgconfig/icu-uc.pc +38 -0
  394. data/vendor/local/lib/pkgconfig/pango.pc +14 -0
  395. data/vendor/local/lib/pkgconfig/pangocairo.pc +11 -0
  396. data/vendor/local/lib/pkgconfig/pangoft2.pc +12 -0
  397. data/vendor/local/lib/pkgconfig/pangowin32.pc +11 -0
  398. data/vendor/local/share/gir-1.0/Pango-1.0.gir +13329 -0
  399. data/vendor/local/share/gir-1.0/PangoCairo-1.0.gir +833 -0
  400. data/vendor/local/share/gir-1.0/PangoFT2-1.0.gir +354 -0
  401. data/vendor/local/share/gtk-doc/html/harfbuzz/annotation-glossary.html +75 -0
  402. data/vendor/local/share/gtk-doc/html/harfbuzz/api-index-full.html +1449 -0
  403. data/vendor/local/share/gtk-doc/html/harfbuzz/ch01.html +98 -0
  404. data/vendor/local/share/gtk-doc/html/harfbuzz/deprecated-api-index.html +46 -0
  405. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-blob.html +610 -0
  406. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-buffer.html +1780 -0
  407. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-common.html +1337 -0
  408. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-coretext.html +144 -0
  409. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-deprecated.html +99 -0
  410. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-face.html +630 -0
  411. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-font.html +2529 -0
  412. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ft.html +188 -0
  413. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-glib.html +120 -0
  414. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-gobject.html +50 -0
  415. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-graphite2.html +120 -0
  416. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-icu.html +120 -0
  417. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ot-layout.html +771 -0
  418. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ot-tag.html +172 -0
  419. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-ot.html +50 -0
  420. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-set.html +966 -0
  421. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-shape-plan.html +405 -0
  422. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-shape.html +286 -0
  423. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-unicode.html +1523 -0
  424. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-uniscribe.html +100 -0
  425. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb-version.html +182 -0
  426. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz-hb.html +50 -0
  427. data/vendor/local/share/gtk-doc/html/harfbuzz/harfbuzz.devhelp2 +378 -0
  428. data/vendor/local/share/gtk-doc/html/harfbuzz/home.png +0 -0
  429. data/vendor/local/share/gtk-doc/html/harfbuzz/index.html +105 -0
  430. data/vendor/local/share/gtk-doc/html/harfbuzz/index.sgml +496 -0
  431. data/vendor/local/share/gtk-doc/html/harfbuzz/left-insensitive.png +0 -0
  432. data/vendor/local/share/gtk-doc/html/harfbuzz/left.png +0 -0
  433. data/vendor/local/share/gtk-doc/html/harfbuzz/object-tree.html +59 -0
  434. data/vendor/local/share/gtk-doc/html/harfbuzz/right-insensitive.png +0 -0
  435. data/vendor/local/share/gtk-doc/html/harfbuzz/right.png +0 -0
  436. data/vendor/local/share/gtk-doc/html/harfbuzz/style.css +476 -0
  437. data/vendor/local/share/gtk-doc/html/harfbuzz/up-insensitive.png +0 -0
  438. data/vendor/local/share/gtk-doc/html/harfbuzz/up.png +0 -0
  439. data/vendor/local/share/gtk-doc/html/pango/PangoEngineLang.html +224 -0
  440. data/vendor/local/share/gtk-doc/html/pango/PangoEngineShape.html +255 -0
  441. data/vendor/local/share/gtk-doc/html/pango/PangoFcDecoder.html +246 -0
  442. data/vendor/local/share/gtk-doc/html/pango/PangoFcFont.html +500 -0
  443. data/vendor/local/share/gtk-doc/html/pango/PangoFcFontMap.html +1001 -0
  444. data/vendor/local/share/gtk-doc/html/pango/PangoMarkupFormat.html +301 -0
  445. data/vendor/local/share/gtk-doc/html/pango/PangoRenderer.html +1219 -0
  446. data/vendor/local/share/gtk-doc/html/pango/annotation-glossary.html +89 -0
  447. data/vendor/local/share/gtk-doc/html/pango/api-index-1-10.html +135 -0
  448. data/vendor/local/share/gtk-doc/html/pango/api-index-1-12.html +49 -0
  449. data/vendor/local/share/gtk-doc/html/pango/api-index-1-14.html +64 -0
  450. data/vendor/local/share/gtk-doc/html/pango/api-index-1-16.html +228 -0
  451. data/vendor/local/share/gtk-doc/html/pango/api-index-1-18.html +152 -0
  452. data/vendor/local/share/gtk-doc/html/pango/api-index-1-2.html +122 -0
  453. data/vendor/local/share/gtk-doc/html/pango/api-index-1-20.html +87 -0
  454. data/vendor/local/share/gtk-doc/html/pango/api-index-1-22.html +124 -0
  455. data/vendor/local/share/gtk-doc/html/pango/api-index-1-24.html +97 -0
  456. data/vendor/local/share/gtk-doc/html/pango/api-index-1-26.html +46 -0
  457. data/vendor/local/share/gtk-doc/html/pango/api-index-1-30.html +39 -0
  458. data/vendor/local/share/gtk-doc/html/pango/api-index-1-31-0.html +39 -0
  459. data/vendor/local/share/gtk-doc/html/pango/api-index-1-32-4.html +53 -0
  460. data/vendor/local/share/gtk-doc/html/pango/api-index-1-32.html +42 -0
  461. data/vendor/local/share/gtk-doc/html/pango/api-index-1-34.html +38 -0
  462. data/vendor/local/share/gtk-doc/html/pango/api-index-1-4.html +201 -0
  463. data/vendor/local/share/gtk-doc/html/pango/api-index-1-6.html +165 -0
  464. data/vendor/local/share/gtk-doc/html/pango/api-index-1-8.html +171 -0
  465. data/vendor/local/share/gtk-doc/html/pango/api-index-deprecated.html +284 -0
  466. data/vendor/local/share/gtk-doc/html/pango/api-index-full.html +2968 -0
  467. data/vendor/local/share/gtk-doc/html/pango/home.png +0 -0
  468. data/vendor/local/share/gtk-doc/html/pango/index.html +146 -0
  469. data/vendor/local/share/gtk-doc/html/pango/index.sgml +957 -0
  470. data/vendor/local/share/gtk-doc/html/pango/layout.gif +0 -0
  471. data/vendor/local/share/gtk-doc/html/pango/left-insensitive.png +0 -0
  472. data/vendor/local/share/gtk-doc/html/pango/left.png +0 -0
  473. data/vendor/local/share/gtk-doc/html/pango/lowlevel.html +68 -0
  474. data/vendor/local/share/gtk-doc/html/pango/pango-Bidirectional-Text.html +514 -0
  475. data/vendor/local/share/gtk-doc/html/pango/pango-Cairo-Rendering.html +1632 -0
  476. data/vendor/local/share/gtk-doc/html/pango/pango-CoreText-Fonts.html +115 -0
  477. data/vendor/local/share/gtk-doc/html/pango/pango-Coverage-Maps.html +508 -0
  478. data/vendor/local/share/gtk-doc/html/pango/pango-Engines.html +358 -0
  479. data/vendor/local/share/gtk-doc/html/pango/pango-Fonts.html +4154 -0
  480. data/vendor/local/share/gtk-doc/html/pango/pango-FreeType-Fonts-and-Rendering.html +956 -0
  481. data/vendor/local/share/gtk-doc/html/pango/pango-Glyph-Storage.html +2627 -0
  482. data/vendor/local/share/gtk-doc/html/pango/pango-Layout-Objects.html +4153 -0
  483. data/vendor/local/share/gtk-doc/html/pango/pango-Miscellaneous-Utilities.html +965 -0
  484. data/vendor/local/share/gtk-doc/html/pango/pango-Modules.html +331 -0
  485. data/vendor/local/share/gtk-doc/html/pango/pango-OpenType-Font-Handling.html +2202 -0
  486. data/vendor/local/share/gtk-doc/html/pango/pango-Scripts-and-Languages.html +1430 -0
  487. data/vendor/local/share/gtk-doc/html/pango/pango-Tab-Stops.html +582 -0
  488. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Attributes.html +3356 -0
  489. data/vendor/local/share/gtk-doc/html/pango/pango-Text-Processing.html +2079 -0
  490. data/vendor/local/share/gtk-doc/html/pango/pango-Version-Checking.html +325 -0
  491. data/vendor/local/share/gtk-doc/html/pango/pango-Vertical-Text.html +523 -0
  492. data/vendor/local/share/gtk-doc/html/pango/pango-Win32-Fonts-and-Rendering.html +1028 -0
  493. data/vendor/local/share/gtk-doc/html/pango/pango-Xft-Fonts-and-Rendering.html +1275 -0
  494. data/vendor/local/share/gtk-doc/html/pango/pango-hierarchy.html +91 -0
  495. data/vendor/local/share/gtk-doc/html/pango/pango-querymodules.html +131 -0
  496. data/vendor/local/share/gtk-doc/html/pango/pango.devhelp2 +786 -0
  497. data/vendor/local/share/gtk-doc/html/pango/pango.html +63 -0
  498. data/vendor/local/share/gtk-doc/html/pango/rendering.html +47 -0
  499. data/vendor/local/share/gtk-doc/html/pango/right-insensitive.png +0 -0
  500. data/vendor/local/share/gtk-doc/html/pango/right.png +0 -0
  501. data/vendor/local/share/gtk-doc/html/pango/rotated-text.png +0 -0
  502. data/vendor/local/share/gtk-doc/html/pango/style.css +476 -0
  503. data/vendor/local/share/gtk-doc/html/pango/tools.html +33 -0
  504. data/vendor/local/share/gtk-doc/html/pango/up-insensitive.png +0 -0
  505. data/vendor/local/share/gtk-doc/html/pango/up.png +0 -0
  506. data/vendor/local/share/icu/54.1/config/mh-mingw64 +158 -0
  507. data/vendor/local/share/icu/54.1/install-sh +251 -0
  508. data/vendor/local/share/icu/54.1/license.html +385 -0
  509. data/vendor/local/share/icu/54.1/mkinstalldirs +43 -0
  510. data/vendor/local/share/license/harfbuzz/AUTHORS +9 -0
  511. data/vendor/local/share/license/harfbuzz/COPYING +36 -0
  512. data/vendor/local/share/license/pango/AUTHORS +2 -0
  513. data/vendor/local/share/license/pango/COPYING +482 -0
  514. data/vendor/local/share/man/man1/derb.1 +196 -0
  515. data/vendor/local/share/man/man1/genbrk.1 +112 -0
  516. data/vendor/local/share/man/man1/gencfu.1 +91 -0
  517. data/vendor/local/share/man/man1/gencnval.1 +91 -0
  518. data/vendor/local/share/man/man1/gendict.1 +131 -0
  519. data/vendor/local/share/man/man1/genrb.1 +146 -0
  520. data/vendor/local/share/man/man1/icu-config.1 +288 -0
  521. data/vendor/local/share/man/man1/makeconv.1 +112 -0
  522. data/vendor/local/share/man/man1/pango-querymodules.1 +106 -0
  523. data/vendor/local/share/man/man1/pango-view.1 +1 -0
  524. data/vendor/local/share/man/man1/pkgdata.1 +258 -0
  525. data/vendor/local/share/man/man1/uconv.1 +443 -0
  526. data/vendor/local/share/man/man8/genccode.8 +106 -0
  527. data/vendor/local/share/man/man8/gencmn.8 +129 -0
  528. data/vendor/local/share/man/man8/gensprep.8 +102 -0
  529. data/vendor/local/share/man/man8/icupkg.8 +204 -0
  530. metadata +599 -0
@@ -0,0 +1,948 @@
1
+ /*************************************************************************
2
+ * Copyright (c) 1997-2014, International Business Machines Corporation
3
+ * and others. All Rights Reserved.
4
+ **************************************************************************
5
+ *
6
+ * File TIMEZONE.H
7
+ *
8
+ * Modification History:
9
+ *
10
+ * Date Name Description
11
+ * 04/21/97 aliu Overhauled header.
12
+ * 07/09/97 helena Changed createInstance to createDefault.
13
+ * 08/06/97 aliu Removed dependency on internal header for Hashtable.
14
+ * 08/10/98 stephen Changed getDisplayName() API conventions to match
15
+ * 08/19/98 stephen Changed createTimeZone() to never return 0
16
+ * 09/02/98 stephen Sync to JDK 1.2 8/31
17
+ * - Added getOffset(... monthlen ...)
18
+ * - Added hasSameRules()
19
+ * 09/15/98 stephen Added getStaticClassID
20
+ * 12/03/99 aliu Moved data out of static table into icudata.dll.
21
+ * Hashtable replaced by new static data structures.
22
+ * 12/14/99 aliu Made GMT public.
23
+ * 08/15/01 grhoten Made GMT private and added the getGMT() function
24
+ **************************************************************************
25
+ */
26
+
27
+ #ifndef TIMEZONE_H
28
+ #define TIMEZONE_H
29
+
30
+ #include "unicode/utypes.h"
31
+
32
+ /**
33
+ * \file
34
+ * \brief C++ API: TimeZone object
35
+ */
36
+
37
+ #if !UCONFIG_NO_FORMATTING
38
+
39
+ #include "unicode/uobject.h"
40
+ #include "unicode/unistr.h"
41
+ #include "unicode/ures.h"
42
+ #include "unicode/ucal.h"
43
+
44
+ U_NAMESPACE_BEGIN
45
+
46
+ class StringEnumeration;
47
+
48
+ /**
49
+ *
50
+ * <code>TimeZone</code> represents a time zone offset, and also figures out daylight
51
+ * savings.
52
+ *
53
+ * <p>
54
+ * Typically, you get a <code>TimeZone</code> using <code>createDefault</code>
55
+ * which creates a <code>TimeZone</code> based on the time zone where the program
56
+ * is running. For example, for a program running in Japan, <code>createDefault</code>
57
+ * creates a <code>TimeZone</code> object based on Japanese Standard Time.
58
+ *
59
+ * <p>
60
+ * You can also get a <code>TimeZone</code> using <code>createTimeZone</code> along
61
+ * with a time zone ID. For instance, the time zone ID for the US Pacific
62
+ * Time zone is "America/Los_Angeles". So, you can get a Pacific Time <code>TimeZone</code> object
63
+ * with:
64
+ * \htmlonly<blockquote>\endhtmlonly
65
+ * <pre>
66
+ * TimeZone *tz = TimeZone::createTimeZone("America/Los_Angeles");
67
+ * </pre>
68
+ * \htmlonly</blockquote>\endhtmlonly
69
+ * You can use <code>getAvailableIDs</code> method to iterate through
70
+ * all the supported time zone IDs, or getCanonicalID method to check
71
+ * if a time zone ID is supported or not. You can then choose a
72
+ * supported ID to get a <code>TimeZone</code>.
73
+ * If the time zone you want is not represented by one of the
74
+ * supported IDs, then you can create a custom time zone ID with
75
+ * the following syntax:
76
+ *
77
+ * \htmlonly<blockquote>\endhtmlonly
78
+ * <pre>
79
+ * GMT[+|-]hh[[:]mm]
80
+ * </pre>
81
+ * \htmlonly</blockquote>\endhtmlonly
82
+ *
83
+ * For example, you might specify GMT+14:00 as a custom
84
+ * time zone ID. The <code>TimeZone</code> that is returned
85
+ * when you specify a custom time zone ID uses the specified
86
+ * offset from GMT(=UTC) and does not observe daylight saving
87
+ * time. For example, you might specify GMT+14:00 as a custom
88
+ * time zone ID to create a TimeZone representing 14 hours ahead
89
+ * of GMT (with no daylight saving time). In addition,
90
+ * <code>getCanonicalID</code> can also be used to
91
+ * normalize a custom time zone ID.
92
+ *
93
+ * TimeZone is an abstract class representing a time zone. A TimeZone is needed for
94
+ * Calendar to produce local time for a particular time zone. A TimeZone comprises
95
+ * three basic pieces of information:
96
+ * <ul>
97
+ * <li>A time zone offset; that, is the number of milliseconds to add or subtract
98
+ * from a time expressed in terms of GMT to convert it to the same time in that
99
+ * time zone (without taking daylight savings time into account).</li>
100
+ * <li>Logic necessary to take daylight savings time into account if daylight savings
101
+ * time is observed in that time zone (e.g., the days and hours on which daylight
102
+ * savings time begins and ends).</li>
103
+ * <li>An ID. This is a text string that uniquely identifies the time zone.</li>
104
+ * </ul>
105
+ *
106
+ * (Only the ID is actually implemented in TimeZone; subclasses of TimeZone may handle
107
+ * daylight savings time and GMT offset in different ways. Currently we have the following
108
+ * TimeZone subclasses: RuleBasedTimeZone, SimpleTimeZone, and VTimeZone.)
109
+ * <P>
110
+ * The TimeZone class contains a static list containing a TimeZone object for every
111
+ * combination of GMT offset and daylight-savings time rules currently in use in the
112
+ * world, each with a unique ID. Each ID consists of a region (usually a continent or
113
+ * ocean) and a city in that region, separated by a slash, (for example, US Pacific
114
+ * Time is "America/Los_Angeles.") Because older versions of this class used
115
+ * three- or four-letter abbreviations instead, there is also a table that maps the older
116
+ * abbreviations to the newer ones (for example, "PST" maps to "America/Los_Angeles").
117
+ * Anywhere the API requires an ID, you can use either form.
118
+ * <P>
119
+ * To create a new TimeZone, you call the factory function TimeZone::createTimeZone()
120
+ * and pass it a time zone ID. You can use the createEnumeration() function to
121
+ * obtain a list of all the time zone IDs recognized by createTimeZone().
122
+ * <P>
123
+ * You can also use TimeZone::createDefault() to create a TimeZone. This function uses
124
+ * platform-specific APIs to produce a TimeZone for the time zone corresponding to
125
+ * the client's computer's physical location. For example, if you're in Japan (assuming
126
+ * your machine is set up correctly), TimeZone::createDefault() will return a TimeZone
127
+ * for Japanese Standard Time ("Asia/Tokyo").
128
+ */
129
+ class U_I18N_API TimeZone : public UObject {
130
+ public:
131
+ /**
132
+ * @stable ICU 2.0
133
+ */
134
+ virtual ~TimeZone();
135
+
136
+ /**
137
+ * Returns the "unknown" time zone.
138
+ * It behaves like the GMT/UTC time zone but has the
139
+ * <code>UCAL_UNKNOWN_ZONE_ID</code> = "Etc/Unknown".
140
+ * createTimeZone() returns a mutable clone of this time zone if the input ID is not recognized.
141
+ *
142
+ * @return the "unknown" time zone.
143
+ * @see UCAL_UNKNOWN_ZONE_ID
144
+ * @see createTimeZone
145
+ * @see getGMT
146
+ * @stable ICU 49
147
+ */
148
+ static const TimeZone& U_EXPORT2 getUnknown();
149
+
150
+ /**
151
+ * The GMT (=UTC) time zone has a raw offset of zero and does not use daylight
152
+ * savings time. This is a commonly used time zone.
153
+ *
154
+ * <p>Note: For backward compatibility reason, the ID used by the time
155
+ * zone returned by this method is "GMT", although the ICU's canonical
156
+ * ID for the GMT time zone is "Etc/GMT".
157
+ *
158
+ * @return the GMT/UTC time zone.
159
+ * @see getUnknown
160
+ * @stable ICU 2.0
161
+ */
162
+ static const TimeZone* U_EXPORT2 getGMT(void);
163
+
164
+ /**
165
+ * Creates a <code>TimeZone</code> for the given ID.
166
+ * @param ID the ID for a <code>TimeZone</code>, such as "America/Los_Angeles",
167
+ * or a custom ID such as "GMT-8:00".
168
+ * @return the specified <code>TimeZone</code>, or a mutable clone of getUnknown()
169
+ * if the given ID cannot be understood or if the given ID is "Etc/Unknown".
170
+ * The return result is guaranteed to be non-NULL.
171
+ * If you require that the specific zone asked for be returned,
172
+ * compare the result with getUnknown() or check the ID of the return result.
173
+ * @stable ICU 2.0
174
+ */
175
+ static TimeZone* U_EXPORT2 createTimeZone(const UnicodeString& ID);
176
+
177
+ /**
178
+ * Returns an enumeration over system time zone IDs with the given
179
+ * filter conditions.
180
+ * @param zoneType The system time zone type.
181
+ * @param region The ISO 3166 two-letter country code or UN M.49
182
+ * three-digit area code. When NULL, no filtering
183
+ * done by region.
184
+ * @param rawOffset An offset from GMT in milliseconds, ignoring
185
+ * the effect of daylight savings time, if any.
186
+ * When NULL, no filtering done by zone offset.
187
+ * @param ec Output param to filled in with a success or
188
+ * an error.
189
+ * @return an enumeration object, owned by the caller.
190
+ * @stable ICU 4.8
191
+ */
192
+ static StringEnumeration* U_EXPORT2 createTimeZoneIDEnumeration(
193
+ USystemTimeZoneType zoneType,
194
+ const char* region,
195
+ const int32_t* rawOffset,
196
+ UErrorCode& ec);
197
+
198
+ /**
199
+ * Returns an enumeration over all recognized time zone IDs. (i.e.,
200
+ * all strings that createTimeZone() accepts)
201
+ *
202
+ * @return an enumeration object, owned by the caller.
203
+ * @stable ICU 2.4
204
+ */
205
+ static StringEnumeration* U_EXPORT2 createEnumeration();
206
+
207
+ /**
208
+ * Returns an enumeration over time zone IDs with a given raw
209
+ * offset from GMT. There may be several times zones with the
210
+ * same GMT offset that differ in the way they handle daylight
211
+ * savings time. For example, the state of Arizona doesn't
212
+ * observe daylight savings time. If you ask for the time zone
213
+ * IDs corresponding to GMT-7:00, you'll get back an enumeration
214
+ * over two time zone IDs: "America/Denver," which corresponds to
215
+ * Mountain Standard Time in the winter and Mountain Daylight Time
216
+ * in the summer, and "America/Phoenix", which corresponds to
217
+ * Mountain Standard Time year-round, even in the summer.
218
+ *
219
+ * @param rawOffset an offset from GMT in milliseconds, ignoring
220
+ * the effect of daylight savings time, if any
221
+ * @return an enumeration object, owned by the caller
222
+ * @stable ICU 2.4
223
+ */
224
+ static StringEnumeration* U_EXPORT2 createEnumeration(int32_t rawOffset);
225
+
226
+ /**
227
+ * Returns an enumeration over time zone IDs associated with the
228
+ * given country. Some zones are affiliated with no country
229
+ * (e.g., "UTC"); these may also be retrieved, as a group.
230
+ *
231
+ * @param country The ISO 3166 two-letter country code, or NULL to
232
+ * retrieve zones not affiliated with any country.
233
+ * @return an enumeration object, owned by the caller
234
+ * @stable ICU 2.4
235
+ */
236
+ static StringEnumeration* U_EXPORT2 createEnumeration(const char* country);
237
+
238
+ /**
239
+ * Returns the number of IDs in the equivalency group that
240
+ * includes the given ID. An equivalency group contains zones
241
+ * that have the same GMT offset and rules.
242
+ *
243
+ * <p>The returned count includes the given ID; it is always >= 1.
244
+ * The given ID must be a system time zone. If it is not, returns
245
+ * zero.
246
+ * @param id a system time zone ID
247
+ * @return the number of zones in the equivalency group containing
248
+ * 'id', or zero if 'id' is not a valid system ID
249
+ * @see #getEquivalentID
250
+ * @stable ICU 2.0
251
+ */
252
+ static int32_t U_EXPORT2 countEquivalentIDs(const UnicodeString& id);
253
+
254
+ /**
255
+ * Returns an ID in the equivalency group that
256
+ * includes the given ID. An equivalency group contains zones
257
+ * that have the same GMT offset and rules.
258
+ *
259
+ * <p>The given index must be in the range 0..n-1, where n is the
260
+ * value returned by <code>countEquivalentIDs(id)</code>. For
261
+ * some value of 'index', the returned value will be equal to the
262
+ * given id. If the given id is not a valid system time zone, or
263
+ * if 'index' is out of range, then returns an empty string.
264
+ * @param id a system time zone ID
265
+ * @param index a value from 0 to n-1, where n is the value
266
+ * returned by <code>countEquivalentIDs(id)</code>
267
+ * @return the ID of the index-th zone in the equivalency group
268
+ * containing 'id', or an empty string if 'id' is not a valid
269
+ * system ID or 'index' is out of range
270
+ * @see #countEquivalentIDs
271
+ * @stable ICU 2.0
272
+ */
273
+ static const UnicodeString U_EXPORT2 getEquivalentID(const UnicodeString& id,
274
+ int32_t index);
275
+
276
+ /**
277
+ * Creates a new copy of the default TimeZone for this host. Unless the default time
278
+ * zone has already been set using adoptDefault() or setDefault(), the default is
279
+ * determined by querying the system using methods in TPlatformUtilities. If the
280
+ * system routines fail, or if they specify a TimeZone or TimeZone offset which is not
281
+ * recognized, the TimeZone indicated by the ID kLastResortID is instantiated
282
+ * and made the default.
283
+ *
284
+ * @return A default TimeZone. Clients are responsible for deleting the time zone
285
+ * object returned.
286
+ * @stable ICU 2.0
287
+ */
288
+ static TimeZone* U_EXPORT2 createDefault(void);
289
+
290
+ /**
291
+ * Sets the default time zone (i.e., what's returned by createDefault()) to be the
292
+ * specified time zone. If NULL is specified for the time zone, the default time
293
+ * zone is set to the default host time zone. This call adopts the TimeZone object
294
+ * passed in; the client is no longer responsible for deleting it.
295
+ *
296
+ * <p>This function is not thread safe. It is an error for multiple threads
297
+ * to concurrently attempt to set the default time zone, or for any thread
298
+ * to attempt to reference the default zone while another thread is setting it.
299
+ *
300
+ * @param zone A pointer to the new TimeZone object to use as the default.
301
+ * @stable ICU 2.0
302
+ */
303
+ static void U_EXPORT2 adoptDefault(TimeZone* zone);
304
+
305
+ #ifndef U_HIDE_SYSTEM_API
306
+ /**
307
+ * Same as adoptDefault(), except that the TimeZone object passed in is NOT adopted;
308
+ * the caller remains responsible for deleting it.
309
+ *
310
+ * <p>See the thread safety note under adoptDefault().
311
+ *
312
+ * @param zone The given timezone.
313
+ * @system
314
+ * @stable ICU 2.0
315
+ */
316
+ static void U_EXPORT2 setDefault(const TimeZone& zone);
317
+ #endif /* U_HIDE_SYSTEM_API */
318
+
319
+ /**
320
+ * Returns the timezone data version currently used by ICU.
321
+ * @param status Output param to filled in with a success or an error.
322
+ * @return the version string, such as "2007f"
323
+ * @stable ICU 3.8
324
+ */
325
+ static const char* U_EXPORT2 getTZDataVersion(UErrorCode& status);
326
+
327
+ /**
328
+ * Returns the canonical system timezone ID or the normalized
329
+ * custom time zone ID for the given time zone ID.
330
+ * @param id The input time zone ID to be canonicalized.
331
+ * @param canonicalID Receives the canonical system time zone ID
332
+ * or the custom time zone ID in normalized format.
333
+ * @param status Receives the status. When the given time zone ID
334
+ * is neither a known system time zone ID nor a
335
+ * valid custom time zone ID, U_ILLEGAL_ARGUMENT_ERROR
336
+ * is set.
337
+ * @return A reference to the result.
338
+ * @stable ICU 4.0
339
+ */
340
+ static UnicodeString& U_EXPORT2 getCanonicalID(const UnicodeString& id,
341
+ UnicodeString& canonicalID, UErrorCode& status);
342
+
343
+ /**
344
+ * Returns the canonical system time zone ID or the normalized
345
+ * custom time zone ID for the given time zone ID.
346
+ * @param id The input time zone ID to be canonicalized.
347
+ * @param canonicalID Receives the canonical system time zone ID
348
+ * or the custom time zone ID in normalized format.
349
+ * @param isSystemID Receives if the given ID is a known system
350
+ * time zone ID.
351
+ * @param status Receives the status. When the given time zone ID
352
+ * is neither a known system time zone ID nor a
353
+ * valid custom time zone ID, U_ILLEGAL_ARGUMENT_ERROR
354
+ * is set.
355
+ * @return A reference to the result.
356
+ * @stable ICU 4.0
357
+ */
358
+ static UnicodeString& U_EXPORT2 getCanonicalID(const UnicodeString& id,
359
+ UnicodeString& canonicalID, UBool& isSystemID, UErrorCode& status);
360
+
361
+ /**
362
+ * Converts a system time zone ID to an equivalent Windows time zone ID. For example,
363
+ * Windows time zone ID "Pacific Standard Time" is returned for input "America/Los_Angeles".
364
+ *
365
+ * <p>There are system time zones that cannot be mapped to Windows zones. When the input
366
+ * system time zone ID is unknown or unmappable to a Windows time zone, then the result will be
367
+ * empty, but the operation itself remains successful (no error status set on return).
368
+ *
369
+ * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
370
+ * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
371
+ * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
372
+ * Updating the Time Zone Data</a>.
373
+ *
374
+ * @param id A system time zone ID.
375
+ * @param winid Receives a Windows time zone ID. When the input system time zone ID is unknown
376
+ * or unmappable to a Windows time zone ID, then an empty string is set on return.
377
+ * @param status Receives the status.
378
+ * @return A reference to the result (<code>winid</code>).
379
+ * @see getIDForWindowsID
380
+ *
381
+ * @stable ICU 52
382
+ */
383
+ static UnicodeString& U_EXPORT2 getWindowsID(const UnicodeString& id,
384
+ UnicodeString& winid, UErrorCode& status);
385
+
386
+ /**
387
+ * Converts a Windows time zone ID to an equivalent system time zone ID
388
+ * for a region. For example, system time zone ID "America/Los_Angeles" is returned
389
+ * for input Windows ID "Pacific Standard Time" and region "US" (or <code>null</code>),
390
+ * "America/Vancouver" is returned for the same Windows ID "Pacific Standard Time" and
391
+ * region "CA".
392
+ *
393
+ * <p>Not all Windows time zones can be mapped to system time zones. When the input
394
+ * Windows time zone ID is unknown or unmappable to a system time zone, then the result
395
+ * will be empty, but the operation itself remains successful (no error status set on return).
396
+ *
397
+ * <p>This implementation utilizes <a href="http://unicode.org/cldr/charts/supplemental/zone_tzid.html">
398
+ * Zone-Tzid mapping data</a>. The mapping data is updated time to time. To get the latest changes,
399
+ * please read the ICU user guide section <a href="http://userguide.icu-project.org/datetime/timezone#TOC-Updating-the-Time-Zone-Data">
400
+ * Updating the Time Zone Data</a>.
401
+ *
402
+ * @param winid A Windows time zone ID.
403
+ * @param region A null-terminated region code, or <code>NULL</code> if no regional preference.
404
+ * @param id Receives a system time zone ID. When the input Windows time zone ID is unknown
405
+ * or unmappable to a system time zone ID, then an empty string is set on return.
406
+ * @param status Receives the status.
407
+ * @return A reference to the result (<code>id</code>).
408
+ * @see getWindowsID
409
+ *
410
+ * @stable ICU 52
411
+ */
412
+ static UnicodeString& U_EXPORT2 getIDForWindowsID(const UnicodeString& winid, const char* region,
413
+ UnicodeString& id, UErrorCode& status);
414
+
415
+ /**
416
+ * Returns true if the two TimeZones are equal. (The TimeZone version only compares
417
+ * IDs, but subclasses are expected to also compare the fields they add.)
418
+ *
419
+ * @param that The TimeZone object to be compared with.
420
+ * @return True if the given TimeZone is equal to this TimeZone; false
421
+ * otherwise.
422
+ * @stable ICU 2.0
423
+ */
424
+ virtual UBool operator==(const TimeZone& that) const;
425
+
426
+ /**
427
+ * Returns true if the two TimeZones are NOT equal; that is, if operator==() returns
428
+ * false.
429
+ *
430
+ * @param that The TimeZone object to be compared with.
431
+ * @return True if the given TimeZone is not equal to this TimeZone; false
432
+ * otherwise.
433
+ * @stable ICU 2.0
434
+ */
435
+ UBool operator!=(const TimeZone& that) const {return !operator==(that);}
436
+
437
+ /**
438
+ * Returns the TimeZone's adjusted GMT offset (i.e., the number of milliseconds to add
439
+ * to GMT to get local time in this time zone, taking daylight savings time into
440
+ * account) as of a particular reference date. The reference date is used to determine
441
+ * whether daylight savings time is in effect and needs to be figured into the offset
442
+ * that is returned (in other words, what is the adjusted GMT offset in this time zone
443
+ * at this particular date and time?). For the time zones produced by createTimeZone(),
444
+ * the reference data is specified according to the Gregorian calendar, and the date
445
+ * and time fields are local standard time.
446
+ *
447
+ * <p>Note: Don't call this method. Instead, call the getOffset(UDate...) overload,
448
+ * which returns both the raw and the DST offset for a given time. This method
449
+ * is retained only for backward compatibility.
450
+ *
451
+ * @param era The reference date's era
452
+ * @param year The reference date's year
453
+ * @param month The reference date's month (0-based; 0 is January)
454
+ * @param day The reference date's day-in-month (1-based)
455
+ * @param dayOfWeek The reference date's day-of-week (1-based; 1 is Sunday)
456
+ * @param millis The reference date's milliseconds in day, local standard time
457
+ * @param status Output param to filled in with a success or an error.
458
+ * @return The offset in milliseconds to add to GMT to get local time.
459
+ * @stable ICU 2.0
460
+ */
461
+ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
462
+ uint8_t dayOfWeek, int32_t millis, UErrorCode& status) const = 0;
463
+
464
+ /**
465
+ * Gets the time zone offset, for current date, modified in case of
466
+ * daylight savings. This is the offset to add *to* UTC to get local time.
467
+ *
468
+ * <p>Note: Don't call this method. Instead, call the getOffset(UDate...) overload,
469
+ * which returns both the raw and the DST offset for a given time. This method
470
+ * is retained only for backward compatibility.
471
+ *
472
+ * @param era the era of the given date.
473
+ * @param year the year in the given date.
474
+ * @param month the month in the given date.
475
+ * Month is 0-based. e.g., 0 for January.
476
+ * @param day the day-in-month of the given date.
477
+ * @param dayOfWeek the day-of-week of the given date.
478
+ * @param milliseconds the millis in day in <em>standard</em> local time.
479
+ * @param monthLength the length of the given month in days.
480
+ * @param status Output param to filled in with a success or an error.
481
+ * @return the offset to add *to* GMT to get local time.
482
+ * @stable ICU 2.0
483
+ */
484
+ virtual int32_t getOffset(uint8_t era, int32_t year, int32_t month, int32_t day,
485
+ uint8_t dayOfWeek, int32_t milliseconds,
486
+ int32_t monthLength, UErrorCode& status) const = 0;
487
+
488
+ /**
489
+ * Returns the time zone raw and GMT offset for the given moment
490
+ * in time. Upon return, local-millis = GMT-millis + rawOffset +
491
+ * dstOffset. All computations are performed in the proleptic
492
+ * Gregorian calendar. The default implementation in the TimeZone
493
+ * class delegates to the 8-argument getOffset().
494
+ *
495
+ * @param date moment in time for which to return offsets, in
496
+ * units of milliseconds from January 1, 1970 0:00 GMT, either GMT
497
+ * time or local wall time, depending on `local'.
498
+ * @param local if true, `date' is local wall time; otherwise it
499
+ * is in GMT time.
500
+ * @param rawOffset output parameter to receive the raw offset, that
501
+ * is, the offset not including DST adjustments
502
+ * @param dstOffset output parameter to receive the DST offset,
503
+ * that is, the offset to be added to `rawOffset' to obtain the
504
+ * total offset between local and GMT time. If DST is not in
505
+ * effect, this value is zero; otherwise it is a positive value,
506
+ * typically one hour.
507
+ * @param ec input-output error code
508
+ *
509
+ * @stable ICU 2.8
510
+ */
511
+ virtual void getOffset(UDate date, UBool local, int32_t& rawOffset,
512
+ int32_t& dstOffset, UErrorCode& ec) const;
513
+
514
+ /**
515
+ * Sets the TimeZone's raw GMT offset (i.e., the number of milliseconds to add
516
+ * to GMT to get local time, before taking daylight savings time into account).
517
+ *
518
+ * @param offsetMillis The new raw GMT offset for this time zone.
519
+ * @stable ICU 2.0
520
+ */
521
+ virtual void setRawOffset(int32_t offsetMillis) = 0;
522
+
523
+ /**
524
+ * Returns the TimeZone's raw GMT offset (i.e., the number of milliseconds to add
525
+ * to GMT to get local time, before taking daylight savings time into account).
526
+ *
527
+ * @return The TimeZone's raw GMT offset.
528
+ * @stable ICU 2.0
529
+ */
530
+ virtual int32_t getRawOffset(void) const = 0;
531
+
532
+ /**
533
+ * Fills in "ID" with the TimeZone's ID.
534
+ *
535
+ * @param ID Receives this TimeZone's ID.
536
+ * @return A reference to 'ID'
537
+ * @stable ICU 2.0
538
+ */
539
+ UnicodeString& getID(UnicodeString& ID) const;
540
+
541
+ /**
542
+ * Sets the TimeZone's ID to the specified value. This doesn't affect any other
543
+ * fields (for example, if you say<
544
+ * blockquote><pre>
545
+ * . TimeZone* foo = TimeZone::createTimeZone("America/New_York");
546
+ * . foo.setID("America/Los_Angeles");
547
+ * </pre>\htmlonly</blockquote>\endhtmlonly
548
+ * the time zone's GMT offset and daylight-savings rules don't change to those for
549
+ * Los Angeles. They're still those for New York. Only the ID has changed.)
550
+ *
551
+ * @param ID The new time zone ID.
552
+ * @stable ICU 2.0
553
+ */
554
+ void setID(const UnicodeString& ID);
555
+
556
+ /**
557
+ * Enum for use with getDisplayName
558
+ * @stable ICU 2.4
559
+ */
560
+ enum EDisplayType {
561
+ /**
562
+ * Selector for short display name
563
+ * @stable ICU 2.4
564
+ */
565
+ SHORT = 1,
566
+ /**
567
+ * Selector for long display name
568
+ * @stable ICU 2.4
569
+ */
570
+ LONG,
571
+ /**
572
+ * Selector for short generic display name
573
+ * @stable ICU 4.4
574
+ */
575
+ SHORT_GENERIC,
576
+ /**
577
+ * Selector for long generic display name
578
+ * @stable ICU 4.4
579
+ */
580
+ LONG_GENERIC,
581
+ /**
582
+ * Selector for short display name derived
583
+ * from time zone offset
584
+ * @stable ICU 4.4
585
+ */
586
+ SHORT_GMT,
587
+ /**
588
+ * Selector for long display name derived
589
+ * from time zone offset
590
+ * @stable ICU 4.4
591
+ */
592
+ LONG_GMT,
593
+ /**
594
+ * Selector for short display name derived
595
+ * from the time zone's fallback name
596
+ * @stable ICU 4.4
597
+ */
598
+ SHORT_COMMONLY_USED,
599
+ /**
600
+ * Selector for long display name derived
601
+ * from the time zone's fallback name
602
+ * @stable ICU 4.4
603
+ */
604
+ GENERIC_LOCATION
605
+ };
606
+
607
+ /**
608
+ * Returns a name of this time zone suitable for presentation to the user
609
+ * in the default locale.
610
+ * This method returns the long name, not including daylight savings.
611
+ * If the display name is not available for the locale,
612
+ * then this method returns a string in the localized GMT offset format
613
+ * such as <code>GMT[+-]HH:mm</code>.
614
+ * @param result the human-readable name of this time zone in the default locale.
615
+ * @return A reference to 'result'.
616
+ * @stable ICU 2.0
617
+ */
618
+ UnicodeString& getDisplayName(UnicodeString& result) const;
619
+
620
+ /**
621
+ * Returns a name of this time zone suitable for presentation to the user
622
+ * in the specified locale.
623
+ * This method returns the long name, not including daylight savings.
624
+ * If the display name is not available for the locale,
625
+ * then this method returns a string in the localized GMT offset format
626
+ * such as <code>GMT[+-]HH:mm</code>.
627
+ * @param locale the locale in which to supply the display name.
628
+ * @param result the human-readable name of this time zone in the given locale
629
+ * or in the default locale if the given locale is not recognized.
630
+ * @return A reference to 'result'.
631
+ * @stable ICU 2.0
632
+ */
633
+ UnicodeString& getDisplayName(const Locale& locale, UnicodeString& result) const;
634
+
635
+ /**
636
+ * Returns a name of this time zone suitable for presentation to the user
637
+ * in the default locale.
638
+ * If the display name is not available for the locale,
639
+ * then this method returns a string in the localized GMT offset format
640
+ * such as <code>GMT[+-]HH:mm</code>.
641
+ * @param daylight if true, return the daylight savings name.
642
+ * @param style
643
+ * @param result the human-readable name of this time zone in the default locale.
644
+ * @return A reference to 'result'.
645
+ * @stable ICU 2.0
646
+ */
647
+ UnicodeString& getDisplayName(UBool daylight, EDisplayType style, UnicodeString& result) const;
648
+
649
+ /**
650
+ * Returns a name of this time zone suitable for presentation to the user
651
+ * in the specified locale.
652
+ * If the display name is not available for the locale,
653
+ * then this method returns a string in the localized GMT offset format
654
+ * such as <code>GMT[+-]HH:mm</code>.
655
+ * @param daylight if true, return the daylight savings name.
656
+ * @param style
657
+ * @param locale the locale in which to supply the display name.
658
+ * @param result the human-readable name of this time zone in the given locale
659
+ * or in the default locale if the given locale is not recognized.
660
+ * @return A refence to 'result'.
661
+ * @stable ICU 2.0
662
+ */
663
+ UnicodeString& getDisplayName(UBool daylight, EDisplayType style, const Locale& locale, UnicodeString& result) const;
664
+
665
+ /**
666
+ * Queries if this time zone uses daylight savings time.
667
+ * @return true if this time zone uses daylight savings time,
668
+ * false, otherwise.
669
+ * <p><strong>Note:</strong>The default implementation of
670
+ * ICU TimeZone uses the tz database, which supports historic
671
+ * rule changes, for system time zones. With the implementation,
672
+ * there are time zones that used daylight savings time in the
673
+ * past, but no longer used currently. For example, Asia/Tokyo has
674
+ * never used daylight savings time since 1951. Most clients would
675
+ * expect that this method to return <code>FALSE</code> for such case.
676
+ * The default implementation of this method returns <code>TRUE</code>
677
+ * when the time zone uses daylight savings time in the current
678
+ * (Gregorian) calendar year.
679
+ * <p>In Java 7, <code>observesDaylightTime()</code> was added in
680
+ * addition to <code>useDaylightTime()</code>. In Java, <code>useDaylightTime()</code>
681
+ * only checks if daylight saving time is observed by the last known
682
+ * rule. This specification might not be what most users would expect
683
+ * if daylight saving time is currently observed, but not scheduled
684
+ * in future. In this case, Java's <code>userDaylightTime()</code> returns
685
+ * <code>false</code>. To resolve the issue, Java 7 added <code>observesDaylightTime()</code>,
686
+ * which takes the current rule into account. The method <code>observesDaylightTime()</code>
687
+ * was added in ICU4J for supporting API signature compatibility with JDK.
688
+ * In general, ICU4C also provides JDK compatible methods, but the current
689
+ * implementation <code>userDaylightTime()</code> serves the purpose
690
+ * (takes the current rule into account), <code>observesDaylightTime()</code>
691
+ * is not added in ICU4C. In addition to <code>useDaylightTime()</code>, ICU4C
692
+ * <code>BasicTimeZone</code> class (Note that <code>TimeZone::createTimeZone(const UnicodeString &ID)</code>
693
+ * always returns a <code>BasicTimeZone</code>) provides a series of methods allowing
694
+ * historic and future time zone rule iteration, so you can check if daylight saving
695
+ * time is observed or not within a given period.
696
+ *
697
+ * @stable ICU 2.0
698
+ */
699
+ virtual UBool useDaylightTime(void) const = 0;
700
+
701
+ /**
702
+ * Queries if the given date is in daylight savings time in
703
+ * this time zone.
704
+ * This method is wasteful since it creates a new GregorianCalendar and
705
+ * deletes it each time it is called. This is a deprecated method
706
+ * and provided only for Java compatibility.
707
+ *
708
+ * @param date the given UDate.
709
+ * @param status Output param filled in with success/error code.
710
+ * @return true if the given date is in daylight savings time,
711
+ * false, otherwise.
712
+ * @deprecated ICU 2.4. Use Calendar::inDaylightTime() instead.
713
+ */
714
+ virtual UBool inDaylightTime(UDate date, UErrorCode& status) const = 0;
715
+
716
+ /**
717
+ * Returns true if this zone has the same rule and offset as another zone.
718
+ * That is, if this zone differs only in ID, if at all.
719
+ * @param other the <code>TimeZone</code> object to be compared with
720
+ * @return true if the given zone is the same as this one,
721
+ * with the possible exception of the ID
722
+ * @stable ICU 2.0
723
+ */
724
+ virtual UBool hasSameRules(const TimeZone& other) const;
725
+
726
+ /**
727
+ * Clones TimeZone objects polymorphically. Clients are responsible for deleting
728
+ * the TimeZone object cloned.
729
+ *
730
+ * @return A new copy of this TimeZone object.
731
+ * @stable ICU 2.0
732
+ */
733
+ virtual TimeZone* clone(void) const = 0;
734
+
735
+ /**
736
+ * Return the class ID for this class. This is useful only for
737
+ * comparing to a return value from getDynamicClassID().
738
+ * @return The class ID for all objects of this class.
739
+ * @stable ICU 2.0
740
+ */
741
+ static UClassID U_EXPORT2 getStaticClassID(void);
742
+
743
+ /**
744
+ * Returns a unique class ID POLYMORPHICALLY. This method is to
745
+ * implement a simple version of RTTI, since not all C++ compilers support genuine
746
+ * RTTI. Polymorphic operator==() and clone() methods call this method.
747
+ * <P>
748
+ * Concrete subclasses of TimeZone must use the UOBJECT_DEFINE_RTTI_IMPLEMENTATION
749
+ * macro from uobject.h in their implementation to provide correct RTTI information.
750
+ * @return The class ID for this object. All objects of a given class have the
751
+ * same class ID. Objects of other classes have different class IDs.
752
+ * @stable ICU 2.0
753
+ */
754
+ virtual UClassID getDynamicClassID(void) const = 0;
755
+
756
+ /**
757
+ * Returns the amount of time to be added to local standard time
758
+ * to get local wall clock time.
759
+ * <p>
760
+ * The default implementation always returns 3600000 milliseconds
761
+ * (i.e., one hour) if this time zone observes Daylight Saving
762
+ * Time. Otherwise, 0 (zero) is returned.
763
+ * <p>
764
+ * If an underlying TimeZone implementation subclass supports
765
+ * historical Daylight Saving Time changes, this method returns
766
+ * the known latest daylight saving value.
767
+ *
768
+ * @return the amount of saving time in milliseconds
769
+ * @stable ICU 3.6
770
+ */
771
+ virtual int32_t getDSTSavings() const;
772
+
773
+ /**
774
+ * Gets the region code associated with the given
775
+ * system time zone ID. The region code is either ISO 3166
776
+ * 2-letter country code or UN M.49 3-digit area code.
777
+ * When the time zone is not associated with a specific location,
778
+ * for example - "Etc/UTC", "EST5EDT", then this method returns
779
+ * "001" (UN M.49 area code for World).
780
+ *
781
+ * @param id The system time zone ID.
782
+ * @param region Output buffer for receiving the region code.
783
+ * @param capacity The size of the output buffer.
784
+ * @param status Receives the status. When the given time zone ID
785
+ * is not a known system time zone ID,
786
+ * U_ILLEGAL_ARGUMENT_ERROR is set.
787
+ * @return The length of the output region code.
788
+ * @stable ICU 4.8
789
+ */
790
+ static int32_t U_EXPORT2 getRegion(const UnicodeString& id,
791
+ char *region, int32_t capacity, UErrorCode& status);
792
+
793
+ protected:
794
+
795
+ /**
796
+ * Default constructor. ID is initialized to the empty string.
797
+ * @stable ICU 2.0
798
+ */
799
+ TimeZone();
800
+
801
+ /**
802
+ * Construct a TimeZone with a given ID.
803
+ * @param id a system time zone ID
804
+ * @stable ICU 2.0
805
+ */
806
+ TimeZone(const UnicodeString &id);
807
+
808
+ /**
809
+ * Copy constructor.
810
+ * @param source the object to be copied.
811
+ * @stable ICU 2.0
812
+ */
813
+ TimeZone(const TimeZone& source);
814
+
815
+ /**
816
+ * Default assignment operator.
817
+ * @param right the object to be copied.
818
+ * @stable ICU 2.0
819
+ */
820
+ TimeZone& operator=(const TimeZone& right);
821
+
822
+ #ifndef U_HIDE_INTERNAL_API
823
+ /**
824
+ * Utility function. For internally loading rule data.
825
+ * @param top Top resource bundle for tz data
826
+ * @param ruleid ID of rule to load
827
+ * @param oldbundle Old bundle to reuse or NULL
828
+ * @param status Status parameter
829
+ * @return either a new bundle or *oldbundle
830
+ * @internal
831
+ */
832
+ static UResourceBundle* loadRule(const UResourceBundle* top, const UnicodeString& ruleid, UResourceBundle* oldbundle, UErrorCode&status);
833
+ #endif /* U_HIDE_INTERNAL_API */
834
+
835
+ private:
836
+ friend class ZoneMeta;
837
+
838
+
839
+ static TimeZone* createCustomTimeZone(const UnicodeString&); // Creates a time zone based on the string.
840
+
841
+ /**
842
+ * Finds the given ID in the Olson tzdata. If the given ID is found in the tzdata,
843
+ * returns the pointer to the ID resource. This method is exposed through ZoneMeta class
844
+ * for ICU internal implementation and useful for building hashtable using a time zone
845
+ * ID as a key.
846
+ * @param id zone id string
847
+ * @return the pointer of the ID resource, or NULL.
848
+ */
849
+ static const UChar* findID(const UnicodeString& id);
850
+
851
+ /**
852
+ * Resolve a link in Olson tzdata. When the given id is known and it's not a link,
853
+ * the id itself is returned. When the given id is known and it is a link, then
854
+ * dereferenced zone id is returned. When the given id is unknown, then it returns
855
+ * NULL.
856
+ * @param id zone id string
857
+ * @return the dereferenced zone or NULL
858
+ */
859
+ static const UChar* dereferOlsonLink(const UnicodeString& id);
860
+
861
+ /**
862
+ * Returns the region code associated with the given zone,
863
+ * or NULL if the zone is not known.
864
+ * @param id zone id string
865
+ * @return the region associated with the given zone
866
+ */
867
+ static const UChar* getRegion(const UnicodeString& id);
868
+
869
+ public:
870
+ #ifndef U_HIDE_INTERNAL_API
871
+ /**
872
+ * Returns the region code associated with the given zone,
873
+ * or NULL if the zone is not known.
874
+ * @param id zone id string
875
+ * @param status Status parameter
876
+ * @return the region associated with the given zone
877
+ * @internal
878
+ */
879
+ static const UChar* getRegion(const UnicodeString& id, UErrorCode& status);
880
+ #endif /* U_HIDE_INTERNAL_API */
881
+
882
+ private:
883
+ /**
884
+ * Parses the given custom time zone identifier
885
+ * @param id id A string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
886
+ * GMT[+-]hh.
887
+ * @param sign Receves parsed sign, 1 for positive, -1 for negative.
888
+ * @param hour Receives parsed hour field
889
+ * @param minute Receives parsed minute field
890
+ * @param second Receives parsed second field
891
+ * @return Returns TRUE when the given custom id is valid.
892
+ */
893
+ static UBool parseCustomID(const UnicodeString& id, int32_t& sign, int32_t& hour,
894
+ int32_t& minute, int32_t& second);
895
+
896
+ /**
897
+ * Parse a custom time zone identifier and return the normalized
898
+ * custom time zone identifier for the given custom id string.
899
+ * @param id a string of the form GMT[+-]hh:mm, GMT[+-]hhmm, or
900
+ * GMT[+-]hh.
901
+ * @param normalized Receives the normalized custom ID
902
+ * @param status Receives the status. When the input ID string is invalid,
903
+ * U_ILLEGAL_ARGUMENT_ERROR is set.
904
+ * @return The normalized custom id string.
905
+ */
906
+ static UnicodeString& getCustomID(const UnicodeString& id, UnicodeString& normalized,
907
+ UErrorCode& status);
908
+
909
+ /**
910
+ * Returns the normalized custome time zone ID for the given offset fields.
911
+ * @param hour offset hours
912
+ * @param min offset minutes
913
+ * @param sec offset seconds
914
+ * @param negative sign of the offset, TRUE for negative offset.
915
+ * @param id Receves the format result (normalized custom ID)
916
+ * @return The reference to id
917
+ */
918
+ static UnicodeString& formatCustomID(int32_t hour, int32_t min, int32_t sec,
919
+ UBool negative, UnicodeString& id);
920
+
921
+ UnicodeString fID; // this time zone's ID
922
+
923
+ friend class TZEnumeration;
924
+ };
925
+
926
+
927
+ // -------------------------------------
928
+
929
+ inline UnicodeString&
930
+ TimeZone::getID(UnicodeString& ID) const
931
+ {
932
+ ID = fID;
933
+ return ID;
934
+ }
935
+
936
+ // -------------------------------------
937
+
938
+ inline void
939
+ TimeZone::setID(const UnicodeString& ID)
940
+ {
941
+ fID = ID;
942
+ }
943
+ U_NAMESPACE_END
944
+
945
+ #endif /* #if !UCONFIG_NO_FORMATTING */
946
+
947
+ #endif //_TIMEZONE
948
+ //eof