webruby 0.2.2 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (245) hide show
  1. checksums.yaml +4 -4
  2. data/lib/webruby/config.rb +4 -9
  3. data/lib/webruby/rake/files.rake +2 -2
  4. data/modules/emscripten/AUTHORS +9 -1
  5. data/modules/emscripten/CONTRIBUTING.markdown +5 -0
  6. data/modules/emscripten/ChangeLog +435 -0
  7. data/modules/emscripten/cmake/Modules/FindOpenAL.cmake +26 -0
  8. data/modules/emscripten/cmake/Platform/Emscripten.cmake +9 -2
  9. data/modules/emscripten/em++ +0 -2
  10. data/modules/emscripten/emcc +92 -32
  11. data/modules/emscripten/emlink.py +16 -13
  12. data/modules/emscripten/emmake +1 -1
  13. data/modules/emscripten/emrun +918 -0
  14. data/modules/emscripten/emrun.bat +2 -0
  15. data/modules/emscripten/emscripten.py +545 -20
  16. data/modules/emscripten/src/analyzer.js +6 -1
  17. data/modules/emscripten/src/compiler.js +25 -16
  18. data/modules/emscripten/src/emrun_postjs.js +20 -0
  19. data/modules/emscripten/{tests → src}/hello_world.js +0 -0
  20. data/modules/emscripten/src/intertyper.js +45 -16
  21. data/modules/emscripten/src/jsifier.js +78 -48
  22. data/modules/emscripten/src/library.js +381 -96
  23. data/modules/emscripten/src/library_browser.js +50 -53
  24. data/modules/emscripten/src/library_egl.js +66 -24
  25. data/modules/emscripten/src/library_fs.js +122 -90
  26. data/modules/emscripten/src/library_gl.js +739 -353
  27. data/modules/emscripten/src/library_glfw.js +9 -3
  28. data/modules/emscripten/src/library_glut.js +10 -5
  29. data/modules/emscripten/src/library_idbfs.js +14 -14
  30. data/modules/emscripten/src/library_memfs.js +65 -41
  31. data/modules/emscripten/src/library_nodefs.js +61 -9
  32. data/modules/emscripten/src/library_openal.js +4 -4
  33. data/modules/emscripten/src/library_path.js +9 -13
  34. data/modules/emscripten/src/library_sdl.js +301 -64
  35. data/modules/emscripten/src/library_sockfs.js +7 -5
  36. data/modules/emscripten/src/modules.js +62 -22
  37. data/modules/emscripten/src/parseTools.js +135 -102
  38. data/modules/emscripten/src/postamble.js +3 -4
  39. data/modules/emscripten/src/preamble.js +49 -29
  40. data/modules/emscripten/src/proxyClient.js +1 -1
  41. data/modules/emscripten/src/proxyWorker.js +10 -10
  42. data/modules/emscripten/src/relooper/Relooper.cpp +15 -4
  43. data/modules/emscripten/src/runtime.js +32 -8
  44. data/modules/emscripten/src/settings.js +25 -8
  45. data/modules/emscripten/src/shell.html +6 -3
  46. data/modules/emscripten/src/shell.js +13 -11
  47. data/modules/emscripten/src/simd.js +602 -432
  48. data/modules/emscripten/src/struct_info.json +22 -2
  49. data/modules/emscripten/src/utility.js +32 -17
  50. data/modules/emscripten/system/include/SDL/SDL_events.h +1 -0
  51. data/modules/emscripten/system/include/compat/ctype.h +17 -0
  52. data/modules/emscripten/system/include/compat/wchar.h +23 -0
  53. data/modules/emscripten/system/include/compat/wctype.h +23 -0
  54. data/modules/emscripten/system/include/emscripten/emmintrin.h +87 -0
  55. data/modules/emscripten/system/include/emscripten/emscripten.h +30 -4
  56. data/modules/emscripten/system/include/emscripten/vector.h +29 -1
  57. data/modules/emscripten/system/include/emscripten/xmmintrin.h +131 -0
  58. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +9 -1
  59. data/modules/emscripten/system/include/libcxx/__bit_reference +8 -8
  60. data/modules/emscripten/system/include/libcxx/__config +95 -17
  61. data/modules/emscripten/system/include/libcxx/__debug +25 -4
  62. data/modules/emscripten/system/include/libcxx/__functional_03 +7 -7
  63. data/modules/emscripten/system/include/libcxx/__functional_base +169 -9
  64. data/modules/emscripten/system/include/libcxx/__functional_base_03 +1 -1
  65. data/modules/emscripten/system/include/libcxx/__hash_table +25 -25
  66. data/modules/emscripten/system/include/libcxx/__locale +21 -19
  67. data/modules/emscripten/system/include/libcxx/__mutex_base +2 -33
  68. data/modules/emscripten/system/include/libcxx/__split_buffer +9 -9
  69. data/modules/emscripten/system/include/libcxx/__std_stream +14 -0
  70. data/modules/emscripten/system/include/libcxx/__tree +35 -26
  71. data/modules/emscripten/system/include/libcxx/__tuple +15 -15
  72. data/modules/emscripten/system/include/libcxx/__tuple_03 +2 -2
  73. data/modules/emscripten/system/include/libcxx/__undef_min_max +8 -0
  74. data/modules/emscripten/system/include/libcxx/algorithm +121 -110
  75. data/modules/emscripten/system/include/libcxx/array +15 -15
  76. data/modules/emscripten/system/include/libcxx/bitset +4 -4
  77. data/modules/emscripten/system/include/libcxx/chrono +51 -17
  78. data/modules/emscripten/system/include/libcxx/cmath +25 -23
  79. data/modules/emscripten/system/include/libcxx/codecvt +21 -18
  80. data/modules/emscripten/system/include/libcxx/complex +48 -7
  81. data/modules/emscripten/system/include/libcxx/cstddef +1 -1
  82. data/modules/emscripten/system/include/libcxx/cstdio +8 -1
  83. data/modules/emscripten/system/include/libcxx/cstdlib +1 -1
  84. data/modules/emscripten/system/include/libcxx/cwchar +1 -1
  85. data/modules/emscripten/system/include/libcxx/deque +26 -12
  86. data/modules/emscripten/system/include/libcxx/dynarray +311 -0
  87. data/modules/emscripten/system/include/libcxx/exception +4 -4
  88. data/modules/emscripten/system/include/libcxx/ext/__hash +3 -3
  89. data/modules/emscripten/system/include/libcxx/ext/hash_map +19 -15
  90. data/modules/emscripten/system/include/libcxx/ext/hash_set +7 -3
  91. data/modules/emscripten/system/include/libcxx/forward_list +33 -7
  92. data/modules/emscripten/system/include/libcxx/fstream +4 -4
  93. data/modules/emscripten/system/include/libcxx/functional +200 -170
  94. data/modules/emscripten/system/include/libcxx/future +83 -39
  95. data/modules/emscripten/system/include/libcxx/initializer_list +24 -11
  96. data/modules/emscripten/system/include/libcxx/iomanip +147 -0
  97. data/modules/emscripten/system/include/libcxx/ios +24 -16
  98. data/modules/emscripten/system/include/libcxx/iosfwd +19 -19
  99. data/modules/emscripten/system/include/libcxx/istream +13 -8
  100. data/modules/emscripten/system/include/libcxx/iterator +108 -417
  101. data/modules/emscripten/system/include/libcxx/limits +8 -4
  102. data/modules/emscripten/system/include/libcxx/list +28 -8
  103. data/modules/emscripten/system/include/libcxx/locale +153 -390
  104. data/modules/emscripten/system/include/libcxx/map +280 -100
  105. data/modules/emscripten/system/include/libcxx/memory +49 -97
  106. data/modules/emscripten/system/include/libcxx/mutex +2 -2
  107. data/modules/emscripten/system/include/libcxx/new +43 -14
  108. data/modules/emscripten/system/include/libcxx/numeric +2 -2
  109. data/modules/emscripten/system/include/libcxx/optional +697 -0
  110. data/modules/emscripten/system/include/libcxx/ostream +17 -8
  111. data/modules/emscripten/system/include/libcxx/queue +5 -5
  112. data/modules/emscripten/system/include/libcxx/random +53 -51
  113. data/modules/emscripten/system/include/libcxx/ratio +11 -11
  114. data/modules/emscripten/system/include/libcxx/readme.txt +1 -1
  115. data/modules/emscripten/system/include/libcxx/regex +23 -20
  116. data/modules/emscripten/system/include/libcxx/scoped_allocator +1 -1
  117. data/modules/emscripten/system/include/libcxx/set +166 -2
  118. data/modules/emscripten/system/include/libcxx/shared_mutex +419 -0
  119. data/modules/emscripten/system/include/libcxx/sstream +4 -4
  120. data/modules/emscripten/system/include/libcxx/stack +3 -3
  121. data/modules/emscripten/system/include/libcxx/streambuf +5 -5
  122. data/modules/emscripten/system/include/libcxx/string +372 -324
  123. data/modules/emscripten/system/include/libcxx/support/ibm/limits.h +99 -0
  124. data/modules/emscripten/system/include/libcxx/support/ibm/support.h +54 -0
  125. data/modules/emscripten/system/include/libcxx/support/ibm/xlocale.h +326 -0
  126. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +6 -6
  127. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +15 -15
  128. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +2 -0
  129. data/modules/emscripten/system/include/libcxx/support/win32/support.h +6 -1
  130. data/modules/emscripten/system/include/libcxx/system_error +14 -8
  131. data/modules/emscripten/system/include/libcxx/thread +7 -8
  132. data/modules/emscripten/system/include/libcxx/tuple +29 -88
  133. data/modules/emscripten/system/include/libcxx/type_traits +253 -209
  134. data/modules/emscripten/system/include/libcxx/typeindex +3 -3
  135. data/modules/emscripten/system/include/libcxx/unordered_map +162 -101
  136. data/modules/emscripten/system/include/libcxx/unordered_set +79 -2
  137. data/modules/emscripten/system/include/libcxx/utility +20 -20
  138. data/modules/emscripten/system/include/libcxx/valarray +23 -23
  139. data/modules/emscripten/system/include/libcxx/vector +114 -91
  140. data/modules/emscripten/system/lib/libc/musl/src/regex/regcomp.c +3352 -0
  141. data/modules/emscripten/system/lib/libc/musl/src/regex/regerror.c +35 -0
  142. data/modules/emscripten/system/lib/libc/musl/src/regex/regexec.c +1011 -0
  143. data/modules/emscripten/system/lib/libc/musl/src/regex/tre-mem.c +158 -0
  144. data/modules/emscripten/system/lib/libc/musl/src/regex/tre.h +231 -0
  145. data/modules/emscripten/system/lib/libcextra.symbols +7 -0
  146. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +9 -1
  147. data/modules/emscripten/system/lib/libcxx/algorithm.cpp +1 -0
  148. data/modules/emscripten/system/lib/libcxx/debug.cpp +66 -42
  149. data/modules/emscripten/system/lib/libcxx/exception.cpp +88 -16
  150. data/modules/emscripten/system/lib/libcxx/future.cpp +6 -0
  151. data/modules/emscripten/system/lib/libcxx/ios.cpp +7 -2
  152. data/modules/emscripten/system/lib/libcxx/iostream.cpp +8 -8
  153. data/modules/emscripten/system/lib/libcxx/locale.cpp +38 -11
  154. data/modules/emscripten/system/lib/libcxx/mutex.cpp +3 -0
  155. data/modules/emscripten/system/lib/libcxx/new.cpp +44 -10
  156. data/modules/emscripten/system/lib/libcxx/optional.cpp +25 -0
  157. data/modules/emscripten/system/lib/libcxx/random.cpp +26 -0
  158. data/modules/emscripten/system/lib/libcxx/readme.txt +1 -1
  159. data/modules/emscripten/system/lib/libcxx/shared_mutex.cpp +101 -0
  160. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +11 -7
  161. data/modules/emscripten/system/lib/libcxx/string.cpp +3 -1
  162. data/modules/emscripten/system/lib/libcxx/strstream.cpp +7 -7
  163. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +12 -13
  164. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +33 -36
  165. data/modules/emscripten/system/lib/libcxx/symbols +187 -168
  166. data/modules/emscripten/system/lib/libcxx/system_error.cpp +1 -0
  167. data/modules/emscripten/system/lib/libcxx/thread.cpp +7 -3
  168. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +9 -6
  169. data/modules/emscripten/system/lib/libcxx/valarray.cpp +2 -0
  170. data/modules/emscripten/third_party/lzma.js/doit.bat +4 -0
  171. data/modules/emscripten/third_party/lzma.js/doit.sh +9 -2
  172. data/modules/emscripten/tools/cache.py +5 -7
  173. data/modules/emscripten/tools/cache.pyc +0 -0
  174. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +7 -0
  175. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +9 -1
  176. data/modules/emscripten/tools/eliminator/eliminator-test-output.js +3 -0
  177. data/modules/emscripten/tools/eliminator/eliminator-test.js +9 -1
  178. data/modules/emscripten/tools/file_packager.py +93 -50
  179. data/modules/emscripten/tools/js-optimizer.js +98 -48
  180. data/modules/emscripten/tools/js_optimizer.py +4 -4
  181. data/modules/emscripten/tools/js_optimizer.pyc +0 -0
  182. data/modules/emscripten/tools/jsrun.py +1 -1
  183. data/modules/emscripten/tools/jsrun.pyc +0 -0
  184. data/modules/emscripten/tools/response_file.py +6 -0
  185. data/modules/emscripten/tools/response_file.pyc +0 -0
  186. data/modules/emscripten/tools/settings_template_readonly.py +2 -0
  187. data/modules/emscripten/tools/shared.py +88 -34
  188. data/modules/emscripten/tools/shared.pyc +0 -0
  189. data/modules/emscripten/tools/split.py +21 -13
  190. data/modules/mruby/build_config.rb +7 -1
  191. data/modules/mruby/doc/compile/README.md +5 -9
  192. data/modules/mruby/include/mrbconf.h +5 -2
  193. data/modules/mruby/include/mruby/array.h +1 -0
  194. data/modules/mruby/include/mruby/compile.h +2 -4
  195. data/modules/mruby/include/mruby/dump.h +7 -16
  196. data/modules/mruby/include/mruby/hash.h +1 -1
  197. data/modules/mruby/include/mruby/irep.h +14 -2
  198. data/modules/mruby/include/mruby/khash.h +8 -7
  199. data/modules/mruby/include/mruby/string.h +1 -0
  200. data/modules/mruby/include/mruby/value.h +5 -2
  201. data/modules/mruby/include/mruby.h +12 -13
  202. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +16 -6
  203. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +18 -30
  204. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +21 -0
  205. data/modules/mruby/mrbgems/mruby-math/src/math.c +1 -1
  206. data/modules/mruby/mrbgems/mruby-random/src/random.c +144 -47
  207. data/modules/mruby/mrbgems/mruby-random/test/random.rb +44 -0
  208. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +5 -5
  209. data/modules/mruby/mrblib/numeric.rb +99 -33
  210. data/modules/mruby/src/array.c +11 -4
  211. data/modules/mruby/src/backtrace.c +2 -2
  212. data/modules/mruby/src/class.c +49 -30
  213. data/modules/mruby/src/codegen.c +131 -79
  214. data/modules/mruby/src/debug.c +1 -1
  215. data/modules/mruby/src/dump.c +213 -163
  216. data/modules/mruby/src/error.c +17 -17
  217. data/modules/mruby/src/error.h +1 -1
  218. data/modules/mruby/src/etc.c +10 -0
  219. data/modules/mruby/src/gc.c +35 -17
  220. data/modules/mruby/src/hash.c +5 -5
  221. data/modules/mruby/src/kernel.c +36 -14
  222. data/modules/mruby/src/load.c +238 -296
  223. data/modules/mruby/src/numeric.c +18 -98
  224. data/modules/mruby/src/object.c +3 -5
  225. data/modules/mruby/src/parse.y +63 -56
  226. data/modules/mruby/src/proc.c +8 -5
  227. data/modules/mruby/src/re.h +0 -1
  228. data/modules/mruby/src/state.c +65 -27
  229. data/modules/mruby/src/string.c +3 -31
  230. data/modules/mruby/src/symbol.c +3 -3
  231. data/modules/mruby/src/variable.c +12 -5
  232. data/modules/mruby/src/vm.c +90 -72
  233. data/modules/mruby/tasks/mruby_build.rake +10 -1
  234. data/modules/mruby/tasks/toolchains/gcc.rake +12 -2
  235. data/modules/mruby/tasks/toolchains/{vs2012.rake → visualcpp.rake} +1 -1
  236. data/modules/mruby/test/driver.c +3 -3
  237. data/modules/mruby/test/t/array.rb +5 -5
  238. data/modules/mruby/test/t/class.rb +14 -1
  239. data/modules/mruby/test/t/kernel.rb +4 -0
  240. data/modules/mruby/test/t/module.rb +4 -4
  241. data/modules/mruby/test/t/nameerror.rb +1 -1
  242. data/modules/mruby/tools/mrbc/mrbc.c +23 -17
  243. data/modules/mruby/travis_config.rb +10 -1
  244. metadata +28 -5
  245. data/modules/mruby/tasks/toolchains/vs2010.rake +0 -3
