webruby 0.2.7 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1537) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby/environment.rb +24 -8
  3. data/lib/webruby/rake/files.rake +6 -22
  4. data/lib/webruby/rake/general.rake +1 -1
  5. data/lib/webruby/rake/mruby.rake +1 -0
  6. data/lib/webruby/utility.rb +14 -0
  7. data/modules/mruby/AUTHORS +14 -0
  8. data/modules/mruby/CONTRIBUTING.md +7 -4
  9. data/modules/mruby/INSTALL +28 -11
  10. data/modules/mruby/MITL +13 -13
  11. data/modules/mruby/Makefile +4 -5
  12. data/modules/mruby/README.md +54 -49
  13. data/modules/mruby/Rakefile +36 -6
  14. data/modules/mruby/benchmark/ao-render.rb +1 -2
  15. data/modules/mruby/benchmark/bm_app_lc_fizzbuzz.rb +52 -0
  16. data/modules/mruby/benchmark/fib39.rb +0 -0
  17. data/modules/mruby/bintest/mrbc.rb +12 -0
  18. data/modules/mruby/build_config.rb +32 -2
  19. data/modules/mruby/doc/api/README.md +30 -0
  20. data/modules/mruby/doc/api/mruby.h.md +69 -0
  21. data/modules/mruby/doc/compile/README.md +208 -99
  22. data/modules/mruby/doc/debugger/README.md +370 -0
  23. data/modules/mruby/doc/language/Core.md +1590 -0
  24. data/modules/mruby/doc/language/README.md +9 -0
  25. data/modules/mruby/doc/language/generator.rb +15 -0
  26. data/modules/mruby/doc/language/mrbdoc/lib/mrbdoc_analyze.rb +231 -0
  27. data/modules/mruby/doc/language/mrbdoc/lib/mrbdoc_docu.rb +118 -0
  28. data/modules/mruby/doc/language/mrbdoc/mrbdoc.rb +38 -0
  29. data/modules/mruby/doc/mrbconf/README.md +160 -0
  30. data/modules/mruby/doc/mrbgems/README.md +136 -66
  31. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +1 -1
  32. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +1 -1
  33. data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +1 -1
  34. data/modules/mruby/examples/mrbgems/c_extension_example/src/example.c +1 -1
  35. data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +1 -1
  36. data/modules/mruby/examples/targets/{ArduinoDue.rb → build_config_ArduinoDue.rb} +32 -6
  37. data/modules/mruby/examples/targets/build_config_IntelGalileo.rb +106 -0
  38. data/modules/mruby/examples/targets/{chipKitMax32.rb → build_config_chipKITMax32.rb} +26 -7
  39. data/modules/mruby/include/mrbconf.h +25 -1
  40. data/modules/mruby/include/mruby/array.h +32 -22
  41. data/modules/mruby/include/mruby/boxing_nan.h +94 -0
  42. data/modules/mruby/include/mruby/boxing_no.h +49 -0
  43. data/modules/mruby/include/mruby/boxing_word.h +119 -0
  44. data/modules/mruby/include/mruby/class.h +15 -13
  45. data/modules/mruby/include/mruby/compile.h +43 -36
  46. data/modules/mruby/include/mruby/data.h +13 -5
  47. data/modules/mruby/include/mruby/debug.h +9 -9
  48. data/modules/mruby/include/mruby/dump.h +32 -23
  49. data/modules/mruby/include/mruby/error.h +36 -0
  50. data/modules/mruby/include/mruby/gc.h +11 -6
  51. data/modules/mruby/include/mruby/hash.h +12 -12
  52. data/modules/mruby/include/mruby/irep.h +9 -3
  53. data/modules/mruby/include/mruby/khash.h +58 -41
  54. data/modules/mruby/include/mruby/numeric.h +38 -4
  55. data/modules/mruby/include/mruby/object.h +55 -0
  56. data/modules/mruby/include/mruby/opcode.h +160 -0
  57. data/modules/mruby/include/mruby/proc.h +19 -5
  58. data/modules/mruby/include/mruby/range.h +4 -3
  59. data/modules/mruby/include/mruby/re.h +20 -0
  60. data/modules/mruby/include/mruby/string.h +86 -47
  61. data/modules/mruby/include/mruby/value.h +100 -374
  62. data/modules/mruby/include/mruby/variable.h +34 -32
  63. data/modules/mruby/include/mruby/version.h +40 -0
  64. data/modules/mruby/include/mruby.h +211 -139
  65. data/modules/mruby/minirake +16 -9
  66. data/modules/mruby/mrbgems/default.gembox +12 -0
  67. data/modules/mruby/mrbgems/full-core.gembox +3 -3
  68. data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +1 -0
  69. data/modules/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +488 -8
  70. data/modules/mruby/mrbgems/mruby-array-ext/src/array.c +57 -31
  71. data/modules/mruby/mrbgems/mruby-array-ext/test/array.rb +231 -45
  72. data/modules/mruby/mrbgems/mruby-bin-debugger/bintest/mrdb.rb +286 -0
  73. data/modules/mruby/mrbgems/mruby-bin-debugger/bintest/print.rb +701 -0
  74. data/modules/mruby/mrbgems/mruby-bin-debugger/mrbgem.rake +9 -0
  75. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.c +516 -0
  76. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apibreak.h +26 -0
  77. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.c +235 -0
  78. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apilist.h +14 -0
  79. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.c +78 -0
  80. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/apiprint.h +13 -0
  81. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdbreak.c +428 -0
  82. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdmisc.c +501 -0
  83. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdprint.c +58 -0
  84. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/cmdrun.c +54 -0
  85. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.c +746 -0
  86. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdb.h +163 -0
  87. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdbconf.h +16 -0
  88. data/modules/mruby/mrbgems/mruby-bin-debugger/tools/mrdb/mrdberror.h +20 -0
  89. data/modules/mruby/mrbgems/mruby-bin-mirb/bintest/mirb.rb +12 -0
  90. data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +14 -1
  91. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +154 -72
  92. data/modules/mruby/mrbgems/mruby-bin-mruby/bintest/mruby.rb +46 -0
  93. data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +1 -0
  94. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +37 -28
  95. data/modules/mruby/mrbgems/mruby-bin-mruby-config/mrbgem.rake +30 -0
  96. data/modules/mruby/mrbgems/mruby-bin-mruby-config/mruby-config +16 -0
  97. data/modules/mruby/mrbgems/mruby-bin-mruby-config/mruby-config.bat +30 -0
  98. data/modules/mruby/mrbgems/mruby-bin-strip/bintest/mruby-strip.rb +73 -0
  99. data/modules/mruby/mrbgems/mruby-bin-strip/mrbgem.rake +6 -0
  100. data/modules/mruby/mrbgems/mruby-bin-strip/tools/mruby-strip/mruby-strip.c +155 -0
  101. data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +1 -0
  102. data/modules/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +555 -21
  103. data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +119 -0
  104. data/modules/mruby/mrbgems/mruby-enum-lazy/mrbgem.rake +7 -0
  105. data/modules/mruby/mrbgems/mruby-enum-lazy/mrblib/lazy.rb +150 -0
  106. data/modules/mruby/mrbgems/mruby-enum-lazy/test/lazy.rb +47 -0
  107. data/modules/mruby/mrbgems/mruby-enumerator/mrbgem.rake +7 -0
  108. data/modules/mruby/mrbgems/mruby-enumerator/mrblib/enumerator.rb +636 -0
  109. data/modules/mruby/mrbgems/mruby-enumerator/test/enumerator.rb +537 -0
  110. data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +1 -0
  111. data/modules/mruby/mrbgems/mruby-eval/src/eval.c +243 -4
  112. data/modules/mruby/mrbgems/mruby-eval/test/eval.rb +80 -0
  113. data/modules/mruby/mrbgems/mruby-exit/mrbgem.rake +1 -0
  114. data/modules/mruby/mrbgems/mruby-exit/src/mruby-exit.c +1 -1
  115. data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +1 -0
  116. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +157 -51
  117. data/modules/mruby/mrbgems/mruby-fiber/test/fiber.rb +179 -35
  118. data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +3 -0
  119. data/modules/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +241 -1
  120. data/modules/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +11 -19
  121. data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +138 -1
  122. data/modules/mruby/mrbgems/mruby-kernel-ext/mrbgem.rake +5 -0
  123. data/modules/mruby/mrbgems/mruby-kernel-ext/src/kernel.c +183 -0
  124. data/modules/mruby/mrbgems/mruby-kernel-ext/test/kernel.rb +53 -0
  125. data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +1 -0
  126. data/modules/mruby/mrbgems/mruby-math/src/math.c +107 -14
  127. data/modules/mruby/mrbgems/mruby-math/test/math.rb +16 -0
  128. data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +1 -0
  129. data/modules/mruby/mrbgems/mruby-numeric-ext/mrblib/numeric_ext.rb +5 -0
  130. data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +9 -1
  131. data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +1 -0
  132. data/modules/mruby/mrbgems/mruby-object-ext/mrblib/object.rb +19 -0
  133. data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +5 -8
  134. data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +16 -0
  135. data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +1 -0
  136. data/modules/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +121 -53
  137. data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +27 -4
  138. data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +1 -0
  139. data/modules/mruby/mrbgems/mruby-print/src/print.c +3 -5
  140. data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +1 -0
  141. data/modules/mruby/mrbgems/mruby-proc-ext/src/proc.c +89 -19
  142. data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.c +56 -0
  143. data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +47 -0
  144. data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +1 -0
  145. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.c +30 -25
  146. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.h +6 -3
  147. data/modules/mruby/mrbgems/mruby-random/src/random.c +157 -137
  148. data/modules/mruby/mrbgems/mruby-random/src/random.h +3 -3
  149. data/modules/mruby/mrbgems/mruby-random/test/random.rb +9 -9
  150. data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +1 -0
  151. data/modules/mruby/mrbgems/mruby-range-ext/src/range.c +57 -3
  152. data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +9 -0
  153. data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +1 -0
  154. data/modules/mruby/mrbgems/mruby-sprintf/mrblib/string.rb +9 -0
  155. data/modules/mruby/mrbgems/mruby-sprintf/src/sprintf.c +29 -23
  156. data/modules/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +7 -2
  157. data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +1 -0
  158. data/modules/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +250 -11
  159. data/modules/mruby/mrbgems/mruby-string-ext/src/string.c +220 -5
  160. data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +326 -4
  161. data/modules/mruby/mrbgems/mruby-string-utf8/mrbgem.rake +2 -0
  162. data/modules/mruby/mrbgems/mruby-string-utf8/src/string.c +486 -52
  163. data/modules/mruby/mrbgems/mruby-string-utf8/test/string.rb +97 -14
  164. data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +1 -0
  165. data/modules/mruby/mrbgems/mruby-struct/mrblib/struct.rb +31 -0
  166. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +178 -196
  167. data/modules/mruby/mrbgems/mruby-struct/test/struct.rb +115 -61
  168. data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +1 -0
  169. data/modules/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +22 -17
  170. data/modules/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +20 -11
  171. data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +14 -0
  172. data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +1 -0
  173. data/modules/mruby/mrbgems/mruby-time/mrblib/time.rb +9 -0
  174. data/modules/mruby/mrbgems/mruby-time/src/time.c +98 -37
  175. data/modules/mruby/mrbgems/mruby-time/test/time.rb +152 -148
  176. data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +1 -0
  177. data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +1 -1
  178. data/modules/mruby/mrblib/array.rb +110 -4
  179. data/modules/mruby/mrblib/class.rb +1 -22
  180. data/modules/mruby/mrblib/compar.rb +10 -30
  181. data/modules/mruby/mrblib/enum.rb +64 -52
  182. data/modules/mruby/mrblib/error.rb +9 -4
  183. data/modules/mruby/mrblib/hash.rb +164 -23
  184. data/modules/mruby/mrblib/kernel.rb +26 -22
  185. data/modules/mruby/mrblib/mrblib.rake +4 -4
  186. data/modules/mruby/mrblib/numeric.rb +22 -9
  187. data/modules/mruby/mrblib/range.rb +24 -2
  188. data/modules/mruby/mrblib/string.rb +15 -3
  189. data/modules/mruby/src/array.c +279 -339
  190. data/modules/mruby/src/backtrace.c +68 -16
  191. data/modules/mruby/src/class.c +539 -379
  192. data/modules/mruby/src/codegen.c +424 -207
  193. data/modules/mruby/src/compar.c +1 -1
  194. data/modules/mruby/src/crc.c +7 -6
  195. data/modules/mruby/src/debug.c +37 -36
  196. data/modules/mruby/src/dump.c +463 -213
  197. data/modules/mruby/src/enum.c +1 -1
  198. data/modules/mruby/src/error.c +91 -92
  199. data/modules/mruby/src/error.h +3 -19
  200. data/modules/mruby/src/etc.c +85 -82
  201. data/modules/mruby/src/gc.c +134 -108
  202. data/modules/mruby/src/hash.c +161 -565
  203. data/modules/mruby/src/init.c +2 -13
  204. data/modules/mruby/src/kernel.c +217 -251
  205. data/modules/mruby/src/load.c +280 -283
  206. data/modules/mruby/src/mrb_throw.h +41 -0
  207. data/modules/mruby/src/mruby_core.rake +57 -7
  208. data/modules/mruby/src/node.h +104 -104
  209. data/modules/mruby/src/numeric.c +221 -208
  210. data/modules/mruby/src/object.c +41 -42
  211. data/modules/mruby/src/opcode.h +2 -160
  212. data/modules/mruby/src/parse.y +3430 -3223
  213. data/modules/mruby/src/pool.c +13 -9
  214. data/modules/mruby/src/print.c +20 -17
  215. data/modules/mruby/src/proc.c +77 -21
  216. data/modules/mruby/src/range.c +55 -45
  217. data/modules/mruby/src/state.c +95 -31
  218. data/modules/mruby/src/string.c +462 -468
  219. data/modules/mruby/src/symbol.c +95 -85
  220. data/modules/mruby/src/variable.c +104 -74
  221. data/modules/mruby/src/version.c +13 -0
  222. data/modules/mruby/src/vm.c +528 -296
  223. data/modules/mruby/tasks/libmruby.rake +9 -5
  224. data/modules/mruby/tasks/mrbgem_spec.rake +130 -26
  225. data/modules/mruby/tasks/mrbgems.rake +21 -11
  226. data/modules/mruby/tasks/mrbgems_test.rake +46 -40
  227. data/modules/mruby/tasks/mruby_build.rake +54 -12
  228. data/modules/mruby/tasks/mruby_build_commands.rake +34 -5
  229. data/modules/mruby/tasks/mruby_build_gem.rake +25 -3
  230. data/modules/mruby/tasks/ruby_ext.rake +11 -2
  231. data/modules/mruby/tasks/toolchains/clang.rake +2 -1
  232. data/modules/mruby/tasks/toolchains/gcc.rake +26 -3
  233. data/modules/mruby/tasks/toolchains/visualcpp.rake +17 -8
  234. data/modules/mruby/test/assert.rb +30 -8
  235. data/modules/mruby/test/bintest.rb +10 -0
  236. data/modules/mruby/test/driver.c +74 -24
  237. data/modules/mruby/test/init_mrbtest.c +21 -2
  238. data/modules/mruby/test/mrbtest.rake +27 -5
  239. data/modules/mruby/test/t/argumenterror.rb +0 -5
  240. data/modules/mruby/test/t/array.rb +23 -7
  241. data/modules/mruby/test/t/bs_block.rb +32 -0
  242. data/modules/mruby/test/t/class.rb +29 -5
  243. data/modules/mruby/test/t/comparable.rb +20 -12
  244. data/modules/mruby/test/t/enumerable.rb +33 -7
  245. data/modules/mruby/test/t/exception.rb +63 -38
  246. data/modules/mruby/test/t/false.rb +2 -4
  247. data/modules/mruby/test/t/float.rb +39 -4
  248. data/modules/mruby/test/t/hash.rb +40 -6
  249. data/modules/mruby/test/t/indexerror.rb +0 -4
  250. data/modules/mruby/test/t/integer.rb +41 -5
  251. data/modules/mruby/test/t/kernel.rb +90 -3
  252. data/modules/mruby/test/t/localjumperror.rb +4 -4
  253. data/modules/mruby/test/t/methods.rb +1 -1
  254. data/modules/mruby/test/t/module.rb +43 -13
  255. data/modules/mruby/test/t/nameerror.rb +0 -4
  256. data/modules/mruby/test/t/nil.rb +5 -0
  257. data/modules/mruby/test/t/nomethoderror.rb +11 -2
  258. data/modules/mruby/test/t/numeric.rb +18 -4
  259. data/modules/mruby/test/t/proc.rb +59 -6
  260. data/modules/mruby/test/t/range.rb +15 -5
  261. data/modules/mruby/test/t/rangeerror.rb +0 -4
  262. data/modules/mruby/test/t/standarderror.rb +0 -4
  263. data/modules/mruby/test/t/string.rb +56 -12
  264. data/modules/mruby/test/t/superclass.rb +46 -0
  265. data/modules/mruby/test/t/symbol.rb +0 -4
  266. data/modules/mruby/test/t/syntax.rb +134 -1
  267. data/modules/mruby/test/t/true.rb +2 -4
  268. data/modules/mruby/test/t/typeerror.rb +0 -5
  269. data/modules/mruby/test/t/unicode.rb +35 -0
  270. data/modules/mruby/tools/mrbc/mrbc.c +9 -12
  271. data/modules/mruby/travis_config.rb +22 -2
  272. metadata +98 -1299
  273. data/modules/emscripten/AUTHORS +0 -117
  274. data/modules/emscripten/CONTRIBUTING.markdown +0 -5
  275. data/modules/emscripten/ChangeLog +0 -468
  276. data/modules/emscripten/LICENSE +0 -94
  277. data/modules/emscripten/README.markdown +0 -14
  278. data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +0 -26
  279. data/modules/emscripten/cmake/Platform/Emscripten.cmake +0 -228
  280. data/modules/emscripten/em++ +0 -12
  281. data/modules/emscripten/em++.bat +0 -2
  282. data/modules/emscripten/em-config +0 -24
  283. data/modules/emscripten/em-config.bat +0 -2
  284. data/modules/emscripten/emar +0 -24
  285. data/modules/emscripten/emar.bat +0 -2
  286. data/modules/emscripten/emcc +0 -2069
  287. data/modules/emscripten/emcc.bat +0 -2
  288. data/modules/emscripten/emcc.py +0 -5
  289. data/modules/emscripten/emconfigure +0 -27
  290. data/modules/emscripten/emconfigure.bat +0 -2
  291. data/modules/emscripten/emlink.py +0 -33
  292. data/modules/emscripten/emmake +0 -29
  293. data/modules/emscripten/emmake.bat +0 -2
  294. data/modules/emscripten/emranlib +0 -9
  295. data/modules/emscripten/emranlib.bat +0 -2
  296. data/modules/emscripten/emrun +0 -1087
  297. data/modules/emscripten/emrun.bat +0 -2
  298. data/modules/emscripten/emscons +0 -20
  299. data/modules/emscripten/emscripten.py +0 -1347
  300. data/modules/emscripten/package.json +0 -7
  301. data/modules/emscripten/patches/README +0 -4
  302. data/modules/emscripten/patches/series +0 -2
  303. data/modules/emscripten/scons-tools/closure.py +0 -28
  304. data/modules/emscripten/scons-tools/emscripten.py +0 -364
  305. data/modules/emscripten/scons-tools/llvm.py +0 -34
  306. data/modules/emscripten/src/analyzer.js +0 -1781
  307. data/modules/emscripten/src/closure-externs.js +0 -110
  308. data/modules/emscripten/src/compiler.html +0 -48
  309. data/modules/emscripten/src/compiler.js +0 -331
  310. data/modules/emscripten/src/compiler_phase.html +0 -33
  311. data/modules/emscripten/src/corruptionCheck.js +0 -98
  312. data/modules/emscripten/src/determinstic.js +0 -20
  313. data/modules/emscripten/src/embind/embind.js +0 -1677
  314. data/modules/emscripten/src/embind/emval.js +0 -284
  315. data/modules/emscripten/src/emrun_postjs.js +0 -20
  316. data/modules/emscripten/src/emrun_prejs.js +0 -5
  317. data/modules/emscripten/src/emscripten-source-map.min.js +0 -31
  318. data/modules/emscripten/src/experimental/allow_loopvars_from_memsetcpy_inasm.diff +0 -97
  319. data/modules/emscripten/src/experimental/batching.diff +0 -44
  320. data/modules/emscripten/src/experimental/functypeopt.diff +0 -113
  321. data/modules/emscripten/src/experimental/multiple_heaps.diff +0 -175
  322. data/modules/emscripten/src/experimental/noncallgraphprofiling.diff +0 -197
  323. data/modules/emscripten/src/experimental/optimize_memcpy_for_ta1.diff +0 -124
  324. data/modules/emscripten/src/experimental/remove__label__s.diff +0 -140
  325. data/modules/emscripten/src/experimental/renderer_cache_hash.diff +0 -99
  326. data/modules/emscripten/src/experimental/sdl_key_forwarding.diff +0 -57
  327. data/modules/emscripten/src/experimental/simplifyGeneratedFunctionsDetection.diff +0 -336
  328. data/modules/emscripten/src/experimental/stringCache.diff +0 -147
  329. data/modules/emscripten/src/fastLong.js +0 -299
  330. data/modules/emscripten/src/gl-matrix.js +0 -1952
  331. data/modules/emscripten/src/headless.js +0 -295
  332. data/modules/emscripten/src/headlessCanvas.js +0 -618
  333. data/modules/emscripten/src/hello_world.js +0 -92
  334. data/modules/emscripten/src/intertyper.js +0 -1228
  335. data/modules/emscripten/src/jsifier.js +0 -1969
  336. data/modules/emscripten/src/library.js +0 -9196
  337. data/modules/emscripten/src/library_browser.js +0 -988
  338. data/modules/emscripten/src/library_egl.js +0 -564
  339. data/modules/emscripten/src/library_fs.js +0 -1619
  340. data/modules/emscripten/src/library_gc.js +0 -236
  341. data/modules/emscripten/src/library_gl.js +0 -5194
  342. data/modules/emscripten/src/library_glfw.js +0 -585
  343. data/modules/emscripten/src/library_glut.js +0 -504
  344. data/modules/emscripten/src/library_idbfs.js +0 -216
  345. data/modules/emscripten/src/library_jansson.js +0 -320
  346. data/modules/emscripten/src/library_memfs.js +0 -303
  347. data/modules/emscripten/src/library_nodefs.js +0 -286
  348. data/modules/emscripten/src/library_openal.js +0 -915
  349. data/modules/emscripten/src/library_path.js +0 -133
  350. data/modules/emscripten/src/library_sdl.js +0 -2728
  351. data/modules/emscripten/src/library_sockfs.js +0 -578
  352. data/modules/emscripten/src/library_strtok_r.c +0 -97
  353. data/modules/emscripten/src/library_tty.js +0 -146
  354. data/modules/emscripten/src/library_uuid.js +0 -140
  355. data/modules/emscripten/src/library_xlib.js +0 -23
  356. data/modules/emscripten/src/long.js +0 -1609
  357. data/modules/emscripten/src/modules.js +0 -543
  358. data/modules/emscripten/src/parseTools.js +0 -2723
  359. data/modules/emscripten/src/postamble.js +0 -239
  360. data/modules/emscripten/src/postamble_sharedlib.js +0 -16
  361. data/modules/emscripten/src/preamble.js +0 -1233
  362. data/modules/emscripten/src/preamble_sharedlib.js +0 -25
  363. data/modules/emscripten/src/proxyClient.js +0 -82
  364. data/modules/emscripten/src/proxyWorker.js +0 -143
  365. data/modules/emscripten/src/relooper/README.markdown +0 -14
  366. data/modules/emscripten/src/relooper/Relooper.cpp +0 -1301
  367. data/modules/emscripten/src/relooper/Relooper.h +0 -257
  368. data/modules/emscripten/src/relooper/doit.sh +0 -70
  369. data/modules/emscripten/src/relooper/emscripten/glue.js +0 -67
  370. data/modules/emscripten/src/relooper/emscripten/test.js +0 -44
  371. data/modules/emscripten/src/relooper/fuzzer.py +0 -131
  372. data/modules/emscripten/src/relooper/ministring.h +0 -35
  373. data/modules/emscripten/src/relooper/paper.pdf +0 -0
  374. data/modules/emscripten/src/relooper/test.cpp +0 -290
  375. data/modules/emscripten/src/relooper/test.txt +0 -317
  376. data/modules/emscripten/src/relooper/test2.c +0 -44
  377. data/modules/emscripten/src/relooper/test2.txt +0 -26
  378. data/modules/emscripten/src/relooper/test3.c +0 -42
  379. data/modules/emscripten/src/relooper/test3.txt +0 -56
  380. data/modules/emscripten/src/relooper/test4.cpp +0 -40
  381. data/modules/emscripten/src/relooper/test4.txt +0 -44
  382. data/modules/emscripten/src/relooper/test5.cpp +0 -40
  383. data/modules/emscripten/src/relooper/test5.txt +0 -56
  384. data/modules/emscripten/src/relooper/test6.cpp +0 -31
  385. data/modules/emscripten/src/relooper/test6.txt +0 -26
  386. data/modules/emscripten/src/relooper/test_dead.cpp +0 -28
  387. data/modules/emscripten/src/relooper/test_dead.txt +0 -9
  388. data/modules/emscripten/src/relooper/test_debug.cpp +0 -30
  389. data/modules/emscripten/src/relooper/test_debug.txt +0 -142
  390. data/modules/emscripten/src/relooper/test_fuzz1.cpp +0 -52
  391. data/modules/emscripten/src/relooper/test_fuzz1.txt +0 -72
  392. data/modules/emscripten/src/relooper/test_fuzz2.cpp +0 -34
  393. data/modules/emscripten/src/relooper/test_fuzz2.txt +0 -30
  394. data/modules/emscripten/src/relooper/test_fuzz3.cpp +0 -36
  395. data/modules/emscripten/src/relooper/test_fuzz3.txt +0 -25
  396. data/modules/emscripten/src/relooper/test_fuzz4.cpp +0 -38
  397. data/modules/emscripten/src/relooper/test_fuzz4.txt +0 -41
  398. data/modules/emscripten/src/relooper/test_fuzz5.cpp +0 -57
  399. data/modules/emscripten/src/relooper/test_fuzz5.txt +0 -86
  400. data/modules/emscripten/src/relooper/test_fuzz6.cpp +0 -322
  401. data/modules/emscripten/src/relooper/test_fuzz6.txt +0 -291
  402. data/modules/emscripten/src/relooper/test_inf.cpp +0 -813
  403. data/modules/emscripten/src/relooper/test_inf.txt +0 -1131
  404. data/modules/emscripten/src/relooper/testit.sh +0 -62
  405. data/modules/emscripten/src/relooper/updateit.sh +0 -17
  406. data/modules/emscripten/src/runtime.js +0 -604
  407. data/modules/emscripten/src/settings.js +0 -476
  408. data/modules/emscripten/src/shell.html +0 -95
  409. data/modules/emscripten/src/shell.js +0 -173
  410. data/modules/emscripten/src/shell_sharedlib.js +0 -29
  411. data/modules/emscripten/src/simd.js +0 -1128
  412. data/modules/emscripten/src/socket.io.js +0 -3870
  413. data/modules/emscripten/src/struct_info.json +0 -1077
  414. data/modules/emscripten/src/utility.js +0 -411
  415. data/modules/emscripten/src/wrtcp.js +0 -821
  416. data/modules/emscripten/system/bin/sdl-config +0 -13
  417. data/modules/emscripten/system/include/AL/al.h +0 -172
  418. data/modules/emscripten/system/include/AL/alc.h +0 -84
  419. data/modules/emscripten/system/include/EGL/egl.h +0 -329
  420. data/modules/emscripten/system/include/EGL/eglext.h +0 -398
  421. data/modules/emscripten/system/include/EGL/eglplatform.h +0 -141
  422. data/modules/emscripten/system/include/GL/freeglut_std.h +0 -628
  423. data/modules/emscripten/system/include/GL/gl.h +0 -2241
  424. data/modules/emscripten/system/include/GL/glew.h +0 -6
  425. data/modules/emscripten/system/include/GL/glext.h +0 -11127
  426. data/modules/emscripten/system/include/GL/glfw.h +0 -518
  427. data/modules/emscripten/system/include/GL/glu.h +0 -353
  428. data/modules/emscripten/system/include/GL/glut.h +0 -21
  429. data/modules/emscripten/system/include/GLES/gl.h +0 -770
  430. data/modules/emscripten/system/include/GLES/glext.h +0 -1278
  431. data/modules/emscripten/system/include/GLES/glplatform.h +0 -30
  432. data/modules/emscripten/system/include/GLES2/gl2.h +0 -621
  433. data/modules/emscripten/system/include/GLES2/gl2ext.h +0 -803
  434. data/modules/emscripten/system/include/GLES2/gl2platform.h +0 -30
  435. data/modules/emscripten/system/include/KHR/khrplatform.h +0 -277
  436. data/modules/emscripten/system/include/SDL/COPYING +0 -19
  437. data/modules/emscripten/system/include/SDL/SDL.h +0 -162
  438. data/modules/emscripten/system/include/SDL/SDL_assert.h +0 -241
  439. data/modules/emscripten/system/include/SDL/SDL_atomic.h +0 -318
  440. data/modules/emscripten/system/include/SDL/SDL_audio.h +0 -509
  441. data/modules/emscripten/system/include/SDL/SDL_blendmode.h +0 -60
  442. data/modules/emscripten/system/include/SDL/SDL_clipboard.h +0 -75
  443. data/modules/emscripten/system/include/SDL/SDL_compat.h +0 -365
  444. data/modules/emscripten/system/include/SDL/SDL_config.h +0 -48
  445. data/modules/emscripten/system/include/SDL/SDL_config.h.in +0 -297
  446. data/modules/emscripten/system/include/SDL/SDL_config_android.h +0 -133
  447. data/modules/emscripten/system/include/SDL/SDL_config_iphoneos.h +0 -148
  448. data/modules/emscripten/system/include/SDL/SDL_config_macosx.h +0 -172
  449. data/modules/emscripten/system/include/SDL/SDL_config_minimal.h +0 -74
  450. data/modules/emscripten/system/include/SDL/SDL_config_nintendods.h +0 -129
  451. data/modules/emscripten/system/include/SDL/SDL_config_pandora.h +0 -125
  452. data/modules/emscripten/system/include/SDL/SDL_config_windows.h +0 -207
  453. data/modules/emscripten/system/include/SDL/SDL_config_wiz.h +0 -119
  454. data/modules/emscripten/system/include/SDL/SDL_copying.h +0 -20
  455. data/modules/emscripten/system/include/SDL/SDL_cpuinfo.h +0 -150
  456. data/modules/emscripten/system/include/SDL/SDL_endian.h +0 -248
  457. data/modules/emscripten/system/include/SDL/SDL_error.h +0 -77
  458. data/modules/emscripten/system/include/SDL/SDL_events.h +0 -640
  459. data/modules/emscripten/system/include/SDL/SDL_gesture.h +0 -91
  460. data/modules/emscripten/system/include/SDL/SDL_gfxPrimitives.h +0 -246
  461. data/modules/emscripten/system/include/SDL/SDL_haptic.h +0 -1200
  462. data/modules/emscripten/system/include/SDL/SDL_hints.h +0 -206
  463. data/modules/emscripten/system/include/SDL/SDL_image.h +0 -138
  464. data/modules/emscripten/system/include/SDL/SDL_input.h +0 -87
  465. data/modules/emscripten/system/include/SDL/SDL_joystick.h +0 -208
  466. data/modules/emscripten/system/include/SDL/SDL_keyboard.h +0 -169
  467. data/modules/emscripten/system/include/SDL/SDL_keycode.h +0 -344
  468. data/modules/emscripten/system/include/SDL/SDL_loadso.h +0 -85
  469. data/modules/emscripten/system/include/SDL/SDL_log.h +0 -211
  470. data/modules/emscripten/system/include/SDL/SDL_main.h +0 -98
  471. data/modules/emscripten/system/include/SDL/SDL_mixer.h +0 -634
  472. data/modules/emscripten/system/include/SDL/SDL_mouse.h +0 -213
  473. data/modules/emscripten/system/include/SDL/SDL_mutex.h +0 -248
  474. data/modules/emscripten/system/include/SDL/SDL_name.h +0 -11
  475. data/modules/emscripten/system/include/SDL/SDL_opengl.h +0 -11116
  476. data/modules/emscripten/system/include/SDL/SDL_opengles.h +0 -38
  477. data/modules/emscripten/system/include/SDL/SDL_opengles2.h +0 -38
  478. data/modules/emscripten/system/include/SDL/SDL_pixels.h +0 -423
  479. data/modules/emscripten/system/include/SDL/SDL_platform.h +0 -160
  480. data/modules/emscripten/system/include/SDL/SDL_power.h +0 -79
  481. data/modules/emscripten/system/include/SDL/SDL_quit.h +0 -58
  482. data/modules/emscripten/system/include/SDL/SDL_rect.h +0 -136
  483. data/modules/emscripten/system/include/SDL/SDL_render.h +0 -615
  484. data/modules/emscripten/system/include/SDL/SDL_revision.h +0 -2
  485. data/modules/emscripten/system/include/SDL/SDL_revision.h.orig +0 -2
  486. data/modules/emscripten/system/include/SDL/SDL_rotozoom.h +0 -123
  487. data/modules/emscripten/system/include/SDL/SDL_rwops.h +0 -220
  488. data/modules/emscripten/system/include/SDL/SDL_scancode.h +0 -398
  489. data/modules/emscripten/system/include/SDL/SDL_shape.h +0 -147
  490. data/modules/emscripten/system/include/SDL/SDL_stdinc.h +0 -764
  491. data/modules/emscripten/system/include/SDL/SDL_surface.h +0 -499
  492. data/modules/emscripten/system/include/SDL/SDL_syswm.h +0 -241
  493. data/modules/emscripten/system/include/SDL/SDL_thread.h +0 -182
  494. data/modules/emscripten/system/include/SDL/SDL_timer.h +0 -108
  495. data/modules/emscripten/system/include/SDL/SDL_touch.h +0 -124
  496. data/modules/emscripten/system/include/SDL/SDL_ttf.h +0 -249
  497. data/modules/emscripten/system/include/SDL/SDL_types.h +0 -29
  498. data/modules/emscripten/system/include/SDL/SDL_version.h +0 -166
  499. data/modules/emscripten/system/include/SDL/SDL_video.h +0 -820
  500. data/modules/emscripten/system/include/SDL/begin_code.h +0 -135
  501. data/modules/emscripten/system/include/SDL/close_code.h +0 -37
  502. data/modules/emscripten/system/include/X11/X.h +0 -717
  503. data/modules/emscripten/system/include/X11/Xatom.h +0 -79
  504. data/modules/emscripten/system/include/X11/Xfuncproto.h +0 -127
  505. data/modules/emscripten/system/include/X11/Xlib.h +0 -4023
  506. data/modules/emscripten/system/include/X11/Xosdefs.h +0 -116
  507. data/modules/emscripten/system/include/X11/Xutil.h +0 -826
  508. data/modules/emscripten/system/include/X11/keysym.h +0 -73
  509. data/modules/emscripten/system/include/X11/keysymdef.h +0 -2389
  510. data/modules/emscripten/system/include/compat/ctype.h +0 -34
  511. data/modules/emscripten/system/include/compat/malloc.h +0 -48
  512. data/modules/emscripten/system/include/compat/math.h +0 -14
  513. data/modules/emscripten/system/include/compat/netdb.h +0 -22
  514. data/modules/emscripten/system/include/compat/stdarg.h +0 -16
  515. data/modules/emscripten/system/include/compat/stdlib.h +0 -16
  516. data/modules/emscripten/system/include/compat/string.h +0 -17
  517. data/modules/emscripten/system/include/compat/sys/socketvar.h +0 -14
  518. data/modules/emscripten/system/include/compat/sys/stat.h +0 -20
  519. data/modules/emscripten/system/include/compat/sys/timeb.h +0 -35
  520. data/modules/emscripten/system/include/compat/time.h +0 -18
  521. data/modules/emscripten/system/include/compat/unistd.h +0 -16
  522. data/modules/emscripten/system/include/compat/wchar.h +0 -23
  523. data/modules/emscripten/system/include/compat/wctype.h +0 -23
  524. data/modules/emscripten/system/include/compat/xlocale.h +0 -19
  525. data/modules/emscripten/system/include/emscripten/bind.h +0 -1210
  526. data/modules/emscripten/system/include/emscripten/emmintrin.h +0 -87
  527. data/modules/emscripten/system/include/emscripten/emscripten.h +0 -519
  528. data/modules/emscripten/system/include/emscripten/val.h +0 -311
  529. data/modules/emscripten/system/include/emscripten/vector.h +0 -34
  530. data/modules/emscripten/system/include/emscripten/wire.h +0 -393
  531. data/modules/emscripten/system/include/emscripten/xmmintrin.h +0 -131
  532. data/modules/emscripten/system/include/execinfo.h +0 -44
  533. data/modules/emscripten/system/include/gc.h +0 -70
  534. data/modules/emscripten/system/include/gfx/png.h +0 -3798
  535. data/modules/emscripten/system/include/gfx/pngconf.h +0 -1665
  536. data/modules/emscripten/system/include/gfx/tiff.h +0 -654
  537. data/modules/emscripten/system/include/gfx/tiffconf.h +0 -104
  538. data/modules/emscripten/system/include/gfx/tiffio.h +0 -526
  539. data/modules/emscripten/system/include/gfx/tiffvers.h +0 -9
  540. data/modules/emscripten/system/include/jansson.h +0 -323
  541. data/modules/emscripten/system/include/jansson_config.h +0 -54
  542. data/modules/emscripten/system/include/libc/aio.h +0 -69
  543. data/modules/emscripten/system/include/libc/alloca.h +0 -21
  544. data/modules/emscripten/system/include/libc/ar.h +0 -25
  545. data/modules/emscripten/system/include/libc/arpa/ftp.h +0 -35
  546. data/modules/emscripten/system/include/libc/arpa/inet.h +0 -36
  547. data/modules/emscripten/system/include/libc/arpa/nameser.h +0 -467
  548. data/modules/emscripten/system/include/libc/arpa/nameser_compat.h +0 -2
  549. data/modules/emscripten/system/include/libc/arpa/telnet.h +0 -251
  550. data/modules/emscripten/system/include/libc/arpa/tftp.h +0 -31
  551. data/modules/emscripten/system/include/libc/assert.h +0 -19
  552. data/modules/emscripten/system/include/libc/bits/alltypes.h +0 -397
  553. data/modules/emscripten/system/include/libc/bits/endian.h +0 -1
  554. data/modules/emscripten/system/include/libc/bits/errno.h +0 -134
  555. data/modules/emscripten/system/include/libc/bits/fcntl.h +0 -38
  556. data/modules/emscripten/system/include/libc/bits/fenv.h +0 -34
  557. data/modules/emscripten/system/include/libc/bits/float.h +0 -17
  558. data/modules/emscripten/system/include/libc/bits/io.h +0 -0
  559. data/modules/emscripten/system/include/libc/bits/ioctl.h +0 -197
  560. data/modules/emscripten/system/include/libc/bits/ipc.h +0 -14
  561. data/modules/emscripten/system/include/libc/bits/limits.h +0 -8
  562. data/modules/emscripten/system/include/libc/bits/mman.h +0 -62
  563. data/modules/emscripten/system/include/libc/bits/msg.h +0 -16
  564. data/modules/emscripten/system/include/libc/bits/posix.h +0 -2
  565. data/modules/emscripten/system/include/libc/bits/reg.h +0 -19
  566. data/modules/emscripten/system/include/libc/bits/setjmp.h +0 -1
  567. data/modules/emscripten/system/include/libc/bits/shm.h +0 -18
  568. data/modules/emscripten/system/include/libc/bits/signal.h +0 -112
  569. data/modules/emscripten/system/include/libc/bits/socket.h +0 -17
  570. data/modules/emscripten/system/include/libc/bits/stat.h +0 -22
  571. data/modules/emscripten/system/include/libc/bits/statfs.h +0 -7
  572. data/modules/emscripten/system/include/libc/bits/stdarg.h +0 -4
  573. data/modules/emscripten/system/include/libc/bits/stdint.h +0 -20
  574. data/modules/emscripten/system/include/libc/bits/syscall.h +0 -696
  575. data/modules/emscripten/system/include/libc/bits/termios.h +0 -160
  576. data/modules/emscripten/system/include/libc/bits/user.h +0 -48
  577. data/modules/emscripten/system/include/libc/byteswap.h +0 -26
  578. data/modules/emscripten/system/include/libc/complex.h +0 -125
  579. data/modules/emscripten/system/include/libc/cpio.h +0 -29
  580. data/modules/emscripten/system/include/libc/crypt.h +0 -20
  581. data/modules/emscripten/system/include/libc/ctype.h +0 -67
  582. data/modules/emscripten/system/include/libc/dirent.h +0 -79
  583. data/modules/emscripten/system/include/libc/dlfcn.h +0 -42
  584. data/modules/emscripten/system/include/libc/elf.h +0 -2555
  585. data/modules/emscripten/system/include/libc/endian.h +0 -82
  586. data/modules/emscripten/system/include/libc/err.h +0 -25
  587. data/modules/emscripten/system/include/libc/errno.h +0 -27
  588. data/modules/emscripten/system/include/libc/fcntl.h +0 -175
  589. data/modules/emscripten/system/include/libc/features.h +0 -32
  590. data/modules/emscripten/system/include/libc/fenv.h +0 -28
  591. data/modules/emscripten/system/include/libc/float.h +0 -34
  592. data/modules/emscripten/system/include/libc/fnmatch.h +0 -29
  593. data/modules/emscripten/system/include/libc/ftw.h +0 -42
  594. data/modules/emscripten/system/include/libc/getopt.h +0 -31
  595. data/modules/emscripten/system/include/libc/glob.h +0 -48
  596. data/modules/emscripten/system/include/libc/grp.h +0 -52
  597. data/modules/emscripten/system/include/libc/iconv.h +0 -24
  598. data/modules/emscripten/system/include/libc/ifaddrs.h +0 -35
  599. data/modules/emscripten/system/include/libc/inttypes.h +0 -227
  600. data/modules/emscripten/system/include/libc/iso646.h +0 -20
  601. data/modules/emscripten/system/include/libc/langinfo.h +0 -88
  602. data/modules/emscripten/system/include/libc/lastlog.h +0 -1
  603. data/modules/emscripten/system/include/libc/libgen.h +0 -15
  604. data/modules/emscripten/system/include/libc/libintl.h +0 -25
  605. data/modules/emscripten/system/include/libc/limits.h +0 -146
  606. data/modules/emscripten/system/include/libc/link.h +0 -54
  607. data/modules/emscripten/system/include/libc/locale.h +0 -82
  608. data/modules/emscripten/system/include/libc/malloc.h +0 -0
  609. data/modules/emscripten/system/include/libc/math.h +0 -422
  610. data/modules/emscripten/system/include/libc/memory.h +0 -1
  611. data/modules/emscripten/system/include/libc/mntent.h +0 -44
  612. data/modules/emscripten/system/include/libc/monetary.h +0 -23
  613. data/modules/emscripten/system/include/libc/mqueue.h +0 -36
  614. data/modules/emscripten/system/include/libc/net/ethernet.h +0 -55
  615. data/modules/emscripten/system/include/libc/net/if.h +0 -135
  616. data/modules/emscripten/system/include/libc/net/if_arp.h +0 -133
  617. data/modules/emscripten/system/include/libc/net/route.h +0 -124
  618. data/modules/emscripten/system/include/libc/netdb.h +0 -161
  619. data/modules/emscripten/system/include/libc/netinet/ether.h +0 -14
  620. data/modules/emscripten/system/include/libc/netinet/icmp6.h +0 -305
  621. data/modules/emscripten/system/include/libc/netinet/if_ether.h +0 -126
  622. data/modules/emscripten/system/include/libc/netinet/in.h +0 -336
  623. data/modules/emscripten/system/include/libc/netinet/in_systm.h +0 -9
  624. data/modules/emscripten/system/include/libc/netinet/ip.h +0 -186
  625. data/modules/emscripten/system/include/libc/netinet/ip6.h +0 -142
  626. data/modules/emscripten/system/include/libc/netinet/ip_icmp.h +0 -192
  627. data/modules/emscripten/system/include/libc/netinet/tcp.h +0 -71
  628. data/modules/emscripten/system/include/libc/netinet/udp.h +0 -35
  629. data/modules/emscripten/system/include/libc/netpacket/packet.h +0 -44
  630. data/modules/emscripten/system/include/libc/nl_types.h +0 -22
  631. data/modules/emscripten/system/include/libc/paths.h +0 -32
  632. data/modules/emscripten/system/include/libc/poll.h +0 -46
  633. data/modules/emscripten/system/include/libc/pthread.h +0 -222
  634. data/modules/emscripten/system/include/libc/pty.h +0 -18
  635. data/modules/emscripten/system/include/libc/pwd.h +0 -49
  636. data/modules/emscripten/system/include/libc/readme.txt +0 -3
  637. data/modules/emscripten/system/include/libc/regex.h +0 -62
  638. data/modules/emscripten/system/include/libc/resolv.h +0 -144
  639. data/modules/emscripten/system/include/libc/sched.h +0 -132
  640. data/modules/emscripten/system/include/libc/search.h +0 -51
  641. data/modules/emscripten/system/include/libc/semaphore.h +0 -35
  642. data/modules/emscripten/system/include/libc/setjmp.h +0 -42
  643. data/modules/emscripten/system/include/libc/shadow.h +0 -44
  644. data/modules/emscripten/system/include/libc/signal.h +0 -255
  645. data/modules/emscripten/system/include/libc/spawn.h +0 -74
  646. data/modules/emscripten/system/include/libc/stdalign.h +0 -15
  647. data/modules/emscripten/system/include/libc/stdarg.h +0 -25
  648. data/modules/emscripten/system/include/libc/stdbool.h +0 -14
  649. data/modules/emscripten/system/include/libc/stddef.h +0 -18
  650. data/modules/emscripten/system/include/libc/stdint.h +0 -117
  651. data/modules/emscripten/system/include/libc/stdio.h +0 -199
  652. data/modules/emscripten/system/include/libc/stdio_ext.h +0 -34
  653. data/modules/emscripten/system/include/libc/stdlib.h +0 -171
  654. data/modules/emscripten/system/include/libc/stdnoreturn.h +0 -5
  655. data/modules/emscripten/system/include/libc/string.h +0 -102
  656. data/modules/emscripten/system/include/libc/strings.h +0 -35
  657. data/modules/emscripten/system/include/libc/stropts.h +0 -139
  658. data/modules/emscripten/system/include/libc/sys/acct.h +0 -75
  659. data/modules/emscripten/system/include/libc/sys/cachectl.h +0 -22
  660. data/modules/emscripten/system/include/libc/sys/dir.h +0 -2
  661. data/modules/emscripten/system/include/libc/sys/epoll.h +0 -67
  662. data/modules/emscripten/system/include/libc/sys/errno.h +0 -2
  663. data/modules/emscripten/system/include/libc/sys/eventfd.h +0 -26
  664. data/modules/emscripten/system/include/libc/sys/fcntl.h +0 -2
  665. data/modules/emscripten/system/include/libc/sys/file.h +0 -21
  666. data/modules/emscripten/system/include/libc/sys/fsuid.h +0 -20
  667. data/modules/emscripten/system/include/libc/sys/inotify.h +0 -57
  668. data/modules/emscripten/system/include/libc/sys/io.h +0 -17
  669. data/modules/emscripten/system/include/libc/sys/ioctl.h +0 -14
  670. data/modules/emscripten/system/include/libc/sys/ipc.h +0 -42
  671. data/modules/emscripten/system/include/libc/sys/klog.h +0 -14
  672. data/modules/emscripten/system/include/libc/sys/mman.h +0 -55
  673. data/modules/emscripten/system/include/libc/sys/mount.h +0 -72
  674. data/modules/emscripten/system/include/libc/sys/msg.h +0 -52
  675. data/modules/emscripten/system/include/libc/sys/mtio.h +0 -188
  676. data/modules/emscripten/system/include/libc/sys/param.h +0 -35
  677. data/modules/emscripten/system/include/libc/sys/personality.h +0 -46
  678. data/modules/emscripten/system/include/libc/sys/poll.h +0 -2
  679. data/modules/emscripten/system/include/libc/sys/prctl.h +0 -101
  680. data/modules/emscripten/system/include/libc/sys/procfs.h +0 -65
  681. data/modules/emscripten/system/include/libc/sys/ptrace.h +0 -96
  682. data/modules/emscripten/system/include/libc/sys/reboot.h +0 -20
  683. data/modules/emscripten/system/include/libc/sys/reg.h +0 -9
  684. data/modules/emscripten/system/include/libc/sys/resource.h +0 -103
  685. data/modules/emscripten/system/include/libc/sys/select.h +0 -42
  686. data/modules/emscripten/system/include/libc/sys/sem.h +0 -82
  687. data/modules/emscripten/system/include/libc/sys/sendfile.h +0 -22
  688. data/modules/emscripten/system/include/libc/sys/shm.h +0 -61
  689. data/modules/emscripten/system/include/libc/sys/signal.h +0 -2
  690. data/modules/emscripten/system/include/libc/sys/signalfd.h +0 -44
  691. data/modules/emscripten/system/include/libc/sys/socket.h +0 -299
  692. data/modules/emscripten/system/include/libc/sys/stat.h +0 -114
  693. data/modules/emscripten/system/include/libc/sys/statfs.h +0 -32
  694. data/modules/emscripten/system/include/libc/sys/statvfs.h +0 -57
  695. data/modules/emscripten/system/include/libc/sys/stropts.h +0 -1
  696. data/modules/emscripten/system/include/libc/sys/swap.h +0 -21
  697. data/modules/emscripten/system/include/libc/sys/syscall.h +0 -6
  698. data/modules/emscripten/system/include/libc/sys/sysctl.h +0 -17
  699. data/modules/emscripten/system/include/libc/sys/sysinfo.h +0 -36
  700. data/modules/emscripten/system/include/libc/sys/syslog.h +0 -1
  701. data/modules/emscripten/system/include/libc/sys/sysmacros.h +0 -15
  702. data/modules/emscripten/system/include/libc/sys/termios.h +0 -2
  703. data/modules/emscripten/system/include/libc/sys/time.h +0 -57
  704. data/modules/emscripten/system/include/libc/sys/timerfd.h +0 -24
  705. data/modules/emscripten/system/include/libc/sys/times.h +0 -26
  706. data/modules/emscripten/system/include/libc/sys/timex.h +0 -98
  707. data/modules/emscripten/system/include/libc/sys/ttydefaults.h +0 -39
  708. data/modules/emscripten/system/include/libc/sys/types.h +0 -91
  709. data/modules/emscripten/system/include/libc/sys/ucontext.h +0 -1
  710. data/modules/emscripten/system/include/libc/sys/uio.h +0 -48
  711. data/modules/emscripten/system/include/libc/sys/un.h +0 -32
  712. data/modules/emscripten/system/include/libc/sys/user.h +0 -16
  713. data/modules/emscripten/system/include/libc/sys/utsname.h +0 -30
  714. data/modules/emscripten/system/include/libc/sys/vfs.h +0 -1
  715. data/modules/emscripten/system/include/libc/sys/wait.h +0 -55
  716. data/modules/emscripten/system/include/libc/sys/xattr.h +0 -30
  717. data/modules/emscripten/system/include/libc/syscall.h +0 -1
  718. data/modules/emscripten/system/include/libc/sysexits.h +0 -21
  719. data/modules/emscripten/system/include/libc/syslog.h +0 -104
  720. data/modules/emscripten/system/include/libc/tar.h +0 -33
  721. data/modules/emscripten/system/include/libc/termios.h +0 -46
  722. data/modules/emscripten/system/include/libc/tgmath.h +0 -270
  723. data/modules/emscripten/system/include/libc/time.h +0 -132
  724. data/modules/emscripten/system/include/libc/ucontext.h +0 -25
  725. data/modules/emscripten/system/include/libc/ulimit.h +0 -17
  726. data/modules/emscripten/system/include/libc/unistd.h +0 -519
  727. data/modules/emscripten/system/include/libc/utime.h +0 -24
  728. data/modules/emscripten/system/include/libc/utmp.h +0 -47
  729. data/modules/emscripten/system/include/libc/utmpx.h +0 -58
  730. data/modules/emscripten/system/include/libc/values.h +0 -39
  731. data/modules/emscripten/system/include/libc/wchar.h +0 -183
  732. data/modules/emscripten/system/include/libc/wctype.h +0 -77
  733. data/modules/emscripten/system/include/libc/wordexp.h +0 -42
  734. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +0 -123
  735. data/modules/emscripten/system/include/libcxx/LICENSE.txt +0 -76
  736. data/modules/emscripten/system/include/libcxx/__bit_reference +0 -1287
  737. data/modules/emscripten/system/include/libcxx/__config +0 -610
  738. data/modules/emscripten/system/include/libcxx/__debug +0 -218
  739. data/modules/emscripten/system/include/libcxx/__functional_03 +0 -2130
  740. data/modules/emscripten/system/include/libcxx/__functional_base +0 -615
  741. data/modules/emscripten/system/include/libcxx/__functional_base_03 +0 -1087
  742. data/modules/emscripten/system/include/libcxx/__hash_table +0 -2457
  743. data/modules/emscripten/system/include/libcxx/__locale +0 -1445
  744. data/modules/emscripten/system/include/libcxx/__mutex_base +0 -407
  745. data/modules/emscripten/system/include/libcxx/__split_buffer +0 -654
  746. data/modules/emscripten/system/include/libcxx/__sso_allocator +0 -77
  747. data/modules/emscripten/system/include/libcxx/__std_stream +0 -359
  748. data/modules/emscripten/system/include/libcxx/__tree +0 -2309
  749. data/modules/emscripten/system/include/libcxx/__tuple +0 -305
  750. data/modules/emscripten/system/include/libcxx/__tuple_03 +0 -27
  751. data/modules/emscripten/system/include/libcxx/__undef_min_max +0 -27
  752. data/modules/emscripten/system/include/libcxx/algorithm +0 -5679
  753. data/modules/emscripten/system/include/libcxx/array +0 -342
  754. data/modules/emscripten/system/include/libcxx/atomic +0 -1531
  755. data/modules/emscripten/system/include/libcxx/bitset +0 -1081
  756. data/modules/emscripten/system/include/libcxx/cassert +0 -25
  757. data/modules/emscripten/system/include/libcxx/ccomplex +0 -29
  758. data/modules/emscripten/system/include/libcxx/cctype +0 -164
  759. data/modules/emscripten/system/include/libcxx/cerrno +0 -393
  760. data/modules/emscripten/system/include/libcxx/cfenv +0 -82
  761. data/modules/emscripten/system/include/libcxx/cfloat +0 -78
  762. data/modules/emscripten/system/include/libcxx/chrono +0 -1027
  763. data/modules/emscripten/system/include/libcxx/cinttypes +0 -259
  764. data/modules/emscripten/system/include/libcxx/ciso646 +0 -25
  765. data/modules/emscripten/system/include/libcxx/climits +0 -48
  766. data/modules/emscripten/system/include/libcxx/clocale +0 -53
  767. data/modules/emscripten/system/include/libcxx/cmath +0 -1690
  768. data/modules/emscripten/system/include/libcxx/codecvt +0 -550
  769. data/modules/emscripten/system/include/libcxx/complex +0 -1567
  770. data/modules/emscripten/system/include/libcxx/complex.h +0 -35
  771. data/modules/emscripten/system/include/libcxx/condition_variable +0 -256
  772. data/modules/emscripten/system/include/libcxx/csetjmp +0 -52
  773. data/modules/emscripten/system/include/libcxx/csignal +0 -58
  774. data/modules/emscripten/system/include/libcxx/cstdarg +0 -48
  775. data/modules/emscripten/system/include/libcxx/cstdbool +0 -32
  776. data/modules/emscripten/system/include/libcxx/cstddef +0 -103
  777. data/modules/emscripten/system/include/libcxx/cstdint +0 -191
  778. data/modules/emscripten/system/include/libcxx/cstdio +0 -182
  779. data/modules/emscripten/system/include/libcxx/cstdlib +0 -172
  780. data/modules/emscripten/system/include/libcxx/cstring +0 -112
  781. data/modules/emscripten/system/include/libcxx/ctgmath +0 -29
  782. data/modules/emscripten/system/include/libcxx/ctime +0 -72
  783. data/modules/emscripten/system/include/libcxx/cwchar +0 -217
  784. data/modules/emscripten/system/include/libcxx/cwctype +0 -213
  785. data/modules/emscripten/system/include/libcxx/deque +0 -2873
  786. data/modules/emscripten/system/include/libcxx/dynarray +0 -311
  787. data/modules/emscripten/system/include/libcxx/exception +0 -250
  788. data/modules/emscripten/system/include/libcxx/ext/__hash +0 -46
  789. data/modules/emscripten/system/include/libcxx/ext/hash_map +0 -1007
  790. data/modules/emscripten/system/include/libcxx/ext/hash_set +0 -661
  791. data/modules/emscripten/system/include/libcxx/forward_list +0 -1663
  792. data/modules/emscripten/system/include/libcxx/fstream +0 -1431
  793. data/modules/emscripten/system/include/libcxx/functional +0 -2418
  794. data/modules/emscripten/system/include/libcxx/future +0 -2615
  795. data/modules/emscripten/system/include/libcxx/initializer_list +0 -118
  796. data/modules/emscripten/system/include/libcxx/iomanip +0 -651
  797. data/modules/emscripten/system/include/libcxx/ios +0 -1023
  798. data/modules/emscripten/system/include/libcxx/iosfwd +0 -194
  799. data/modules/emscripten/system/include/libcxx/iostream +0 -60
  800. data/modules/emscripten/system/include/libcxx/istream +0 -1716
  801. data/modules/emscripten/system/include/libcxx/iterator +0 -1568
  802. data/modules/emscripten/system/include/libcxx/limits +0 -813
  803. data/modules/emscripten/system/include/libcxx/list +0 -2355
  804. data/modules/emscripten/system/include/libcxx/locale +0 -4465
  805. data/modules/emscripten/system/include/libcxx/map +0 -2045
  806. data/modules/emscripten/system/include/libcxx/memory +0 -5448
  807. data/modules/emscripten/system/include/libcxx/mutex +0 -566
  808. data/modules/emscripten/system/include/libcxx/new +0 -146
  809. data/modules/emscripten/system/include/libcxx/numeric +0 -197
  810. data/modules/emscripten/system/include/libcxx/optional +0 -697
  811. data/modules/emscripten/system/include/libcxx/ostream +0 -1295
  812. data/modules/emscripten/system/include/libcxx/queue +0 -717
  813. data/modules/emscripten/system/include/libcxx/random +0 -6725
  814. data/modules/emscripten/system/include/libcxx/ratio +0 -487
  815. data/modules/emscripten/system/include/libcxx/readme.txt +0 -1
  816. data/modules/emscripten/system/include/libcxx/regex +0 -6487
  817. data/modules/emscripten/system/include/libcxx/scoped_allocator +0 -578
  818. data/modules/emscripten/system/include/libcxx/set +0 -1189
  819. data/modules/emscripten/system/include/libcxx/shared_mutex +0 -419
  820. data/modules/emscripten/system/include/libcxx/sstream +0 -972
  821. data/modules/emscripten/system/include/libcxx/stack +0 -292
  822. data/modules/emscripten/system/include/libcxx/stdexcept +0 -162
  823. data/modules/emscripten/system/include/libcxx/streambuf +0 -564
  824. data/modules/emscripten/system/include/libcxx/string +0 -4198
  825. data/modules/emscripten/system/include/libcxx/strstream +0 -400
  826. data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +0 -99
  827. data/modules/emscripten/system/include/libcxx/support/ibm/support.h +0 -54
  828. data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +0 -326
  829. data/modules/emscripten/system/include/libcxx/support/solaris/floatingpoint.h +0 -5
  830. data/modules/emscripten/system/include/libcxx/support/solaris/wchar.h +0 -38
  831. data/modules/emscripten/system/include/libcxx/support/solaris/xlocale.h +0 -146
  832. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +0 -79
  833. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +0 -129
  834. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +0 -115
  835. data/modules/emscripten/system/include/libcxx/support/win32/support.h +0 -119
  836. data/modules/emscripten/system/include/libcxx/system_error +0 -642
  837. data/modules/emscripten/system/include/libcxx/tgmath.h +0 -29
  838. data/modules/emscripten/system/include/libcxx/thread +0 -458
  839. data/modules/emscripten/system/include/libcxx/tuple +0 -1102
  840. data/modules/emscripten/system/include/libcxx/type_traits +0 -3292
  841. data/modules/emscripten/system/include/libcxx/typeindex +0 -103
  842. data/modules/emscripten/system/include/libcxx/typeinfo +0 -124
  843. data/modules/emscripten/system/include/libcxx/unordered_map +0 -2078
  844. data/modules/emscripten/system/include/libcxx/unordered_set +0 -1379
  845. data/modules/emscripten/system/include/libcxx/utility +0 -768
  846. data/modules/emscripten/system/include/libcxx/valarray +0 -4779
  847. data/modules/emscripten/system/include/libcxx/vector +0 -3246
  848. data/modules/emscripten/system/include/unwind.h +0 -154
  849. data/modules/emscripten/system/include/uuid/uuid.h +0 -35
  850. data/modules/emscripten/system/include/zconf.h +0 -428
  851. data/modules/emscripten/system/include/zlib.h +0 -1613
  852. data/modules/emscripten/system/lib/compiler-rt/LICENSE.TXT +0 -97
  853. data/modules/emscripten/system/lib/compiler-rt/divdi3.c +0 -47
  854. data/modules/emscripten/system/lib/compiler-rt/int_endianness.h +0 -116
  855. data/modules/emscripten/system/lib/compiler-rt/int_lib.h +0 -46
  856. data/modules/emscripten/system/lib/compiler-rt/int_math.h +0 -67
  857. data/modules/emscripten/system/lib/compiler-rt/int_types.h +0 -140
  858. data/modules/emscripten/system/lib/compiler-rt/int_util.h +0 -29
  859. data/modules/emscripten/system/lib/compiler-rt/muldi3.c +0 -56
  860. data/modules/emscripten/system/lib/compiler-rt/readme.txt +0 -20
  861. data/modules/emscripten/system/lib/compiler-rt/udivdi3.c +0 -36
  862. data/modules/emscripten/system/lib/compiler-rt/udivmoddi4.c +0 -251
  863. data/modules/emscripten/system/lib/debugging.cpp +0 -24
  864. data/modules/emscripten/system/lib/dlmalloc.c +0 -6297
  865. data/modules/emscripten/system/lib/embind/bind.cpp +0 -63
  866. data/modules/emscripten/system/lib/libc/gen/err.c +0 -49
  867. data/modules/emscripten/system/lib/libc/gen/errx.c +0 -49
  868. data/modules/emscripten/system/lib/libc/gen/verr.c +0 -58
  869. data/modules/emscripten/system/lib/libc/gen/verrx.c +0 -51
  870. data/modules/emscripten/system/lib/libc/gen/vwarn.c +0 -55
  871. data/modules/emscripten/system/lib/libc/gen/vwarnx.c +0 -48
  872. data/modules/emscripten/system/lib/libc/gen/warn.c +0 -49
  873. data/modules/emscripten/system/lib/libc/gen/warnx.c +0 -49
  874. data/modules/emscripten/system/lib/libc/musl/COPYRIGHT +0 -92
  875. data/modules/emscripten/system/lib/libc/musl/readme.txt +0 -9
  876. data/modules/emscripten/system/lib/libc/musl/src/ctype/alpha.h +0 -125
  877. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswalnum.c +0 -7
  878. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswalpha.c +0 -14
  879. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswblank.c +0 -8
  880. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswcntrl.c +0 -10
  881. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswctype.c +0 -63
  882. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswdigit.c +0 -9
  883. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswgraph.c +0 -7
  884. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswlower.c +0 -6
  885. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswprint.c +0 -19
  886. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswpunct.c +0 -12
  887. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswspace.c +0 -19
  888. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswupper.c +0 -6
  889. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswxdigit.c +0 -7
  890. data/modules/emscripten/system/lib/libc/musl/src/ctype/nonspacing.h +0 -62
  891. data/modules/emscripten/system/lib/libc/musl/src/ctype/punct.h +0 -109
  892. data/modules/emscripten/system/lib/libc/musl/src/ctype/towctrans.c +0 -268
  893. data/modules/emscripten/system/lib/libc/musl/src/ctype/wcswidth.c +0 -8
  894. data/modules/emscripten/system/lib/libc/musl/src/ctype/wctrans.c +0 -16
  895. data/modules/emscripten/system/lib/libc/musl/src/ctype/wcwidth.c +0 -29
  896. data/modules/emscripten/system/lib/libc/musl/src/ctype/wide.h +0 -42
  897. data/modules/emscripten/system/lib/libc/musl/src/internal/libc.c +0 -22
  898. data/modules/emscripten/system/lib/libc/musl/src/internal/libc.h +0 -71
  899. data/modules/emscripten/system/lib/libc/musl/src/internal/locale_impl.h +0 -5
  900. data/modules/emscripten/system/lib/libc/musl/src/internal/stdio_impl.h +0 -92
  901. data/modules/emscripten/system/lib/libc/musl/src/locale/big5.h +0 -1085
  902. data/modules/emscripten/system/lib/libc/musl/src/locale/codepages.h +0 -238
  903. data/modules/emscripten/system/lib/libc/musl/src/locale/gb18030.h +0 -1836
  904. data/modules/emscripten/system/lib/libc/musl/src/locale/hkscs.h +0 -390
  905. data/modules/emscripten/system/lib/libc/musl/src/locale/iconv.c +0 -454
  906. data/modules/emscripten/system/lib/libc/musl/src/locale/iswalnum_l.c +0 -6
  907. data/modules/emscripten/system/lib/libc/musl/src/locale/iswalpha_l.c +0 -6
  908. data/modules/emscripten/system/lib/libc/musl/src/locale/iswblank_l.c +0 -6
  909. data/modules/emscripten/system/lib/libc/musl/src/locale/iswcntrl_l.c +0 -6
  910. data/modules/emscripten/system/lib/libc/musl/src/locale/iswctype_l.c +0 -9
  911. data/modules/emscripten/system/lib/libc/musl/src/locale/iswdigit_l.c +0 -6
  912. data/modules/emscripten/system/lib/libc/musl/src/locale/iswgraph_l.c +0 -6
  913. data/modules/emscripten/system/lib/libc/musl/src/locale/iswlower_l.c +0 -6
  914. data/modules/emscripten/system/lib/libc/musl/src/locale/iswprint_l.c +0 -6
  915. data/modules/emscripten/system/lib/libc/musl/src/locale/iswpunct_l.c +0 -6
  916. data/modules/emscripten/system/lib/libc/musl/src/locale/iswspace_l.c +0 -6
  917. data/modules/emscripten/system/lib/libc/musl/src/locale/iswupper_l.c +0 -6
  918. data/modules/emscripten/system/lib/libc/musl/src/locale/iswxdigit_l.c +0 -6
  919. data/modules/emscripten/system/lib/libc/musl/src/locale/jis0208.h +0 -550
  920. data/modules/emscripten/system/lib/libc/musl/src/locale/ksc.h +0 -640
  921. data/modules/emscripten/system/lib/libc/musl/src/locale/legacychars.h +0 -39
  922. data/modules/emscripten/system/lib/libc/musl/src/locale/strfmon.c +0 -101
  923. data/modules/emscripten/system/lib/libc/musl/src/locale/strxfrm.c +0 -18
  924. data/modules/emscripten/system/lib/libc/musl/src/locale/towctrans_l.c +0 -6
  925. data/modules/emscripten/system/lib/libc/musl/src/locale/towlower_l.c +0 -9
  926. data/modules/emscripten/system/lib/libc/musl/src/locale/towupper_l.c +0 -9
  927. data/modules/emscripten/system/lib/libc/musl/src/locale/wcscoll.c +0 -16
  928. data/modules/emscripten/system/lib/libc/musl/src/locale/wcscoll_l.c +0 -6
  929. data/modules/emscripten/system/lib/libc/musl/src/locale/wcsxfrm.c +0 -21
  930. data/modules/emscripten/system/lib/libc/musl/src/locale/wcsxfrm_l.c +0 -6
  931. data/modules/emscripten/system/lib/libc/musl/src/locale/wctrans_l.c +0 -6
  932. data/modules/emscripten/system/lib/libc/musl/src/locale/wctype_l.c +0 -9
  933. data/modules/emscripten/system/lib/libc/musl/src/multibyte/btowc.c +0 -7
  934. data/modules/emscripten/system/lib/libc/musl/src/multibyte/internal.c +0 -38
  935. data/modules/emscripten/system/lib/libc/musl/src/multibyte/internal.h +0 -22
  936. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mblen.c +0 -17
  937. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbrlen.c +0 -18
  938. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbrtowc.c +0 -57
  939. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsinit.c +0 -17
  940. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsnrtowcs.c +0 -65
  941. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsrtowcs.c +0 -100
  942. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbstowcs.c +0 -7
  943. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbtowc.c +0 -53
  944. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcrtomb.c +0 -38
  945. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcsnrtombs.c +0 -52
  946. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcsrtombs.c +0 -58
  947. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcstombs.c +0 -7
  948. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wctob.c +0 -8
  949. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wctomb.c +0 -18
  950. data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +0 -3352
  951. data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +0 -35
  952. data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +0 -1011
  953. data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +0 -158
  954. data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +0 -231
  955. data/modules/emscripten/system/lib/libc/musl/src/stdio/fwprintf.c +0 -13
  956. data/modules/emscripten/system/lib/libc/musl/src/stdio/swprintf.c +0 -14
  957. data/modules/emscripten/system/lib/libc/musl/src/stdio/vfwprintf.c +0 -361
  958. data/modules/emscripten/system/lib/libc/musl/src/stdio/vswprintf.c +0 -53
  959. data/modules/emscripten/system/lib/libc/musl/src/stdio/vwprintf.c +0 -7
  960. data/modules/emscripten/system/lib/libc/musl/src/stdio/wprintf.c +0 -13
  961. data/modules/emscripten/system/lib/libc/musl/src/stdlib/ecvt.c +0 -19
  962. data/modules/emscripten/system/lib/libc/musl/src/stdlib/fcvt.c +0 -25
  963. data/modules/emscripten/system/lib/libc/musl/src/stdlib/gcvt.c +0 -8
  964. data/modules/emscripten/system/lib/libc/musl/src/string/wcpcpy.c +0 -6
  965. data/modules/emscripten/system/lib/libc/musl/src/string/wcpncpy.c +0 -6
  966. data/modules/emscripten/system/lib/libc/musl/src/string/wcscasecmp.c +0 -7
  967. data/modules/emscripten/system/lib/libc/musl/src/string/wcscasecmp_l.c +0 -6
  968. data/modules/emscripten/system/lib/libc/musl/src/string/wcscat.c +0 -7
  969. data/modules/emscripten/system/lib/libc/musl/src/string/wcschr.c +0 -8
  970. data/modules/emscripten/system/lib/libc/musl/src/string/wcscmp.c +0 -7
  971. data/modules/emscripten/system/lib/libc/musl/src/string/wcscpy.c +0 -8
  972. data/modules/emscripten/system/lib/libc/musl/src/string/wcscspn.c +0 -10
  973. data/modules/emscripten/system/lib/libc/musl/src/string/wcsdup.c +0 -11
  974. data/modules/emscripten/system/lib/libc/musl/src/string/wcslen.c +0 -8
  975. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncasecmp.c +0 -9
  976. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncasecmp_l.c +0 -6
  977. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncat.c +0 -10
  978. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncmp.c +0 -7
  979. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncpy.c +0 -9
  980. data/modules/emscripten/system/lib/libc/musl/src/string/wcsnlen.c +0 -8
  981. data/modules/emscripten/system/lib/libc/musl/src/string/wcspbrk.c +0 -7
  982. data/modules/emscripten/system/lib/libc/musl/src/string/wcsrchr.c +0 -8
  983. data/modules/emscripten/system/lib/libc/musl/src/string/wcsspn.c +0 -8
  984. data/modules/emscripten/system/lib/libc/musl/src/string/wcsstr.c +0 -108
  985. data/modules/emscripten/system/lib/libc/musl/src/string/wcstok.c +0 -12
  986. data/modules/emscripten/system/lib/libc/musl/src/string/wcswcs.c +0 -6
  987. data/modules/emscripten/system/lib/libc/musl/src/string/wmemchr.c +0 -8
  988. data/modules/emscripten/system/lib/libc/musl/src/string/wmemcmp.c +0 -8
  989. data/modules/emscripten/system/lib/libc/musl/src/string/wmemcpy.c +0 -9
  990. data/modules/emscripten/system/lib/libc/musl/src/string/wmemmove.c +0 -12
  991. data/modules/emscripten/system/lib/libc/musl/src/string/wmemset.c +0 -9
  992. data/modules/emscripten/system/lib/libc/stdlib/getopt_long.c +0 -511
  993. data/modules/emscripten/system/lib/libc/stdlib/strtod.c +0 -305
  994. data/modules/emscripten/system/lib/libc.symbols +0 -81
  995. data/modules/emscripten/system/lib/libcextra.symbols +0 -115
  996. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +0 -123
  997. data/modules/emscripten/system/lib/libcxx/LICENSE.txt +0 -76
  998. data/modules/emscripten/system/lib/libcxx/algorithm.cpp +0 -84
  999. data/modules/emscripten/system/lib/libcxx/bind.cpp +0 -30
  1000. data/modules/emscripten/system/lib/libcxx/chrono.cpp +0 -132
  1001. data/modules/emscripten/system/lib/libcxx/condition_variable.cpp +0 -81
  1002. data/modules/emscripten/system/lib/libcxx/debug.cpp +0 -530
  1003. data/modules/emscripten/system/lib/libcxx/exception.cpp +0 -307
  1004. data/modules/emscripten/system/lib/libcxx/future.cpp +0 -291
  1005. data/modules/emscripten/system/lib/libcxx/hash.cpp +0 -570
  1006. data/modules/emscripten/system/lib/libcxx/ios.cpp +0 -460
  1007. data/modules/emscripten/system/lib/libcxx/iostream.cpp +0 -68
  1008. data/modules/emscripten/system/lib/libcxx/locale.cpp +0 -6169
  1009. data/modules/emscripten/system/lib/libcxx/memory.cpp +0 -223
  1010. data/modules/emscripten/system/lib/libcxx/mutex.cpp +0 -253
  1011. data/modules/emscripten/system/lib/libcxx/new.cpp +0 -239
  1012. data/modules/emscripten/system/lib/libcxx/optional.cpp +0 -25
  1013. data/modules/emscripten/system/lib/libcxx/random.cpp +0 -74
  1014. data/modules/emscripten/system/lib/libcxx/readme.txt +0 -1
  1015. data/modules/emscripten/system/lib/libcxx/regex.cpp +0 -325
  1016. data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +0 -101
  1017. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +0 -200
  1018. data/modules/emscripten/system/lib/libcxx/string.cpp +0 -530
  1019. data/modules/emscripten/system/lib/libcxx/strstream.cpp +0 -329
  1020. data/modules/emscripten/system/lib/libcxx/support/solaris/README +0 -4
  1021. data/modules/emscripten/system/lib/libcxx/support/solaris/mbsnrtowcs.inc +0 -76
  1022. data/modules/emscripten/system/lib/libcxx/support/solaris/wcsnrtombs.inc +0 -93
  1023. data/modules/emscripten/system/lib/libcxx/support/solaris/xlocale.c +0 -245
  1024. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +0 -95
  1025. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +0 -166
  1026. data/modules/emscripten/system/lib/libcxx/symbols +0 -2699
  1027. data/modules/emscripten/system/lib/libcxx/system_error.cpp +0 -205
  1028. data/modules/emscripten/system/lib/libcxx/thread.cpp +0 -225
  1029. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +0 -73
  1030. data/modules/emscripten/system/lib/libcxx/utility.cpp +0 -17
  1031. data/modules/emscripten/system/lib/libcxx/valarray.cpp +0 -56
  1032. data/modules/emscripten/system/lib/libcxxabi/CREDITS.TXT +0 -38
  1033. data/modules/emscripten/system/lib/libcxxabi/LICENSE.TXT +0 -76
  1034. data/modules/emscripten/system/lib/libcxxabi/include/cxa_demangle.h +0 -167
  1035. data/modules/emscripten/system/lib/libcxxabi/include/cxxabi.h +0 -175
  1036. data/modules/emscripten/system/lib/libcxxabi/lib/buildit +0 -99
  1037. data/modules/emscripten/system/lib/libcxxabi/readme.txt +0 -1
  1038. data/modules/emscripten/system/lib/libcxxabi/src/abort_message.cpp +0 -50
  1039. data/modules/emscripten/system/lib/libcxxabi/src/abort_message.h +0 -33
  1040. data/modules/emscripten/system/lib/libcxxabi/src/cxa_aux_runtime.cpp +0 -34
  1041. data/modules/emscripten/system/lib/libcxxabi/src/cxa_demangle.cpp +0 -11036
  1042. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception.cpp +0 -622
  1043. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception.hpp +0 -123
  1044. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception_storage.cpp +0 -91
  1045. data/modules/emscripten/system/lib/libcxxabi/src/cxa_guard.cpp +0 -231
  1046. data/modules/emscripten/system/lib/libcxxabi/src/cxa_handlers.cpp +0 -125
  1047. data/modules/emscripten/system/lib/libcxxabi/src/cxa_handlers.hpp +0 -54
  1048. data/modules/emscripten/system/lib/libcxxabi/src/cxa_new_delete.cpp +0 -242
  1049. data/modules/emscripten/system/lib/libcxxabi/src/cxa_personality.cpp +0 -1055
  1050. data/modules/emscripten/system/lib/libcxxabi/src/cxa_unexpected.cpp +0 -27
  1051. data/modules/emscripten/system/lib/libcxxabi/src/cxa_vector.cpp +0 -367
  1052. data/modules/emscripten/system/lib/libcxxabi/src/cxa_virtual.cpp +0 -31
  1053. data/modules/emscripten/system/lib/libcxxabi/src/exception.cpp +0 -41
  1054. data/modules/emscripten/system/lib/libcxxabi/src/fallback_malloc.ipp +0 -174
  1055. data/modules/emscripten/system/lib/libcxxabi/src/private_typeinfo.cpp +0 -1146
  1056. data/modules/emscripten/system/lib/libcxxabi/src/private_typeinfo.h +0 -248
  1057. data/modules/emscripten/system/lib/libcxxabi/src/stdexcept.cpp +0 -169
  1058. data/modules/emscripten/system/lib/libcxxabi/src/typeinfo.cpp +0 -53
  1059. data/modules/emscripten/system/lib/libcxxabi/symbols +0 -236
  1060. data/modules/emscripten/system/lib/sdl.cpp +0 -13
  1061. data/modules/emscripten/system/lib/sdl.symbols +0 -1
  1062. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/CppHeaderParser.py +0 -2347
  1063. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/__init__.py +0 -4
  1064. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/doc/CppHeaderParser.html +0 -657
  1065. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h +0 -147
  1066. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py +0 -74
  1067. data/modules/emscripten/third_party/CppHeaderParser/PKG-INFO +0 -249
  1068. data/modules/emscripten/third_party/CppHeaderParser/README.html +0 -544
  1069. data/modules/emscripten/third_party/CppHeaderParser/README.txt +0 -226
  1070. data/modules/emscripten/third_party/CppHeaderParser/setup.py +0 -43
  1071. data/modules/emscripten/third_party/ansidecl.h +0 -371
  1072. data/modules/emscripten/third_party/closure-compiler/COPYING +0 -202
  1073. data/modules/emscripten/third_party/closure-compiler/README +0 -292
  1074. data/modules/emscripten/third_party/closure-compiler/compiler.jar +0 -0
  1075. data/modules/emscripten/third_party/closure-compiler/readme.txt +0 -3
  1076. data/modules/emscripten/third_party/cp-demangle.h +0 -161
  1077. data/modules/emscripten/third_party/demangle.h +0 -549
  1078. data/modules/emscripten/third_party/demangler.py +0 -49
  1079. data/modules/emscripten/third_party/gcc_demangler.c +0 -4226
  1080. data/modules/emscripten/third_party/gcc_demangler.js +0 -21282
  1081. data/modules/emscripten/third_party/jni/emjvm.cpp +0 -133
  1082. data/modules/emscripten/third_party/jni/emjvm.h +0 -8
  1083. data/modules/emscripten/third_party/jni/emjvm.js +0 -185
  1084. data/modules/emscripten/third_party/jni/jni.h +0 -1154
  1085. data/modules/emscripten/third_party/libiberty.h +0 -634
  1086. data/modules/emscripten/third_party/lzma.js/README.markdown +0 -37
  1087. data/modules/emscripten/third_party/lzma.js/doit.bat +0 -4
  1088. data/modules/emscripten/third_party/lzma.js/doit.sh +0 -44
  1089. data/modules/emscripten/third_party/lzma.js/lzip/AUTHORS +0 -7
  1090. data/modules/emscripten/third_party/lzma.js/lzip/COPYING +0 -676
  1091. data/modules/emscripten/third_party/lzma.js/lzip/ChangeLog +0 -201
  1092. data/modules/emscripten/third_party/lzma.js/lzip/INSTALL +0 -56
  1093. data/modules/emscripten/third_party/lzma.js/lzip/Makefile +0 -160
  1094. data/modules/emscripten/third_party/lzma.js/lzip/Makefile.in +0 -138
  1095. data/modules/emscripten/third_party/lzma.js/lzip/NEWS +0 -22
  1096. data/modules/emscripten/third_party/lzma.js/lzip/README +0 -77
  1097. data/modules/emscripten/third_party/lzma.js/lzip/arg_parser.cc +0 -204
  1098. data/modules/emscripten/third_party/lzma.js/lzip/arg_parser.h +0 -106
  1099. data/modules/emscripten/third_party/lzma.js/lzip/configure +0 -192
  1100. data/modules/emscripten/third_party/lzma.js/lzip/decoder.cc +0 -252
  1101. data/modules/emscripten/third_party/lzma.js/lzip/decoder.h +0 -268
  1102. data/modules/emscripten/third_party/lzma.js/lzip/encoder.cc +0 -643
  1103. data/modules/emscripten/third_party/lzma.js/lzip/encoder.h +0 -582
  1104. data/modules/emscripten/third_party/lzma.js/lzip/fast_encoder.cc +0 -378
  1105. data/modules/emscripten/third_party/lzma.js/lzip/fast_encoder.h +0 -171
  1106. data/modules/emscripten/third_party/lzma.js/lzip/lzip.h +0 -264
  1107. data/modules/emscripten/third_party/lzma.js/lzip/main.cc +0 -545
  1108. data/modules/emscripten/third_party/lzma.js/lzma-decoder.js +0 -27
  1109. data/modules/emscripten/third_party/lzma.js/lzma-full.js +0 -27
  1110. data/modules/emscripten/third_party/lzma.js/native_test.sh +0 -5
  1111. data/modules/emscripten/third_party/lzma.js/post.js +0 -13
  1112. data/modules/emscripten/third_party/lzma.js/pre.js +0 -13
  1113. data/modules/emscripten/third_party/lzma.js/test-decoder.js +0 -39
  1114. data/modules/emscripten/third_party/lzma.js/test-full.html +0 -9
  1115. data/modules/emscripten/third_party/lzma.js/test-full.js +0 -78
  1116. data/modules/emscripten/third_party/ply/ANNOUNCE +0 -40
  1117. data/modules/emscripten/third_party/ply/CHANGES +0 -1093
  1118. data/modules/emscripten/third_party/ply/PKG-INFO +0 -22
  1119. data/modules/emscripten/third_party/ply/README +0 -271
  1120. data/modules/emscripten/third_party/ply/TODO +0 -16
  1121. data/modules/emscripten/third_party/ply/doc/internal.html +0 -874
  1122. data/modules/emscripten/third_party/ply/doc/makedoc.py +0 -194
  1123. data/modules/emscripten/third_party/ply/doc/ply.html +0 -3262
  1124. data/modules/emscripten/third_party/ply/example/BASIC/README +0 -79
  1125. data/modules/emscripten/third_party/ply/example/BASIC/basic.py +0 -71
  1126. data/modules/emscripten/third_party/ply/example/BASIC/basiclex.py +0 -74
  1127. data/modules/emscripten/third_party/ply/example/BASIC/basiclog.py +0 -79
  1128. data/modules/emscripten/third_party/ply/example/BASIC/basinterp.py +0 -441
  1129. data/modules/emscripten/third_party/ply/example/BASIC/basparse.py +0 -424
  1130. data/modules/emscripten/third_party/ply/example/BASIC/dim.bas +0 -14
  1131. data/modules/emscripten/third_party/ply/example/BASIC/func.bas +0 -5
  1132. data/modules/emscripten/third_party/ply/example/BASIC/gcd.bas +0 -22
  1133. data/modules/emscripten/third_party/ply/example/BASIC/gosub.bas +0 -13
  1134. data/modules/emscripten/third_party/ply/example/BASIC/hello.bas +0 -4
  1135. data/modules/emscripten/third_party/ply/example/BASIC/linear.bas +0 -17
  1136. data/modules/emscripten/third_party/ply/example/BASIC/maxsin.bas +0 -12
  1137. data/modules/emscripten/third_party/ply/example/BASIC/powers.bas +0 -13
  1138. data/modules/emscripten/third_party/ply/example/BASIC/rand.bas +0 -4
  1139. data/modules/emscripten/third_party/ply/example/BASIC/sales.bas +0 -20
  1140. data/modules/emscripten/third_party/ply/example/BASIC/sears.bas +0 -18
  1141. data/modules/emscripten/third_party/ply/example/BASIC/sqrt1.bas +0 -5
  1142. data/modules/emscripten/third_party/ply/example/BASIC/sqrt2.bas +0 -4
  1143. data/modules/emscripten/third_party/ply/example/GardenSnake/GardenSnake.py +0 -709
  1144. data/modules/emscripten/third_party/ply/example/GardenSnake/README +0 -5
  1145. data/modules/emscripten/third_party/ply/example/README +0 -10
  1146. data/modules/emscripten/third_party/ply/example/ansic/README +0 -2
  1147. data/modules/emscripten/third_party/ply/example/ansic/clex.py +0 -164
  1148. data/modules/emscripten/third_party/ply/example/ansic/cparse.py +0 -863
  1149. data/modules/emscripten/third_party/ply/example/calc/calc.py +0 -107
  1150. data/modules/emscripten/third_party/ply/example/calcdebug/calc.py +0 -113
  1151. data/modules/emscripten/third_party/ply/example/classcalc/calc.py +0 -157
  1152. data/modules/emscripten/third_party/ply/example/cleanup.sh +0 -2
  1153. data/modules/emscripten/third_party/ply/example/closurecalc/calc.py +0 -130
  1154. data/modules/emscripten/third_party/ply/example/hedit/hedit.py +0 -48
  1155. data/modules/emscripten/third_party/ply/example/newclasscalc/calc.py +0 -160
  1156. data/modules/emscripten/third_party/ply/example/optcalc/README +0 -9
  1157. data/modules/emscripten/third_party/ply/example/optcalc/calc.py +0 -119
  1158. data/modules/emscripten/third_party/ply/example/unicalc/calc.py +0 -117
  1159. data/modules/emscripten/third_party/ply/example/yply/README +0 -41
  1160. data/modules/emscripten/third_party/ply/example/yply/ylex.py +0 -112
  1161. data/modules/emscripten/third_party/ply/example/yply/yparse.py +0 -217
  1162. data/modules/emscripten/third_party/ply/example/yply/yply.py +0 -53
  1163. data/modules/emscripten/third_party/ply/ply/__init__.py +0 -4
  1164. data/modules/emscripten/third_party/ply/ply/cpp.py +0 -898
  1165. data/modules/emscripten/third_party/ply/ply/ctokens.py +0 -133
  1166. data/modules/emscripten/third_party/ply/ply/lex.py +0 -1058
  1167. data/modules/emscripten/third_party/ply/ply/yacc.py +0 -3276
  1168. data/modules/emscripten/third_party/ply/setup.py +0 -31
  1169. data/modules/emscripten/third_party/ply/test/README +0 -7
  1170. data/modules/emscripten/third_party/ply/test/calclex.py +0 -49
  1171. data/modules/emscripten/third_party/ply/test/cleanup.sh +0 -4
  1172. data/modules/emscripten/third_party/ply/test/lex_closure.py +0 -54
  1173. data/modules/emscripten/third_party/ply/test/lex_doc1.py +0 -26
  1174. data/modules/emscripten/third_party/ply/test/lex_dup1.py +0 -29
  1175. data/modules/emscripten/third_party/ply/test/lex_dup2.py +0 -33
  1176. data/modules/emscripten/third_party/ply/test/lex_dup3.py +0 -31
  1177. data/modules/emscripten/third_party/ply/test/lex_empty.py +0 -20
  1178. data/modules/emscripten/third_party/ply/test/lex_error1.py +0 -24
  1179. data/modules/emscripten/third_party/ply/test/lex_error2.py +0 -26
  1180. data/modules/emscripten/third_party/ply/test/lex_error3.py +0 -27
  1181. data/modules/emscripten/third_party/ply/test/lex_error4.py +0 -27
  1182. data/modules/emscripten/third_party/ply/test/lex_hedit.py +0 -47
  1183. data/modules/emscripten/third_party/ply/test/lex_ignore.py +0 -31
  1184. data/modules/emscripten/third_party/ply/test/lex_ignore2.py +0 -29
  1185. data/modules/emscripten/third_party/ply/test/lex_literal1.py +0 -25
  1186. data/modules/emscripten/third_party/ply/test/lex_literal2.py +0 -25
  1187. data/modules/emscripten/third_party/ply/test/lex_many_tokens.py +0 -27
  1188. data/modules/emscripten/third_party/ply/test/lex_module.py +0 -10
  1189. data/modules/emscripten/third_party/ply/test/lex_module_import.py +0 -42
  1190. data/modules/emscripten/third_party/ply/test/lex_object.py +0 -55
  1191. data/modules/emscripten/third_party/ply/test/lex_opt_alias.py +0 -54
  1192. data/modules/emscripten/third_party/ply/test/lex_optimize.py +0 -50
  1193. data/modules/emscripten/third_party/ply/test/lex_optimize2.py +0 -50
  1194. data/modules/emscripten/third_party/ply/test/lex_optimize3.py +0 -52
  1195. data/modules/emscripten/third_party/ply/test/lex_re1.py +0 -27
  1196. data/modules/emscripten/third_party/ply/test/lex_re2.py +0 -27
  1197. data/modules/emscripten/third_party/ply/test/lex_re3.py +0 -29
  1198. data/modules/emscripten/third_party/ply/test/lex_rule1.py +0 -27
  1199. data/modules/emscripten/third_party/ply/test/lex_rule2.py +0 -29
  1200. data/modules/emscripten/third_party/ply/test/lex_rule3.py +0 -27
  1201. data/modules/emscripten/third_party/ply/test/lex_state1.py +0 -40
  1202. data/modules/emscripten/third_party/ply/test/lex_state2.py +0 -40
  1203. data/modules/emscripten/third_party/ply/test/lex_state3.py +0 -42
  1204. data/modules/emscripten/third_party/ply/test/lex_state4.py +0 -41
  1205. data/modules/emscripten/third_party/ply/test/lex_state5.py +0 -40
  1206. data/modules/emscripten/third_party/ply/test/lex_state_noerror.py +0 -39
  1207. data/modules/emscripten/third_party/ply/test/lex_state_norule.py +0 -40
  1208. data/modules/emscripten/third_party/ply/test/lex_state_try.py +0 -45
  1209. data/modules/emscripten/third_party/ply/test/lex_token1.py +0 -19
  1210. data/modules/emscripten/third_party/ply/test/lex_token2.py +0 -22
  1211. data/modules/emscripten/third_party/ply/test/lex_token3.py +0 -24
  1212. data/modules/emscripten/third_party/ply/test/lex_token4.py +0 -26
  1213. data/modules/emscripten/third_party/ply/test/lex_token5.py +0 -31
  1214. data/modules/emscripten/third_party/ply/test/lex_token_dup.py +0 -29
  1215. data/modules/emscripten/third_party/ply/test/testlex.py +0 -606
  1216. data/modules/emscripten/third_party/ply/test/testyacc.py +0 -347
  1217. data/modules/emscripten/third_party/ply/test/yacc_badargs.py +0 -68
  1218. data/modules/emscripten/third_party/ply/test/yacc_badid.py +0 -77
  1219. data/modules/emscripten/third_party/ply/test/yacc_badprec.py +0 -64
  1220. data/modules/emscripten/third_party/ply/test/yacc_badprec2.py +0 -68
  1221. data/modules/emscripten/third_party/ply/test/yacc_badprec3.py +0 -68
  1222. data/modules/emscripten/third_party/ply/test/yacc_badrule.py +0 -68
  1223. data/modules/emscripten/third_party/ply/test/yacc_badtok.py +0 -68
  1224. data/modules/emscripten/third_party/ply/test/yacc_dup.py +0 -68
  1225. data/modules/emscripten/third_party/ply/test/yacc_error1.py +0 -68
  1226. data/modules/emscripten/third_party/ply/test/yacc_error2.py +0 -68
  1227. data/modules/emscripten/third_party/ply/test/yacc_error3.py +0 -67
  1228. data/modules/emscripten/third_party/ply/test/yacc_error4.py +0 -72
  1229. data/modules/emscripten/third_party/ply/test/yacc_inf.py +0 -56
  1230. data/modules/emscripten/third_party/ply/test/yacc_literal.py +0 -69
  1231. data/modules/emscripten/third_party/ply/test/yacc_misplaced.py +0 -68
  1232. data/modules/emscripten/third_party/ply/test/yacc_missing1.py +0 -68
  1233. data/modules/emscripten/third_party/ply/test/yacc_nested.py +0 -33
  1234. data/modules/emscripten/third_party/ply/test/yacc_nodoc.py +0 -67
  1235. data/modules/emscripten/third_party/ply/test/yacc_noerror.py +0 -66
  1236. data/modules/emscripten/third_party/ply/test/yacc_nop.py +0 -68
  1237. data/modules/emscripten/third_party/ply/test/yacc_notfunc.py +0 -66
  1238. data/modules/emscripten/third_party/ply/test/yacc_notok.py +0 -67
  1239. data/modules/emscripten/third_party/ply/test/yacc_prec1.py +0 -68
  1240. data/modules/emscripten/third_party/ply/test/yacc_rr.py +0 -72
  1241. data/modules/emscripten/third_party/ply/test/yacc_rr_unused.py +0 -30
  1242. data/modules/emscripten/third_party/ply/test/yacc_simple.py +0 -68
  1243. data/modules/emscripten/third_party/ply/test/yacc_sr.py +0 -63
  1244. data/modules/emscripten/third_party/ply/test/yacc_term1.py +0 -68
  1245. data/modules/emscripten/third_party/ply/test/yacc_unused.py +0 -77
  1246. data/modules/emscripten/third_party/ply/test/yacc_unused_rule.py +0 -72
  1247. data/modules/emscripten/third_party/ply/test/yacc_uprec.py +0 -63
  1248. data/modules/emscripten/third_party/ply/test/yacc_uprec2.py +0 -63
  1249. data/modules/emscripten/third_party/readme.txt +0 -7
  1250. data/modules/emscripten/third_party/stb_image.c +0 -4673
  1251. data/modules/emscripten/third_party/websockify/CHANGES.txt +0 -23
  1252. data/modules/emscripten/third_party/websockify/LICENSE.txt +0 -16
  1253. data/modules/emscripten/third_party/websockify/MANIFEST.in +0 -1
  1254. data/modules/emscripten/third_party/websockify/Makefile +0 -11
  1255. data/modules/emscripten/third_party/websockify/README.md +0 -168
  1256. data/modules/emscripten/third_party/websockify/Windows/Windows Service Readme.txt +0 -39
  1257. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Program.cs +0 -24
  1258. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.Designer.cs +0 -61
  1259. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.cs +0 -19
  1260. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.resx +0 -129
  1261. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Properties/AssemblyInfo.cs +0 -36
  1262. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Service1.Designer.cs +0 -37
  1263. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Service1.cs +0 -41
  1264. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/noVNC Websocket.csproj +0 -75
  1265. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/noVNC Websocket.sln +0 -20
  1266. data/modules/emscripten/third_party/websockify/docs/LICENSE.GPL-3 +0 -621
  1267. data/modules/emscripten/third_party/websockify/docs/LICENSE.LGPL-3 +0 -165
  1268. data/modules/emscripten/third_party/websockify/docs/LICENSE.MPL-2.0 +0 -373
  1269. data/modules/emscripten/third_party/websockify/docs/TODO +0 -9
  1270. data/modules/emscripten/third_party/websockify/docs/flash_policy.txt +0 -4
  1271. data/modules/emscripten/third_party/websockify/docs/latency_results.txt +0 -114
  1272. data/modules/emscripten/third_party/websockify/docs/notes +0 -17
  1273. data/modules/emscripten/third_party/websockify/docs/release.txt +0 -9
  1274. data/modules/emscripten/third_party/websockify/docs/websockify.1 +0 -110
  1275. data/modules/emscripten/third_party/websockify/include/VT100.js +0 -919
  1276. data/modules/emscripten/third_party/websockify/include/base64.js +0 -114
  1277. data/modules/emscripten/third_party/websockify/include/keysym.js +0 -99
  1278. data/modules/emscripten/third_party/websockify/include/util.js +0 -359
  1279. data/modules/emscripten/third_party/websockify/include/web-socket-js/README.txt +0 -109
  1280. data/modules/emscripten/third_party/websockify/include/web-socket-js/WebSocketMain.swf +0 -0
  1281. data/modules/emscripten/third_party/websockify/include/web-socket-js/swfobject.js +0 -4
  1282. data/modules/emscripten/third_party/websockify/include/web-socket-js/web_socket.js +0 -391
  1283. data/modules/emscripten/third_party/websockify/include/websock.js +0 -422
  1284. data/modules/emscripten/third_party/websockify/include/webutil.js +0 -216
  1285. data/modules/emscripten/third_party/websockify/include/wsirc.js +0 -235
  1286. data/modules/emscripten/third_party/websockify/include/wstelnet.js +0 -335
  1287. data/modules/emscripten/third_party/websockify/other/Makefile +0 -14
  1288. data/modules/emscripten/third_party/websockify/other/README.md +0 -51
  1289. data/modules/emscripten/third_party/websockify/other/launch.sh +0 -108
  1290. data/modules/emscripten/third_party/websockify/other/project.clj +0 -13
  1291. data/modules/emscripten/third_party/websockify/other/websocket.c +0 -802
  1292. data/modules/emscripten/third_party/websockify/other/websocket.h +0 -84
  1293. data/modules/emscripten/third_party/websockify/other/websocket.rb +0 -456
  1294. data/modules/emscripten/third_party/websockify/other/websockify.c +0 -385
  1295. data/modules/emscripten/third_party/websockify/other/websockify.clj +0 -233
  1296. data/modules/emscripten/third_party/websockify/other/websockify.js +0 -196
  1297. data/modules/emscripten/third_party/websockify/other/websockify.rb +0 -171
  1298. data/modules/emscripten/third_party/websockify/other/wswrap +0 -22
  1299. data/modules/emscripten/third_party/websockify/rebind +0 -18
  1300. data/modules/emscripten/third_party/websockify/rebind.c +0 -94
  1301. data/modules/emscripten/third_party/websockify/run +0 -5
  1302. data/modules/emscripten/third_party/websockify/setup.py +0 -30
  1303. data/modules/emscripten/third_party/websockify/tests/b64_vs_utf8.py +0 -29
  1304. data/modules/emscripten/third_party/websockify/tests/base64.html +0 -91
  1305. data/modules/emscripten/third_party/websockify/tests/base64.js +0 -12
  1306. data/modules/emscripten/third_party/websockify/tests/echo.html +0 -148
  1307. data/modules/emscripten/third_party/websockify/tests/echo.py +0 -75
  1308. data/modules/emscripten/third_party/websockify/tests/echo.rb +0 -62
  1309. data/modules/emscripten/third_party/websockify/tests/latency.html +0 -290
  1310. data/modules/emscripten/third_party/websockify/tests/latency.py +0 -75
  1311. data/modules/emscripten/third_party/websockify/tests/load.html +0 -250
  1312. data/modules/emscripten/third_party/websockify/tests/load.py +0 -167
  1313. data/modules/emscripten/third_party/websockify/tests/plain_echo.html +0 -168
  1314. data/modules/emscripten/third_party/websockify/tests/simple.html +0 -68
  1315. data/modules/emscripten/third_party/websockify/tests/utf8-list.py +0 -22
  1316. data/modules/emscripten/third_party/websockify/websockify/__init__.py +0 -2
  1317. data/modules/emscripten/third_party/websockify/websockify/websocket.py +0 -982
  1318. data/modules/emscripten/third_party/websockify/websockify/websocketproxy.py +0 -393
  1319. data/modules/emscripten/third_party/websockify/websockify.py +0 -5
  1320. data/modules/emscripten/third_party/websockify/wsirc.html +0 -99
  1321. data/modules/emscripten/third_party/websockify/wstelnet.html +0 -74
  1322. data/modules/emscripten/tools/__init__.py +0 -0
  1323. data/modules/emscripten/tools/asm_module.py +0 -275
  1324. data/modules/emscripten/tools/autodebugger.py +0 -291
  1325. data/modules/emscripten/tools/autodebugger_c.py +0 -37
  1326. data/modules/emscripten/tools/autodebugger_indenter.py +0 -18
  1327. data/modules/emscripten/tools/autodebugger_js.py +0 -47
  1328. data/modules/emscripten/tools/autodediffer.py +0 -60
  1329. data/modules/emscripten/tools/bindings_generator.py +0 -832
  1330. data/modules/emscripten/tools/bisect_pair.py +0 -88
  1331. data/modules/emscripten/tools/cache.py +0 -196
  1332. data/modules/emscripten/tools/clean_webconsole.py +0 -34
  1333. data/modules/emscripten/tools/crunch-worker.js +0 -124
  1334. data/modules/emscripten/tools/diff_autodebugger.py +0 -15
  1335. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +0 -307
  1336. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +0 -382
  1337. data/modules/emscripten/tools/eliminator/eliminator-test-output.js +0 -6136
  1338. data/modules/emscripten/tools/eliminator/eliminator-test.js +0 -8879
  1339. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/README.html +0 -888
  1340. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/README.org +0 -463
  1341. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/bin/uglifyjs +0 -317
  1342. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/docstyle.css +0 -75
  1343. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/object-ast.js +0 -75
  1344. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js +0 -1363
  1345. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/process.js +0 -2005
  1346. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/squeeze-more.js +0 -51
  1347. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/package.json +0 -22
  1348. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/beautify.js +0 -28
  1349. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/testparser.js +0 -402
  1350. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array1.js +0 -1
  1351. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array2.js +0 -1
  1352. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array3.js +0 -1
  1353. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array4.js +0 -1
  1354. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/assignment.js +0 -1
  1355. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/concatstring.js +0 -1
  1356. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/const.js +0 -1
  1357. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js +0 -1
  1358. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/forstatement.js +0 -1
  1359. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/if.js +0 -1
  1360. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js +0 -1
  1361. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js +0 -1
  1362. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue10.js +0 -1
  1363. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue11.js +0 -1
  1364. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue13.js +0 -1
  1365. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue14.js +0 -1
  1366. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue16.js +0 -1
  1367. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue17.js +0 -1
  1368. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue20.js +0 -1
  1369. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue21.js +0 -1
  1370. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue25.js +0 -1
  1371. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue27.js +0 -1
  1372. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue28.js +0 -1
  1373. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue29.js +0 -1
  1374. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue30.js +0 -1
  1375. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue34.js +0 -1
  1376. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue4.js +0 -1
  1377. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue48.js +0 -1
  1378. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue50.js +0 -1
  1379. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue53.js +0 -1
  1380. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js +0 -1
  1381. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue68.js +0 -1
  1382. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue69.js +0 -1
  1383. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue9.js +0 -1
  1384. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/mangle.js +0 -1
  1385. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js +0 -1
  1386. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/var.js +0 -1
  1387. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/with.js +0 -1
  1388. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array1.js +0 -3
  1389. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array2.js +0 -4
  1390. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array3.js +0 -4
  1391. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array4.js +0 -6
  1392. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/assignment.js +0 -20
  1393. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/concatstring.js +0 -3
  1394. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/const.js +0 -5
  1395. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js +0 -4
  1396. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/forstatement.js +0 -10
  1397. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/if.js +0 -6
  1398. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/ifreturn.js +0 -9
  1399. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js +0 -16
  1400. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue10.js +0 -1
  1401. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue11.js +0 -3
  1402. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue13.js +0 -1
  1403. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue14.js +0 -1
  1404. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue16.js +0 -1
  1405. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue17.js +0 -4
  1406. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue20.js +0 -1
  1407. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue21.js +0 -6
  1408. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue25.js +0 -7
  1409. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue27.js +0 -1
  1410. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue28.js +0 -3
  1411. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue29.js +0 -1
  1412. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue30.js +0 -3
  1413. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue34.js +0 -3
  1414. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue4.js +0 -3
  1415. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue48.js +0 -1
  1416. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue50.js +0 -9
  1417. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue53.js +0 -1
  1418. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue54.1.js +0 -3
  1419. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue68.js +0 -5
  1420. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue69.js +0 -1
  1421. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue9.js +0 -4
  1422. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/mangle.js +0 -5
  1423. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/strict-equals.js +0 -3
  1424. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/var.js +0 -3
  1425. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/with.js +0 -2
  1426. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/scripts.js +0 -55
  1427. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/hoist.js +0 -33
  1428. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/instrument.js +0 -97
  1429. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/instrument2.js +0 -138
  1430. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/test.js +0 -16
  1431. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/uglify-js.js +0 -17
  1432. data/modules/emscripten/tools/eliminator/safe-eliminator-test-output.js +0 -85
  1433. data/modules/emscripten/tools/eliminator/safe-eliminator-test.js +0 -103
  1434. data/modules/emscripten/tools/emconfiguren.py +0 -19
  1435. data/modules/emscripten/tools/emmaken.py +0 -230
  1436. data/modules/emscripten/tools/emmakenxx.py +0 -18
  1437. data/modules/emscripten/tools/exec_llvm.py +0 -50
  1438. data/modules/emscripten/tools/file2json.py +0 -49
  1439. data/modules/emscripten/tools/file_packager.py +0 -719
  1440. data/modules/emscripten/tools/find_bigfuncs.py +0 -23
  1441. data/modules/emscripten/tools/find_bigis.py +0 -18
  1442. data/modules/emscripten/tools/find_bigvars.py +0 -24
  1443. data/modules/emscripten/tools/fix_closure.py +0 -88
  1444. data/modules/emscripten/tools/gen_struct_info.py +0 -509
  1445. data/modules/emscripten/tools/ie7_fix.py +0 -14
  1446. data/modules/emscripten/tools/js-optimizer.js +0 -4023
  1447. data/modules/emscripten/tools/js_optimizer.py +0 -357
  1448. data/modules/emscripten/tools/jsrun.py +0 -37
  1449. data/modules/emscripten/tools/ll-strip.py +0 -56
  1450. data/modules/emscripten/tools/make_file.py +0 -19
  1451. data/modules/emscripten/tools/make_minigzip.py +0 -13
  1452. data/modules/emscripten/tools/merge_asm.py +0 -26
  1453. data/modules/emscripten/tools/namespacer.py +0 -95
  1454. data/modules/emscripten/tools/nativize_llvm.py +0 -34
  1455. data/modules/emscripten/tools/node_modules/source-map/CHANGELOG.md +0 -58
  1456. data/modules/emscripten/tools/node_modules/source-map/LICENSE +0 -28
  1457. data/modules/emscripten/tools/node_modules/source-map/Makefile.dryice.js +0 -166
  1458. data/modules/emscripten/tools/node_modules/source-map/README.md +0 -347
  1459. data/modules/emscripten/tools/node_modules/source-map/build/assert-shim.js +0 -56
  1460. data/modules/emscripten/tools/node_modules/source-map/build/mini-require.js +0 -152
  1461. data/modules/emscripten/tools/node_modules/source-map/build/prefix-source-map.jsm +0 -20
  1462. data/modules/emscripten/tools/node_modules/source-map/build/prefix-utils.jsm +0 -18
  1463. data/modules/emscripten/tools/node_modules/source-map/build/suffix-browser.js +0 -8
  1464. data/modules/emscripten/tools/node_modules/source-map/build/suffix-source-map.jsm +0 -6
  1465. data/modules/emscripten/tools/node_modules/source-map/build/suffix-utils.jsm +0 -21
  1466. data/modules/emscripten/tools/node_modules/source-map/build/test-prefix.js +0 -8
  1467. data/modules/emscripten/tools/node_modules/source-map/build/test-suffix.js +0 -3
  1468. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/array-set.js +0 -96
  1469. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/base64-vlq.js +0 -144
  1470. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/base64.js +0 -42
  1471. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/binary-search.js +0 -81
  1472. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-map-consumer.js +0 -430
  1473. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-map-generator.js +0 -381
  1474. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-node.js +0 -353
  1475. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/util.js +0 -117
  1476. data/modules/emscripten/tools/node_modules/source-map/lib/source-map.js +0 -8
  1477. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/LICENSE +0 -58
  1478. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/README.md +0 -119
  1479. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/amdefine.js +0 -299
  1480. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/package.json +0 -33
  1481. data/modules/emscripten/tools/node_modules/source-map/package.json +0 -74
  1482. data/modules/emscripten/tools/node_modules/source-map/test/run-tests.js +0 -73
  1483. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-api.js +0 -26
  1484. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-array-set.js +0 -71
  1485. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-base64-vlq.js +0 -24
  1486. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-base64.js +0 -35
  1487. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-binary-search.js +0 -54
  1488. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-dog-fooding.js +0 -72
  1489. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-map-consumer.js +0 -306
  1490. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-map-generator.js +0 -391
  1491. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-node.js +0 -282
  1492. data/modules/emscripten/tools/node_modules/source-map/test/source-map/util.js +0 -152
  1493. data/modules/emscripten/tools/reproduceriter.js +0 -216
  1494. data/modules/emscripten/tools/reproduceriter.py +0 -160
  1495. data/modules/emscripten/tools/response_file.py +0 -34
  1496. data/modules/emscripten/tools/scan_js.py +0 -20
  1497. data/modules/emscripten/tools/scan_ll.py +0 -18
  1498. data/modules/emscripten/tools/scons/site_scons/site_tools/emscripten/__init__.py +0 -3
  1499. data/modules/emscripten/tools/scons/site_scons/site_tools/emscripten/emscripten.py +0 -46
  1500. data/modules/emscripten/tools/settings_template_readonly.py +0 -49
  1501. data/modules/emscripten/tools/shared.py +0 -1705
  1502. data/modules/emscripten/tools/source-maps/sourcemap2json.js +0 -15
  1503. data/modules/emscripten/tools/source-maps/sourcemapper.js +0 -208
  1504. data/modules/emscripten/tools/split.py +0 -105
  1505. data/modules/emscripten/tools/split_asm.py +0 -30
  1506. data/modules/emscripten/tools/tempfiles.py +0 -41
  1507. data/modules/emscripten/tools/test-js-optimizer-asm-last-output.js +0 -75
  1508. data/modules/emscripten/tools/test-js-optimizer-asm-last.js +0 -91
  1509. data/modules/emscripten/tools/test-js-optimizer-asm-minlast-output.js +0 -2
  1510. data/modules/emscripten/tools/test-js-optimizer-asm-minlast.js +0 -8
  1511. data/modules/emscripten/tools/test-js-optimizer-asm-outline1-output.js +0 -929
  1512. data/modules/emscripten/tools/test-js-optimizer-asm-outline1.js +0 -351
  1513. data/modules/emscripten/tools/test-js-optimizer-asm-outline2-output.js +0 -793
  1514. data/modules/emscripten/tools/test-js-optimizer-asm-outline2.js +0 -606
  1515. data/modules/emscripten/tools/test-js-optimizer-asm-outline3-output.js +0 -28
  1516. data/modules/emscripten/tools/test-js-optimizer-asm-outline3.js +0 -30
  1517. data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +0 -522
  1518. data/modules/emscripten/tools/test-js-optimizer-asm-pre.js +0 -533
  1519. data/modules/emscripten/tools/test-js-optimizer-asm-regs-min-output.js +0 -36
  1520. data/modules/emscripten/tools/test-js-optimizer-asm-regs-min.js +0 -37
  1521. data/modules/emscripten/tools/test-js-optimizer-asm-regs-output.js +0 -106
  1522. data/modules/emscripten/tools/test-js-optimizer-asm-regs.js +0 -110
  1523. data/modules/emscripten/tools/test-js-optimizer-asm-relocate-output.js +0 -9
  1524. data/modules/emscripten/tools/test-js-optimizer-asm-relocate.js +0 -12
  1525. data/modules/emscripten/tools/test-js-optimizer-output.js +0 -291
  1526. data/modules/emscripten/tools/test-js-optimizer-regs-output.js +0 -232
  1527. data/modules/emscripten/tools/test-js-optimizer-regs.js +0 -237
  1528. data/modules/emscripten/tools/test-js-optimizer-t2-output.js +0 -91
  1529. data/modules/emscripten/tools/test-js-optimizer-t2.js +0 -92
  1530. data/modules/emscripten/tools/test-js-optimizer-t2c-output.js +0 -17
  1531. data/modules/emscripten/tools/test-js-optimizer-t2c.js +0 -18
  1532. data/modules/emscripten/tools/test-js-optimizer-t3-output.js +0 -49
  1533. data/modules/emscripten/tools/test-js-optimizer-t3.js +0 -50
  1534. data/modules/emscripten/tools/test-js-optimizer.js +0 -401
  1535. data/modules/emscripten/tools/validate_asmjs.py +0 -82
  1536. data/modules/mruby/mrblib/print.rb +0 -18
  1537. data/modules/mruby/src/re.h +0 -12
@@ -1,4465 +0,0 @@
1
- // -*- C++ -*-
2
- //===-------------------------- locale ------------------------------------===//
3
- //
4
- // The LLVM Compiler Infrastructure
5
- //
6
- // This file is dual licensed under the MIT and the University of Illinois Open
7
- // Source Licenses. See LICENSE.TXT for details.
8
- //
9
- //===----------------------------------------------------------------------===//
10
-
11
- #ifndef _LIBCPP_LOCALE
12
- #define _LIBCPP_LOCALE
13
-
14
- /*
15
- locale synopsis
16
-
17
- namespace std
18
- {
19
-
20
- class locale
21
- {
22
- public:
23
- // types:
24
- class facet;
25
- class id;
26
-
27
- typedef int category;
28
- static const category // values assigned here are for exposition only
29
- none = 0x000,
30
- collate = 0x010,
31
- ctype = 0x020,
32
- monetary = 0x040,
33
- numeric = 0x080,
34
- time = 0x100,
35
- messages = 0x200,
36
- all = collate | ctype | monetary | numeric | time | messages;
37
-
38
- // construct/copy/destroy:
39
- locale() noexcept;
40
- locale(const locale& other) noexcept;
41
- explicit locale(const char* std_name);
42
- explicit locale(const string& std_name);
43
- locale(const locale& other, const char* std_name, category);
44
- locale(const locale& other, const string& std_name, category);
45
- template <class Facet> locale(const locale& other, Facet* f);
46
- locale(const locale& other, const locale& one, category);
47
-
48
- ~locale(); // not virtual
49
-
50
- const locale& operator=(const locale& other) noexcept;
51
-
52
- template <class Facet> locale combine(const locale& other) const;
53
-
54
- // locale operations:
55
- basic_string<char> name() const;
56
- bool operator==(const locale& other) const;
57
- bool operator!=(const locale& other) const;
58
- template <class charT, class Traits, class Allocator>
59
- bool operator()(const basic_string<charT,Traits,Allocator>& s1,
60
- const basic_string<charT,Traits,Allocator>& s2) const;
61
-
62
- // global locale objects:
63
- static locale global(const locale&);
64
- static const locale& classic();
65
- };
66
-
67
- template <class Facet> const Facet& use_facet(const locale&);
68
- template <class Facet> bool has_facet(const locale&) noexcept;
69
-
70
- // 22.3.3, convenience interfaces:
71
- template <class charT> bool isspace (charT c, const locale& loc);
72
- template <class charT> bool isprint (charT c, const locale& loc);
73
- template <class charT> bool iscntrl (charT c, const locale& loc);
74
- template <class charT> bool isupper (charT c, const locale& loc);
75
- template <class charT> bool islower (charT c, const locale& loc);
76
- template <class charT> bool isalpha (charT c, const locale& loc);
77
- template <class charT> bool isdigit (charT c, const locale& loc);
78
- template <class charT> bool ispunct (charT c, const locale& loc);
79
- template <class charT> bool isxdigit(charT c, const locale& loc);
80
- template <class charT> bool isalnum (charT c, const locale& loc);
81
- template <class charT> bool isgraph (charT c, const locale& loc);
82
- template <class charT> charT toupper(charT c, const locale& loc);
83
- template <class charT> charT tolower(charT c, const locale& loc);
84
-
85
- template<class Codecvt, class Elem = wchar_t,
86
- class Wide_alloc = allocator<Elem>,
87
- class Byte_alloc = allocator<char>>
88
- class wstring_convert
89
- {
90
- public:
91
- typedef basic_string<char, char_traits<char>, Byte_alloc> byte_string;
92
- typedef basic_string<Elem, char_traits<Elem>, Wide_alloc> wide_string;
93
- typedef typename Codecvt::state_type state_type;
94
- typedef typename wide_string::traits_type::int_type int_type;
95
-
96
- explicit wstring_convert(Codecvt* pcvt = new Codecvt); // explicit in C++14
97
- wstring_convert(Codecvt* pcvt, state_type state);
98
- explicit wstring_convert(const byte_string& byte_err, // explicit in C++14
99
- const wide_string& wide_err = wide_string());
100
- wstring_convert(const wstring_convert&) = delete; // C++14
101
- wstring_convert & operator=(const wstring_convert &) = delete; // C++14
102
- ~wstring_convert();
103
-
104
- wide_string from_bytes(char byte);
105
- wide_string from_bytes(const char* ptr);
106
- wide_string from_bytes(const byte_string& str);
107
- wide_string from_bytes(const char* first, const char* last);
108
-
109
- byte_string to_bytes(Elem wchar);
110
- byte_string to_bytes(const Elem* wptr);
111
- byte_string to_bytes(const wide_string& wstr);
112
- byte_string to_bytes(const Elem* first, const Elem* last);
113
-
114
- size_t converted() const; // noexcept in C++14
115
- state_type state() const;
116
- };
117
-
118
- template <class Codecvt, class Elem = wchar_t, class Tr = char_traits<Elem>>
119
- class wbuffer_convert
120
- : public basic_streambuf<Elem, Tr>
121
- {
122
- public:
123
- typedef typename Tr::state_type state_type;
124
-
125
- explicit wbuffer_convert(streambuf* bytebuf = 0, Codecvt* pcvt = new Codecvt,
126
- state_type state = state_type()); // explicit in C++14
127
- wbuffer_convert(const wbuffer_convert&) = delete; // C++14
128
- wbuffer_convert & operator=(const wbuffer_convert &) = delete; // C++14
129
- ~wbuffer_convert(); // C++14
130
-
131
- streambuf* rdbuf() const;
132
- streambuf* rdbuf(streambuf* bytebuf);
133
-
134
- state_type state() const;
135
- };
136
-
137
- // 22.4.1 and 22.4.1.3, ctype:
138
- class ctype_base;
139
- template <class charT> class ctype;
140
- template <> class ctype<char>; // specialization
141
- template <class charT> class ctype_byname;
142
- template <> class ctype_byname<char>; // specialization
143
-
144
- class codecvt_base;
145
- template <class internT, class externT, class stateT> class codecvt;
146
- template <class internT, class externT, class stateT> class codecvt_byname;
147
-
148
- // 22.4.2 and 22.4.3, numeric:
149
- template <class charT, class InputIterator> class num_get;
150
- template <class charT, class OutputIterator> class num_put;
151
- template <class charT> class numpunct;
152
- template <class charT> class numpunct_byname;
153
-
154
- // 22.4.4, col lation:
155
- template <class charT> class collate;
156
- template <class charT> class collate_byname;
157
-
158
- // 22.4.5, date and time:
159
- class time_base;
160
- template <class charT, class InputIterator> class time_get;
161
- template <class charT, class InputIterator> class time_get_byname;
162
- template <class charT, class OutputIterator> class time_put;
163
- template <class charT, class OutputIterator> class time_put_byname;
164
-
165
- // 22.4.6, money:
166
- class money_base;
167
- template <class charT, class InputIterator> class money_get;
168
- template <class charT, class OutputIterator> class money_put;
169
- template <class charT, bool Intl> class moneypunct;
170
- template <class charT, bool Intl> class moneypunct_byname;
171
-
172
- // 22.4.7, message retrieval:
173
- class messages_base;
174
- template <class charT> class messages;
175
- template <class charT> class messages_byname;
176
-
177
- } // std
178
-
179
- */
180
-
181
- #include <__config>
182
- #include <__locale>
183
- #include <algorithm>
184
- #include <memory>
185
- #include <ios>
186
- #include <streambuf>
187
- #include <iterator>
188
- #include <limits>
189
- #ifndef __APPLE__
190
- #include <cstdarg>
191
- #endif
192
- #include <cstdlib>
193
- #include <ctime>
194
- #if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
195
- #include <support/win32/locale_win32.h>
196
- #else // _LIBCPP_MSVCRT
197
- #include <nl_types.h>
198
- #endif // !_LIBCPP_MSVCRT
199
-
200
- #ifdef __APPLE__
201
- #include <Availability.h>
202
- #endif
203
-
204
- #include <__undef_min_max>
205
-
206
- #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
207
- #pragma GCC system_header
208
- #endif
209
-
210
- _LIBCPP_BEGIN_NAMESPACE_STD
211
-
212
- #if defined(__APPLE__) || defined(__FreeBSD__)
213
- # define _LIBCPP_GET_C_LOCALE 0
214
- #elif defined(__NetBSD__)
215
- # define _LIBCPP_GET_C_LOCALE LC_C_LOCALE
216
- #else
217
- # define _LIBCPP_GET_C_LOCALE __cloc()
218
- // Get the C locale object
219
- _LIBCPP_FUNC_VIS locale_t __cloc();
220
- #define __cloc_defined
221
- #endif
222
-
223
- typedef _VSTD::remove_pointer<locale_t>::type __locale_struct;
224
- typedef _VSTD::unique_ptr<__locale_struct, decltype(&freelocale)> __locale_unique_ptr;
225
- #ifndef _LIBCPP_LOCALE__L_EXTENSIONS
226
- typedef _VSTD::unique_ptr<__locale_struct, decltype(&uselocale)> __locale_raii;
227
- #endif
228
-
229
- // OSX has nice foo_l() functions that let you turn off use of the global
230
- // locale. Linux, not so much. The following functions avoid the locale when
231
- // that's possible and otherwise do the wrong thing. FIXME.
232
- #if defined(__linux__) || defined(__EMSCRIPTEN__) || defined(_AIX)
233
-
234
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
235
- decltype(MB_CUR_MAX_L(_VSTD::declval<locale_t>()))
236
- inline _LIBCPP_INLINE_VISIBILITY
237
- __mb_cur_max_l(locale_t __l)
238
- {
239
- return MB_CUR_MAX_L(__l);
240
- }
241
- #else // _LIBCPP_LOCALE__L_EXTENSIONS
242
- inline _LIBCPP_ALWAYS_INLINE
243
- decltype(MB_CUR_MAX) __mb_cur_max_l(locale_t __l)
244
- {
245
- __locale_raii __current(uselocale(__l), uselocale);
246
- return MB_CUR_MAX;
247
- }
248
- #endif // _LIBCPP_LOCALE__L_EXTENSIONS
249
-
250
- inline _LIBCPP_ALWAYS_INLINE
251
- wint_t __btowc_l(int __c, locale_t __l)
252
- {
253
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
254
- return btowc_l(__c, __l);
255
- #else
256
- __locale_raii __current(uselocale(__l), uselocale);
257
- return btowc(__c);
258
- #endif
259
- }
260
-
261
- inline _LIBCPP_ALWAYS_INLINE
262
- int __wctob_l(wint_t __c, locale_t __l)
263
- {
264
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
265
- return wctob_l(__c, __l);
266
- #else
267
- __locale_raii __current(uselocale(__l), uselocale);
268
- return wctob(__c);
269
- #endif
270
- }
271
-
272
- inline _LIBCPP_ALWAYS_INLINE
273
- size_t __wcsnrtombs_l(char *__dest, const wchar_t **__src, size_t __nwc,
274
- size_t __len, mbstate_t *__ps, locale_t __l)
275
- {
276
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
277
- return wcsnrtombs_l(__dest, __src, __nwc, __len, __ps, __l);
278
- #else
279
- __locale_raii __current(uselocale(__l), uselocale);
280
- return wcsnrtombs(__dest, __src, __nwc, __len, __ps);
281
- #endif
282
- }
283
-
284
- inline _LIBCPP_ALWAYS_INLINE
285
- size_t __wcrtomb_l(char *__s, wchar_t __wc, mbstate_t *__ps, locale_t __l)
286
- {
287
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
288
- return wcrtomb_l(__s, __wc, __ps, __l);
289
- #else
290
- __locale_raii __current(uselocale(__l), uselocale);
291
- return wcrtomb(__s, __wc, __ps);
292
- #endif
293
- }
294
-
295
- inline _LIBCPP_ALWAYS_INLINE
296
- size_t __mbsnrtowcs_l(wchar_t * __dest, const char **__src, size_t __nms,
297
- size_t __len, mbstate_t *__ps, locale_t __l)
298
- {
299
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
300
- return mbsnrtowcs_l(__dest, __src, __nms, __len, __ps, __l);
301
- #else
302
- __locale_raii __current(uselocale(__l), uselocale);
303
- return mbsnrtowcs(__dest, __src, __nms, __len, __ps);
304
- #endif
305
- }
306
-
307
- inline _LIBCPP_ALWAYS_INLINE
308
- size_t __mbrtowc_l(wchar_t *__pwc, const char *__s, size_t __n,
309
- mbstate_t *__ps, locale_t __l)
310
- {
311
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
312
- return mbrtowc_l(__pwc, __s, __n, __ps, __l);
313
- #else
314
- __locale_raii __current(uselocale(__l), uselocale);
315
- return mbrtowc(__pwc, __s, __n, __ps);
316
- #endif
317
- }
318
-
319
- inline _LIBCPP_ALWAYS_INLINE
320
- int __mbtowc_l(wchar_t *__pwc, const char *__pmb, size_t __max, locale_t __l)
321
- {
322
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
323
- return mbtowc_l(__pwc, __pmb, __max, __l);
324
- #else
325
- __locale_raii __current(uselocale(__l), uselocale);
326
- return mbtowc(__pwc, __pmb, __max);
327
- #endif
328
- }
329
-
330
- inline _LIBCPP_ALWAYS_INLINE
331
- size_t __mbrlen_l(const char *__s, size_t __n, mbstate_t *__ps, locale_t __l)
332
- {
333
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
334
- return mbrlen_l(__s, __n, __ps, __l);
335
- #else
336
- __locale_raii __current(uselocale(__l), uselocale);
337
- return mbrlen(__s, __n, __ps);
338
- #endif
339
- }
340
-
341
- inline _LIBCPP_ALWAYS_INLINE
342
- lconv *__localeconv_l(locale_t __l)
343
- {
344
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
345
- return localeconv_l(__l);
346
- #else
347
- __locale_raii __current(uselocale(__l), uselocale);
348
- return localeconv();
349
- #endif
350
- }
351
-
352
- inline _LIBCPP_ALWAYS_INLINE
353
- size_t __mbsrtowcs_l(wchar_t *__dest, const char **__src, size_t __len,
354
- mbstate_t *__ps, locale_t __l)
355
- {
356
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
357
- return mbsrtowcs_l(__dest, __src, __len, __ps, __l);
358
- #else
359
- __locale_raii __current(uselocale(__l), uselocale);
360
- return mbsrtowcs(__dest, __src, __len, __ps);
361
- #endif
362
- }
363
-
364
- inline
365
- int __snprintf_l(char *__s, size_t __n, locale_t __l, const char *__format, ...) {
366
- va_list __va;
367
- va_start(__va, __format);
368
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
369
- int __res = vsnprintf_l(__s, __n, __l, __format, __va);
370
- #else
371
- __locale_raii __current(uselocale(__l), uselocale);
372
- int __res = vsnprintf(__s, __n, __format, __va);
373
- #endif
374
- va_end(__va);
375
- return __res;
376
- }
377
-
378
- inline
379
- int __asprintf_l(char **__s, locale_t __l, const char *__format, ...) {
380
- va_list __va;
381
- va_start(__va, __format);
382
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
383
- int __res = vasprintf_l(__s, __l, __format, __va);
384
- #else
385
- __locale_raii __current(uselocale(__l), uselocale);
386
- int __res = vasprintf(__s, __format, __va);
387
- #endif
388
- va_end(__va);
389
- return __res;
390
- }
391
-
392
- inline
393
- int __sscanf_l(const char *__s, locale_t __l, const char *__format, ...) {
394
- va_list __va;
395
- va_start(__va, __format);
396
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
397
- int __res = vsscanf_l(__s, __l, __format, __va);
398
- #else
399
- __locale_raii __current(uselocale(__l), uselocale);
400
- int __res = vsscanf(__s, __format, __va);
401
- #endif
402
- va_end(__va);
403
- return __res;
404
- }
405
-
406
- #endif // __linux__
407
-
408
- // __scan_keyword
409
- // Scans [__b, __e) until a match is found in the basic_strings range
410
- // [__kb, __ke) or until it can be shown that there is no match in [__kb, __ke).
411
- // __b will be incremented (visibly), consuming CharT until a match is found
412
- // or proved to not exist. A keyword may be "", in which will match anything.
413
- // If one keyword is a prefix of another, and the next CharT in the input
414
- // might match another keyword, the algorithm will attempt to find the longest
415
- // matching keyword. If the longer matching keyword ends up not matching, then
416
- // no keyword match is found. If no keyword match is found, __ke is returned
417
- // and failbit is set in __err.
418
- // Else an iterator pointing to the matching keyword is found. If more than
419
- // one keyword matches, an iterator to the first matching keyword is returned.
420
- // If on exit __b == __e, eofbit is set in __err. If __case_senstive is false,
421
- // __ct is used to force to lower case before comparing characters.
422
- // Examples:
423
- // Keywords: "a", "abb"
424
- // If the input is "a", the first keyword matches and eofbit is set.
425
- // If the input is "abc", no match is found and "ab" are consumed.
426
- template <class _InputIterator, class _ForwardIterator, class _Ctype>
427
- _LIBCPP_HIDDEN
428
- _ForwardIterator
429
- __scan_keyword(_InputIterator& __b, _InputIterator __e,
430
- _ForwardIterator __kb, _ForwardIterator __ke,
431
- const _Ctype& __ct, ios_base::iostate& __err,
432
- bool __case_sensitive = true)
433
- {
434
- typedef typename iterator_traits<_InputIterator>::value_type _CharT;
435
- size_t __nkw = static_cast<size_t>(_VSTD::distance(__kb, __ke));
436
- const unsigned char __doesnt_match = '\0';
437
- const unsigned char __might_match = '\1';
438
- const unsigned char __does_match = '\2';
439
- unsigned char __statbuf[100];
440
- unsigned char* __status = __statbuf;
441
- unique_ptr<unsigned char, void(*)(void*)> __stat_hold(0, free);
442
- if (__nkw > sizeof(__statbuf))
443
- {
444
- __status = (unsigned char*)malloc(__nkw);
445
- if (__status == 0)
446
- __throw_bad_alloc();
447
- __stat_hold.reset(__status);
448
- }
449
- size_t __n_might_match = __nkw; // At this point, any keyword might match
450
- size_t __n_does_match = 0; // but none of them definitely do
451
- // Initialize all statuses to __might_match, except for "" keywords are __does_match
452
- unsigned char* __st = __status;
453
- for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, ++__st)
454
- {
455
- if (!__ky->empty())
456
- *__st = __might_match;
457
- else
458
- {
459
- *__st = __does_match;
460
- --__n_might_match;
461
- ++__n_does_match;
462
- }
463
- }
464
- // While there might be a match, test keywords against the next CharT
465
- for (size_t __indx = 0; __b != __e && __n_might_match > 0; ++__indx)
466
- {
467
- // Peek at the next CharT but don't consume it
468
- _CharT __c = *__b;
469
- if (!__case_sensitive)
470
- __c = __ct.toupper(__c);
471
- bool __consume = false;
472
- // For each keyword which might match, see if the __indx character is __c
473
- // If a match if found, consume __c
474
- // If a match is found, and that is the last character in the keyword,
475
- // then that keyword matches.
476
- // If the keyword doesn't match this character, then change the keyword
477
- // to doesn't match
478
- __st = __status;
479
- for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, ++__st)
480
- {
481
- if (*__st == __might_match)
482
- {
483
- _CharT __kc = (*__ky)[__indx];
484
- if (!__case_sensitive)
485
- __kc = __ct.toupper(__kc);
486
- if (__c == __kc)
487
- {
488
- __consume = true;
489
- if (__ky->size() == __indx+1)
490
- {
491
- *__st = __does_match;
492
- --__n_might_match;
493
- ++__n_does_match;
494
- }
495
- }
496
- else
497
- {
498
- *__st = __doesnt_match;
499
- --__n_might_match;
500
- }
501
- }
502
- }
503
- // consume if we matched a character
504
- if (__consume)
505
- {
506
- ++__b;
507
- // If we consumed a character and there might be a matched keyword that
508
- // was marked matched on a previous iteration, then such keywords
509
- // which are now marked as not matching.
510
- if (__n_might_match + __n_does_match > 1)
511
- {
512
- __st = __status;
513
- for (_ForwardIterator __ky = __kb; __ky != __ke; ++__ky, ++__st)
514
- {
515
- if (*__st == __does_match && __ky->size() != __indx+1)
516
- {
517
- *__st = __doesnt_match;
518
- --__n_does_match;
519
- }
520
- }
521
- }
522
- }
523
- }
524
- // We've exited the loop because we hit eof and/or we have no more "might matches".
525
- if (__b == __e)
526
- __err |= ios_base::eofbit;
527
- // Return the first matching result
528
- for (__st = __status; __kb != __ke; ++__kb, ++__st)
529
- if (*__st == __does_match)
530
- break;
531
- if (__kb == __ke)
532
- __err |= ios_base::failbit;
533
- return __kb;
534
- }
535
-
536
- struct _LIBCPP_TYPE_VIS __num_get_base
537
- {
538
- static const int __num_get_buf_sz = 40;
539
-
540
- static int __get_base(ios_base&);
541
- static const char __src[33];
542
- };
543
-
544
- _LIBCPP_FUNC_VIS
545
- void __check_grouping(const string& __grouping, unsigned* __g, unsigned* __g_end,
546
- ios_base::iostate& __err);
547
-
548
- template <class _CharT>
549
- struct __num_get
550
- : protected __num_get_base
551
- {
552
- static string __stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep);
553
- static string __stage2_float_prep(ios_base& __iob, _CharT* __atoms, _CharT& __decimal_point,
554
- _CharT& __thousands_sep);
555
- static int __stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
556
- unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
557
- unsigned* __g, unsigned*& __g_end, _CharT* __atoms);
558
- static int __stage2_float_loop(_CharT __ct, bool& __in_units, char& __exp,
559
- char* __a, char*& __a_end,
560
- _CharT __decimal_point, _CharT __thousands_sep,
561
- const string& __grouping, unsigned* __g,
562
- unsigned*& __g_end, unsigned& __dc, _CharT* __atoms);
563
- };
564
-
565
- template <class _CharT>
566
- string
567
- __num_get<_CharT>::__stage2_int_prep(ios_base& __iob, _CharT* __atoms, _CharT& __thousands_sep)
568
- {
569
- locale __loc = __iob.getloc();
570
- use_facet<ctype<_CharT> >(__loc).widen(__src, __src + 26, __atoms);
571
- const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
572
- __thousands_sep = __np.thousands_sep();
573
- return __np.grouping();
574
- }
575
-
576
- template <class _CharT>
577
- string
578
- __num_get<_CharT>::__stage2_float_prep(ios_base& __iob, _CharT* __atoms, _CharT& __decimal_point,
579
- _CharT& __thousands_sep)
580
- {
581
- locale __loc = __iob.getloc();
582
- use_facet<ctype<_CharT> >(__loc).widen(__src, __src + 32, __atoms);
583
- const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__loc);
584
- __decimal_point = __np.decimal_point();
585
- __thousands_sep = __np.thousands_sep();
586
- return __np.grouping();
587
- }
588
-
589
- template <class _CharT>
590
- int
591
- __num_get<_CharT>::__stage2_int_loop(_CharT __ct, int __base, char* __a, char*& __a_end,
592
- unsigned& __dc, _CharT __thousands_sep, const string& __grouping,
593
- unsigned* __g, unsigned*& __g_end, _CharT* __atoms)
594
- {
595
- if (__a_end == __a && (__ct == __atoms[24] || __ct == __atoms[25]))
596
- {
597
- *__a_end++ = __ct == __atoms[24] ? '+' : '-';
598
- __dc = 0;
599
- return 0;
600
- }
601
- if (__grouping.size() != 0 && __ct == __thousands_sep)
602
- {
603
- if (__g_end-__g < __num_get_buf_sz)
604
- {
605
- *__g_end++ = __dc;
606
- __dc = 0;
607
- }
608
- return 0;
609
- }
610
- ptrdiff_t __f = find(__atoms, __atoms + 26, __ct) - __atoms;
611
- if (__f >= 24)
612
- return -1;
613
- switch (__base)
614
- {
615
- case 8:
616
- case 10:
617
- if (__f >= __base)
618
- return -1;
619
- break;
620
- case 16:
621
- if (__f < 22)
622
- break;
623
- if (__a_end != __a && __a_end - __a <= 2 && __a_end[-1] == '0')
624
- {
625
- __dc = 0;
626
- *__a_end++ = __src[__f];
627
- return 0;
628
- }
629
- return -1;
630
- }
631
- *__a_end++ = __src[__f];
632
- ++__dc;
633
- return 0;
634
- }
635
-
636
- template <class _CharT>
637
- int
638
- __num_get<_CharT>::__stage2_float_loop(_CharT __ct, bool& __in_units, char& __exp, char* __a, char*& __a_end,
639
- _CharT __decimal_point, _CharT __thousands_sep, const string& __grouping,
640
- unsigned* __g, unsigned*& __g_end, unsigned& __dc, _CharT* __atoms)
641
- {
642
- if (__ct == __decimal_point)
643
- {
644
- if (!__in_units)
645
- return -1;
646
- __in_units = false;
647
- *__a_end++ = '.';
648
- if (__grouping.size() != 0 && __g_end-__g < __num_get_buf_sz)
649
- *__g_end++ = __dc;
650
- return 0;
651
- }
652
- if (__ct == __thousands_sep && __grouping.size() != 0)
653
- {
654
- if (!__in_units)
655
- return -1;
656
- if (__g_end-__g < __num_get_buf_sz)
657
- {
658
- *__g_end++ = __dc;
659
- __dc = 0;
660
- }
661
- return 0;
662
- }
663
- ptrdiff_t __f = find(__atoms, __atoms + 32, __ct) - __atoms;
664
- if (__f >= 32)
665
- return -1;
666
- char __x = __src[__f];
667
- if (__x == '-' || __x == '+')
668
- {
669
- if (__a_end == __a || (__a_end[-1] & 0x5F) == (__exp & 0x7F))
670
- {
671
- *__a_end++ = __x;
672
- return 0;
673
- }
674
- return -1;
675
- }
676
- if (__x == 'x' || __x == 'X')
677
- __exp = 'P';
678
- else if ((__x & 0x5F) == __exp)
679
- {
680
- __exp |= 0x80;
681
- if (__in_units)
682
- {
683
- __in_units = false;
684
- if (__grouping.size() != 0 && __g_end-__g < __num_get_buf_sz)
685
- *__g_end++ = __dc;
686
- }
687
- }
688
- *__a_end++ = __x;
689
- if (__f >= 22)
690
- return 0;
691
- ++__dc;
692
- return 0;
693
- }
694
-
695
- _LIBCPP_EXTERN_TEMPLATE2(struct _LIBCPP_TYPE_VIS __num_get<char>)
696
- _LIBCPP_EXTERN_TEMPLATE2(struct _LIBCPP_TYPE_VIS __num_get<wchar_t>)
697
-
698
- template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
699
- class _LIBCPP_TYPE_VIS_ONLY num_get
700
- : public locale::facet,
701
- private __num_get<_CharT>
702
- {
703
- public:
704
- typedef _CharT char_type;
705
- typedef _InputIterator iter_type;
706
-
707
- _LIBCPP_ALWAYS_INLINE
708
- explicit num_get(size_t __refs = 0)
709
- : locale::facet(__refs) {}
710
-
711
- _LIBCPP_ALWAYS_INLINE
712
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
713
- ios_base::iostate& __err, bool& __v) const
714
- {
715
- return do_get(__b, __e, __iob, __err, __v);
716
- }
717
-
718
- _LIBCPP_ALWAYS_INLINE
719
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
720
- ios_base::iostate& __err, long& __v) const
721
- {
722
- return do_get(__b, __e, __iob, __err, __v);
723
- }
724
-
725
- _LIBCPP_ALWAYS_INLINE
726
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
727
- ios_base::iostate& __err, long long& __v) const
728
- {
729
- return do_get(__b, __e, __iob, __err, __v);
730
- }
731
-
732
- _LIBCPP_ALWAYS_INLINE
733
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
734
- ios_base::iostate& __err, unsigned short& __v) const
735
- {
736
- return do_get(__b, __e, __iob, __err, __v);
737
- }
738
-
739
- _LIBCPP_ALWAYS_INLINE
740
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
741
- ios_base::iostate& __err, unsigned int& __v) const
742
- {
743
- return do_get(__b, __e, __iob, __err, __v);
744
- }
745
-
746
- _LIBCPP_ALWAYS_INLINE
747
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
748
- ios_base::iostate& __err, unsigned long& __v) const
749
- {
750
- return do_get(__b, __e, __iob, __err, __v);
751
- }
752
-
753
- _LIBCPP_ALWAYS_INLINE
754
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
755
- ios_base::iostate& __err, unsigned long long& __v) const
756
- {
757
- return do_get(__b, __e, __iob, __err, __v);
758
- }
759
-
760
- _LIBCPP_ALWAYS_INLINE
761
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
762
- ios_base::iostate& __err, float& __v) const
763
- {
764
- return do_get(__b, __e, __iob, __err, __v);
765
- }
766
-
767
- _LIBCPP_ALWAYS_INLINE
768
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
769
- ios_base::iostate& __err, double& __v) const
770
- {
771
- return do_get(__b, __e, __iob, __err, __v);
772
- }
773
-
774
- _LIBCPP_ALWAYS_INLINE
775
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
776
- ios_base::iostate& __err, long double& __v) const
777
- {
778
- return do_get(__b, __e, __iob, __err, __v);
779
- }
780
-
781
- _LIBCPP_ALWAYS_INLINE
782
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
783
- ios_base::iostate& __err, void*& __v) const
784
- {
785
- return do_get(__b, __e, __iob, __err, __v);
786
- }
787
-
788
- static locale::id id;
789
-
790
- protected:
791
- _LIBCPP_ALWAYS_INLINE
792
- ~num_get() {}
793
-
794
- template <class _Fp>
795
- iter_type __do_get_floating_point
796
- (iter_type __b, iter_type __e, ios_base& __iob,
797
- ios_base::iostate& __err, _Fp& __v) const;
798
-
799
- template <class _Signed>
800
- iter_type __do_get_signed
801
- (iter_type __b, iter_type __e, ios_base& __iob,
802
- ios_base::iostate& __err, _Signed& __v) const;
803
-
804
- template <class _Unsigned>
805
- iter_type __do_get_unsigned
806
- (iter_type __b, iter_type __e, ios_base& __iob,
807
- ios_base::iostate& __err, _Unsigned& __v) const;
808
-
809
-
810
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
811
- ios_base::iostate& __err, bool& __v) const;
812
-
813
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
814
- ios_base::iostate& __err, long& __v) const
815
- { return this->__do_get_signed ( __b, __e, __iob, __err, __v ); }
816
-
817
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
818
- ios_base::iostate& __err, long long& __v) const
819
- { return this->__do_get_signed ( __b, __e, __iob, __err, __v ); }
820
-
821
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
822
- ios_base::iostate& __err, unsigned short& __v) const
823
- { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); }
824
-
825
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
826
- ios_base::iostate& __err, unsigned int& __v) const
827
- { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); }
828
-
829
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
830
- ios_base::iostate& __err, unsigned long& __v) const
831
- { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); }
832
-
833
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
834
- ios_base::iostate& __err, unsigned long long& __v) const
835
- { return this->__do_get_unsigned ( __b, __e, __iob, __err, __v ); }
836
-
837
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
838
- ios_base::iostate& __err, float& __v) const
839
- { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); }
840
-
841
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
842
- ios_base::iostate& __err, double& __v) const
843
- { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); }
844
-
845
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
846
- ios_base::iostate& __err, long double& __v) const
847
- { return this->__do_get_floating_point ( __b, __e, __iob, __err, __v ); }
848
-
849
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
850
- ios_base::iostate& __err, void*& __v) const;
851
- };
852
-
853
- template <class _CharT, class _InputIterator>
854
- locale::id
855
- num_get<_CharT, _InputIterator>::id;
856
-
857
- template <class _Tp>
858
- _Tp
859
- __num_get_signed_integral(const char* __a, const char* __a_end,
860
- ios_base::iostate& __err, int __base)
861
- {
862
- if (__a != __a_end)
863
- {
864
- typename remove_reference<decltype(errno)>::type __save_errno = errno;
865
- errno = 0;
866
- char *__p2;
867
- long long __ll = strtoll_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
868
- typename remove_reference<decltype(errno)>::type __current_errno = errno;
869
- if (__current_errno == 0)
870
- errno = __save_errno;
871
- if (__p2 != __a_end)
872
- {
873
- __err = ios_base::failbit;
874
- return 0;
875
- }
876
- else if (__current_errno == ERANGE ||
877
- __ll < numeric_limits<_Tp>::min() ||
878
- numeric_limits<_Tp>::max() < __ll)
879
- {
880
- __err = ios_base::failbit;
881
- if (__ll > 0)
882
- return numeric_limits<_Tp>::max();
883
- else
884
- return numeric_limits<_Tp>::min();
885
- }
886
- return static_cast<_Tp>(__ll);
887
- }
888
- __err = ios_base::failbit;
889
- return 0;
890
- }
891
-
892
- template <class _Tp>
893
- _Tp
894
- __num_get_unsigned_integral(const char* __a, const char* __a_end,
895
- ios_base::iostate& __err, int __base)
896
- {
897
- if (__a != __a_end)
898
- {
899
- if (*__a == '-')
900
- {
901
- __err = ios_base::failbit;
902
- return 0;
903
- }
904
- typename remove_reference<decltype(errno)>::type __save_errno = errno;
905
- errno = 0;
906
- char *__p2;
907
- unsigned long long __ll = strtoull_l(__a, &__p2, __base, _LIBCPP_GET_C_LOCALE);
908
- typename remove_reference<decltype(errno)>::type __current_errno = errno;
909
- if (__current_errno == 0)
910
- errno = __save_errno;
911
- if (__p2 != __a_end)
912
- {
913
- __err = ios_base::failbit;
914
- return 0;
915
- }
916
- else if (__current_errno == ERANGE ||
917
- numeric_limits<_Tp>::max() < __ll)
918
- {
919
- __err = ios_base::failbit;
920
- return numeric_limits<_Tp>::max();
921
- }
922
- return static_cast<_Tp>(__ll);
923
- }
924
- __err = ios_base::failbit;
925
- return 0;
926
- }
927
-
928
- template <class _Tp>
929
- _Tp
930
- __num_get_float(const char* __a, const char* __a_end, ios_base::iostate& __err)
931
- {
932
- if (__a != __a_end)
933
- {
934
- typename remove_reference<decltype(errno)>::type __save_errno = errno;
935
- errno = 0;
936
- char *__p2;
937
- long double __ld = strtold_l(__a, &__p2, _LIBCPP_GET_C_LOCALE);
938
- typename remove_reference<decltype(errno)>::type __current_errno = errno;
939
- if (__current_errno == 0)
940
- errno = __save_errno;
941
- if (__p2 != __a_end)
942
- {
943
- __err = ios_base::failbit;
944
- return 0;
945
- }
946
- else if (__current_errno == ERANGE)
947
- __err = ios_base::failbit;
948
- return static_cast<_Tp>(__ld);
949
- }
950
- __err = ios_base::failbit;
951
- return 0;
952
- }
953
-
954
- template <class _CharT, class _InputIterator>
955
- _InputIterator
956
- num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
957
- ios_base& __iob,
958
- ios_base::iostate& __err,
959
- bool& __v) const
960
- {
961
- if ((__iob.flags() & ios_base::boolalpha) == 0)
962
- {
963
- long __lv = -1;
964
- __b = do_get(__b, __e, __iob, __err, __lv);
965
- switch (__lv)
966
- {
967
- case 0:
968
- __v = false;
969
- break;
970
- case 1:
971
- __v = true;
972
- break;
973
- default:
974
- __v = true;
975
- __err = ios_base::failbit;
976
- break;
977
- }
978
- return __b;
979
- }
980
- const ctype<_CharT>& __ct = use_facet<ctype<_CharT> >(__iob.getloc());
981
- const numpunct<_CharT>& __np = use_facet<numpunct<_CharT> >(__iob.getloc());
982
- typedef typename numpunct<_CharT>::string_type string_type;
983
- const string_type __names[2] = {__np.truename(), __np.falsename()};
984
- const string_type* __i = __scan_keyword(__b, __e, __names, __names+2,
985
- __ct, __err);
986
- __v = __i == __names;
987
- return __b;
988
- }
989
-
990
- // signed
991
-
992
- template <class _CharT, class _InputIterator>
993
- template <class _Signed>
994
- _InputIterator
995
- num_get<_CharT, _InputIterator>::__do_get_signed(iter_type __b, iter_type __e,
996
- ios_base& __iob,
997
- ios_base::iostate& __err,
998
- _Signed& __v) const
999
- {
1000
- // Stage 1
1001
- int __base = this->__get_base(__iob);
1002
- // Stage 2
1003
- char_type __atoms[26];
1004
- char_type __thousands_sep;
1005
- string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
1006
- string __buf;
1007
- __buf.resize(__buf.capacity());
1008
- char* __a = &__buf[0];
1009
- char* __a_end = __a;
1010
- unsigned __g[__num_get_base::__num_get_buf_sz];
1011
- unsigned* __g_end = __g;
1012
- unsigned __dc = 0;
1013
- for (; __b != __e; ++__b)
1014
- {
1015
- if (__a_end - __a == __buf.size())
1016
- {
1017
- size_t __tmp = __buf.size();
1018
- __buf.resize(2*__buf.size());
1019
- __buf.resize(__buf.capacity());
1020
- __a = &__buf[0];
1021
- __a_end = __a + __tmp;
1022
- }
1023
- if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1024
- __thousands_sep, __grouping, __g, __g_end,
1025
- __atoms))
1026
- break;
1027
- }
1028
- if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
1029
- *__g_end++ = __dc;
1030
- // Stage 3
1031
- __v = __num_get_signed_integral<_Signed>(__a, __a_end, __err, __base);
1032
- // Digit grouping checked
1033
- __check_grouping(__grouping, __g, __g_end, __err);
1034
- // EOF checked
1035
- if (__b == __e)
1036
- __err |= ios_base::eofbit;
1037
- return __b;
1038
- }
1039
-
1040
- // unsigned
1041
-
1042
- template <class _CharT, class _InputIterator>
1043
- template <class _Unsigned>
1044
- _InputIterator
1045
- num_get<_CharT, _InputIterator>::__do_get_unsigned(iter_type __b, iter_type __e,
1046
- ios_base& __iob,
1047
- ios_base::iostate& __err,
1048
- _Unsigned& __v) const
1049
- {
1050
- // Stage 1
1051
- int __base = this->__get_base(__iob);
1052
- // Stage 2
1053
- char_type __atoms[26];
1054
- char_type __thousands_sep;
1055
- string __grouping = this->__stage2_int_prep(__iob, __atoms, __thousands_sep);
1056
- string __buf;
1057
- __buf.resize(__buf.capacity());
1058
- char* __a = &__buf[0];
1059
- char* __a_end = __a;
1060
- unsigned __g[__num_get_base::__num_get_buf_sz];
1061
- unsigned* __g_end = __g;
1062
- unsigned __dc = 0;
1063
- for (; __b != __e; ++__b)
1064
- {
1065
- if (__a_end - __a == __buf.size())
1066
- {
1067
- size_t __tmp = __buf.size();
1068
- __buf.resize(2*__buf.size());
1069
- __buf.resize(__buf.capacity());
1070
- __a = &__buf[0];
1071
- __a_end = __a + __tmp;
1072
- }
1073
- if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1074
- __thousands_sep, __grouping, __g, __g_end,
1075
- __atoms))
1076
- break;
1077
- }
1078
- if (__grouping.size() != 0 && __g_end-__g < __num_get_base::__num_get_buf_sz)
1079
- *__g_end++ = __dc;
1080
- // Stage 3
1081
- __v = __num_get_unsigned_integral<_Unsigned>(__a, __a_end, __err, __base);
1082
- // Digit grouping checked
1083
- __check_grouping(__grouping, __g, __g_end, __err);
1084
- // EOF checked
1085
- if (__b == __e)
1086
- __err |= ios_base::eofbit;
1087
- return __b;
1088
- }
1089
-
1090
- // floating point
1091
-
1092
- template <class _CharT, class _InputIterator>
1093
- template <class _Fp>
1094
- _InputIterator
1095
- num_get<_CharT, _InputIterator>::__do_get_floating_point(iter_type __b, iter_type __e,
1096
- ios_base& __iob,
1097
- ios_base::iostate& __err,
1098
- _Fp& __v) const
1099
- {
1100
- // Stage 1, nothing to do
1101
- // Stage 2
1102
- char_type __atoms[32];
1103
- char_type __decimal_point;
1104
- char_type __thousands_sep;
1105
- string __grouping = this->__stage2_float_prep(__iob, __atoms,
1106
- __decimal_point,
1107
- __thousands_sep);
1108
- string __buf;
1109
- __buf.resize(__buf.capacity());
1110
- char* __a = &__buf[0];
1111
- char* __a_end = __a;
1112
- unsigned __g[__num_get_base::__num_get_buf_sz];
1113
- unsigned* __g_end = __g;
1114
- unsigned __dc = 0;
1115
- bool __in_units = true;
1116
- char __exp = 'E';
1117
- for (; __b != __e; ++__b)
1118
- {
1119
- if (__a_end - __a == __buf.size())
1120
- {
1121
- size_t __tmp = __buf.size();
1122
- __buf.resize(2*__buf.size());
1123
- __buf.resize(__buf.capacity());
1124
- __a = &__buf[0];
1125
- __a_end = __a + __tmp;
1126
- }
1127
- if (this->__stage2_float_loop(*__b, __in_units, __exp, __a, __a_end,
1128
- __decimal_point, __thousands_sep,
1129
- __grouping, __g, __g_end,
1130
- __dc, __atoms))
1131
- break;
1132
- }
1133
- if (__grouping.size() != 0 && __in_units && __g_end-__g < __num_get_base::__num_get_buf_sz)
1134
- *__g_end++ = __dc;
1135
- // Stage 3
1136
- __v = __num_get_float<_Fp>(__a, __a_end, __err);
1137
- // Digit grouping checked
1138
- __check_grouping(__grouping, __g, __g_end, __err);
1139
- // EOF checked
1140
- if (__b == __e)
1141
- __err |= ios_base::eofbit;
1142
- return __b;
1143
- }
1144
-
1145
- template <class _CharT, class _InputIterator>
1146
- _InputIterator
1147
- num_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
1148
- ios_base& __iob,
1149
- ios_base::iostate& __err,
1150
- void*& __v) const
1151
- {
1152
- // Stage 1
1153
- int __base = 16;
1154
- // Stage 2
1155
- char_type __atoms[26];
1156
- char_type __thousands_sep = 0;
1157
- string __grouping;
1158
- use_facet<ctype<_CharT> >(__iob.getloc()).widen(__num_get_base::__src,
1159
- __num_get_base::__src + 26, __atoms);
1160
- string __buf;
1161
- __buf.resize(__buf.capacity());
1162
- char* __a = &__buf[0];
1163
- char* __a_end = __a;
1164
- unsigned __g[__num_get_base::__num_get_buf_sz];
1165
- unsigned* __g_end = __g;
1166
- unsigned __dc = 0;
1167
- for (; __b != __e; ++__b)
1168
- {
1169
- if (__a_end - __a == __buf.size())
1170
- {
1171
- size_t __tmp = __buf.size();
1172
- __buf.resize(2*__buf.size());
1173
- __buf.resize(__buf.capacity());
1174
- __a = &__buf[0];
1175
- __a_end = __a + __tmp;
1176
- }
1177
- if (this->__stage2_int_loop(*__b, __base, __a, __a_end, __dc,
1178
- __thousands_sep, __grouping,
1179
- __g, __g_end, __atoms))
1180
- break;
1181
- }
1182
- // Stage 3
1183
- __a[sizeof(__a)-1] = 0;
1184
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1185
- if (sscanf_l(__a, _LIBCPP_GET_C_LOCALE, "%p", &__v) != 1)
1186
- #else
1187
- if (__sscanf_l(__a, __cloc(), "%p", &__v) != 1)
1188
- #endif
1189
- __err = ios_base::failbit;
1190
- // EOF checked
1191
- if (__b == __e)
1192
- __err |= ios_base::eofbit;
1193
- return __b;
1194
- }
1195
-
1196
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS num_get<char>)
1197
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS num_get<wchar_t>)
1198
-
1199
- struct _LIBCPP_TYPE_VIS __num_put_base
1200
- {
1201
- protected:
1202
- static void __format_int(char* __fmt, const char* __len, bool __signd,
1203
- ios_base::fmtflags __flags);
1204
- static bool __format_float(char* __fmt, const char* __len,
1205
- ios_base::fmtflags __flags);
1206
- static char* __identify_padding(char* __nb, char* __ne,
1207
- const ios_base& __iob);
1208
- };
1209
-
1210
- template <class _CharT>
1211
- struct __num_put
1212
- : protected __num_put_base
1213
- {
1214
- static void __widen_and_group_int(char* __nb, char* __np, char* __ne,
1215
- _CharT* __ob, _CharT*& __op, _CharT*& __oe,
1216
- const locale& __loc);
1217
- static void __widen_and_group_float(char* __nb, char* __np, char* __ne,
1218
- _CharT* __ob, _CharT*& __op, _CharT*& __oe,
1219
- const locale& __loc);
1220
- };
1221
-
1222
- template <class _CharT>
1223
- void
1224
- __num_put<_CharT>::__widen_and_group_int(char* __nb, char* __np, char* __ne,
1225
- _CharT* __ob, _CharT*& __op, _CharT*& __oe,
1226
- const locale& __loc)
1227
- {
1228
- const ctype<_CharT>& __ct = use_facet<ctype<_CharT> > (__loc);
1229
- const numpunct<_CharT>& __npt = use_facet<numpunct<_CharT> >(__loc);
1230
- string __grouping = __npt.grouping();
1231
- if (__grouping.empty())
1232
- {
1233
- __ct.widen(__nb, __ne, __ob);
1234
- __oe = __ob + (__ne - __nb);
1235
- }
1236
- else
1237
- {
1238
- __oe = __ob;
1239
- char* __nf = __nb;
1240
- if (*__nf == '-' || *__nf == '+')
1241
- *__oe++ = __ct.widen(*__nf++);
1242
- if (__ne - __nf >= 2 && __nf[0] == '0' && (__nf[1] == 'x' ||
1243
- __nf[1] == 'X'))
1244
- {
1245
- *__oe++ = __ct.widen(*__nf++);
1246
- *__oe++ = __ct.widen(*__nf++);
1247
- }
1248
- reverse(__nf, __ne);
1249
- _CharT __thousands_sep = __npt.thousands_sep();
1250
- unsigned __dc = 0;
1251
- unsigned __dg = 0;
1252
- for (char* __p = __nf; __p < __ne; ++__p)
1253
- {
1254
- if (static_cast<unsigned>(__grouping[__dg]) > 0 &&
1255
- __dc == static_cast<unsigned>(__grouping[__dg]))
1256
- {
1257
- *__oe++ = __thousands_sep;
1258
- __dc = 0;
1259
- if (__dg < __grouping.size()-1)
1260
- ++__dg;
1261
- }
1262
- *__oe++ = __ct.widen(*__p);
1263
- ++__dc;
1264
- }
1265
- reverse(__ob + (__nf - __nb), __oe);
1266
- }
1267
- if (__np == __ne)
1268
- __op = __oe;
1269
- else
1270
- __op = __ob + (__np - __nb);
1271
- }
1272
-
1273
- template <class _CharT>
1274
- void
1275
- __num_put<_CharT>::__widen_and_group_float(char* __nb, char* __np, char* __ne,
1276
- _CharT* __ob, _CharT*& __op, _CharT*& __oe,
1277
- const locale& __loc)
1278
- {
1279
- const ctype<_CharT>& __ct = use_facet<ctype<_CharT> > (__loc);
1280
- const numpunct<_CharT>& __npt = use_facet<numpunct<_CharT> >(__loc);
1281
- string __grouping = __npt.grouping();
1282
- __oe = __ob;
1283
- char* __nf = __nb;
1284
- if (*__nf == '-' || *__nf == '+')
1285
- *__oe++ = __ct.widen(*__nf++);
1286
- char* __ns;
1287
- if (__ne - __nf >= 2 && __nf[0] == '0' && (__nf[1] == 'x' ||
1288
- __nf[1] == 'X'))
1289
- {
1290
- *__oe++ = __ct.widen(*__nf++);
1291
- *__oe++ = __ct.widen(*__nf++);
1292
- for (__ns = __nf; __ns < __ne; ++__ns)
1293
- if (!isxdigit_l(*__ns, _LIBCPP_GET_C_LOCALE))
1294
- break;
1295
- }
1296
- else
1297
- {
1298
- for (__ns = __nf; __ns < __ne; ++__ns)
1299
- if (!isdigit_l(*__ns, _LIBCPP_GET_C_LOCALE))
1300
- break;
1301
- }
1302
- if (__grouping.empty())
1303
- {
1304
- __ct.widen(__nf, __ns, __oe);
1305
- __oe += __ns - __nf;
1306
- }
1307
- else
1308
- {
1309
- reverse(__nf, __ns);
1310
- _CharT __thousands_sep = __npt.thousands_sep();
1311
- unsigned __dc = 0;
1312
- unsigned __dg = 0;
1313
- for (char* __p = __nf; __p < __ns; ++__p)
1314
- {
1315
- if (__grouping[__dg] > 0 && __dc == static_cast<unsigned>(__grouping[__dg]))
1316
- {
1317
- *__oe++ = __thousands_sep;
1318
- __dc = 0;
1319
- if (__dg < __grouping.size()-1)
1320
- ++__dg;
1321
- }
1322
- *__oe++ = __ct.widen(*__p);
1323
- ++__dc;
1324
- }
1325
- reverse(__ob + (__nf - __nb), __oe);
1326
- }
1327
- for (__nf = __ns; __nf < __ne; ++__nf)
1328
- {
1329
- if (*__nf == '.')
1330
- {
1331
- *__oe++ = __npt.decimal_point();
1332
- ++__nf;
1333
- break;
1334
- }
1335
- else
1336
- *__oe++ = __ct.widen(*__nf);
1337
- }
1338
- __ct.widen(__nf, __ne, __oe);
1339
- __oe += __ne - __nf;
1340
- if (__np == __ne)
1341
- __op = __oe;
1342
- else
1343
- __op = __ob + (__np - __nb);
1344
- }
1345
-
1346
- _LIBCPP_EXTERN_TEMPLATE2(struct _LIBCPP_TYPE_VIS __num_put<char>)
1347
- _LIBCPP_EXTERN_TEMPLATE2(struct _LIBCPP_TYPE_VIS __num_put<wchar_t>)
1348
-
1349
- template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
1350
- class _LIBCPP_TYPE_VIS_ONLY num_put
1351
- : public locale::facet,
1352
- private __num_put<_CharT>
1353
- {
1354
- public:
1355
- typedef _CharT char_type;
1356
- typedef _OutputIterator iter_type;
1357
-
1358
- _LIBCPP_ALWAYS_INLINE
1359
- explicit num_put(size_t __refs = 0)
1360
- : locale::facet(__refs) {}
1361
-
1362
- _LIBCPP_ALWAYS_INLINE
1363
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
1364
- bool __v) const
1365
- {
1366
- return do_put(__s, __iob, __fl, __v);
1367
- }
1368
-
1369
- _LIBCPP_ALWAYS_INLINE
1370
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
1371
- long __v) const
1372
- {
1373
- return do_put(__s, __iob, __fl, __v);
1374
- }
1375
-
1376
- _LIBCPP_ALWAYS_INLINE
1377
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
1378
- long long __v) const
1379
- {
1380
- return do_put(__s, __iob, __fl, __v);
1381
- }
1382
-
1383
- _LIBCPP_ALWAYS_INLINE
1384
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
1385
- unsigned long __v) const
1386
- {
1387
- return do_put(__s, __iob, __fl, __v);
1388
- }
1389
-
1390
- _LIBCPP_ALWAYS_INLINE
1391
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
1392
- unsigned long long __v) const
1393
- {
1394
- return do_put(__s, __iob, __fl, __v);
1395
- }
1396
-
1397
- _LIBCPP_ALWAYS_INLINE
1398
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
1399
- double __v) const
1400
- {
1401
- return do_put(__s, __iob, __fl, __v);
1402
- }
1403
-
1404
- _LIBCPP_ALWAYS_INLINE
1405
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
1406
- long double __v) const
1407
- {
1408
- return do_put(__s, __iob, __fl, __v);
1409
- }
1410
-
1411
- _LIBCPP_ALWAYS_INLINE
1412
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
1413
- const void* __v) const
1414
- {
1415
- return do_put(__s, __iob, __fl, __v);
1416
- }
1417
-
1418
- static locale::id id;
1419
-
1420
- protected:
1421
- _LIBCPP_ALWAYS_INLINE
1422
- ~num_put() {}
1423
-
1424
- virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
1425
- bool __v) const;
1426
- virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
1427
- long __v) const;
1428
- virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
1429
- long long __v) const;
1430
- virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
1431
- unsigned long) const;
1432
- virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
1433
- unsigned long long) const;
1434
- virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
1435
- double __v) const;
1436
- virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
1437
- long double __v) const;
1438
- virtual iter_type do_put(iter_type __s, ios_base& __iob, char_type __fl,
1439
- const void* __v) const;
1440
- };
1441
-
1442
- template <class _CharT, class _OutputIterator>
1443
- locale::id
1444
- num_put<_CharT, _OutputIterator>::id;
1445
-
1446
- template <class _CharT, class _OutputIterator>
1447
- _LIBCPP_HIDDEN
1448
- _OutputIterator
1449
- __pad_and_output(_OutputIterator __s,
1450
- const _CharT* __ob, const _CharT* __op, const _CharT* __oe,
1451
- ios_base& __iob, _CharT __fl)
1452
- {
1453
- streamsize __sz = __oe - __ob;
1454
- streamsize __ns = __iob.width();
1455
- if (__ns > __sz)
1456
- __ns -= __sz;
1457
- else
1458
- __ns = 0;
1459
- for (;__ob < __op; ++__ob, ++__s)
1460
- *__s = *__ob;
1461
- for (; __ns; --__ns, ++__s)
1462
- *__s = __fl;
1463
- for (; __ob < __oe; ++__ob, ++__s)
1464
- *__s = *__ob;
1465
- __iob.width(0);
1466
- return __s;
1467
- }
1468
-
1469
- #if !defined(__APPLE__) || \
1470
- (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED > __MAC_10_8) || \
1471
- (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_6_0)
1472
-
1473
- template <class _CharT, class _Traits>
1474
- _LIBCPP_HIDDEN
1475
- ostreambuf_iterator<_CharT, _Traits>
1476
- __pad_and_output(ostreambuf_iterator<_CharT, _Traits> __s,
1477
- const _CharT* __ob, const _CharT* __op, const _CharT* __oe,
1478
- ios_base& __iob, _CharT __fl)
1479
- {
1480
- if (__s.__sbuf_ == nullptr)
1481
- return __s;
1482
- streamsize __sz = __oe - __ob;
1483
- streamsize __ns = __iob.width();
1484
- if (__ns > __sz)
1485
- __ns -= __sz;
1486
- else
1487
- __ns = 0;
1488
- streamsize __np = __op - __ob;
1489
- if (__np > 0)
1490
- {
1491
- if (__s.__sbuf_->sputn(__ob, __np) != __np)
1492
- {
1493
- __s.__sbuf_ = nullptr;
1494
- return __s;
1495
- }
1496
- }
1497
- if (__ns > 0)
1498
- {
1499
- basic_string<_CharT, _Traits> __sp(__ns, __fl);
1500
- if (__s.__sbuf_->sputn(__sp.data(), __ns) != __ns)
1501
- {
1502
- __s.__sbuf_ = nullptr;
1503
- return __s;
1504
- }
1505
- }
1506
- __np = __oe - __op;
1507
- if (__np > 0)
1508
- {
1509
- if (__s.__sbuf_->sputn(__op, __np) != __np)
1510
- {
1511
- __s.__sbuf_ = nullptr;
1512
- return __s;
1513
- }
1514
- }
1515
- __iob.width(0);
1516
- return __s;
1517
- }
1518
-
1519
- #endif
1520
-
1521
- template <class _CharT, class _OutputIterator>
1522
- _OutputIterator
1523
- num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1524
- char_type __fl, bool __v) const
1525
- {
1526
- if ((__iob.flags() & ios_base::boolalpha) == 0)
1527
- return do_put(__s, __iob, __fl, (unsigned long)__v);
1528
- const numpunct<char_type>& __np = use_facet<numpunct<char_type> >(__iob.getloc());
1529
- typedef typename numpunct<char_type>::string_type string_type;
1530
- #if _LIBCPP_DEBUG_LEVEL >= 2
1531
- string_type __tmp(__v ? __np.truename() : __np.falsename());
1532
- string_type __nm = _VSTD::move(__tmp);
1533
- #else
1534
- string_type __nm = __v ? __np.truename() : __np.falsename();
1535
- #endif
1536
- for (typename string_type::iterator __i = __nm.begin(); __i != __nm.end(); ++__i, ++__s)
1537
- *__s = *__i;
1538
- return __s;
1539
- }
1540
-
1541
- template <class _CharT, class _OutputIterator>
1542
- _OutputIterator
1543
- num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1544
- char_type __fl, long __v) const
1545
- {
1546
- // Stage 1 - Get number in narrow char
1547
- char __fmt[6] = {'%', 0};
1548
- const char* __len = "l";
1549
- this->__format_int(__fmt+1, __len, true, __iob.flags());
1550
- const unsigned __nbuf = (numeric_limits<long>::digits / 3)
1551
- + ((numeric_limits<long>::digits % 3) != 0)
1552
- + 1;
1553
- char __nar[__nbuf];
1554
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1555
- int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1556
- #else
1557
- int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1558
- #endif
1559
- char* __ne = __nar + __nc;
1560
- char* __np = this->__identify_padding(__nar, __ne, __iob);
1561
- // Stage 2 - Widen __nar while adding thousands separators
1562
- char_type __o[2*(__nbuf-1) - 1];
1563
- char_type* __op; // pad here
1564
- char_type* __oe; // end of output
1565
- this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
1566
- // [__o, __oe) contains thousands_sep'd wide number
1567
- // Stage 3 & 4
1568
- return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
1569
- }
1570
-
1571
- template <class _CharT, class _OutputIterator>
1572
- _OutputIterator
1573
- num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1574
- char_type __fl, long long __v) const
1575
- {
1576
- // Stage 1 - Get number in narrow char
1577
- char __fmt[8] = {'%', 0};
1578
- const char* __len = "ll";
1579
- this->__format_int(__fmt+1, __len, true, __iob.flags());
1580
- const unsigned __nbuf = (numeric_limits<long long>::digits / 3)
1581
- + ((numeric_limits<long long>::digits % 3) != 0)
1582
- + 1;
1583
- char __nar[__nbuf];
1584
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1585
- int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1586
- #else
1587
- int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1588
- #endif
1589
- char* __ne = __nar + __nc;
1590
- char* __np = this->__identify_padding(__nar, __ne, __iob);
1591
- // Stage 2 - Widen __nar while adding thousands separators
1592
- char_type __o[2*(__nbuf-1) - 1];
1593
- char_type* __op; // pad here
1594
- char_type* __oe; // end of output
1595
- this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
1596
- // [__o, __oe) contains thousands_sep'd wide number
1597
- // Stage 3 & 4
1598
- return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
1599
- }
1600
-
1601
- template <class _CharT, class _OutputIterator>
1602
- _OutputIterator
1603
- num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1604
- char_type __fl, unsigned long __v) const
1605
- {
1606
- // Stage 1 - Get number in narrow char
1607
- char __fmt[6] = {'%', 0};
1608
- const char* __len = "l";
1609
- this->__format_int(__fmt+1, __len, false, __iob.flags());
1610
- const unsigned __nbuf = (numeric_limits<unsigned long>::digits / 3)
1611
- + ((numeric_limits<unsigned long>::digits % 3) != 0)
1612
- + 1;
1613
- char __nar[__nbuf];
1614
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1615
- int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1616
- #else
1617
- int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1618
- #endif
1619
- char* __ne = __nar + __nc;
1620
- char* __np = this->__identify_padding(__nar, __ne, __iob);
1621
- // Stage 2 - Widen __nar while adding thousands separators
1622
- char_type __o[2*(__nbuf-1) - 1];
1623
- char_type* __op; // pad here
1624
- char_type* __oe; // end of output
1625
- this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
1626
- // [__o, __oe) contains thousands_sep'd wide number
1627
- // Stage 3 & 4
1628
- return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
1629
- }
1630
-
1631
- template <class _CharT, class _OutputIterator>
1632
- _OutputIterator
1633
- num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1634
- char_type __fl, unsigned long long __v) const
1635
- {
1636
- // Stage 1 - Get number in narrow char
1637
- char __fmt[8] = {'%', 0};
1638
- const char* __len = "ll";
1639
- this->__format_int(__fmt+1, __len, false, __iob.flags());
1640
- const unsigned __nbuf = (numeric_limits<unsigned long long>::digits / 3)
1641
- + ((numeric_limits<unsigned long long>::digits % 3) != 0)
1642
- + 1;
1643
- char __nar[__nbuf];
1644
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1645
- int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1646
- #else
1647
- int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1648
- #endif
1649
- char* __ne = __nar + __nc;
1650
- char* __np = this->__identify_padding(__nar, __ne, __iob);
1651
- // Stage 2 - Widen __nar while adding thousands separators
1652
- char_type __o[2*(__nbuf-1) - 1];
1653
- char_type* __op; // pad here
1654
- char_type* __oe; // end of output
1655
- this->__widen_and_group_int(__nar, __np, __ne, __o, __op, __oe, __iob.getloc());
1656
- // [__o, __oe) contains thousands_sep'd wide number
1657
- // Stage 3 & 4
1658
- return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
1659
- }
1660
-
1661
- template <class _CharT, class _OutputIterator>
1662
- _OutputIterator
1663
- num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1664
- char_type __fl, double __v) const
1665
- {
1666
- // Stage 1 - Get number in narrow char
1667
- char __fmt[8] = {'%', 0};
1668
- const char* __len = "";
1669
- bool __specify_precision = this->__format_float(__fmt+1, __len, __iob.flags());
1670
- const unsigned __nbuf = 30;
1671
- char __nar[__nbuf];
1672
- char* __nb = __nar;
1673
- int __nc;
1674
- if (__specify_precision)
1675
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1676
- __nc = snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt,
1677
- (int)__iob.precision(), __v);
1678
- #else
1679
- __nc = __snprintf_l(__nb, __nbuf, __cloc(), __fmt,
1680
- (int)__iob.precision(), __v);
1681
- #endif
1682
- else
1683
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1684
- __nc = snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt, __v);
1685
- #else
1686
- __nc = __snprintf_l(__nb, __nbuf, __cloc(), __fmt, __v);
1687
- #endif
1688
- unique_ptr<char, void(*)(void*)> __nbh(0, free);
1689
- if (__nc > static_cast<int>(__nbuf-1))
1690
- {
1691
- if (__specify_precision)
1692
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1693
- __nc = asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, (int)__iob.precision(), __v);
1694
- #else
1695
- __nc = __asprintf_l(&__nb, __cloc(), __fmt,
1696
- (int)__iob.precision(), __v);
1697
- #endif
1698
- else
1699
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1700
- __nc = asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, __v);
1701
- #else
1702
- __nc = __asprintf_l(&__nb, __cloc(), __fmt, (int)__iob.precision(), __v);
1703
- #endif
1704
- if (__nb == 0)
1705
- __throw_bad_alloc();
1706
- __nbh.reset(__nb);
1707
- }
1708
- char* __ne = __nb + __nc;
1709
- char* __np = this->__identify_padding(__nb, __ne, __iob);
1710
- // Stage 2 - Widen __nar while adding thousands separators
1711
- char_type __o[2*(__nbuf-1) - 1];
1712
- char_type* __ob = __o;
1713
- unique_ptr<char_type, void(*)(void*)> __obh(0, free);
1714
- if (__nb != __nar)
1715
- {
1716
- __ob = (char_type*)malloc(2*static_cast<size_t>(__nc)*sizeof(char_type));
1717
- if (__ob == 0)
1718
- __throw_bad_alloc();
1719
- __obh.reset(__ob);
1720
- }
1721
- char_type* __op; // pad here
1722
- char_type* __oe; // end of output
1723
- this->__widen_and_group_float(__nb, __np, __ne, __ob, __op, __oe, __iob.getloc());
1724
- // [__o, __oe) contains thousands_sep'd wide number
1725
- // Stage 3 & 4
1726
- __s = __pad_and_output(__s, __ob, __op, __oe, __iob, __fl);
1727
- return __s;
1728
- }
1729
-
1730
- template <class _CharT, class _OutputIterator>
1731
- _OutputIterator
1732
- num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1733
- char_type __fl, long double __v) const
1734
- {
1735
- // Stage 1 - Get number in narrow char
1736
- char __fmt[8] = {'%', 0};
1737
- const char* __len = "L";
1738
- bool __specify_precision = this->__format_float(__fmt+1, __len, __iob.flags());
1739
- const unsigned __nbuf = 30;
1740
- char __nar[__nbuf];
1741
- char* __nb = __nar;
1742
- int __nc;
1743
- if (__specify_precision)
1744
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1745
- __nc = snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt,
1746
- (int)__iob.precision(), __v);
1747
- #else
1748
- __nc = __snprintf_l(__nb, __nbuf, __cloc(), __fmt,
1749
- (int)__iob.precision(), __v);
1750
- #endif
1751
- else
1752
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1753
- __nc = snprintf_l(__nb, __nbuf, _LIBCPP_GET_C_LOCALE, __fmt, __v);
1754
- #else
1755
- __nc = __snprintf_l(__nb, __nbuf, __cloc(), __fmt, __v);
1756
- #endif
1757
- unique_ptr<char, void(*)(void*)> __nbh(0, free);
1758
- if (__nc > static_cast<int>(__nbuf-1))
1759
- {
1760
- if (__specify_precision)
1761
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1762
- __nc = asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, (int)__iob.precision(), __v);
1763
- #else
1764
- __nc = __asprintf_l(&__nb, __cloc(), __fmt,
1765
- (int)__iob.precision(), __v);
1766
- #endif
1767
- else
1768
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1769
- __nc = asprintf_l(&__nb, _LIBCPP_GET_C_LOCALE, __fmt, __v);
1770
- #else
1771
- __nc = __asprintf_l(&__nb, __cloc(), __fmt, __v);
1772
- #endif
1773
- if (__nb == 0)
1774
- __throw_bad_alloc();
1775
- __nbh.reset(__nb);
1776
- }
1777
- char* __ne = __nb + __nc;
1778
- char* __np = this->__identify_padding(__nb, __ne, __iob);
1779
- // Stage 2 - Widen __nar while adding thousands separators
1780
- char_type __o[2*(__nbuf-1) - 1];
1781
- char_type* __ob = __o;
1782
- unique_ptr<char_type, void(*)(void*)> __obh(0, free);
1783
- if (__nb != __nar)
1784
- {
1785
- __ob = (char_type*)malloc(2*static_cast<size_t>(__nc)*sizeof(char_type));
1786
- if (__ob == 0)
1787
- __throw_bad_alloc();
1788
- __obh.reset(__ob);
1789
- }
1790
- char_type* __op; // pad here
1791
- char_type* __oe; // end of output
1792
- this->__widen_and_group_float(__nb, __np, __ne, __ob, __op, __oe, __iob.getloc());
1793
- // [__o, __oe) contains thousands_sep'd wide number
1794
- // Stage 3 & 4
1795
- __s = __pad_and_output(__s, __ob, __op, __oe, __iob, __fl);
1796
- return __s;
1797
- }
1798
-
1799
- template <class _CharT, class _OutputIterator>
1800
- _OutputIterator
1801
- num_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base& __iob,
1802
- char_type __fl, const void* __v) const
1803
- {
1804
- // Stage 1 - Get pointer in narrow char
1805
- char __fmt[6] = "%p";
1806
- const unsigned __nbuf = 20;
1807
- char __nar[__nbuf];
1808
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
1809
- int __nc = snprintf_l(__nar, sizeof(__nar), _LIBCPP_GET_C_LOCALE, __fmt, __v);
1810
- #else
1811
- int __nc = __snprintf_l(__nar, sizeof(__nar), __cloc(), __fmt, __v);
1812
- #endif
1813
- char* __ne = __nar + __nc;
1814
- char* __np = this->__identify_padding(__nar, __ne, __iob);
1815
- // Stage 2 - Widen __nar
1816
- char_type __o[2*(__nbuf-1) - 1];
1817
- char_type* __op; // pad here
1818
- char_type* __oe; // end of output
1819
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
1820
- __ct.widen(__nar, __ne, __o);
1821
- __oe = __o + (__ne - __nar);
1822
- if (__np == __ne)
1823
- __op = __oe;
1824
- else
1825
- __op = __o + (__np - __nar);
1826
- // [__o, __oe) contains wide number
1827
- // Stage 3 & 4
1828
- return __pad_and_output(__s, __o, __op, __oe, __iob, __fl);
1829
- }
1830
-
1831
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS num_put<char>)
1832
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS num_put<wchar_t>)
1833
-
1834
- template <class _CharT, class _InputIterator>
1835
- _LIBCPP_HIDDEN
1836
- int
1837
- __get_up_to_n_digits(_InputIterator& __b, _InputIterator __e,
1838
- ios_base::iostate& __err, const ctype<_CharT>& __ct, int __n)
1839
- {
1840
- // Precondition: __n >= 1
1841
- if (__b == __e)
1842
- {
1843
- __err |= ios_base::eofbit | ios_base::failbit;
1844
- return 0;
1845
- }
1846
- // get first digit
1847
- _CharT __c = *__b;
1848
- if (!__ct.is(ctype_base::digit, __c))
1849
- {
1850
- __err |= ios_base::failbit;
1851
- return 0;
1852
- }
1853
- int __r = __ct.narrow(__c, 0) - '0';
1854
- for (++__b, --__n; __b != __e && __n > 0; ++__b, --__n)
1855
- {
1856
- // get next digit
1857
- __c = *__b;
1858
- if (!__ct.is(ctype_base::digit, __c))
1859
- return __r;
1860
- __r = __r * 10 + __ct.narrow(__c, 0) - '0';
1861
- }
1862
- if (__b == __e)
1863
- __err |= ios_base::eofbit;
1864
- return __r;
1865
- }
1866
-
1867
- class _LIBCPP_TYPE_VIS time_base
1868
- {
1869
- public:
1870
- enum dateorder {no_order, dmy, mdy, ymd, ydm};
1871
- };
1872
-
1873
- template <class _CharT>
1874
- class _LIBCPP_TYPE_VIS __time_get_c_storage
1875
- {
1876
- protected:
1877
- typedef basic_string<_CharT> string_type;
1878
-
1879
- virtual const string_type* __weeks() const;
1880
- virtual const string_type* __months() const;
1881
- virtual const string_type* __am_pm() const;
1882
- virtual const string_type& __c() const;
1883
- virtual const string_type& __r() const;
1884
- virtual const string_type& __x() const;
1885
- virtual const string_type& __X() const;
1886
- };
1887
-
1888
- template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
1889
- class _LIBCPP_TYPE_VIS_ONLY time_get
1890
- : public locale::facet,
1891
- public time_base,
1892
- private __time_get_c_storage<_CharT>
1893
- {
1894
- public:
1895
- typedef _CharT char_type;
1896
- typedef _InputIterator iter_type;
1897
- typedef time_base::dateorder dateorder;
1898
- typedef basic_string<char_type> string_type;
1899
-
1900
- _LIBCPP_ALWAYS_INLINE
1901
- explicit time_get(size_t __refs = 0)
1902
- : locale::facet(__refs) {}
1903
-
1904
- _LIBCPP_ALWAYS_INLINE
1905
- dateorder date_order() const
1906
- {
1907
- return this->do_date_order();
1908
- }
1909
-
1910
- _LIBCPP_ALWAYS_INLINE
1911
- iter_type get_time(iter_type __b, iter_type __e, ios_base& __iob,
1912
- ios_base::iostate& __err, tm* __tm) const
1913
- {
1914
- return do_get_time(__b, __e, __iob, __err, __tm);
1915
- }
1916
-
1917
- _LIBCPP_ALWAYS_INLINE
1918
- iter_type get_date(iter_type __b, iter_type __e, ios_base& __iob,
1919
- ios_base::iostate& __err, tm* __tm) const
1920
- {
1921
- return do_get_date(__b, __e, __iob, __err, __tm);
1922
- }
1923
-
1924
- _LIBCPP_ALWAYS_INLINE
1925
- iter_type get_weekday(iter_type __b, iter_type __e, ios_base& __iob,
1926
- ios_base::iostate& __err, tm* __tm) const
1927
- {
1928
- return do_get_weekday(__b, __e, __iob, __err, __tm);
1929
- }
1930
-
1931
- _LIBCPP_ALWAYS_INLINE
1932
- iter_type get_monthname(iter_type __b, iter_type __e, ios_base& __iob,
1933
- ios_base::iostate& __err, tm* __tm) const
1934
- {
1935
- return do_get_monthname(__b, __e, __iob, __err, __tm);
1936
- }
1937
-
1938
- _LIBCPP_ALWAYS_INLINE
1939
- iter_type get_year(iter_type __b, iter_type __e, ios_base& __iob,
1940
- ios_base::iostate& __err, tm* __tm) const
1941
- {
1942
- return do_get_year(__b, __e, __iob, __err, __tm);
1943
- }
1944
-
1945
- _LIBCPP_ALWAYS_INLINE
1946
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
1947
- ios_base::iostate& __err, tm *__tm,
1948
- char __fmt, char __mod = 0) const
1949
- {
1950
- return do_get(__b, __e, __iob, __err, __tm, __fmt, __mod);
1951
- }
1952
-
1953
- iter_type get(iter_type __b, iter_type __e, ios_base& __iob,
1954
- ios_base::iostate& __err, tm* __tm,
1955
- const char_type* __fmtb, const char_type* __fmte) const;
1956
-
1957
- static locale::id id;
1958
-
1959
- protected:
1960
- _LIBCPP_ALWAYS_INLINE
1961
- ~time_get() {}
1962
-
1963
- virtual dateorder do_date_order() const;
1964
- virtual iter_type do_get_time(iter_type __b, iter_type __e, ios_base& __iob,
1965
- ios_base::iostate& __err, tm* __tm) const;
1966
- virtual iter_type do_get_date(iter_type __b, iter_type __e, ios_base& __iob,
1967
- ios_base::iostate& __err, tm* __tm) const;
1968
- virtual iter_type do_get_weekday(iter_type __b, iter_type __e, ios_base& __iob,
1969
- ios_base::iostate& __err, tm* __tm) const;
1970
- virtual iter_type do_get_monthname(iter_type __b, iter_type __e, ios_base& __iob,
1971
- ios_base::iostate& __err, tm* __tm) const;
1972
- virtual iter_type do_get_year(iter_type __b, iter_type __e, ios_base& __iob,
1973
- ios_base::iostate& __err, tm* __tm) const;
1974
- virtual iter_type do_get(iter_type __b, iter_type __e, ios_base& __iob,
1975
- ios_base::iostate& __err, tm* __tm,
1976
- char __fmt, char __mod) const;
1977
- private:
1978
- void __get_white_space(iter_type& __b, iter_type __e,
1979
- ios_base::iostate& __err, const ctype<char_type>& __ct) const;
1980
- void __get_percent(iter_type& __b, iter_type __e, ios_base::iostate& __err,
1981
- const ctype<char_type>& __ct) const;
1982
-
1983
- void __get_weekdayname(int& __m,
1984
- iter_type& __b, iter_type __e,
1985
- ios_base::iostate& __err,
1986
- const ctype<char_type>& __ct) const;
1987
- void __get_monthname(int& __m,
1988
- iter_type& __b, iter_type __e,
1989
- ios_base::iostate& __err,
1990
- const ctype<char_type>& __ct) const;
1991
- void __get_day(int& __d,
1992
- iter_type& __b, iter_type __e,
1993
- ios_base::iostate& __err,
1994
- const ctype<char_type>& __ct) const;
1995
- void __get_month(int& __m,
1996
- iter_type& __b, iter_type __e,
1997
- ios_base::iostate& __err,
1998
- const ctype<char_type>& __ct) const;
1999
- void __get_year(int& __y,
2000
- iter_type& __b, iter_type __e,
2001
- ios_base::iostate& __err,
2002
- const ctype<char_type>& __ct) const;
2003
- void __get_year4(int& __y,
2004
- iter_type& __b, iter_type __e,
2005
- ios_base::iostate& __err,
2006
- const ctype<char_type>& __ct) const;
2007
- void __get_hour(int& __d,
2008
- iter_type& __b, iter_type __e,
2009
- ios_base::iostate& __err,
2010
- const ctype<char_type>& __ct) const;
2011
- void __get_12_hour(int& __h,
2012
- iter_type& __b, iter_type __e,
2013
- ios_base::iostate& __err,
2014
- const ctype<char_type>& __ct) const;
2015
- void __get_am_pm(int& __h,
2016
- iter_type& __b, iter_type __e,
2017
- ios_base::iostate& __err,
2018
- const ctype<char_type>& __ct) const;
2019
- void __get_minute(int& __m,
2020
- iter_type& __b, iter_type __e,
2021
- ios_base::iostate& __err,
2022
- const ctype<char_type>& __ct) const;
2023
- void __get_second(int& __s,
2024
- iter_type& __b, iter_type __e,
2025
- ios_base::iostate& __err,
2026
- const ctype<char_type>& __ct) const;
2027
- void __get_weekday(int& __w,
2028
- iter_type& __b, iter_type __e,
2029
- ios_base::iostate& __err,
2030
- const ctype<char_type>& __ct) const;
2031
- void __get_day_year_num(int& __w,
2032
- iter_type& __b, iter_type __e,
2033
- ios_base::iostate& __err,
2034
- const ctype<char_type>& __ct) const;
2035
- };
2036
-
2037
- template <class _CharT, class _InputIterator>
2038
- locale::id
2039
- time_get<_CharT, _InputIterator>::id;
2040
-
2041
- // time_get primatives
2042
-
2043
- template <class _CharT, class _InputIterator>
2044
- void
2045
- time_get<_CharT, _InputIterator>::__get_weekdayname(int& __w,
2046
- iter_type& __b, iter_type __e,
2047
- ios_base::iostate& __err,
2048
- const ctype<char_type>& __ct) const
2049
- {
2050
- // Note: ignoring case comes from the POSIX strptime spec
2051
- const string_type* __wk = this->__weeks();
2052
- ptrdiff_t __i = __scan_keyword(__b, __e, __wk, __wk+14, __ct, __err, false) - __wk;
2053
- if (__i < 14)
2054
- __w = __i % 7;
2055
- }
2056
-
2057
- template <class _CharT, class _InputIterator>
2058
- void
2059
- time_get<_CharT, _InputIterator>::__get_monthname(int& __m,
2060
- iter_type& __b, iter_type __e,
2061
- ios_base::iostate& __err,
2062
- const ctype<char_type>& __ct) const
2063
- {
2064
- // Note: ignoring case comes from the POSIX strptime spec
2065
- const string_type* __month = this->__months();
2066
- ptrdiff_t __i = __scan_keyword(__b, __e, __month, __month+24, __ct, __err, false) - __month;
2067
- if (__i < 24)
2068
- __m = __i % 12;
2069
- }
2070
-
2071
- template <class _CharT, class _InputIterator>
2072
- void
2073
- time_get<_CharT, _InputIterator>::__get_day(int& __d,
2074
- iter_type& __b, iter_type __e,
2075
- ios_base::iostate& __err,
2076
- const ctype<char_type>& __ct) const
2077
- {
2078
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
2079
- if (!(__err & ios_base::failbit) && 1 <= __t && __t <= 31)
2080
- __d = __t;
2081
- else
2082
- __err |= ios_base::failbit;
2083
- }
2084
-
2085
- template <class _CharT, class _InputIterator>
2086
- void
2087
- time_get<_CharT, _InputIterator>::__get_month(int& __m,
2088
- iter_type& __b, iter_type __e,
2089
- ios_base::iostate& __err,
2090
- const ctype<char_type>& __ct) const
2091
- {
2092
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2) - 1;
2093
- if (!(__err & ios_base::failbit) && __t <= 11)
2094
- __m = __t;
2095
- else
2096
- __err |= ios_base::failbit;
2097
- }
2098
-
2099
- template <class _CharT, class _InputIterator>
2100
- void
2101
- time_get<_CharT, _InputIterator>::__get_year(int& __y,
2102
- iter_type& __b, iter_type __e,
2103
- ios_base::iostate& __err,
2104
- const ctype<char_type>& __ct) const
2105
- {
2106
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 4);
2107
- if (!(__err & ios_base::failbit))
2108
- {
2109
- if (__t < 69)
2110
- __t += 2000;
2111
- else if (69 <= __t && __t <= 99)
2112
- __t += 1900;
2113
- __y = __t - 1900;
2114
- }
2115
- }
2116
-
2117
- template <class _CharT, class _InputIterator>
2118
- void
2119
- time_get<_CharT, _InputIterator>::__get_year4(int& __y,
2120
- iter_type& __b, iter_type __e,
2121
- ios_base::iostate& __err,
2122
- const ctype<char_type>& __ct) const
2123
- {
2124
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 4);
2125
- if (!(__err & ios_base::failbit))
2126
- __y = __t - 1900;
2127
- }
2128
-
2129
- template <class _CharT, class _InputIterator>
2130
- void
2131
- time_get<_CharT, _InputIterator>::__get_hour(int& __h,
2132
- iter_type& __b, iter_type __e,
2133
- ios_base::iostate& __err,
2134
- const ctype<char_type>& __ct) const
2135
- {
2136
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
2137
- if (!(__err & ios_base::failbit) && __t <= 23)
2138
- __h = __t;
2139
- else
2140
- __err |= ios_base::failbit;
2141
- }
2142
-
2143
- template <class _CharT, class _InputIterator>
2144
- void
2145
- time_get<_CharT, _InputIterator>::__get_12_hour(int& __h,
2146
- iter_type& __b, iter_type __e,
2147
- ios_base::iostate& __err,
2148
- const ctype<char_type>& __ct) const
2149
- {
2150
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
2151
- if (!(__err & ios_base::failbit) && 1 <= __t && __t <= 12)
2152
- __h = __t;
2153
- else
2154
- __err |= ios_base::failbit;
2155
- }
2156
-
2157
- template <class _CharT, class _InputIterator>
2158
- void
2159
- time_get<_CharT, _InputIterator>::__get_minute(int& __m,
2160
- iter_type& __b, iter_type __e,
2161
- ios_base::iostate& __err,
2162
- const ctype<char_type>& __ct) const
2163
- {
2164
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
2165
- if (!(__err & ios_base::failbit) && __t <= 59)
2166
- __m = __t;
2167
- else
2168
- __err |= ios_base::failbit;
2169
- }
2170
-
2171
- template <class _CharT, class _InputIterator>
2172
- void
2173
- time_get<_CharT, _InputIterator>::__get_second(int& __s,
2174
- iter_type& __b, iter_type __e,
2175
- ios_base::iostate& __err,
2176
- const ctype<char_type>& __ct) const
2177
- {
2178
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 2);
2179
- if (!(__err & ios_base::failbit) && __t <= 60)
2180
- __s = __t;
2181
- else
2182
- __err |= ios_base::failbit;
2183
- }
2184
-
2185
- template <class _CharT, class _InputIterator>
2186
- void
2187
- time_get<_CharT, _InputIterator>::__get_weekday(int& __w,
2188
- iter_type& __b, iter_type __e,
2189
- ios_base::iostate& __err,
2190
- const ctype<char_type>& __ct) const
2191
- {
2192
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 1);
2193
- if (!(__err & ios_base::failbit) && __t <= 6)
2194
- __w = __t;
2195
- else
2196
- __err |= ios_base::failbit;
2197
- }
2198
-
2199
- template <class _CharT, class _InputIterator>
2200
- void
2201
- time_get<_CharT, _InputIterator>::__get_day_year_num(int& __d,
2202
- iter_type& __b, iter_type __e,
2203
- ios_base::iostate& __err,
2204
- const ctype<char_type>& __ct) const
2205
- {
2206
- int __t = __get_up_to_n_digits(__b, __e, __err, __ct, 3);
2207
- if (!(__err & ios_base::failbit) && __t <= 365)
2208
- __d = __t;
2209
- else
2210
- __err |= ios_base::failbit;
2211
- }
2212
-
2213
- template <class _CharT, class _InputIterator>
2214
- void
2215
- time_get<_CharT, _InputIterator>::__get_white_space(iter_type& __b, iter_type __e,
2216
- ios_base::iostate& __err,
2217
- const ctype<char_type>& __ct) const
2218
- {
2219
- for (; __b != __e && __ct.is(ctype_base::space, *__b); ++__b)
2220
- ;
2221
- if (__b == __e)
2222
- __err |= ios_base::eofbit;
2223
- }
2224
-
2225
- template <class _CharT, class _InputIterator>
2226
- void
2227
- time_get<_CharT, _InputIterator>::__get_am_pm(int& __h,
2228
- iter_type& __b, iter_type __e,
2229
- ios_base::iostate& __err,
2230
- const ctype<char_type>& __ct) const
2231
- {
2232
- const string_type* __ap = this->__am_pm();
2233
- if (__ap[0].size() + __ap[1].size() == 0)
2234
- {
2235
- __err |= ios_base::failbit;
2236
- return;
2237
- }
2238
- ptrdiff_t __i = __scan_keyword(__b, __e, __ap, __ap+2, __ct, __err, false) - __ap;
2239
- if (__i == 0 && __h == 12)
2240
- __h = 0;
2241
- else if (__i == 1 && __h < 12)
2242
- __h += 12;
2243
- }
2244
-
2245
- template <class _CharT, class _InputIterator>
2246
- void
2247
- time_get<_CharT, _InputIterator>::__get_percent(iter_type& __b, iter_type __e,
2248
- ios_base::iostate& __err,
2249
- const ctype<char_type>& __ct) const
2250
- {
2251
- if (__b == __e)
2252
- {
2253
- __err |= ios_base::eofbit | ios_base::failbit;
2254
- return;
2255
- }
2256
- if (__ct.narrow(*__b, 0) != '%')
2257
- __err |= ios_base::failbit;
2258
- else if(++__b == __e)
2259
- __err |= ios_base::eofbit;
2260
- }
2261
-
2262
- // time_get end primatives
2263
-
2264
- template <class _CharT, class _InputIterator>
2265
- _InputIterator
2266
- time_get<_CharT, _InputIterator>::get(iter_type __b, iter_type __e,
2267
- ios_base& __iob,
2268
- ios_base::iostate& __err, tm* __tm,
2269
- const char_type* __fmtb, const char_type* __fmte) const
2270
- {
2271
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
2272
- __err = ios_base::goodbit;
2273
- while (__fmtb != __fmte && __err == ios_base::goodbit)
2274
- {
2275
- if (__b == __e)
2276
- {
2277
- __err = ios_base::failbit;
2278
- break;
2279
- }
2280
- if (__ct.narrow(*__fmtb, 0) == '%')
2281
- {
2282
- if (++__fmtb == __fmte)
2283
- {
2284
- __err = ios_base::failbit;
2285
- break;
2286
- }
2287
- char __cmd = __ct.narrow(*__fmtb, 0);
2288
- char __opt = '\0';
2289
- if (__cmd == 'E' || __cmd == '0')
2290
- {
2291
- if (++__fmtb == __fmte)
2292
- {
2293
- __err = ios_base::failbit;
2294
- break;
2295
- }
2296
- __opt = __cmd;
2297
- __cmd = __ct.narrow(*__fmtb, 0);
2298
- }
2299
- __b = do_get(__b, __e, __iob, __err, __tm, __cmd, __opt);
2300
- ++__fmtb;
2301
- }
2302
- else if (__ct.is(ctype_base::space, *__fmtb))
2303
- {
2304
- for (++__fmtb; __fmtb != __fmte && __ct.is(ctype_base::space, *__fmtb); ++__fmtb)
2305
- ;
2306
- for ( ; __b != __e && __ct.is(ctype_base::space, *__b); ++__b)
2307
- ;
2308
- }
2309
- else if (__ct.toupper(*__b) == __ct.toupper(*__fmtb))
2310
- {
2311
- ++__b;
2312
- ++__fmtb;
2313
- }
2314
- else
2315
- __err = ios_base::failbit;
2316
- }
2317
- if (__b == __e)
2318
- __err |= ios_base::eofbit;
2319
- return __b;
2320
- }
2321
-
2322
- template <class _CharT, class _InputIterator>
2323
- typename time_get<_CharT, _InputIterator>::dateorder
2324
- time_get<_CharT, _InputIterator>::do_date_order() const
2325
- {
2326
- return mdy;
2327
- }
2328
-
2329
- template <class _CharT, class _InputIterator>
2330
- _InputIterator
2331
- time_get<_CharT, _InputIterator>::do_get_time(iter_type __b, iter_type __e,
2332
- ios_base& __iob,
2333
- ios_base::iostate& __err,
2334
- tm* __tm) const
2335
- {
2336
- const char_type __fmt[] = {'%', 'H', ':', '%', 'M', ':', '%', 'S'};
2337
- return get(__b, __e, __iob, __err, __tm, __fmt, __fmt + sizeof(__fmt)/sizeof(__fmt[0]));
2338
- }
2339
-
2340
- template <class _CharT, class _InputIterator>
2341
- _InputIterator
2342
- time_get<_CharT, _InputIterator>::do_get_date(iter_type __b, iter_type __e,
2343
- ios_base& __iob,
2344
- ios_base::iostate& __err,
2345
- tm* __tm) const
2346
- {
2347
- const string_type& __fmt = this->__x();
2348
- return get(__b, __e, __iob, __err, __tm, __fmt.data(), __fmt.data() + __fmt.size());
2349
- }
2350
-
2351
- template <class _CharT, class _InputIterator>
2352
- _InputIterator
2353
- time_get<_CharT, _InputIterator>::do_get_weekday(iter_type __b, iter_type __e,
2354
- ios_base& __iob,
2355
- ios_base::iostate& __err,
2356
- tm* __tm) const
2357
- {
2358
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
2359
- __get_weekdayname(__tm->tm_wday, __b, __e, __err, __ct);
2360
- return __b;
2361
- }
2362
-
2363
- template <class _CharT, class _InputIterator>
2364
- _InputIterator
2365
- time_get<_CharT, _InputIterator>::do_get_monthname(iter_type __b, iter_type __e,
2366
- ios_base& __iob,
2367
- ios_base::iostate& __err,
2368
- tm* __tm) const
2369
- {
2370
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
2371
- __get_monthname(__tm->tm_mon, __b, __e, __err, __ct);
2372
- return __b;
2373
- }
2374
-
2375
- template <class _CharT, class _InputIterator>
2376
- _InputIterator
2377
- time_get<_CharT, _InputIterator>::do_get_year(iter_type __b, iter_type __e,
2378
- ios_base& __iob,
2379
- ios_base::iostate& __err,
2380
- tm* __tm) const
2381
- {
2382
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
2383
- __get_year(__tm->tm_year, __b, __e, __err, __ct);
2384
- return __b;
2385
- }
2386
-
2387
- template <class _CharT, class _InputIterator>
2388
- _InputIterator
2389
- time_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
2390
- ios_base& __iob,
2391
- ios_base::iostate& __err, tm* __tm,
2392
- char __fmt, char) const
2393
- {
2394
- __err = ios_base::goodbit;
2395
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
2396
- switch (__fmt)
2397
- {
2398
- case 'a':
2399
- case 'A':
2400
- __get_weekdayname(__tm->tm_wday, __b, __e, __err, __ct);
2401
- break;
2402
- case 'b':
2403
- case 'B':
2404
- case 'h':
2405
- __get_monthname(__tm->tm_mon, __b, __e, __err, __ct);
2406
- break;
2407
- case 'c':
2408
- {
2409
- const string_type& __fm = this->__c();
2410
- __b = get(__b, __e, __iob, __err, __tm, __fm.data(), __fm.data() + __fm.size());
2411
- }
2412
- break;
2413
- case 'd':
2414
- case 'e':
2415
- __get_day(__tm->tm_mday, __b, __e, __err, __ct);
2416
- break;
2417
- case 'D':
2418
- {
2419
- const char_type __fm[] = {'%', 'm', '/', '%', 'd', '/', '%', 'y'};
2420
- __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
2421
- }
2422
- break;
2423
- case 'F':
2424
- {
2425
- const char_type __fm[] = {'%', 'Y', '-', '%', 'm', '-', '%', 'd'};
2426
- __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
2427
- }
2428
- break;
2429
- case 'H':
2430
- __get_hour(__tm->tm_hour, __b, __e, __err, __ct);
2431
- break;
2432
- case 'I':
2433
- __get_12_hour(__tm->tm_hour, __b, __e, __err, __ct);
2434
- break;
2435
- case 'j':
2436
- __get_day_year_num(__tm->tm_yday, __b, __e, __err, __ct);
2437
- break;
2438
- case 'm':
2439
- __get_month(__tm->tm_mon, __b, __e, __err, __ct);
2440
- break;
2441
- case 'M':
2442
- __get_minute(__tm->tm_min, __b, __e, __err, __ct);
2443
- break;
2444
- case 'n':
2445
- case 't':
2446
- __get_white_space(__b, __e, __err, __ct);
2447
- break;
2448
- case 'p':
2449
- __get_am_pm(__tm->tm_hour, __b, __e, __err, __ct);
2450
- break;
2451
- case 'r':
2452
- {
2453
- const char_type __fm[] = {'%', 'I', ':', '%', 'M', ':', '%', 'S', ' ', '%', 'p'};
2454
- __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
2455
- }
2456
- break;
2457
- case 'R':
2458
- {
2459
- const char_type __fm[] = {'%', 'H', ':', '%', 'M'};
2460
- __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
2461
- }
2462
- break;
2463
- case 'S':
2464
- __get_second(__tm->tm_sec, __b, __e, __err, __ct);
2465
- break;
2466
- case 'T':
2467
- {
2468
- const char_type __fm[] = {'%', 'H', ':', '%', 'M', ':', '%', 'S'};
2469
- __b = get(__b, __e, __iob, __err, __tm, __fm, __fm + sizeof(__fm)/sizeof(__fm[0]));
2470
- }
2471
- break;
2472
- case 'w':
2473
- __get_weekday(__tm->tm_wday, __b, __e, __err, __ct);
2474
- break;
2475
- case 'x':
2476
- return do_get_date(__b, __e, __iob, __err, __tm);
2477
- case 'X':
2478
- {
2479
- const string_type& __fm = this->__X();
2480
- __b = get(__b, __e, __iob, __err, __tm, __fm.data(), __fm.data() + __fm.size());
2481
- }
2482
- break;
2483
- case 'y':
2484
- __get_year(__tm->tm_year, __b, __e, __err, __ct);
2485
- break;
2486
- case 'Y':
2487
- __get_year4(__tm->tm_year, __b, __e, __err, __ct);
2488
- break;
2489
- case '%':
2490
- __get_percent(__b, __e, __err, __ct);
2491
- break;
2492
- default:
2493
- __err |= ios_base::failbit;
2494
- }
2495
- return __b;
2496
- }
2497
-
2498
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_get<char>)
2499
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_get<wchar_t>)
2500
-
2501
- class _LIBCPP_TYPE_VIS __time_get
2502
- {
2503
- protected:
2504
- locale_t __loc_;
2505
-
2506
- __time_get(const char* __nm);
2507
- __time_get(const string& __nm);
2508
- ~__time_get();
2509
- };
2510
-
2511
- template <class _CharT>
2512
- class _LIBCPP_TYPE_VIS __time_get_storage
2513
- : public __time_get
2514
- {
2515
- protected:
2516
- typedef basic_string<_CharT> string_type;
2517
-
2518
- string_type __weeks_[14];
2519
- string_type __months_[24];
2520
- string_type __am_pm_[2];
2521
- string_type __c_;
2522
- string_type __r_;
2523
- string_type __x_;
2524
- string_type __X_;
2525
-
2526
- explicit __time_get_storage(const char* __nm);
2527
- explicit __time_get_storage(const string& __nm);
2528
-
2529
- _LIBCPP_ALWAYS_INLINE ~__time_get_storage() {}
2530
-
2531
- time_base::dateorder __do_date_order() const;
2532
-
2533
- private:
2534
- void init(const ctype<_CharT>&);
2535
- string_type __analyze(char __fmt, const ctype<_CharT>&);
2536
- };
2537
-
2538
- template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
2539
- class _LIBCPP_TYPE_VIS_ONLY time_get_byname
2540
- : public time_get<_CharT, _InputIterator>,
2541
- private __time_get_storage<_CharT>
2542
- {
2543
- public:
2544
- typedef time_base::dateorder dateorder;
2545
- typedef _InputIterator iter_type;
2546
- typedef _CharT char_type;
2547
- typedef basic_string<char_type> string_type;
2548
-
2549
- _LIBCPP_INLINE_VISIBILITY
2550
- explicit time_get_byname(const char* __nm, size_t __refs = 0)
2551
- : time_get<_CharT, _InputIterator>(__refs),
2552
- __time_get_storage<_CharT>(__nm) {}
2553
- _LIBCPP_INLINE_VISIBILITY
2554
- explicit time_get_byname(const string& __nm, size_t __refs = 0)
2555
- : time_get<_CharT, _InputIterator>(__refs),
2556
- __time_get_storage<_CharT>(__nm) {}
2557
-
2558
- protected:
2559
- _LIBCPP_INLINE_VISIBILITY
2560
- ~time_get_byname() {}
2561
-
2562
- _LIBCPP_INLINE_VISIBILITY
2563
- virtual dateorder do_date_order() const {return this->__do_date_order();}
2564
- private:
2565
- _LIBCPP_INLINE_VISIBILITY
2566
- virtual const string_type* __weeks() const {return this->__weeks_;}
2567
- _LIBCPP_INLINE_VISIBILITY
2568
- virtual const string_type* __months() const {return this->__months_;}
2569
- _LIBCPP_INLINE_VISIBILITY
2570
- virtual const string_type* __am_pm() const {return this->__am_pm_;}
2571
- _LIBCPP_INLINE_VISIBILITY
2572
- virtual const string_type& __c() const {return this->__c_;}
2573
- _LIBCPP_INLINE_VISIBILITY
2574
- virtual const string_type& __r() const {return this->__r_;}
2575
- _LIBCPP_INLINE_VISIBILITY
2576
- virtual const string_type& __x() const {return this->__x_;}
2577
- _LIBCPP_INLINE_VISIBILITY
2578
- virtual const string_type& __X() const {return this->__X_;}
2579
- };
2580
-
2581
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_get_byname<char>)
2582
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_get_byname<wchar_t>)
2583
-
2584
- class _LIBCPP_TYPE_VIS __time_put
2585
- {
2586
- locale_t __loc_;
2587
- protected:
2588
- _LIBCPP_ALWAYS_INLINE __time_put() : __loc_(_LIBCPP_GET_C_LOCALE) {}
2589
- __time_put(const char* __nm);
2590
- __time_put(const string& __nm);
2591
- ~__time_put();
2592
- void __do_put(char* __nb, char*& __ne, const tm* __tm,
2593
- char __fmt, char __mod) const;
2594
- void __do_put(wchar_t* __wb, wchar_t*& __we, const tm* __tm,
2595
- char __fmt, char __mod) const;
2596
- };
2597
-
2598
- template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
2599
- class _LIBCPP_TYPE_VIS_ONLY time_put
2600
- : public locale::facet,
2601
- private __time_put
2602
- {
2603
- public:
2604
- typedef _CharT char_type;
2605
- typedef _OutputIterator iter_type;
2606
-
2607
- _LIBCPP_ALWAYS_INLINE
2608
- explicit time_put(size_t __refs = 0)
2609
- : locale::facet(__refs) {}
2610
-
2611
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl, const tm* __tm,
2612
- const char_type* __pb, const char_type* __pe) const;
2613
-
2614
- _LIBCPP_ALWAYS_INLINE
2615
- iter_type put(iter_type __s, ios_base& __iob, char_type __fl,
2616
- const tm* __tm, char __fmt, char __mod = 0) const
2617
- {
2618
- return do_put(__s, __iob, __fl, __tm, __fmt, __mod);
2619
- }
2620
-
2621
- static locale::id id;
2622
-
2623
- protected:
2624
- _LIBCPP_ALWAYS_INLINE
2625
- ~time_put() {}
2626
- virtual iter_type do_put(iter_type __s, ios_base&, char_type, const tm* __tm,
2627
- char __fmt, char __mod) const;
2628
-
2629
- _LIBCPP_ALWAYS_INLINE
2630
- explicit time_put(const char* __nm, size_t __refs)
2631
- : locale::facet(__refs),
2632
- __time_put(__nm) {}
2633
- _LIBCPP_ALWAYS_INLINE
2634
- explicit time_put(const string& __nm, size_t __refs)
2635
- : locale::facet(__refs),
2636
- __time_put(__nm) {}
2637
- };
2638
-
2639
- template <class _CharT, class _OutputIterator>
2640
- locale::id
2641
- time_put<_CharT, _OutputIterator>::id;
2642
-
2643
- template <class _CharT, class _OutputIterator>
2644
- _OutputIterator
2645
- time_put<_CharT, _OutputIterator>::put(iter_type __s, ios_base& __iob,
2646
- char_type __fl, const tm* __tm,
2647
- const char_type* __pb,
2648
- const char_type* __pe) const
2649
- {
2650
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__iob.getloc());
2651
- for (; __pb != __pe; ++__pb)
2652
- {
2653
- if (__ct.narrow(*__pb, 0) == '%')
2654
- {
2655
- if (++__pb == __pe)
2656
- {
2657
- *__s++ = __pb[-1];
2658
- break;
2659
- }
2660
- char __mod = 0;
2661
- char __fmt = __ct.narrow(*__pb, 0);
2662
- if (__fmt == 'E' || __fmt == 'O')
2663
- {
2664
- if (++__pb == __pe)
2665
- {
2666
- *__s++ = __pb[-2];
2667
- *__s++ = __pb[-1];
2668
- break;
2669
- }
2670
- __mod = __fmt;
2671
- __fmt = __ct.narrow(*__pb, 0);
2672
- }
2673
- __s = do_put(__s, __iob, __fl, __tm, __fmt, __mod);
2674
- }
2675
- else
2676
- *__s++ = *__pb;
2677
- }
2678
- return __s;
2679
- }
2680
-
2681
- template <class _CharT, class _OutputIterator>
2682
- _OutputIterator
2683
- time_put<_CharT, _OutputIterator>::do_put(iter_type __s, ios_base&,
2684
- char_type, const tm* __tm,
2685
- char __fmt, char __mod) const
2686
- {
2687
- char_type __nar[100];
2688
- char_type* __nb = __nar;
2689
- char_type* __ne = __nb + 100;
2690
- __do_put(__nb, __ne, __tm, __fmt, __mod);
2691
- return _VSTD::copy(__nb, __ne, __s);
2692
- }
2693
-
2694
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_put<char>)
2695
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_put<wchar_t>)
2696
-
2697
- template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
2698
- class _LIBCPP_TYPE_VIS_ONLY time_put_byname
2699
- : public time_put<_CharT, _OutputIterator>
2700
- {
2701
- public:
2702
- _LIBCPP_ALWAYS_INLINE
2703
- explicit time_put_byname(const char* __nm, size_t __refs = 0)
2704
- : time_put<_CharT, _OutputIterator>(__nm, __refs) {}
2705
-
2706
- _LIBCPP_ALWAYS_INLINE
2707
- explicit time_put_byname(const string& __nm, size_t __refs = 0)
2708
- : time_put<_CharT, _OutputIterator>(__nm, __refs) {}
2709
-
2710
- protected:
2711
- _LIBCPP_ALWAYS_INLINE
2712
- ~time_put_byname() {}
2713
- };
2714
-
2715
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_put_byname<char>)
2716
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS time_put_byname<wchar_t>)
2717
-
2718
- // money_base
2719
-
2720
- class _LIBCPP_TYPE_VIS money_base
2721
- {
2722
- public:
2723
- enum part {none, space, symbol, sign, value};
2724
- struct pattern {char field[4];};
2725
-
2726
- _LIBCPP_ALWAYS_INLINE money_base() {}
2727
- };
2728
-
2729
- // moneypunct
2730
-
2731
- template <class _CharT, bool _International = false>
2732
- class _LIBCPP_TYPE_VIS_ONLY moneypunct
2733
- : public locale::facet,
2734
- public money_base
2735
- {
2736
- public:
2737
- typedef _CharT char_type;
2738
- typedef basic_string<char_type> string_type;
2739
-
2740
- _LIBCPP_ALWAYS_INLINE
2741
- explicit moneypunct(size_t __refs = 0)
2742
- : locale::facet(__refs) {}
2743
-
2744
- _LIBCPP_ALWAYS_INLINE char_type decimal_point() const {return do_decimal_point();}
2745
- _LIBCPP_ALWAYS_INLINE char_type thousands_sep() const {return do_thousands_sep();}
2746
- _LIBCPP_ALWAYS_INLINE string grouping() const {return do_grouping();}
2747
- _LIBCPP_ALWAYS_INLINE string_type curr_symbol() const {return do_curr_symbol();}
2748
- _LIBCPP_ALWAYS_INLINE string_type positive_sign() const {return do_positive_sign();}
2749
- _LIBCPP_ALWAYS_INLINE string_type negative_sign() const {return do_negative_sign();}
2750
- _LIBCPP_ALWAYS_INLINE int frac_digits() const {return do_frac_digits();}
2751
- _LIBCPP_ALWAYS_INLINE pattern pos_format() const {return do_pos_format();}
2752
- _LIBCPP_ALWAYS_INLINE pattern neg_format() const {return do_neg_format();}
2753
-
2754
- static locale::id id;
2755
- static const bool intl = _International;
2756
-
2757
- protected:
2758
- _LIBCPP_ALWAYS_INLINE
2759
- ~moneypunct() {}
2760
-
2761
- virtual char_type do_decimal_point() const {return numeric_limits<char_type>::max();}
2762
- virtual char_type do_thousands_sep() const {return numeric_limits<char_type>::max();}
2763
- virtual string do_grouping() const {return string();}
2764
- virtual string_type do_curr_symbol() const {return string_type();}
2765
- virtual string_type do_positive_sign() const {return string_type();}
2766
- virtual string_type do_negative_sign() const {return string_type(1, '-');}
2767
- virtual int do_frac_digits() const {return 0;}
2768
- virtual pattern do_pos_format() const
2769
- {pattern __p = {{symbol, sign, none, value}}; return __p;}
2770
- virtual pattern do_neg_format() const
2771
- {pattern __p = {{symbol, sign, none, value}}; return __p;}
2772
- };
2773
-
2774
- template <class _CharT, bool _International>
2775
- locale::id
2776
- moneypunct<_CharT, _International>::id;
2777
-
2778
- template <class _CharT, bool _International>
2779
- const bool
2780
- moneypunct<_CharT, _International>::intl;
2781
-
2782
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct<char, false>)
2783
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct<char, true>)
2784
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct<wchar_t, false>)
2785
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct<wchar_t, true>)
2786
-
2787
- // moneypunct_byname
2788
-
2789
- template <class _CharT, bool _International = false>
2790
- class _LIBCPP_TYPE_VIS_ONLY moneypunct_byname
2791
- : public moneypunct<_CharT, _International>
2792
- {
2793
- public:
2794
- typedef money_base::pattern pattern;
2795
- typedef _CharT char_type;
2796
- typedef basic_string<char_type> string_type;
2797
-
2798
- _LIBCPP_ALWAYS_INLINE
2799
- explicit moneypunct_byname(const char* __nm, size_t __refs = 0)
2800
- : moneypunct<_CharT, _International>(__refs) {init(__nm);}
2801
-
2802
- _LIBCPP_ALWAYS_INLINE
2803
- explicit moneypunct_byname(const string& __nm, size_t __refs = 0)
2804
- : moneypunct<_CharT, _International>(__refs) {init(__nm.c_str());}
2805
-
2806
- protected:
2807
- _LIBCPP_ALWAYS_INLINE
2808
- ~moneypunct_byname() {}
2809
-
2810
- virtual char_type do_decimal_point() const {return __decimal_point_;}
2811
- virtual char_type do_thousands_sep() const {return __thousands_sep_;}
2812
- virtual string do_grouping() const {return __grouping_;}
2813
- virtual string_type do_curr_symbol() const {return __curr_symbol_;}
2814
- virtual string_type do_positive_sign() const {return __positive_sign_;}
2815
- virtual string_type do_negative_sign() const {return __negative_sign_;}
2816
- virtual int do_frac_digits() const {return __frac_digits_;}
2817
- virtual pattern do_pos_format() const {return __pos_format_;}
2818
- virtual pattern do_neg_format() const {return __neg_format_;}
2819
-
2820
- private:
2821
- char_type __decimal_point_;
2822
- char_type __thousands_sep_;
2823
- string __grouping_;
2824
- string_type __curr_symbol_;
2825
- string_type __positive_sign_;
2826
- string_type __negative_sign_;
2827
- int __frac_digits_;
2828
- pattern __pos_format_;
2829
- pattern __neg_format_;
2830
-
2831
- void init(const char*);
2832
- };
2833
-
2834
- template<> void moneypunct_byname<char, false>::init(const char*);
2835
- template<> void moneypunct_byname<char, true>::init(const char*);
2836
- template<> void moneypunct_byname<wchar_t, false>::init(const char*);
2837
- template<> void moneypunct_byname<wchar_t, true>::init(const char*);
2838
-
2839
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct_byname<char, false>)
2840
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct_byname<char, true>)
2841
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct_byname<wchar_t, false>)
2842
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS moneypunct_byname<wchar_t, true>)
2843
-
2844
- // money_get
2845
-
2846
- template <class _CharT>
2847
- class __money_get
2848
- {
2849
- protected:
2850
- typedef _CharT char_type;
2851
- typedef basic_string<char_type> string_type;
2852
-
2853
- _LIBCPP_ALWAYS_INLINE __money_get() {}
2854
-
2855
- static void __gather_info(bool __intl, const locale& __loc,
2856
- money_base::pattern& __pat, char_type& __dp,
2857
- char_type& __ts, string& __grp,
2858
- string_type& __sym, string_type& __psn,
2859
- string_type& __nsn, int& __fd);
2860
- };
2861
-
2862
- template <class _CharT>
2863
- void
2864
- __money_get<_CharT>::__gather_info(bool __intl, const locale& __loc,
2865
- money_base::pattern& __pat, char_type& __dp,
2866
- char_type& __ts, string& __grp,
2867
- string_type& __sym, string_type& __psn,
2868
- string_type& __nsn, int& __fd)
2869
- {
2870
- if (__intl)
2871
- {
2872
- const moneypunct<char_type, true>& __mp =
2873
- use_facet<moneypunct<char_type, true> >(__loc);
2874
- __pat = __mp.neg_format();
2875
- __nsn = __mp.negative_sign();
2876
- __psn = __mp.positive_sign();
2877
- __dp = __mp.decimal_point();
2878
- __ts = __mp.thousands_sep();
2879
- __grp = __mp.grouping();
2880
- __sym = __mp.curr_symbol();
2881
- __fd = __mp.frac_digits();
2882
- }
2883
- else
2884
- {
2885
- const moneypunct<char_type, false>& __mp =
2886
- use_facet<moneypunct<char_type, false> >(__loc);
2887
- __pat = __mp.neg_format();
2888
- __nsn = __mp.negative_sign();
2889
- __psn = __mp.positive_sign();
2890
- __dp = __mp.decimal_point();
2891
- __ts = __mp.thousands_sep();
2892
- __grp = __mp.grouping();
2893
- __sym = __mp.curr_symbol();
2894
- __fd = __mp.frac_digits();
2895
- }
2896
- }
2897
-
2898
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS __money_get<char>)
2899
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS __money_get<wchar_t>)
2900
-
2901
- template <class _CharT, class _InputIterator = istreambuf_iterator<_CharT> >
2902
- class _LIBCPP_TYPE_VIS_ONLY money_get
2903
- : public locale::facet,
2904
- private __money_get<_CharT>
2905
- {
2906
- public:
2907
- typedef _CharT char_type;
2908
- typedef _InputIterator iter_type;
2909
- typedef basic_string<char_type> string_type;
2910
-
2911
- _LIBCPP_ALWAYS_INLINE
2912
- explicit money_get(size_t __refs = 0)
2913
- : locale::facet(__refs) {}
2914
-
2915
- _LIBCPP_ALWAYS_INLINE
2916
- iter_type get(iter_type __b, iter_type __e, bool __intl, ios_base& __iob,
2917
- ios_base::iostate& __err, long double& __v) const
2918
- {
2919
- return do_get(__b, __e, __intl, __iob, __err, __v);
2920
- }
2921
-
2922
- _LIBCPP_ALWAYS_INLINE
2923
- iter_type get(iter_type __b, iter_type __e, bool __intl, ios_base& __iob,
2924
- ios_base::iostate& __err, string_type& __v) const
2925
- {
2926
- return do_get(__b, __e, __intl, __iob, __err, __v);
2927
- }
2928
-
2929
- static locale::id id;
2930
-
2931
- protected:
2932
-
2933
- _LIBCPP_ALWAYS_INLINE
2934
- ~money_get() {}
2935
-
2936
- virtual iter_type do_get(iter_type __b, iter_type __e, bool __intl,
2937
- ios_base& __iob, ios_base::iostate& __err,
2938
- long double& __v) const;
2939
- virtual iter_type do_get(iter_type __b, iter_type __e, bool __intl,
2940
- ios_base& __iob, ios_base::iostate& __err,
2941
- string_type& __v) const;
2942
-
2943
- private:
2944
- static bool __do_get(iter_type& __b, iter_type __e,
2945
- bool __intl, const locale& __loc,
2946
- ios_base::fmtflags __flags, ios_base::iostate& __err,
2947
- bool& __neg, const ctype<char_type>& __ct,
2948
- unique_ptr<char_type, void(*)(void*)>& __wb,
2949
- char_type*& __wn, char_type* __we);
2950
- };
2951
-
2952
- template <class _CharT, class _InputIterator>
2953
- locale::id
2954
- money_get<_CharT, _InputIterator>::id;
2955
-
2956
- _LIBCPP_FUNC_VIS void __do_nothing(void*);
2957
-
2958
- template <class _Tp>
2959
- _LIBCPP_HIDDEN
2960
- void
2961
- __double_or_nothing(unique_ptr<_Tp, void(*)(void*)>& __b, _Tp*& __n, _Tp*& __e)
2962
- {
2963
- bool __owns = __b.get_deleter() != __do_nothing;
2964
- size_t __cur_cap = static_cast<size_t>(__e-__b.get()) * sizeof(_Tp);
2965
- size_t __new_cap = __cur_cap < numeric_limits<size_t>::max() / 2 ?
2966
- 2 * __cur_cap : numeric_limits<size_t>::max();
2967
- size_t __n_off = static_cast<size_t>(__n - __b.get());
2968
- _Tp* __t = (_Tp*)realloc(__owns ? __b.get() : 0, __new_cap);
2969
- if (__t == 0)
2970
- __throw_bad_alloc();
2971
- if (__owns)
2972
- __b.release();
2973
- __b = unique_ptr<_Tp, void(*)(void*)>(__t, free);
2974
- __new_cap /= sizeof(_Tp);
2975
- __n = __b.get() + __n_off;
2976
- __e = __b.get() + __new_cap;
2977
- }
2978
-
2979
- // true == success
2980
- template <class _CharT, class _InputIterator>
2981
- bool
2982
- money_get<_CharT, _InputIterator>::__do_get(iter_type& __b, iter_type __e,
2983
- bool __intl, const locale& __loc,
2984
- ios_base::fmtflags __flags,
2985
- ios_base::iostate& __err,
2986
- bool& __neg,
2987
- const ctype<char_type>& __ct,
2988
- unique_ptr<char_type, void(*)(void*)>& __wb,
2989
- char_type*& __wn, char_type* __we)
2990
- {
2991
- const unsigned __bz = 100;
2992
- unsigned __gbuf[__bz];
2993
- unique_ptr<unsigned, void(*)(void*)> __gb(__gbuf, __do_nothing);
2994
- unsigned* __gn = __gb.get();
2995
- unsigned* __ge = __gn + __bz;
2996
- money_base::pattern __pat;
2997
- char_type __dp;
2998
- char_type __ts;
2999
- string __grp;
3000
- string_type __sym;
3001
- string_type __psn;
3002
- string_type __nsn;
3003
- // Capture the spaces read into money_base::{space,none} so they
3004
- // can be compared to initial spaces in __sym.
3005
- string_type __spaces;
3006
- int __fd;
3007
- __money_get<_CharT>::__gather_info(__intl, __loc, __pat, __dp, __ts, __grp,
3008
- __sym, __psn, __nsn, __fd);
3009
- const string_type* __trailing_sign = 0;
3010
- __wn = __wb.get();
3011
- for (unsigned __p = 0; __p < 4 && __b != __e; ++__p)
3012
- {
3013
- switch (__pat.field[__p])
3014
- {
3015
- case money_base::space:
3016
- if (__p != 3)
3017
- {
3018
- if (__ct.is(ctype_base::space, *__b))
3019
- __spaces.push_back(*__b++);
3020
- else
3021
- {
3022
- __err |= ios_base::failbit;
3023
- return false;
3024
- }
3025
- }
3026
- // drop through
3027
- case money_base::none:
3028
- if (__p != 3)
3029
- {
3030
- while (__b != __e && __ct.is(ctype_base::space, *__b))
3031
- __spaces.push_back(*__b++);
3032
- }
3033
- break;
3034
- case money_base::sign:
3035
- if (__psn.size() + __nsn.size() > 0)
3036
- {
3037
- if (__psn.size() == 0 || __nsn.size() == 0)
3038
- { // sign is optional
3039
- if (__psn.size() > 0)
3040
- { // __nsn.size() == 0
3041
- if (*__b == __psn[0])
3042
- {
3043
- ++__b;
3044
- if (__psn.size() > 1)
3045
- __trailing_sign = &__psn;
3046
- }
3047
- else
3048
- __neg = true;
3049
- }
3050
- else if (*__b == __nsn[0]) // __nsn.size() > 0 && __psn.size() == 0
3051
- {
3052
- ++__b;
3053
- __neg = true;
3054
- if (__nsn.size() > 1)
3055
- __trailing_sign = &__nsn;
3056
- }
3057
- }
3058
- else // sign is required
3059
- {
3060
- if (*__b == __psn[0])
3061
- {
3062
- ++__b;
3063
- if (__psn.size() > 1)
3064
- __trailing_sign = &__psn;
3065
- }
3066
- else if (*__b == __nsn[0])
3067
- {
3068
- ++__b;
3069
- __neg = true;
3070
- if (__nsn.size() > 1)
3071
- __trailing_sign = &__nsn;
3072
- }
3073
- else
3074
- {
3075
- __err |= ios_base::failbit;
3076
- return false;
3077
- }
3078
- }
3079
- }
3080
- break;
3081
- case money_base::symbol:
3082
- {
3083
- bool __more_needed = __trailing_sign ||
3084
- (__p < 2) ||
3085
- (__p == 2 && __pat.field[3] != static_cast<char>(money_base::none));
3086
- bool __sb = (__flags & ios_base::showbase) != 0;
3087
- if (__sb || __more_needed)
3088
- {
3089
- typename string_type::const_iterator __sym_space_end = __sym.begin();
3090
- if (__p > 0 && (__pat.field[__p - 1] == money_base::none ||
3091
- __pat.field[__p - 1] == money_base::space)) {
3092
- // Match spaces we've already read against spaces at
3093
- // the beginning of __sym.
3094
- while (__sym_space_end != __sym.end() &&
3095
- __ct.is(ctype_base::space, *__sym_space_end))
3096
- ++__sym_space_end;
3097
- const size_t __num_spaces = __sym_space_end - __sym.begin();
3098
- if (__num_spaces > __spaces.size() ||
3099
- !equal(__spaces.end() - __num_spaces, __spaces.end(),
3100
- __sym.begin())) {
3101
- // No match. Put __sym_space_end back at the
3102
- // beginning of __sym, which will prevent a
3103
- // match in the next loop.
3104
- __sym_space_end = __sym.begin();
3105
- }
3106
- }
3107
- typename string_type::const_iterator __sym_curr_char = __sym_space_end;
3108
- while (__sym_curr_char != __sym.end() && __b != __e &&
3109
- *__b == *__sym_curr_char) {
3110
- ++__b;
3111
- ++__sym_curr_char;
3112
- }
3113
- if (__sb && __sym_curr_char != __sym.end())
3114
- {
3115
- __err |= ios_base::failbit;
3116
- return false;
3117
- }
3118
- }
3119
- }
3120
- break;
3121
- case money_base::value:
3122
- {
3123
- unsigned __ng = 0;
3124
- for (; __b != __e; ++__b)
3125
- {
3126
- char_type __c = *__b;
3127
- if (__ct.is(ctype_base::digit, __c))
3128
- {
3129
- if (__wn == __we)
3130
- __double_or_nothing(__wb, __wn, __we);
3131
- *__wn++ = __c;
3132
- ++__ng;
3133
- }
3134
- else if (__grp.size() > 0 && __ng > 0 && __c == __ts)
3135
- {
3136
- if (__gn == __ge)
3137
- __double_or_nothing(__gb, __gn, __ge);
3138
- *__gn++ = __ng;
3139
- __ng = 0;
3140
- }
3141
- else
3142
- break;
3143
- }
3144
- if (__gb.get() != __gn && __ng > 0)
3145
- {
3146
- if (__gn == __ge)
3147
- __double_or_nothing(__gb, __gn, __ge);
3148
- *__gn++ = __ng;
3149
- }
3150
- if (__fd > 0)
3151
- {
3152
- if (__b == __e || *__b != __dp)
3153
- {
3154
- __err |= ios_base::failbit;
3155
- return false;
3156
- }
3157
- for (++__b; __fd > 0; --__fd, ++__b)
3158
- {
3159
- if (__b == __e || !__ct.is(ctype_base::digit, *__b))
3160
- {
3161
- __err |= ios_base::failbit;
3162
- return false;
3163
- }
3164
- if (__wn == __we)
3165
- __double_or_nothing(__wb, __wn, __we);
3166
- *__wn++ = *__b;
3167
- }
3168
- }
3169
- if (__wn == __wb.get())
3170
- {
3171
- __err |= ios_base::failbit;
3172
- return false;
3173
- }
3174
- }
3175
- break;
3176
- }
3177
- }
3178
- if (__trailing_sign)
3179
- {
3180
- for (unsigned __i = 1; __i < __trailing_sign->size(); ++__i, ++__b)
3181
- {
3182
- if (__b == __e || *__b != (*__trailing_sign)[__i])
3183
- {
3184
- __err |= ios_base::failbit;
3185
- return false;
3186
- }
3187
- }
3188
- }
3189
- if (__gb.get() != __gn)
3190
- {
3191
- ios_base::iostate __et = ios_base::goodbit;
3192
- __check_grouping(__grp, __gb.get(), __gn, __et);
3193
- if (__et)
3194
- {
3195
- __err |= ios_base::failbit;
3196
- return false;
3197
- }
3198
- }
3199
- return true;
3200
- }
3201
-
3202
- template <class _CharT, class _InputIterator>
3203
- _InputIterator
3204
- money_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
3205
- bool __intl, ios_base& __iob,
3206
- ios_base::iostate& __err,
3207
- long double& __v) const
3208
- {
3209
- const int __bz = 100;
3210
- char_type __wbuf[__bz];
3211
- unique_ptr<char_type, void(*)(void*)> __wb(__wbuf, __do_nothing);
3212
- char_type* __wn;
3213
- char_type* __we = __wbuf + __bz;
3214
- locale __loc = __iob.getloc();
3215
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__loc);
3216
- bool __neg = false;
3217
- if (__do_get(__b, __e, __intl, __loc, __iob.flags(), __err, __neg, __ct,
3218
- __wb, __wn, __we))
3219
- {
3220
- const char __src[] = "0123456789";
3221
- char_type __atoms[sizeof(__src)-1];
3222
- __ct.widen(__src, __src + (sizeof(__src)-1), __atoms);
3223
- char __nbuf[__bz];
3224
- char* __nc = __nbuf;
3225
- unique_ptr<char, void(*)(void*)> __h(0, free);
3226
- if (__wn - __wb.get() > __bz-2)
3227
- {
3228
- __h.reset((char*)malloc(static_cast<size_t>(__wn - __wb.get() + 2)));
3229
- if (__h.get() == 0)
3230
- __throw_bad_alloc();
3231
- __nc = __h.get();
3232
- }
3233
- if (__neg)
3234
- *__nc++ = '-';
3235
- for (const char_type* __w = __wb.get(); __w < __wn; ++__w, ++__nc)
3236
- *__nc = __src[find(__atoms, _VSTD::end(__atoms), *__w) - __atoms];
3237
- *__nc = char();
3238
- if (sscanf(__nbuf, "%Lf", &__v) != 1)
3239
- __throw_runtime_error("money_get error");
3240
- }
3241
- if (__b == __e)
3242
- __err |= ios_base::eofbit;
3243
- return __b;
3244
- }
3245
-
3246
- template <class _CharT, class _InputIterator>
3247
- _InputIterator
3248
- money_get<_CharT, _InputIterator>::do_get(iter_type __b, iter_type __e,
3249
- bool __intl, ios_base& __iob,
3250
- ios_base::iostate& __err,
3251
- string_type& __v) const
3252
- {
3253
- const int __bz = 100;
3254
- char_type __wbuf[__bz];
3255
- unique_ptr<char_type, void(*)(void*)> __wb(__wbuf, __do_nothing);
3256
- char_type* __wn;
3257
- char_type* __we = __wbuf + __bz;
3258
- locale __loc = __iob.getloc();
3259
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__loc);
3260
- bool __neg = false;
3261
- if (__do_get(__b, __e, __intl, __loc, __iob.flags(), __err, __neg, __ct,
3262
- __wb, __wn, __we))
3263
- {
3264
- __v.clear();
3265
- if (__neg)
3266
- __v.push_back(__ct.widen('-'));
3267
- char_type __z = __ct.widen('0');
3268
- char_type* __w;
3269
- for (__w = __wb.get(); __w < __wn-1; ++__w)
3270
- if (*__w != __z)
3271
- break;
3272
- __v.append(__w, __wn);
3273
- }
3274
- if (__b == __e)
3275
- __err |= ios_base::eofbit;
3276
- return __b;
3277
- }
3278
-
3279
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS money_get<char>)
3280
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS money_get<wchar_t>)
3281
-
3282
- // money_put
3283
-
3284
- template <class _CharT>
3285
- class __money_put
3286
- {
3287
- protected:
3288
- typedef _CharT char_type;
3289
- typedef basic_string<char_type> string_type;
3290
-
3291
- _LIBCPP_ALWAYS_INLINE __money_put() {}
3292
-
3293
- static void __gather_info(bool __intl, bool __neg, const locale& __loc,
3294
- money_base::pattern& __pat, char_type& __dp,
3295
- char_type& __ts, string& __grp,
3296
- string_type& __sym, string_type& __sn,
3297
- int& __fd);
3298
- static void __format(char_type* __mb, char_type*& __mi, char_type*& __me,
3299
- ios_base::fmtflags __flags,
3300
- const char_type* __db, const char_type* __de,
3301
- const ctype<char_type>& __ct, bool __neg,
3302
- const money_base::pattern& __pat, char_type __dp,
3303
- char_type __ts, const string& __grp,
3304
- const string_type& __sym, const string_type& __sn,
3305
- int __fd);
3306
- };
3307
-
3308
- template <class _CharT>
3309
- void
3310
- __money_put<_CharT>::__gather_info(bool __intl, bool __neg, const locale& __loc,
3311
- money_base::pattern& __pat, char_type& __dp,
3312
- char_type& __ts, string& __grp,
3313
- string_type& __sym, string_type& __sn,
3314
- int& __fd)
3315
- {
3316
- if (__intl)
3317
- {
3318
- const moneypunct<char_type, true>& __mp =
3319
- use_facet<moneypunct<char_type, true> >(__loc);
3320
- if (__neg)
3321
- {
3322
- __pat = __mp.neg_format();
3323
- __sn = __mp.negative_sign();
3324
- }
3325
- else
3326
- {
3327
- __pat = __mp.pos_format();
3328
- __sn = __mp.positive_sign();
3329
- }
3330
- __dp = __mp.decimal_point();
3331
- __ts = __mp.thousands_sep();
3332
- __grp = __mp.grouping();
3333
- __sym = __mp.curr_symbol();
3334
- __fd = __mp.frac_digits();
3335
- }
3336
- else
3337
- {
3338
- const moneypunct<char_type, false>& __mp =
3339
- use_facet<moneypunct<char_type, false> >(__loc);
3340
- if (__neg)
3341
- {
3342
- __pat = __mp.neg_format();
3343
- __sn = __mp.negative_sign();
3344
- }
3345
- else
3346
- {
3347
- __pat = __mp.pos_format();
3348
- __sn = __mp.positive_sign();
3349
- }
3350
- __dp = __mp.decimal_point();
3351
- __ts = __mp.thousands_sep();
3352
- __grp = __mp.grouping();
3353
- __sym = __mp.curr_symbol();
3354
- __fd = __mp.frac_digits();
3355
- }
3356
- }
3357
-
3358
- template <class _CharT>
3359
- void
3360
- __money_put<_CharT>::__format(char_type* __mb, char_type*& __mi, char_type*& __me,
3361
- ios_base::fmtflags __flags,
3362
- const char_type* __db, const char_type* __de,
3363
- const ctype<char_type>& __ct, bool __neg,
3364
- const money_base::pattern& __pat, char_type __dp,
3365
- char_type __ts, const string& __grp,
3366
- const string_type& __sym, const string_type& __sn,
3367
- int __fd)
3368
- {
3369
- __me = __mb;
3370
- for (unsigned __p = 0; __p < 4; ++__p)
3371
- {
3372
- switch (__pat.field[__p])
3373
- {
3374
- case money_base::none:
3375
- __mi = __me;
3376
- break;
3377
- case money_base::space:
3378
- __mi = __me;
3379
- *__me++ = __ct.widen(' ');
3380
- break;
3381
- case money_base::sign:
3382
- if (!__sn.empty())
3383
- *__me++ = __sn[0];
3384
- break;
3385
- case money_base::symbol:
3386
- if (!__sym.empty() && (__flags & ios_base::showbase))
3387
- __me = _VSTD::copy(__sym.begin(), __sym.end(), __me);
3388
- break;
3389
- case money_base::value:
3390
- {
3391
- // remember start of value so we can reverse it
3392
- char_type* __t = __me;
3393
- // find beginning of digits
3394
- if (__neg)
3395
- ++__db;
3396
- // find end of digits
3397
- const char_type* __d;
3398
- for (__d = __db; __d < __de; ++__d)
3399
- if (!__ct.is(ctype_base::digit, *__d))
3400
- break;
3401
- // print fractional part
3402
- if (__fd > 0)
3403
- {
3404
- int __f;
3405
- for (__f = __fd; __d > __db && __f > 0; --__f)
3406
- *__me++ = *--__d;
3407
- char_type __z = __f > 0 ? __ct.widen('0') : char_type();
3408
- for (; __f > 0; --__f)
3409
- *__me++ = __z;
3410
- *__me++ = __dp;
3411
- }
3412
- // print units part
3413
- if (__d == __db)
3414
- {
3415
- *__me++ = __ct.widen('0');
3416
- }
3417
- else
3418
- {
3419
- unsigned __ng = 0;
3420
- unsigned __ig = 0;
3421
- unsigned __gl = __grp.empty() ? numeric_limits<unsigned>::max()
3422
- : static_cast<unsigned>(__grp[__ig]);
3423
- while (__d != __db)
3424
- {
3425
- if (__ng == __gl)
3426
- {
3427
- *__me++ = __ts;
3428
- __ng = 0;
3429
- if (++__ig < __grp.size())
3430
- __gl = __grp[__ig] == numeric_limits<char>::max() ?
3431
- numeric_limits<unsigned>::max() :
3432
- static_cast<unsigned>(__grp[__ig]);
3433
- }
3434
- *__me++ = *--__d;
3435
- ++__ng;
3436
- }
3437
- }
3438
- // reverse it
3439
- reverse(__t, __me);
3440
- }
3441
- break;
3442
- }
3443
- }
3444
- // print rest of sign, if any
3445
- if (__sn.size() > 1)
3446
- __me = _VSTD::copy(__sn.begin()+1, __sn.end(), __me);
3447
- // set alignment
3448
- if ((__flags & ios_base::adjustfield) == ios_base::left)
3449
- __mi = __me;
3450
- else if ((__flags & ios_base::adjustfield) != ios_base::internal)
3451
- __mi = __mb;
3452
- }
3453
-
3454
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS __money_put<char>)
3455
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS __money_put<wchar_t>)
3456
-
3457
- template <class _CharT, class _OutputIterator = ostreambuf_iterator<_CharT> >
3458
- class _LIBCPP_TYPE_VIS_ONLY money_put
3459
- : public locale::facet,
3460
- private __money_put<_CharT>
3461
- {
3462
- public:
3463
- typedef _CharT char_type;
3464
- typedef _OutputIterator iter_type;
3465
- typedef basic_string<char_type> string_type;
3466
-
3467
- _LIBCPP_ALWAYS_INLINE
3468
- explicit money_put(size_t __refs = 0)
3469
- : locale::facet(__refs) {}
3470
-
3471
- _LIBCPP_ALWAYS_INLINE
3472
- iter_type put(iter_type __s, bool __intl, ios_base& __iob, char_type __fl,
3473
- long double __units) const
3474
- {
3475
- return do_put(__s, __intl, __iob, __fl, __units);
3476
- }
3477
-
3478
- _LIBCPP_ALWAYS_INLINE
3479
- iter_type put(iter_type __s, bool __intl, ios_base& __iob, char_type __fl,
3480
- const string_type& __digits) const
3481
- {
3482
- return do_put(__s, __intl, __iob, __fl, __digits);
3483
- }
3484
-
3485
- static locale::id id;
3486
-
3487
- protected:
3488
- _LIBCPP_ALWAYS_INLINE
3489
- ~money_put() {}
3490
-
3491
- virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __iob,
3492
- char_type __fl, long double __units) const;
3493
- virtual iter_type do_put(iter_type __s, bool __intl, ios_base& __iob,
3494
- char_type __fl, const string_type& __digits) const;
3495
- };
3496
-
3497
- template <class _CharT, class _OutputIterator>
3498
- locale::id
3499
- money_put<_CharT, _OutputIterator>::id;
3500
-
3501
- template <class _CharT, class _OutputIterator>
3502
- _OutputIterator
3503
- money_put<_CharT, _OutputIterator>::do_put(iter_type __s, bool __intl,
3504
- ios_base& __iob, char_type __fl,
3505
- long double __units) const
3506
- {
3507
- // convert to char
3508
- const size_t __bs = 100;
3509
- char __buf[__bs];
3510
- char* __bb = __buf;
3511
- char_type __digits[__bs];
3512
- char_type* __db = __digits;
3513
- size_t __n = static_cast<size_t>(snprintf(__bb, __bs, "%.0Lf", __units));
3514
- unique_ptr<char, void(*)(void*)> __hn(0, free);
3515
- unique_ptr<char_type, void(*)(void*)> __hd(0, free);
3516
- // secure memory for digit storage
3517
- if (__n > __bs-1)
3518
- {
3519
- #ifdef _LIBCPP_LOCALE__L_EXTENSIONS
3520
- __n = static_cast<size_t>(asprintf_l(&__bb, _LIBCPP_GET_C_LOCALE, "%.0Lf", __units));
3521
- #else
3522
- __n = __asprintf_l(&__bb, __cloc(), "%.0Lf", __units);
3523
- #endif
3524
- if (__bb == 0)
3525
- __throw_bad_alloc();
3526
- __hn.reset(__bb);
3527
- __hd.reset((char_type*)malloc(__n * sizeof(char_type)));
3528
- if (__hd == nullptr)
3529
- __throw_bad_alloc();
3530
- __db = __hd.get();
3531
- }
3532
- // gather info
3533
- locale __loc = __iob.getloc();
3534
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__loc);
3535
- __ct.widen(__bb, __bb + __n, __db);
3536
- bool __neg = __n > 0 && __bb[0] == '-';
3537
- money_base::pattern __pat;
3538
- char_type __dp;
3539
- char_type __ts;
3540
- string __grp;
3541
- string_type __sym;
3542
- string_type __sn;
3543
- int __fd;
3544
- this->__gather_info(__intl, __neg, __loc, __pat, __dp, __ts, __grp, __sym, __sn, __fd);
3545
- // secure memory for formatting
3546
- char_type __mbuf[__bs];
3547
- char_type* __mb = __mbuf;
3548
- unique_ptr<char_type, void(*)(void*)> __hw(0, free);
3549
- size_t __exn = static_cast<int>(__n) > __fd ?
3550
- (__n - static_cast<size_t>(__fd)) * 2 + __sn.size() +
3551
- __sym.size() + static_cast<size_t>(__fd) + 1
3552
- : __sn.size() + __sym.size() + static_cast<size_t>(__fd) + 2;
3553
- if (__exn > __bs)
3554
- {
3555
- __hw.reset((char_type*)malloc(__exn * sizeof(char_type)));
3556
- __mb = __hw.get();
3557
- if (__mb == 0)
3558
- __throw_bad_alloc();
3559
- }
3560
- // format
3561
- char_type* __mi;
3562
- char_type* __me;
3563
- this->__format(__mb, __mi, __me, __iob.flags(),
3564
- __db, __db + __n, __ct,
3565
- __neg, __pat, __dp, __ts, __grp, __sym, __sn, __fd);
3566
- return __pad_and_output(__s, __mb, __mi, __me, __iob, __fl);
3567
- }
3568
-
3569
- template <class _CharT, class _OutputIterator>
3570
- _OutputIterator
3571
- money_put<_CharT, _OutputIterator>::do_put(iter_type __s, bool __intl,
3572
- ios_base& __iob, char_type __fl,
3573
- const string_type& __digits) const
3574
- {
3575
- // gather info
3576
- locale __loc = __iob.getloc();
3577
- const ctype<char_type>& __ct = use_facet<ctype<char_type> >(__loc);
3578
- bool __neg = __digits.size() > 0 && __digits[0] == __ct.widen('-');
3579
- money_base::pattern __pat;
3580
- char_type __dp;
3581
- char_type __ts;
3582
- string __grp;
3583
- string_type __sym;
3584
- string_type __sn;
3585
- int __fd;
3586
- this->__gather_info(__intl, __neg, __loc, __pat, __dp, __ts, __grp, __sym, __sn, __fd);
3587
- // secure memory for formatting
3588
- char_type __mbuf[100];
3589
- char_type* __mb = __mbuf;
3590
- unique_ptr<char_type, void(*)(void*)> __h(0, free);
3591
- size_t __exn = static_cast<int>(__digits.size()) > __fd ?
3592
- (__digits.size() - static_cast<size_t>(__fd)) * 2 +
3593
- __sn.size() + __sym.size() + static_cast<size_t>(__fd) + 1
3594
- : __sn.size() + __sym.size() + static_cast<size_t>(__fd) + 2;
3595
- if (__exn > 100)
3596
- {
3597
- __h.reset((char_type*)malloc(__exn * sizeof(char_type)));
3598
- __mb = __h.get();
3599
- if (__mb == 0)
3600
- __throw_bad_alloc();
3601
- }
3602
- // format
3603
- char_type* __mi;
3604
- char_type* __me;
3605
- this->__format(__mb, __mi, __me, __iob.flags(),
3606
- __digits.data(), __digits.data() + __digits.size(), __ct,
3607
- __neg, __pat, __dp, __ts, __grp, __sym, __sn, __fd);
3608
- return __pad_and_output(__s, __mb, __mi, __me, __iob, __fl);
3609
- }
3610
-
3611
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS money_put<char>)
3612
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS money_put<wchar_t>)
3613
-
3614
- // messages
3615
-
3616
- class _LIBCPP_TYPE_VIS messages_base
3617
- {
3618
- public:
3619
- typedef ptrdiff_t catalog;
3620
-
3621
- _LIBCPP_ALWAYS_INLINE messages_base() {}
3622
- };
3623
-
3624
- template <class _CharT>
3625
- class _LIBCPP_TYPE_VIS_ONLY messages
3626
- : public locale::facet,
3627
- public messages_base
3628
- {
3629
- public:
3630
- typedef _CharT char_type;
3631
- typedef basic_string<_CharT> string_type;
3632
-
3633
- _LIBCPP_ALWAYS_INLINE
3634
- explicit messages(size_t __refs = 0)
3635
- : locale::facet(__refs) {}
3636
-
3637
- _LIBCPP_ALWAYS_INLINE
3638
- catalog open(const basic_string<char>& __nm, const locale& __loc) const
3639
- {
3640
- return do_open(__nm, __loc);
3641
- }
3642
-
3643
- _LIBCPP_ALWAYS_INLINE
3644
- string_type get(catalog __c, int __set, int __msgid,
3645
- const string_type& __dflt) const
3646
- {
3647
- return do_get(__c, __set, __msgid, __dflt);
3648
- }
3649
-
3650
- _LIBCPP_ALWAYS_INLINE
3651
- void close(catalog __c) const
3652
- {
3653
- do_close(__c);
3654
- }
3655
-
3656
- static locale::id id;
3657
-
3658
- protected:
3659
- _LIBCPP_ALWAYS_INLINE
3660
- ~messages() {}
3661
-
3662
- virtual catalog do_open(const basic_string<char>&, const locale&) const;
3663
- virtual string_type do_get(catalog, int __set, int __msgid,
3664
- const string_type& __dflt) const;
3665
- virtual void do_close(catalog) const;
3666
- };
3667
-
3668
- template <class _CharT>
3669
- locale::id
3670
- messages<_CharT>::id;
3671
-
3672
- template <class _CharT>
3673
- typename messages<_CharT>::catalog
3674
- messages<_CharT>::do_open(const basic_string<char>& __nm, const locale&) const
3675
- {
3676
- #ifdef _WIN32
3677
- return -1;
3678
- #else // _WIN32
3679
- catalog __cat = (catalog)catopen(__nm.c_str(), NL_CAT_LOCALE);
3680
- if (__cat != -1)
3681
- __cat = static_cast<catalog>((static_cast<size_t>(__cat) >> 1));
3682
- return __cat;
3683
- #endif // _WIN32
3684
- }
3685
-
3686
- template <class _CharT>
3687
- typename messages<_CharT>::string_type
3688
- messages<_CharT>::do_get(catalog __c, int __set, int __msgid,
3689
- const string_type& __dflt) const
3690
- {
3691
- #ifdef _WIN32
3692
- return __dflt;
3693
- #else // _WIN32
3694
- string __ndflt;
3695
- __narrow_to_utf8<sizeof(char_type)*__CHAR_BIT__>()(back_inserter(__ndflt),
3696
- __dflt.c_str(),
3697
- __dflt.c_str() + __dflt.size());
3698
- if (__c != -1)
3699
- __c <<= 1;
3700
- nl_catd __cat = (nl_catd)__c;
3701
- char* __n = catgets(__cat, __set, __msgid, __ndflt.c_str());
3702
- string_type __w;
3703
- __widen_from_utf8<sizeof(char_type)*__CHAR_BIT__>()(back_inserter(__w),
3704
- __n, __n + strlen(__n));
3705
- return __w;
3706
- #endif // _WIN32
3707
- }
3708
-
3709
- template <class _CharT>
3710
- void
3711
- messages<_CharT>::do_close(catalog __c) const
3712
- {
3713
- #if !defined(_WIN32)
3714
- if (__c != -1)
3715
- __c <<= 1;
3716
- nl_catd __cat = (nl_catd)__c;
3717
- catclose(__cat);
3718
- #endif // !_WIN32
3719
- }
3720
-
3721
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS messages<char>)
3722
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS messages<wchar_t>)
3723
-
3724
- template <class _CharT>
3725
- class _LIBCPP_TYPE_VIS_ONLY messages_byname
3726
- : public messages<_CharT>
3727
- {
3728
- public:
3729
- typedef messages_base::catalog catalog;
3730
- typedef basic_string<_CharT> string_type;
3731
-
3732
- _LIBCPP_ALWAYS_INLINE
3733
- explicit messages_byname(const char*, size_t __refs = 0)
3734
- : messages<_CharT>(__refs) {}
3735
-
3736
- _LIBCPP_ALWAYS_INLINE
3737
- explicit messages_byname(const string&, size_t __refs = 0)
3738
- : messages<_CharT>(__refs) {}
3739
-
3740
- protected:
3741
- _LIBCPP_ALWAYS_INLINE
3742
- ~messages_byname() {}
3743
- };
3744
-
3745
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS messages_byname<char>)
3746
- _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS messages_byname<wchar_t>)
3747
-
3748
- template<class _Codecvt, class _Elem = wchar_t,
3749
- class _Wide_alloc = allocator<_Elem>,
3750
- class _Byte_alloc = allocator<char> >
3751
- class _LIBCPP_TYPE_VIS_ONLY wstring_convert
3752
- {
3753
- public:
3754
- typedef basic_string<char, char_traits<char>, _Byte_alloc> byte_string;
3755
- typedef basic_string<_Elem, char_traits<_Elem>, _Wide_alloc> wide_string;
3756
- typedef typename _Codecvt::state_type state_type;
3757
- typedef typename wide_string::traits_type::int_type int_type;
3758
-
3759
- private:
3760
- byte_string __byte_err_string_;
3761
- wide_string __wide_err_string_;
3762
- _Codecvt* __cvtptr_;
3763
- state_type __cvtstate_;
3764
- size_t __cvtcount_;
3765
-
3766
- wstring_convert(const wstring_convert& __wc);
3767
- wstring_convert& operator=(const wstring_convert& __wc);
3768
- public:
3769
- _LIBCPP_EXPLICIT_AFTER_CXX11 wstring_convert(_Codecvt* __pcvt = new _Codecvt);
3770
- wstring_convert(_Codecvt* __pcvt, state_type __state);
3771
- _LIBCPP_EXPLICIT_AFTER_CXX11 wstring_convert(const byte_string& __byte_err,
3772
- const wide_string& __wide_err = wide_string());
3773
- #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
3774
- wstring_convert(wstring_convert&& __wc);
3775
- #endif
3776
- ~wstring_convert();
3777
-
3778
- _LIBCPP_ALWAYS_INLINE
3779
- wide_string from_bytes(char __byte)
3780
- {return from_bytes(&__byte, &__byte+1);}
3781
- _LIBCPP_ALWAYS_INLINE
3782
- wide_string from_bytes(const char* __ptr)
3783
- {return from_bytes(__ptr, __ptr + char_traits<char>::length(__ptr));}
3784
- _LIBCPP_ALWAYS_INLINE
3785
- wide_string from_bytes(const byte_string& __str)
3786
- {return from_bytes(__str.data(), __str.data() + __str.size());}
3787
- wide_string from_bytes(const char* __first, const char* __last);
3788
-
3789
- _LIBCPP_ALWAYS_INLINE
3790
- byte_string to_bytes(_Elem __wchar)
3791
- {return to_bytes(&__wchar, &__wchar+1);}
3792
- _LIBCPP_ALWAYS_INLINE
3793
- byte_string to_bytes(const _Elem* __wptr)
3794
- {return to_bytes(__wptr, __wptr + char_traits<_Elem>::length(__wptr));}
3795
- _LIBCPP_ALWAYS_INLINE
3796
- byte_string to_bytes(const wide_string& __wstr)
3797
- {return to_bytes(__wstr.data(), __wstr.data() + __wstr.size());}
3798
- byte_string to_bytes(const _Elem* __first, const _Elem* __last);
3799
-
3800
- _LIBCPP_ALWAYS_INLINE
3801
- size_t converted() const _NOEXCEPT {return __cvtcount_;}
3802
- _LIBCPP_ALWAYS_INLINE
3803
- state_type state() const {return __cvtstate_;}
3804
- };
3805
-
3806
- template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
3807
- inline _LIBCPP_ALWAYS_INLINE
3808
- wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
3809
- wstring_convert(_Codecvt* __pcvt)
3810
- : __cvtptr_(__pcvt), __cvtstate_(), __cvtcount_(0)
3811
- {
3812
- }
3813
-
3814
- template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
3815
- inline _LIBCPP_ALWAYS_INLINE
3816
- wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
3817
- wstring_convert(_Codecvt* __pcvt, state_type __state)
3818
- : __cvtptr_(__pcvt), __cvtstate_(__state), __cvtcount_(0)
3819
- {
3820
- }
3821
-
3822
- template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
3823
- wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
3824
- wstring_convert(const byte_string& __byte_err, const wide_string& __wide_err)
3825
- : __byte_err_string_(__byte_err), __wide_err_string_(__wide_err),
3826
- __cvtstate_(), __cvtcount_(0)
3827
- {
3828
- __cvtptr_ = new _Codecvt;
3829
- }
3830
-
3831
- #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
3832
-
3833
- template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
3834
- inline _LIBCPP_ALWAYS_INLINE
3835
- wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
3836
- wstring_convert(wstring_convert&& __wc)
3837
- : __byte_err_string_(_VSTD::move(__wc.__byte_err_string_)),
3838
- __wide_err_string_(_VSTD::move(__wc.__wide_err_string_)),
3839
- __cvtptr_(__wc.__cvtptr_),
3840
- __cvtstate_(__wc.__cvtstate_), __cvtcount_(__wc.__cvtstate_)
3841
- {
3842
- __wc.__cvtptr_ = nullptr;
3843
- }
3844
-
3845
- #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
3846
-
3847
- template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
3848
- wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::~wstring_convert()
3849
- {
3850
- delete __cvtptr_;
3851
- }
3852
-
3853
- template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
3854
- typename wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::wide_string
3855
- wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
3856
- from_bytes(const char* __frm, const char* __frm_end)
3857
- {
3858
- __cvtcount_ = 0;
3859
- if (__cvtptr_ != nullptr)
3860
- {
3861
- wide_string __ws(2*(__frm_end - __frm), _Elem());
3862
- if (__frm != __frm_end)
3863
- __ws.resize(__ws.capacity());
3864
- codecvt_base::result __r = codecvt_base::ok;
3865
- state_type __st = __cvtstate_;
3866
- if (__frm != __frm_end)
3867
- {
3868
- _Elem* __to = &__ws[0];
3869
- _Elem* __to_end = __to + __ws.size();
3870
- const char* __frm_nxt;
3871
- do
3872
- {
3873
- _Elem* __to_nxt;
3874
- __r = __cvtptr_->in(__st, __frm, __frm_end, __frm_nxt,
3875
- __to, __to_end, __to_nxt);
3876
- __cvtcount_ += __frm_nxt - __frm;
3877
- if (__frm_nxt == __frm)
3878
- {
3879
- __r = codecvt_base::error;
3880
- }
3881
- else if (__r == codecvt_base::noconv)
3882
- {
3883
- __ws.resize(__to - &__ws[0]);
3884
- // This only gets executed if _Elem is char
3885
- __ws.append((const _Elem*)__frm, (const _Elem*)__frm_end);
3886
- __frm = __frm_nxt;
3887
- __r = codecvt_base::ok;
3888
- }
3889
- else if (__r == codecvt_base::ok)
3890
- {
3891
- __ws.resize(__to_nxt - &__ws[0]);
3892
- __frm = __frm_nxt;
3893
- }
3894
- else if (__r == codecvt_base::partial)
3895
- {
3896
- ptrdiff_t __s = __to_nxt - &__ws[0];
3897
- __ws.resize(2 * __s);
3898
- __to = &__ws[0] + __s;
3899
- __to_end = &__ws[0] + __ws.size();
3900
- __frm = __frm_nxt;
3901
- }
3902
- } while (__r == codecvt_base::partial && __frm_nxt < __frm_end);
3903
- }
3904
- if (__r == codecvt_base::ok)
3905
- return __ws;
3906
- }
3907
- #ifndef _LIBCPP_NO_EXCEPTIONS
3908
- if (__wide_err_string_.empty())
3909
- throw range_error("wstring_convert: from_bytes error");
3910
- #endif // _LIBCPP_NO_EXCEPTIONS
3911
- return __wide_err_string_;
3912
- }
3913
-
3914
- template<class _Codecvt, class _Elem, class _Wide_alloc, class _Byte_alloc>
3915
- typename wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::byte_string
3916
- wstring_convert<_Codecvt, _Elem, _Wide_alloc, _Byte_alloc>::
3917
- to_bytes(const _Elem* __frm, const _Elem* __frm_end)
3918
- {
3919
- __cvtcount_ = 0;
3920
- if (__cvtptr_ != nullptr)
3921
- {
3922
- byte_string __bs(2*(__frm_end - __frm), char());
3923
- if (__frm != __frm_end)
3924
- __bs.resize(__bs.capacity());
3925
- codecvt_base::result __r = codecvt_base::ok;
3926
- state_type __st = __cvtstate_;
3927
- if (__frm != __frm_end)
3928
- {
3929
- char* __to = &__bs[0];
3930
- char* __to_end = __to + __bs.size();
3931
- const _Elem* __frm_nxt;
3932
- do
3933
- {
3934
- char* __to_nxt;
3935
- __r = __cvtptr_->out(__st, __frm, __frm_end, __frm_nxt,
3936
- __to, __to_end, __to_nxt);
3937
- __cvtcount_ += __frm_nxt - __frm;
3938
- if (__frm_nxt == __frm)
3939
- {
3940
- __r = codecvt_base::error;
3941
- }
3942
- else if (__r == codecvt_base::noconv)
3943
- {
3944
- __bs.resize(__to - &__bs[0]);
3945
- // This only gets executed if _Elem is char
3946
- __bs.append((const char*)__frm, (const char*)__frm_end);
3947
- __frm = __frm_nxt;
3948
- __r = codecvt_base::ok;
3949
- }
3950
- else if (__r == codecvt_base::ok)
3951
- {
3952
- __bs.resize(__to_nxt - &__bs[0]);
3953
- __frm = __frm_nxt;
3954
- }
3955
- else if (__r == codecvt_base::partial)
3956
- {
3957
- ptrdiff_t __s = __to_nxt - &__bs[0];
3958
- __bs.resize(2 * __s);
3959
- __to = &__bs[0] + __s;
3960
- __to_end = &__bs[0] + __bs.size();
3961
- __frm = __frm_nxt;
3962
- }
3963
- } while (__r == codecvt_base::partial && __frm_nxt < __frm_end);
3964
- }
3965
- if (__r == codecvt_base::ok)
3966
- {
3967
- size_t __s = __bs.size();
3968
- __bs.resize(__bs.capacity());
3969
- char* __to = &__bs[0] + __s;
3970
- char* __to_end = __to + __bs.size();
3971
- do
3972
- {
3973
- char* __to_nxt;
3974
- __r = __cvtptr_->unshift(__st, __to, __to_end, __to_nxt);
3975
- if (__r == codecvt_base::noconv)
3976
- {
3977
- __bs.resize(__to - &__bs[0]);
3978
- __r = codecvt_base::ok;
3979
- }
3980
- else if (__r == codecvt_base::ok)
3981
- {
3982
- __bs.resize(__to_nxt - &__bs[0]);
3983
- }
3984
- else if (__r == codecvt_base::partial)
3985
- {
3986
- ptrdiff_t __sp = __to_nxt - &__bs[0];
3987
- __bs.resize(2 * __sp);
3988
- __to = &__bs[0] + __sp;
3989
- __to_end = &__bs[0] + __bs.size();
3990
- }
3991
- } while (__r == codecvt_base::partial);
3992
- if (__r == codecvt_base::ok)
3993
- return __bs;
3994
- }
3995
- }
3996
- #ifndef _LIBCPP_NO_EXCEPTIONS
3997
- if (__byte_err_string_.empty())
3998
- throw range_error("wstring_convert: to_bytes error");
3999
- #endif // _LIBCPP_NO_EXCEPTIONS
4000
- return __byte_err_string_;
4001
- }
4002
-
4003
- template <class _Codecvt, class _Elem = wchar_t, class _Tr = char_traits<_Elem> >
4004
- class _LIBCPP_TYPE_VIS_ONLY wbuffer_convert
4005
- : public basic_streambuf<_Elem, _Tr>
4006
- {
4007
- public:
4008
- // types:
4009
- typedef _Elem char_type;
4010
- typedef _Tr traits_type;
4011
- typedef typename traits_type::int_type int_type;
4012
- typedef typename traits_type::pos_type pos_type;
4013
- typedef typename traits_type::off_type off_type;
4014
- typedef typename _Codecvt::state_type state_type;
4015
-
4016
- private:
4017
- char* __extbuf_;
4018
- const char* __extbufnext_;
4019
- const char* __extbufend_;
4020
- char __extbuf_min_[8];
4021
- size_t __ebs_;
4022
- char_type* __intbuf_;
4023
- size_t __ibs_;
4024
- streambuf* __bufptr_;
4025
- _Codecvt* __cv_;
4026
- state_type __st_;
4027
- ios_base::openmode __cm_;
4028
- bool __owns_eb_;
4029
- bool __owns_ib_;
4030
- bool __always_noconv_;
4031
-
4032
- wbuffer_convert(const wbuffer_convert&);
4033
- wbuffer_convert& operator=(const wbuffer_convert&);
4034
- public:
4035
- _LIBCPP_EXPLICIT_AFTER_CXX11 wbuffer_convert(streambuf* __bytebuf = 0,
4036
- _Codecvt* __pcvt = new _Codecvt, state_type __state = state_type());
4037
- ~wbuffer_convert();
4038
-
4039
- _LIBCPP_INLINE_VISIBILITY
4040
- streambuf* rdbuf() const {return __bufptr_;}
4041
- _LIBCPP_INLINE_VISIBILITY
4042
- streambuf* rdbuf(streambuf* __bytebuf)
4043
- {
4044
- streambuf* __r = __bufptr_;
4045
- __bufptr_ = __bytebuf;
4046
- return __r;
4047
- }
4048
-
4049
- _LIBCPP_INLINE_VISIBILITY
4050
- state_type state() const {return __st_;}
4051
-
4052
- protected:
4053
- virtual int_type underflow();
4054
- virtual int_type pbackfail(int_type __c = traits_type::eof());
4055
- virtual int_type overflow (int_type __c = traits_type::eof());
4056
- virtual basic_streambuf<char_type, traits_type>* setbuf(char_type* __s,
4057
- streamsize __n);
4058
- virtual pos_type seekoff(off_type __off, ios_base::seekdir __way,
4059
- ios_base::openmode __wch = ios_base::in | ios_base::out);
4060
- virtual pos_type seekpos(pos_type __sp,
4061
- ios_base::openmode __wch = ios_base::in | ios_base::out);
4062
- virtual int sync();
4063
-
4064
- private:
4065
- bool __read_mode();
4066
- void __write_mode();
4067
- wbuffer_convert* __close();
4068
- };
4069
-
4070
- template <class _Codecvt, class _Elem, class _Tr>
4071
- wbuffer_convert<_Codecvt, _Elem, _Tr>::
4072
- wbuffer_convert(streambuf* __bytebuf, _Codecvt* __pcvt, state_type __state)
4073
- : __extbuf_(0),
4074
- __extbufnext_(0),
4075
- __extbufend_(0),
4076
- __ebs_(0),
4077
- __intbuf_(0),
4078
- __ibs_(0),
4079
- __bufptr_(__bytebuf),
4080
- __cv_(__pcvt),
4081
- __st_(__state),
4082
- __cm_(0),
4083
- __owns_eb_(false),
4084
- __owns_ib_(false),
4085
- __always_noconv_(__cv_ ? __cv_->always_noconv() : false)
4086
- {
4087
- setbuf(0, 4096);
4088
- }
4089
-
4090
- template <class _Codecvt, class _Elem, class _Tr>
4091
- wbuffer_convert<_Codecvt, _Elem, _Tr>::~wbuffer_convert()
4092
- {
4093
- __close();
4094
- delete __cv_;
4095
- if (__owns_eb_)
4096
- delete [] __extbuf_;
4097
- if (__owns_ib_)
4098
- delete [] __intbuf_;
4099
- }
4100
-
4101
- template <class _Codecvt, class _Elem, class _Tr>
4102
- typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type
4103
- wbuffer_convert<_Codecvt, _Elem, _Tr>::underflow()
4104
- {
4105
- if (__cv_ == 0 || __bufptr_ == 0)
4106
- return traits_type::eof();
4107
- bool __initial = __read_mode();
4108
- char_type __1buf;
4109
- if (this->gptr() == 0)
4110
- this->setg(&__1buf, &__1buf+1, &__1buf+1);
4111
- const size_t __unget_sz = __initial ? 0 : min<size_t>((this->egptr() - this->eback()) / 2, 4);
4112
- int_type __c = traits_type::eof();
4113
- if (this->gptr() == this->egptr())
4114
- {
4115
- memmove(this->eback(), this->egptr() - __unget_sz, __unget_sz * sizeof(char_type));
4116
- if (__always_noconv_)
4117
- {
4118
- streamsize __nmemb = static_cast<streamsize>(this->egptr() - this->eback() - __unget_sz);
4119
- __nmemb = __bufptr_->sgetn((char*)this->eback() + __unget_sz, __nmemb);
4120
- if (__nmemb != 0)
4121
- {
4122
- this->setg(this->eback(),
4123
- this->eback() + __unget_sz,
4124
- this->eback() + __unget_sz + __nmemb);
4125
- __c = *this->gptr();
4126
- }
4127
- }
4128
- else
4129
- {
4130
- memmove(__extbuf_, __extbufnext_, __extbufend_ - __extbufnext_);
4131
- __extbufnext_ = __extbuf_ + (__extbufend_ - __extbufnext_);
4132
- __extbufend_ = __extbuf_ + (__extbuf_ == __extbuf_min_ ? sizeof(__extbuf_min_) : __ebs_);
4133
- streamsize __nmemb = _VSTD::min(static_cast<streamsize>(this->egptr() - this->eback() - __unget_sz),
4134
- static_cast<streamsize>(__extbufend_ - __extbufnext_));
4135
- codecvt_base::result __r;
4136
- state_type __svs = __st_;
4137
- streamsize __nr = __bufptr_->sgetn(const_cast<char*>(__extbufnext_), __nmemb);
4138
- if (__nr != 0)
4139
- {
4140
- __extbufend_ = __extbufnext_ + __nr;
4141
- char_type* __inext;
4142
- __r = __cv_->in(__st_, __extbuf_, __extbufend_, __extbufnext_,
4143
- this->eback() + __unget_sz,
4144
- this->egptr(), __inext);
4145
- if (__r == codecvt_base::noconv)
4146
- {
4147
- this->setg((char_type*)__extbuf_, (char_type*)__extbuf_, (char_type*)__extbufend_);
4148
- __c = *this->gptr();
4149
- }
4150
- else if (__inext != this->eback() + __unget_sz)
4151
- {
4152
- this->setg(this->eback(), this->eback() + __unget_sz, __inext);
4153
- __c = *this->gptr();
4154
- }
4155
- }
4156
- }
4157
- }
4158
- else
4159
- __c = *this->gptr();
4160
- if (this->eback() == &__1buf)
4161
- this->setg(0, 0, 0);
4162
- return __c;
4163
- }
4164
-
4165
- template <class _Codecvt, class _Elem, class _Tr>
4166
- typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type
4167
- wbuffer_convert<_Codecvt, _Elem, _Tr>::pbackfail(int_type __c)
4168
- {
4169
- if (__cv_ != 0 && __bufptr_ != 0 && this->eback() < this->gptr())
4170
- {
4171
- if (traits_type::eq_int_type(__c, traits_type::eof()))
4172
- {
4173
- this->gbump(-1);
4174
- return traits_type::not_eof(__c);
4175
- }
4176
- if (traits_type::eq(traits_type::to_char_type(__c), this->gptr()[-1]))
4177
- {
4178
- this->gbump(-1);
4179
- *this->gptr() = traits_type::to_char_type(__c);
4180
- return __c;
4181
- }
4182
- }
4183
- return traits_type::eof();
4184
- }
4185
-
4186
- template <class _Codecvt, class _Elem, class _Tr>
4187
- typename wbuffer_convert<_Codecvt, _Elem, _Tr>::int_type
4188
- wbuffer_convert<_Codecvt, _Elem, _Tr>::overflow(int_type __c)
4189
- {
4190
- if (__cv_ == 0 || __bufptr_ == 0)
4191
- return traits_type::eof();
4192
- __write_mode();
4193
- char_type __1buf;
4194
- char_type* __pb_save = this->pbase();
4195
- char_type* __epb_save = this->epptr();
4196
- if (!traits_type::eq_int_type(__c, traits_type::eof()))
4197
- {
4198
- if (this->pptr() == 0)
4199
- this->setp(&__1buf, &__1buf+1);
4200
- *this->pptr() = traits_type::to_char_type(__c);
4201
- this->pbump(1);
4202
- }
4203
- if (this->pptr() != this->pbase())
4204
- {
4205
- if (__always_noconv_)
4206
- {
4207
- streamsize __nmemb = static_cast<streamsize>(this->pptr() - this->pbase());
4208
- if (__bufptr_->sputn((const char*)this->pbase(), __nmemb) != __nmemb)
4209
- return traits_type::eof();
4210
- }
4211
- else
4212
- {
4213
- char* __extbe = __extbuf_;
4214
- codecvt_base::result __r;
4215
- do
4216
- {
4217
- const char_type* __e;
4218
- __r = __cv_->out(__st_, this->pbase(), this->pptr(), __e,
4219
- __extbuf_, __extbuf_ + __ebs_, __extbe);
4220
- if (__e == this->pbase())
4221
- return traits_type::eof();
4222
- if (__r == codecvt_base::noconv)
4223
- {
4224
- streamsize __nmemb = static_cast<size_t>(this->pptr() - this->pbase());
4225
- if (__bufptr_->sputn((const char*)this->pbase(), __nmemb) != __nmemb)
4226
- return traits_type::eof();
4227
- }
4228
- else if (__r == codecvt_base::ok || __r == codecvt_base::partial)
4229
- {
4230
- streamsize __nmemb = static_cast<size_t>(__extbe - __extbuf_);
4231
- if (__bufptr_->sputn(__extbuf_, __nmemb) != __nmemb)
4232
- return traits_type::eof();
4233
- if (__r == codecvt_base::partial)
4234
- {
4235
- this->setp((char_type*)__e, this->pptr());
4236
- this->pbump(this->epptr() - this->pbase());
4237
- }
4238
- }
4239
- else
4240
- return traits_type::eof();
4241
- } while (__r == codecvt_base::partial);
4242
- }
4243
- this->setp(__pb_save, __epb_save);
4244
- }
4245
- return traits_type::not_eof(__c);
4246
- }
4247
-
4248
- template <class _Codecvt, class _Elem, class _Tr>
4249
- basic_streambuf<_Elem, _Tr>*
4250
- wbuffer_convert<_Codecvt, _Elem, _Tr>::setbuf(char_type* __s, streamsize __n)
4251
- {
4252
- this->setg(0, 0, 0);
4253
- this->setp(0, 0);
4254
- if (__owns_eb_)
4255
- delete [] __extbuf_;
4256
- if (__owns_ib_)
4257
- delete [] __intbuf_;
4258
- __ebs_ = __n;
4259
- if (__ebs_ > sizeof(__extbuf_min_))
4260
- {
4261
- if (__always_noconv_ && __s)
4262
- {
4263
- __extbuf_ = (char*)__s;
4264
- __owns_eb_ = false;
4265
- }
4266
- else
4267
- {
4268
- __extbuf_ = new char[__ebs_];
4269
- __owns_eb_ = true;
4270
- }
4271
- }
4272
- else
4273
- {
4274
- __extbuf_ = __extbuf_min_;
4275
- __ebs_ = sizeof(__extbuf_min_);
4276
- __owns_eb_ = false;
4277
- }
4278
- if (!__always_noconv_)
4279
- {
4280
- __ibs_ = max<streamsize>(__n, sizeof(__extbuf_min_));
4281
- if (__s && __ibs_ >= sizeof(__extbuf_min_))
4282
- {
4283
- __intbuf_ = __s;
4284
- __owns_ib_ = false;
4285
- }
4286
- else
4287
- {
4288
- __intbuf_ = new char_type[__ibs_];
4289
- __owns_ib_ = true;
4290
- }
4291
- }
4292
- else
4293
- {
4294
- __ibs_ = 0;
4295
- __intbuf_ = 0;
4296
- __owns_ib_ = false;
4297
- }
4298
- return this;
4299
- }
4300
-
4301
- template <class _Codecvt, class _Elem, class _Tr>
4302
- typename wbuffer_convert<_Codecvt, _Elem, _Tr>::pos_type
4303
- wbuffer_convert<_Codecvt, _Elem, _Tr>::seekoff(off_type __off, ios_base::seekdir __way,
4304
- ios_base::openmode __om)
4305
- {
4306
- int __width = __cv_->encoding();
4307
- if (__cv_ == 0 || __bufptr_ == 0 || (__width <= 0 && __off != 0) || sync())
4308
- return pos_type(off_type(-1));
4309
- // __width > 0 || __off == 0
4310
- switch (__way)
4311
- {
4312
- case ios_base::beg:
4313
- break;
4314
- case ios_base::cur:
4315
- break;
4316
- case ios_base::end:
4317
- break;
4318
- default:
4319
- return pos_type(off_type(-1));
4320
- }
4321
- pos_type __r = __bufptr_->pubseekoff(__width * __off, __way, __om);
4322
- __r.state(__st_);
4323
- return __r;
4324
- }
4325
-
4326
- template <class _Codecvt, class _Elem, class _Tr>
4327
- typename wbuffer_convert<_Codecvt, _Elem, _Tr>::pos_type
4328
- wbuffer_convert<_Codecvt, _Elem, _Tr>::seekpos(pos_type __sp, ios_base::openmode __wch)
4329
- {
4330
- if (__cv_ == 0 || __bufptr_ == 0 || sync())
4331
- return pos_type(off_type(-1));
4332
- if (__bufptr_->pubseekpos(__sp, __wch) == pos_type(off_type(-1)))
4333
- return pos_type(off_type(-1));
4334
- return __sp;
4335
- }
4336
-
4337
- template <class _Codecvt, class _Elem, class _Tr>
4338
- int
4339
- wbuffer_convert<_Codecvt, _Elem, _Tr>::sync()
4340
- {
4341
- if (__cv_ == 0 || __bufptr_ == 0)
4342
- return 0;
4343
- if (__cm_ & ios_base::out)
4344
- {
4345
- if (this->pptr() != this->pbase())
4346
- if (overflow() == traits_type::eof())
4347
- return -1;
4348
- codecvt_base::result __r;
4349
- do
4350
- {
4351
- char* __extbe;
4352
- __r = __cv_->unshift(__st_, __extbuf_, __extbuf_ + __ebs_, __extbe);
4353
- streamsize __nmemb = static_cast<streamsize>(__extbe - __extbuf_);
4354
- if (__bufptr_->sputn(__extbuf_, __nmemb) != __nmemb)
4355
- return -1;
4356
- } while (__r == codecvt_base::partial);
4357
- if (__r == codecvt_base::error)
4358
- return -1;
4359
- if (__bufptr_->pubsync())
4360
- return -1;
4361
- }
4362
- else if (__cm_ & ios_base::in)
4363
- {
4364
- off_type __c;
4365
- if (__always_noconv_)
4366
- __c = this->egptr() - this->gptr();
4367
- else
4368
- {
4369
- int __width = __cv_->encoding();
4370
- __c = __extbufend_ - __extbufnext_;
4371
- if (__width > 0)
4372
- __c += __width * (this->egptr() - this->gptr());
4373
- else
4374
- {
4375
- if (this->gptr() != this->egptr())
4376
- {
4377
- reverse(this->gptr(), this->egptr());
4378
- codecvt_base::result __r;
4379
- const char_type* __e = this->gptr();
4380
- char* __extbe;
4381
- do
4382
- {
4383
- __r = __cv_->out(__st_, __e, this->egptr(), __e,
4384
- __extbuf_, __extbuf_ + __ebs_, __extbe);
4385
- switch (__r)
4386
- {
4387
- case codecvt_base::noconv:
4388
- __c += this->egptr() - this->gptr();
4389
- break;
4390
- case codecvt_base::ok:
4391
- case codecvt_base::partial:
4392
- __c += __extbe - __extbuf_;
4393
- break;
4394
- default:
4395
- return -1;
4396
- }
4397
- } while (__r == codecvt_base::partial);
4398
- }
4399
- }
4400
- }
4401
- if (__bufptr_->pubseekoff(-__c, ios_base::cur, __cm_) == pos_type(off_type(-1)))
4402
- return -1;
4403
- this->setg(0, 0, 0);
4404
- __cm_ = 0;
4405
- }
4406
- return 0;
4407
- }
4408
-
4409
- template <class _Codecvt, class _Elem, class _Tr>
4410
- bool
4411
- wbuffer_convert<_Codecvt, _Elem, _Tr>::__read_mode()
4412
- {
4413
- if (!(__cm_ & ios_base::in))
4414
- {
4415
- this->setp(0, 0);
4416
- if (__always_noconv_)
4417
- this->setg((char_type*)__extbuf_,
4418
- (char_type*)__extbuf_ + __ebs_,
4419
- (char_type*)__extbuf_ + __ebs_);
4420
- else
4421
- this->setg(__intbuf_, __intbuf_ + __ibs_, __intbuf_ + __ibs_);
4422
- __cm_ = ios_base::in;
4423
- return true;
4424
- }
4425
- return false;
4426
- }
4427
-
4428
- template <class _Codecvt, class _Elem, class _Tr>
4429
- void
4430
- wbuffer_convert<_Codecvt, _Elem, _Tr>::__write_mode()
4431
- {
4432
- if (!(__cm_ & ios_base::out))
4433
- {
4434
- this->setg(0, 0, 0);
4435
- if (__ebs_ > sizeof(__extbuf_min_))
4436
- {
4437
- if (__always_noconv_)
4438
- this->setp((char_type*)__extbuf_,
4439
- (char_type*)__extbuf_ + (__ebs_ - 1));
4440
- else
4441
- this->setp(__intbuf_, __intbuf_ + (__ibs_ - 1));
4442
- }
4443
- else
4444
- this->setp(0, 0);
4445
- __cm_ = ios_base::out;
4446
- }
4447
- }
4448
-
4449
- template <class _Codecvt, class _Elem, class _Tr>
4450
- wbuffer_convert<_Codecvt, _Elem, _Tr>*
4451
- wbuffer_convert<_Codecvt, _Elem, _Tr>::__close()
4452
- {
4453
- wbuffer_convert* __rt = 0;
4454
- if (__cv_ != 0 && __bufptr_ != 0)
4455
- {
4456
- __rt = this;
4457
- if ((__cm_ & ios_base::out) && sync())
4458
- __rt = 0;
4459
- }
4460
- return __rt;
4461
- }
4462
-
4463
- _LIBCPP_END_NAMESPACE_STD
4464
-
4465
- #endif // _LIBCPP_LOCALE