@@ -118,7 +118,7 @@ template <int I, class T, size_t N> T&& get(array<T, N>&&) noexcept; // constexp
118
118
  _LIBCPP_BEGIN_NAMESPACE_STD
119
119
 
120
120
  template <class _Tp, size_t _Size>
121
- struct _LIBCPP_TYPE_VIS array
121
+ struct _LIBCPP_TYPE_VIS_ONLY array
122
122
  {
123
123
  // types:
124
124
  typedef array __self;
@@ -224,7 +224,7 @@ array<_Tp, _Size>::at(size_type __n) const
224
224
  }
225
225
 
226
226
  template <class _Tp, size_t _Size>
227
- _LIBCPP_INLINE_VISIBILITY inline
227
+ inline _LIBCPP_INLINE_VISIBILITY
228
228
  bool
229
229
  operator==(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
230
230
  {
@@ -232,7 +232,7 @@ operator==(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
232
232
  }
233
233
 
234
234
  template <class _Tp, size_t _Size>
235
- _LIBCPP_INLINE_VISIBILITY inline
235
+ inline _LIBCPP_INLINE_VISIBILITY
236
236
  bool
237
237
  operator!=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
238
238
  {
@@ -240,7 +240,7 @@ operator!=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
240
240
  }
241
241
 
242
242
  template <class _Tp, size_t _Size>
243
- _LIBCPP_INLINE_VISIBILITY inline
243
+ inline _LIBCPP_INLINE_VISIBILITY
244
244
  bool
245
245
  operator<(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
246
246
  {
@@ -248,7 +248,7 @@ operator<(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
248
248
  }
249
249
 
250
250
  template <class _Tp, size_t _Size>
251
- _LIBCPP_INLINE_VISIBILITY inline
251
+ inline _LIBCPP_INLINE_VISIBILITY
252
252
  bool
253
253
  operator>(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
254
254
  {
@@ -256,7 +256,7 @@ operator>(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
256
256
  }
257
257
 
258
258
  template <class _Tp, size_t _Size>
259
- _LIBCPP_INLINE_VISIBILITY inline
259
+ inline _LIBCPP_INLINE_VISIBILITY
260
260
  bool
261
261
  operator<=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
262
262
  {
@@ -264,7 +264,7 @@ operator<=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
264
264
  }
265
265
 
266
266
  template <class _Tp, size_t _Size>
267
- _LIBCPP_INLINE_VISIBILITY inline
267
+ inline _LIBCPP_INLINE_VISIBILITY
268
268
  bool
269
269
  operator>=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
270
270
  {
@@ -272,7 +272,7 @@ operator>=(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
272
272
  }
273
273
 
274
274
  template <class _Tp, size_t _Size>
275
- _LIBCPP_INLINE_VISIBILITY inline
275
+ inline _LIBCPP_INLINE_VISIBILITY
276
276
  typename enable_if
277
277
  <
278
278
  __is_swappable<_Tp>::value,
@@ -285,29 +285,29 @@ swap(const array<_Tp, _Size>& __x, const array<_Tp, _Size>& __y)
285
285
  }
286
286
 
287
287
  template <class _Tp, size_t _Size>
288
- class _LIBCPP_TYPE_VIS tuple_size<array<_Tp, _Size> >
288
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<array<_Tp, _Size> >
289
289
  : public integral_constant<size_t, _Size> {};
290
290
 
291
291
  template <class _Tp, size_t _Size>
292
- class _LIBCPP_TYPE_VIS tuple_size<const array<_Tp, _Size> >
292
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<const array<_Tp, _Size> >
293
293
  : public integral_constant<size_t, _Size> {};
294
294
 
295
295
  template <size_t _Ip, class _Tp, size_t _Size>
296
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, array<_Tp, _Size> >
296
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, array<_Tp, _Size> >
297
297
  {
298
298
  public:
299
299
  typedef _Tp type;
300
300
  };
301
301
 
302
302
  template <size_t _Ip, class _Tp, size_t _Size>
303
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, const array<_Tp, _Size> >
303
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const array<_Tp, _Size> >
304
304
  {
305
305
  public:
306
306
  typedef const _Tp type;
307
307
  };
308
308
 
309
309
  template <size_t _Ip, class _Tp, size_t _Size>
310
- _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
310
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
311
311
  _Tp&
312
312
  get(array<_Tp, _Size>& __a) _NOEXCEPT
313
313
  {
@@ -316,7 +316,7 @@ get(array<_Tp, _Size>& __a) _NOEXCEPT
316
316
  }
317
317
 
318
318
  template <size_t _Ip, class _Tp, size_t _Size>
319
- _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
319
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
320
320
  const _Tp&
321
321
  get(const array<_Tp, _Size>& __a) _NOEXCEPT
322
322
  {
@@ -327,7 +327,7 @@ get(const array<_Tp, _Size>& __a) _NOEXCEPT
327
327
  #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
328
328
 
329
329
  template <size_t _Ip, class _Tp, size_t _Size>
330
- _LIBCPP_INLINE_VISIBILITY inline _LIBCPP_CONSTEXPR_AFTER_CXX11
330
+ inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11
331
331
  _Tp&&
332
332
  get(array<_Tp, _Size>&& __a) _NOEXCEPT
333
333
  {
@@ -632,11 +632,11 @@ __bitset<0, 0>::__bitset(unsigned long long) _NOEXCEPT
632
632
  {
633
633
  }
634
634
 
635
- template <size_t _Size> class _LIBCPP_TYPE_VIS bitset;
636
- template <size_t _Size> struct _LIBCPP_TYPE_VIS hash<bitset<_Size> >;
635
+ template <size_t _Size> class _LIBCPP_TYPE_VIS_ONLY bitset;
636
+ template <size_t _Size> struct _LIBCPP_TYPE_VIS_ONLY hash<bitset<_Size> >;
637
637
 
638
638
  template <size_t _Size>
639
- class _LIBCPP_TYPE_VIS bitset
639
+ class _LIBCPP_TYPE_VIS_ONLY bitset
640
640
  : private __bitset<_Size == 0 ? 0 : (_Size - 1) / (sizeof(size_t) * CHAR_BIT) + 1, _Size>
641
641
  {
642
642
  public:
@@ -1060,7 +1060,7 @@ operator^(const bitset<_Size>& __x, const bitset<_Size>& __y) _NOEXCEPT
1060
1060
  }
1061
1061
 
1062
1062
  template <size_t _Size>
1063
- struct _LIBCPP_TYPE_VIS hash<bitset<_Size> >
1063
+ struct _LIBCPP_TYPE_VIS_ONLY hash<bitset<_Size> >
1064
1064
  : public unary_function<bitset<_Size>, size_t>
1065
1065
  {
1066
1066
  _LIBCPP_INLINE_VISIBILITY
@@ -292,7 +292,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
292
292
  namespace chrono
293
293
  {
294
294
 
295
- template <class _Rep, class _Period = ratio<1> > class _LIBCPP_TYPE_VIS duration;
295
+ template <class _Rep, class _Period = ratio<1> > class _LIBCPP_TYPE_VIS_ONLY duration;
296
296
 
297
297
  template <class _Tp>
298
298
  struct __is_duration : false_type {};
@@ -312,8 +312,8 @@ struct __is_duration<const volatile duration<_Rep, _Period> > : true_type {};
312
312
  } // chrono
313
313
 
314
314
  template <class _Rep1, class _Period1, class _Rep2, class _Period2>
315
- struct _LIBCPP_TYPE_VIS common_type<chrono::duration<_Rep1, _Period1>,
316
- chrono::duration<_Rep2, _Period2> >
315
+ struct _LIBCPP_TYPE_VIS_ONLY common_type<chrono::duration<_Rep1, _Period1>,
316
+ chrono::duration<_Rep2, _Period2> >
317
317
  {
318
318
  typedef chrono::duration<typename common_type<_Rep1, _Rep2>::type,
319
319
  typename __ratio_gcd<_Period1, _Period2>::type> type;
@@ -390,10 +390,10 @@ duration_cast(const duration<_Rep, _Period>& __fd)
390
390
  }
391
391
 
392
392
  template <class _Rep>
393
- struct _LIBCPP_TYPE_VIS treat_as_floating_point : is_floating_point<_Rep> {};
393
+ struct _LIBCPP_TYPE_VIS_ONLY treat_as_floating_point : is_floating_point<_Rep> {};
394
394
 
395
395
  template <class _Rep>
396
- struct _LIBCPP_TYPE_VIS duration_values
396
+ struct _LIBCPP_TYPE_VIS_ONLY duration_values
397
397
  {
398
398
  public:
399
399
  _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR _Rep zero() {return _Rep(0);}
@@ -404,11 +404,42 @@ public:
404
404
  // duration
405
405
 
406
406
  template <class _Rep, class _Period>
407
- class _LIBCPP_TYPE_VIS duration
407
+ class _LIBCPP_TYPE_VIS_ONLY duration
408
408
  {
409
409
  static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration");
410
410
  static_assert(__is_ratio<_Period>::value, "Second template parameter of duration must be a std::ratio");
411
411
  static_assert(_Period::num > 0, "duration period must be positive");
412
+
413
+ template <class _R1, class _R2>
414
+ struct __no_overflow
415
+ {
416
+ private:
417
+ static const intmax_t __gcd_n1_n2 = __static_gcd<_R1::num, _R2::num>::value;
418
+ static const intmax_t __gcd_d1_d2 = __static_gcd<_R1::den, _R2::den>::value;
419
+ static const intmax_t __n1 = _R1::num / __gcd_n1_n2;
420
+ static const intmax_t __d1 = _R1::den / __gcd_d1_d2;
421
+ static const intmax_t __n2 = _R2::num / __gcd_n1_n2;
422
+ static const intmax_t __d2 = _R2::den / __gcd_d1_d2;
423
+ static const intmax_t max = -((intmax_t(1) << (sizeof(intmax_t) * CHAR_BIT - 1)) + 1);
424
+
425
+ template <intmax_t _Xp, intmax_t _Yp, bool __overflow>
426
+ struct __mul // __overflow == false
427
+ {
428
+ static const intmax_t value = _Xp * _Yp;
429
+ };
430
+
431
+ template <intmax_t _Xp, intmax_t _Yp>
432
+ struct __mul<_Xp, _Yp, true>
433
+ {
434
+ static const intmax_t value = 1;
435
+ };
436
+
437
+ public:
438
+ static const bool value = (__n1 <= max / __d2) && (__n2 <= max / __d1);
439
+ typedef ratio<__mul<__n1, __d2, !value>::value,
440
+ __mul<__n2, __d1, !value>::value> type;
441
+ };
442
+
412
443
  public:
413
444
  typedef _Rep rep;
414
445
  typedef _Period period;
@@ -440,9 +471,10 @@ public:
440
471
  duration(const duration<_Rep2, _Period2>& __d,
441
472
  typename enable_if
442
473
  <
474
+ __no_overflow<_Period2, period>::value && (
443
475
  treat_as_floating_point<rep>::value ||
444
- (ratio_divide<_Period2, period>::type::den == 1 &&
445
- !treat_as_floating_point<_Rep2>::value)
476
+ (__no_overflow<_Period2, period>::type::den == 1 &&
477
+ !treat_as_floating_point<_Rep2>::value))
446
478
  >::type* = 0)
447
479
  : __rep_(_VSTD::chrono::duration_cast<duration>(__d).count()) {}
448
480
 
@@ -715,7 +747,7 @@ operator%(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2
715
747
  //////////////////////////////////////////////////////////
716
748
 
717
749
  template <class _Clock, class _Duration = typename _Clock::duration>
718
- class _LIBCPP_TYPE_VIS time_point
750
+ class _LIBCPP_TYPE_VIS_ONLY time_point
719
751
  {
720
752
  static_assert(__is_duration<_Duration>::value,
721
753
  "Second template parameter of time_point must be a std::chrono::duration");
@@ -759,8 +791,8 @@ public:
759
791
  } // chrono
760
792
 
761
793
  template <class _Clock, class _Duration1, class _Duration2>
762
- struct _LIBCPP_TYPE_VIS common_type<chrono::time_point<_Clock, _Duration1>,
763
- chrono::time_point<_Clock, _Duration2> >
794
+ struct _LIBCPP_TYPE_VIS_ONLY common_type<chrono::time_point<_Clock, _Duration1>,
795
+ chrono::time_point<_Clock, _Duration2> >
764
796
  {
765
797
  typedef chrono::time_point<_Clock, typename common_type<_Duration1, _Duration2>::type> type;
766
798
  };
@@ -910,12 +942,9 @@ typedef steady_clock high_resolution_clock;
910
942
 
911
943
  } // chrono
912
944
 
913
- #if _LIBCPP_STD_VER > 11
914
- // Literal suffixes for chrono types
915
- // inline // Deviation from N3690.
916
- // We believe the inline to be a defect and have submitted an LWG issue.
917
- // An LWG issue number has not yet been assigned.
918
- namespace literals
945
+ #if _LIBCPP_STD_VER > 11
946
+ // Suffixes for duration literals [time.duration.literals]
947
+ inline namespace literals
919
948
  {
920
949
  inline namespace chrono_literals
921
950
  {
@@ -986,6 +1015,11 @@ namespace literals
986
1015
  }
987
1016
 
988
1017
  }}
1018
+
1019
+ namespace chrono { // hoist the literals into namespace std::chrono
1020
+ using namespace literals::chrono_literals;
1021
+ }
1022
+
989
1023
  #endif
990
1024
 
991
1025
  _LIBCPP_END_NAMESPACE_STD
@@ -654,6 +654,7 @@ using ::double_t;
654
654
 
655
655
  // abs
656
656
 
657
+ #if !defined(_AIX)
657
658
  inline _LIBCPP_INLINE_VISIBILITY
658
659
  float
659
660
  abs(float __x) _NOEXCEPT {return fabsf(__x);}
@@ -665,6 +666,7 @@ abs(double __x) _NOEXCEPT {return fabs(__x);}
665
666
  inline _LIBCPP_INLINE_VISIBILITY
666
667
  long double
667
668
  abs(long double __x) _NOEXCEPT {return fabsl(__x);}
669
+ #endif // !defined(_AIX)
668
670
 
669
671
  #ifndef __sun__
670
672
 
@@ -673,7 +675,7 @@ abs(long double __x) _NOEXCEPT {return fabsl(__x);}
673
675
  using ::acos;
674
676
  using ::acosf;
675
677
 
676
- #ifndef _LIBCPP_MSVCRT
678
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
677
679
  inline _LIBCPP_INLINE_VISIBILITY float acos(float __x) _NOEXCEPT {return acosf(__x);}
678
680
  inline _LIBCPP_INLINE_VISIBILITY long double acos(long double __x) _NOEXCEPT {return acosl(__x);}
679
681
  #endif
@@ -688,7 +690,7 @@ acos(_A1 __x) _NOEXCEPT {return acos((double)__x);}
688
690
  using ::asin;
689
691
  using ::asinf;
690
692
 
691
- #ifndef _LIBCPP_MSVCRT
693
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
692
694
  inline _LIBCPP_INLINE_VISIBILITY float asin(float __x) _NOEXCEPT {return asinf(__x);}
693
695
  inline _LIBCPP_INLINE_VISIBILITY long double asin(long double __x) _NOEXCEPT {return asinl(__x);}
694
696
  #endif
@@ -703,7 +705,7 @@ asin(_A1 __x) _NOEXCEPT {return asin((double)__x);}
703
705
  using ::atan;
704
706
  using ::atanf;
705
707
 
706
- #ifndef _LIBCPP_MSVCRT
708
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
707
709
  inline _LIBCPP_INLINE_VISIBILITY float atan(float __x) _NOEXCEPT {return atanf(__x);}
708
710
  inline _LIBCPP_INLINE_VISIBILITY long double atan(long double __x) _NOEXCEPT {return atanl(__x);}
709
711
  #endif
@@ -718,7 +720,7 @@ atan(_A1 __x) _NOEXCEPT {return atan((double)__x);}
718
720
  using ::atan2;
719
721
  using ::atan2f;
720
722
 
721
- #ifndef _LIBCPP_MSVCRT
723
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
722
724
  inline _LIBCPP_INLINE_VISIBILITY float atan2(float __y, float __x) _NOEXCEPT {return atan2f(__y, __x);}
723
725
  inline _LIBCPP_INLINE_VISIBILITY long double atan2(long double __y, long double __x) _NOEXCEPT {return atan2l(__y, __x);}
724
726
  #endif
@@ -744,7 +746,7 @@ atan2(_A1 __y, _A2 __x) _NOEXCEPT
744
746
  using ::ceil;
745
747
  using ::ceilf;
746
748
 
747
- #ifndef _LIBCPP_MSVCRT
749
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
748
750
  inline _LIBCPP_INLINE_VISIBILITY float ceil(float __x) _NOEXCEPT {return ceilf(__x);}
749
751
  inline _LIBCPP_INLINE_VISIBILITY long double ceil(long double __x) _NOEXCEPT {return ceill(__x);}
750
752
  #endif
@@ -759,13 +761,13 @@ ceil(_A1 __x) _NOEXCEPT {return ceil((double)__x);}
759
761
  using ::cos;
760
762
  using ::cosf;
761
763
 
762
- #ifndef _LIBCPP_MSVCRT
764
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
763
765
  inline _LIBCPP_INLINE_VISIBILITY float cos(float __x) _NOEXCEPT {return cosf(__x);}
764
766
  inline _LIBCPP_INLINE_VISIBILITY long double cos(long double __x) _NOEXCEPT {return cosl(__x);}
765
767
  #endif
766
768
 
767
769
  template <class _A1>
768
- inline _LIBCPP_ALWAYS_INLINE _LIBCPP_INLINE_VISIBILITY
770
+ inline _LIBCPP_INLINE_VISIBILITY
769
771
  typename enable_if<is_integral<_A1>::value, double>::type
770
772
  cos(_A1 __x) _NOEXCEPT {return cos((double)__x);}
771
773
 
@@ -774,7 +776,7 @@ cos(_A1 __x) _NOEXCEPT {return cos((double)__x);}
774
776
  using ::cosh;
775
777
  using ::coshf;
776
778
 
777
- #ifndef _LIBCPP_MSVCRT
779
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
778
780
  inline _LIBCPP_INLINE_VISIBILITY float cosh(float __x) _NOEXCEPT {return coshf(__x);}
779
781
  inline _LIBCPP_INLINE_VISIBILITY long double cosh(long double __x) _NOEXCEPT {return coshl(__x);}
780
782
  #endif
@@ -792,7 +794,7 @@ using ::expf;
792
794
 
793
795
  #ifndef __sun__
794
796
 
795
- #ifndef _LIBCPP_MSVCRT
797
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
796
798
  inline _LIBCPP_INLINE_VISIBILITY float exp(float __x) _NOEXCEPT {return expf(__x);}
797
799
  inline _LIBCPP_INLINE_VISIBILITY long double exp(long double __x) _NOEXCEPT {return expl(__x);}
798
800
  #endif
@@ -808,7 +810,7 @@ exp(_A1 __x) _NOEXCEPT {return exp((double)__x);}
808
810
  using ::fabs;
809
811
  using ::fabsf;
810
812
 
811
- #ifndef _LIBCPP_MSVCRT
813
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
812
814
  inline _LIBCPP_INLINE_VISIBILITY float fabs(float __x) _NOEXCEPT {return fabsf(__x);}
813
815
  inline _LIBCPP_INLINE_VISIBILITY long double fabs(long double __x) _NOEXCEPT {return fabsl(__x);}
814
816
  #endif
@@ -823,7 +825,7 @@ fabs(_A1 __x) _NOEXCEPT {return fabs((double)__x);}
823
825
  using ::floor;
824
826
  using ::floorf;
825
827
 
826
- #ifndef _LIBCPP_MSVCRT
828
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
827
829
  inline _LIBCPP_INLINE_VISIBILITY float floor(float __x) _NOEXCEPT {return floorf(__x);}
828
830
  inline _LIBCPP_INLINE_VISIBILITY long double floor(long double __x) _NOEXCEPT {return floorl(__x);}
829
831
  #endif
@@ -840,7 +842,7 @@ using ::fmod;
840
842
  using ::fmodf;
841
843
  #ifndef __sun__
842
844
 
843
- #ifndef _LIBCPP_MSVCRT
845
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
844
846
  inline _LIBCPP_INLINE_VISIBILITY float fmod(float __x, float __y) _NOEXCEPT {return fmodf(__x, __y);}
845
847
  inline _LIBCPP_INLINE_VISIBILITY long double fmod(long double __x, long double __y) _NOEXCEPT {return fmodl(__x, __y);}
846
848
  #endif
@@ -867,7 +869,7 @@ fmod(_A1 __x, _A2 __y) _NOEXCEPT
867
869
  using ::frexp;
868
870
  using ::frexpf;
869
871
 
870
- #ifndef _LIBCPP_MSVCRT
872
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
871
873
  inline _LIBCPP_INLINE_VISIBILITY float frexp(float __x, int* __e) _NOEXCEPT {return frexpf(__x, __e);}
872
874
  inline _LIBCPP_INLINE_VISIBILITY long double frexp(long double __x, int* __e) _NOEXCEPT {return frexpl(__x, __e);}
873
875
  #endif
@@ -882,7 +884,7 @@ frexp(_A1 __x, int* __e) _NOEXCEPT {return frexp((double)__x, __e);}
882
884
  using ::ldexp;
883
885
  using ::ldexpf;
884
886
 
885
- #ifndef _LIBCPP_MSVCRT
887
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
886
888
  inline _LIBCPP_INLINE_VISIBILITY float ldexp(float __x, int __e) _NOEXCEPT {return ldexpf(__x, __e);}
887
889
  inline _LIBCPP_INLINE_VISIBILITY long double ldexp(long double __x, int __e) _NOEXCEPT {return ldexpl(__x, __e);}
888
890
  #endif
@@ -899,7 +901,7 @@ using ::log;
899
901
  using ::logf;
900
902
  #ifndef __sun__
901
903
 
902
- #ifndef _LIBCPP_MSVCRT
904
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
903
905
  inline _LIBCPP_INLINE_VISIBILITY float log(float __x) _NOEXCEPT {return logf(__x);}
904
906
  inline _LIBCPP_INLINE_VISIBILITY long double log(long double __x) _NOEXCEPT {return logl(__x);}
905
907
  #endif
@@ -915,7 +917,7 @@ log(_A1 __x) _NOEXCEPT {return log((double)__x);}
915
917
  using ::log10;
916
918
  using ::log10f;
917
919
 
918
- #ifndef _LIBCPP_MSVCRT
920
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
919
921
  inline _LIBCPP_INLINE_VISIBILITY float log10(float __x) _NOEXCEPT {return log10f(__x);}
920
922
  inline _LIBCPP_INLINE_VISIBILITY long double log10(long double __x) _NOEXCEPT {return log10l(__x);}
921
923
  #endif
@@ -930,7 +932,7 @@ log10(_A1 __x) _NOEXCEPT {return log10((double)__x);}
930
932
  using ::modf;
931
933
  using ::modff;
932
934
 
933
- #ifndef _LIBCPP_MSVCRT
935
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
934
936
  inline _LIBCPP_INLINE_VISIBILITY float modf(float __x, float* __y) _NOEXCEPT {return modff(__x, __y);}
935
937
  inline _LIBCPP_INLINE_VISIBILITY long double modf(long double __x, long double* __y) _NOEXCEPT {return modfl(__x, __y);}
936
938
  #endif
@@ -943,7 +945,7 @@ using ::powf;
943
945
 
944
946
  #ifndef __sun__
945
947
 
946
- #ifndef _LIBCPP_MSVCRT
948
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
947
949
  inline _LIBCPP_INLINE_VISIBILITY float pow(float __x, float __y) _NOEXCEPT {return powf(__x, __y);}
948
950
  inline _LIBCPP_INLINE_VISIBILITY long double pow(long double __x, long double __y) _NOEXCEPT {return powl(__x, __y);}
949
951
  #endif
@@ -970,7 +972,7 @@ pow(_A1 __x, _A2 __y) _NOEXCEPT
970
972
  using ::sin;
971
973
  using ::sinf;
972
974
 
973
- #ifndef _LIBCPP_MSVCRT
975
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
974
976
  inline _LIBCPP_INLINE_VISIBILITY float sin(float __x) _NOEXCEPT {return sinf(__x);}
975
977
  inline _LIBCPP_INLINE_VISIBILITY long double sin(long double __x) _NOEXCEPT {return sinl(__x);}
976
978
  #endif
@@ -985,7 +987,7 @@ sin(_A1 __x) _NOEXCEPT {return sin((double)__x);}
985
987
  using ::sinh;
986
988
  using ::sinhf;
987
989
 
988
- #ifndef _LIBCPP_MSVCRT
990
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
989
991
  inline _LIBCPP_INLINE_VISIBILITY float sinh(float __x) _NOEXCEPT {return sinhf(__x);}
990
992
  inline _LIBCPP_INLINE_VISIBILITY long double sinh(long double __x) _NOEXCEPT {return sinhl(__x);}
991
993
  #endif
@@ -1002,7 +1004,7 @@ using ::sqrt;
1002
1004
  using ::sqrtf;
1003
1005
 
1004
1006
 
1005
- #if !(defined(_LIBCPP_MSVCRT) || defined(__sun__))
1007
+ #if !(defined(_LIBCPP_MSVCRT) || defined(__sun__) || defined(_AIX))
1006
1008
  inline _LIBCPP_INLINE_VISIBILITY float sqrt(float __x) _NOEXCEPT {return sqrtf(__x);}
1007
1009
  inline _LIBCPP_INLINE_VISIBILITY long double sqrt(long double __x) _NOEXCEPT {return sqrtl(__x);}
1008
1010
  #endif
@@ -1018,7 +1020,7 @@ using ::tan;
1018
1020
  using ::tanf;
1019
1021
  #ifndef __sun__
1020
1022
 
1021
- #ifndef _LIBCPP_MSVCRT
1023
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
1022
1024
  inline _LIBCPP_INLINE_VISIBILITY float tan(float __x) _NOEXCEPT {return tanf(__x);}
1023
1025
  inline _LIBCPP_INLINE_VISIBILITY long double tan(long double __x) _NOEXCEPT {return tanl(__x);}
1024
1026
  #endif
@@ -1033,7 +1035,7 @@ tan(_A1 __x) _NOEXCEPT {return tan((double)__x);}
1033
1035
  using ::tanh;
1034
1036
  using ::tanhf;
1035
1037
 
1036
- #ifndef _LIBCPP_MSVCRT
1038
+ #if !(defined(_LIBCPP_MSVCRT) || defined(_AIX))
1037
1039
  inline _LIBCPP_INLINE_VISIBILITY float tanh(float __x) _NOEXCEPT {return tanhf(__x);}
1038
1040
  inline _LIBCPP_INLINE_VISIBILITY long double tanh(long double __x) _NOEXCEPT {return tanhl(__x);}
1039
1041
  #endif
@@ -29,7 +29,8 @@ template <class Elem, unsigned long Maxcode = 0x10ffff,
29
29
  class codecvt_utf8
30
30
  : public codecvt<Elem, char, mbstate_t>
31
31
  {
32
- // unspecified
32
+ explicit codecvt_utf8(size_t refs = 0);
33
+ ~codecvt_utf8();
33
34
  };
34
35
 
35
36
  template <class Elem, unsigned long Maxcode = 0x10ffff,
@@ -37,7 +38,8 @@ template <class Elem, unsigned long Maxcode = 0x10ffff,
37
38
  class codecvt_utf16
38
39
  : public codecvt<Elem, char, mbstate_t>
39
40
  {
40
- // unspecified
41
+ explicit codecvt_utf16(size_t refs = 0);
42
+ ~codecvt_utf16();
41
43
  };
42
44
 
43
45
  template <class Elem, unsigned long Maxcode = 0x10ffff,
@@ -45,7 +47,8 @@ template <class Elem, unsigned long Maxcode = 0x10ffff,
45
47
  class codecvt_utf8_utf16
46
48
  : public codecvt<Elem, char, mbstate_t>
47
49
  {
48
- // unspecified
50
+ explicit codecvt_utf8_utf16(size_t refs = 0);
51
+ ~codecvt_utf8_utf16();
49
52
  };
50
53
 
51
54
  } // std
@@ -73,7 +76,7 @@ enum codecvt_mode
73
76
  template <class _Elem> class __codecvt_utf8;
74
77
 
75
78
  template <>
76
- class __codecvt_utf8<wchar_t>
79
+ class _LIBCPP_TYPE_VIS __codecvt_utf8<wchar_t>
77
80
  : public codecvt<wchar_t, char, mbstate_t>
78
81
  {
79
82
  unsigned long _Maxcode_;
@@ -108,7 +111,7 @@ protected:
108
111
  };
109
112
 
110
113
  template <>
111
- class __codecvt_utf8<char16_t>
114
+ class _LIBCPP_TYPE_VIS __codecvt_utf8<char16_t>
112
115
  : public codecvt<char16_t, char, mbstate_t>
113
116
  {
114
117
  unsigned long _Maxcode_;
@@ -143,7 +146,7 @@ protected:
143
146
  };
144
147
 
145
148
  template <>
146
- class __codecvt_utf8<char32_t>
149
+ class _LIBCPP_TYPE_VIS __codecvt_utf8<char32_t>
147
150
  : public codecvt<char32_t, char, mbstate_t>
148
151
  {
149
152
  unsigned long _Maxcode_;
@@ -179,7 +182,7 @@ protected:
179
182
 
180
183
  template <class _Elem, unsigned long _Maxcode = 0x10ffff,
181
184
  codecvt_mode _Mode = (codecvt_mode)0>
182
- class _LIBCPP_TYPE_VIS codecvt_utf8
185
+ class _LIBCPP_TYPE_VIS_ONLY codecvt_utf8
183
186
  : public __codecvt_utf8<_Elem>
184
187
  {
185
188
  public:
@@ -196,7 +199,7 @@ public:
196
199
  template <class _Elem, bool _LittleEndian> class __codecvt_utf16;
197
200
 
198
201
  template <>
199
- class __codecvt_utf16<wchar_t, false>
202
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, false>
200
203
  : public codecvt<wchar_t, char, mbstate_t>
201
204
  {
202
205
  unsigned long _Maxcode_;
@@ -231,7 +234,7 @@ protected:
231
234
  };
232
235
 
233
236
  template <>
234
- class __codecvt_utf16<wchar_t, true>
237
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<wchar_t, true>
235
238
  : public codecvt<wchar_t, char, mbstate_t>
236
239
  {
237
240
  unsigned long _Maxcode_;
@@ -266,7 +269,7 @@ protected:
266
269
  };
267
270
 
268
271
  template <>
269
- class __codecvt_utf16<char16_t, false>
272
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<char16_t, false>
270
273
  : public codecvt<char16_t, char, mbstate_t>
271
274
  {
272
275
  unsigned long _Maxcode_;
@@ -301,7 +304,7 @@ protected:
301
304
  };
302
305
 
303
306
  template <>
304
- class __codecvt_utf16<char16_t, true>
307
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<char16_t, true>
305
308
  : public codecvt<char16_t, char, mbstate_t>
306
309
  {
307
310
  unsigned long _Maxcode_;
@@ -336,7 +339,7 @@ protected:
336
339
  };
337
340
 
338
341
  template <>
339
- class __codecvt_utf16<char32_t, false>
342
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<char32_t, false>
340
343
  : public codecvt<char32_t, char, mbstate_t>
341
344
  {
342
345
  unsigned long _Maxcode_;
@@ -371,7 +374,7 @@ protected:
371
374
  };
372
375
 
373
376
  template <>
374
- class __codecvt_utf16<char32_t, true>
377
+ class _LIBCPP_TYPE_VIS __codecvt_utf16<char32_t, true>
375
378
  : public codecvt<char32_t, char, mbstate_t>
376
379
  {
377
380
  unsigned long _Maxcode_;
@@ -407,7 +410,7 @@ protected:
407
410
 
408
411
  template <class _Elem, unsigned long _Maxcode = 0x10ffff,
409
412
  codecvt_mode _Mode = (codecvt_mode)0>
410
- class _LIBCPP_TYPE_VIS codecvt_utf16
413
+ class _LIBCPP_TYPE_VIS_ONLY codecvt_utf16
411
414
  : public __codecvt_utf16<_Elem, _Mode & little_endian>
412
415
  {
413
416
  public:
@@ -424,7 +427,7 @@ public:
424
427
  template <class _Elem> class __codecvt_utf8_utf16;
425
428
 
426
429
  template <>
427
- class __codecvt_utf8_utf16<wchar_t>
430
+ class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<wchar_t>
428
431
  : public codecvt<wchar_t, char, mbstate_t>
429
432
  {
430
433
  unsigned long _Maxcode_;
@@ -459,7 +462,7 @@ protected:
459
462
  };
460
463
 
461
464
  template <>
462
- class __codecvt_utf8_utf16<char32_t>
465
+ class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<char32_t>
463
466
  : public codecvt<char32_t, char, mbstate_t>
464
467
  {
465
468
  unsigned long _Maxcode_;
@@ -494,7 +497,7 @@ protected:
494
497
  };
495
498
 
496
499
  template <>
497
- class __codecvt_utf8_utf16<char16_t>
500
+ class _LIBCPP_TYPE_VIS __codecvt_utf8_utf16<char16_t>
498
501
  : public codecvt<char16_t, char, mbstate_t>
499
502
  {
500
503
  unsigned long _Maxcode_;
@@ -530,7 +533,7 @@ protected:
530
533
 
531
534
  template <class _Elem, unsigned long _Maxcode = 0x10ffff,
532
535
  codecvt_mode _Mode = (codecvt_mode)0>
533
- class _LIBCPP_TYPE_VIS codecvt_utf8_utf16
536
+ class _LIBCPP_TYPE_VIS_ONLY codecvt_utf8_utf16
534
537
  : public __codecvt_utf8_utf16<_Elem>
535
538
  {
536
539
  public: