webruby 0.2.2 → 0.2.4

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 (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
@@ -206,7 +206,11 @@ template <class Key, class T, class Hash, class Pred, class Alloc>
206
206
  #include <ext/__hash>
207
207
 
208
208
  #if __DEPRECATED
209
- #warning Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map>
209
+ #if defined(_MSC_VER) && ! defined(__clang__)
210
+ _LIBCPP_WARNING("Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map>")
211
+ #else
212
+ # warning Use of the header <ext/hash_map> is deprecated. Migrate to <unordered_map>
213
+ #endif
210
214
  #endif
211
215
 
212
216
  #pragma GCC system_header
@@ -361,7 +365,7 @@ public:
361
365
  };
362
366
 
363
367
  template <class _HashIterator>
364
- class _LIBCPP_TYPE_VIS __hash_map_iterator
368
+ class _LIBCPP_TYPE_VIS_ONLY __hash_map_iterator
365
369
  {
366
370
  _HashIterator __i_;
367
371
 
@@ -404,15 +408,15 @@ public:
404
408
  bool operator!=(const __hash_map_iterator& __x, const __hash_map_iterator& __y)
405
409
  {return __x.__i_ != __y.__i_;}
406
410
 
407
- template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS hash_map;
408
- template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS hash_multimap;
409
- template <class> friend class _LIBCPP_TYPE_VIS __hash_const_iterator;
410
- template <class> friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator;
411
- template <class> friend class _LIBCPP_TYPE_VIS __hash_map_const_iterator;
411
+ template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY hash_map;
412
+ template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY hash_multimap;
413
+ template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator;
414
+ template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator;
415
+ template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator;
412
416
  };
413
417
 
414
418
  template <class _HashIterator>
415
- class _LIBCPP_TYPE_VIS __hash_map_const_iterator
419
+ class _LIBCPP_TYPE_VIS_ONLY __hash_map_const_iterator
416
420
  {
417
421
  _HashIterator __i_;
418
422
 
@@ -463,15 +467,15 @@ public:
463
467
  bool operator!=(const __hash_map_const_iterator& __x, const __hash_map_const_iterator& __y)
464
468
  {return __x.__i_ != __y.__i_;}
465
469
 
466
- template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS hash_map;
467
- template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS hash_multimap;
468
- template <class> friend class _LIBCPP_TYPE_VIS __hash_const_iterator;
469
- template <class> friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator;
470
+ template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY hash_map;
471
+ template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY hash_multimap;
472
+ template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_iterator;
473
+ template <class> friend class _LIBCPP_TYPE_VIS_ONLY __hash_const_local_iterator;
470
474
  };
471
475
 
472
476
  template <class _Key, class _Tp, class _Hash = hash<_Key>, class _Pred = equal_to<_Key>,
473
477
  class _Alloc = allocator<pair<const _Key, _Tp> > >
474
- class _LIBCPP_TYPE_VIS hash_map
478
+ class _LIBCPP_TYPE_VIS_ONLY hash_map
475
479
  {
476
480
  public:
477
481
  // types
@@ -684,7 +688,7 @@ hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(const key_type& __k)
684
688
  __h.get_deleter().__first_constructed = true;
685
689
  __node_traits::construct(__na, _VSTD::addressof(__h->__value_.second));
686
690
  __h.get_deleter().__second_constructed = true;
687
- return _VSTD::move(__h);
691
+ return _VSTD::move(__h); // explicitly moved for C++03
688
692
  }
689
693
 
690
694
  template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
@@ -750,7 +754,7 @@ operator!=(const hash_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
750
754
 
751
755
  template <class _Key, class _Tp, class _Hash = hash<_Key>, class _Pred = equal_to<_Key>,
752
756
  class _Alloc = allocator<pair<const _Key, _Tp> > >
753
- class _LIBCPP_TYPE_VIS hash_multimap
757
+ class _LIBCPP_TYPE_VIS_ONLY hash_multimap
754
758
  {
755
759
  public:
756
760
  // types
@@ -199,7 +199,11 @@ template <class Value, class Hash, class Pred, class Alloc>
199
199
  #include <ext/__hash>
200
200
 
201
201
  #if __DEPRECATED
202
- #warning Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set>
202
+ #if defined(_MSC_VER) && ! defined(__clang__)
203
+ _LIBCPP_WARNING("Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set>")
204
+ #else
205
+ # warning Use of the header <ext/hash_set> is deprecated. Migrate to <unordered_set>
206
+ #endif
203
207
  #endif
204
208
 
205
209
  namespace __gnu_cxx {
@@ -208,7 +212,7 @@ using namespace std;
208
212
 
209
213
  template <class _Value, class _Hash = hash<_Value>, class _Pred = equal_to<_Value>,
210
214
  class _Alloc = allocator<_Value> >
211
- class _LIBCPP_TYPE_VIS hash_set
215
+ class _LIBCPP_TYPE_VIS_ONLY hash_set
212
216
  {
213
217
  public:
214
218
  // types
@@ -429,7 +433,7 @@ operator!=(const hash_set<_Value, _Hash, _Pred, _Alloc>& __x,
429
433
 
430
434
  template <class _Value, class _Hash = hash<_Value>, class _Pred = equal_to<_Value>,
431
435
  class _Alloc = allocator<_Value> >
432
- class _LIBCPP_TYPE_VIS hash_multiset
436
+ class _LIBCPP_TYPE_VIS_ONLY hash_multiset
433
437
  {
434
438
  public:
435
439
  // types
@@ -38,6 +38,7 @@ public:
38
38
  noexcept(is_nothrow_default_constructible<allocator_type>::value);
39
39
  explicit forward_list(const allocator_type& a);
40
40
  explicit forward_list(size_type n);
41
+ explicit forward_list(size_type n, const allocator_type& a); // C++14
41
42
  forward_list(size_type n, const value_type& v);
42
43
  forward_list(size_type n, const value_type& v, const allocator_type& a);
43
44
  template <class InputIterator>
@@ -212,11 +213,11 @@ struct __forward_list_node
212
213
  value_type __value_;
213
214
  };
214
215
 
215
- template<class _Tp, class _Alloc> class _LIBCPP_TYPE_VIS forward_list;
216
- template<class _NodeConstPtr> class _LIBCPP_TYPE_VIS __forward_list_const_iterator;
216
+ template<class _Tp, class _Alloc> class _LIBCPP_TYPE_VIS_ONLY forward_list;
217
+ template<class _NodeConstPtr> class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator;
217
218
 
218
219
  template <class _NodePtr>
219
- class _LIBCPP_TYPE_VIS __forward_list_iterator
220
+ class _LIBCPP_TYPE_VIS_ONLY __forward_list_iterator
220
221
  {
221
222
  typedef _NodePtr __node_pointer;
222
223
 
@@ -225,8 +226,8 @@ class _LIBCPP_TYPE_VIS __forward_list_iterator
225
226
  _LIBCPP_INLINE_VISIBILITY
226
227
  explicit __forward_list_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {}
227
228
 
228
- template<class, class> friend class _LIBCPP_TYPE_VIS forward_list;
229
- template<class> friend class _LIBCPP_TYPE_VIS __forward_list_const_iterator;
229
+ template<class, class> friend class _LIBCPP_TYPE_VIS_ONLY forward_list;
230
+ template<class> friend class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator;
230
231
 
231
232
  public:
232
233
  typedef forward_iterator_tag iterator_category;
@@ -276,7 +277,7 @@ public:
276
277
  };
277
278
 
278
279
  template <class _NodeConstPtr>
279
- class _LIBCPP_TYPE_VIS __forward_list_const_iterator
280
+ class _LIBCPP_TYPE_VIS_ONLY __forward_list_const_iterator
280
281
  {
281
282
  typedef _NodeConstPtr __node_const_pointer;
282
283
 
@@ -542,7 +543,7 @@ __forward_list_base<_Tp, _Alloc>::clear() _NOEXCEPT
542
543
  }
543
544
 
544
545
  template <class _Tp, class _Alloc = allocator<_Tp> >
545
- class _LIBCPP_TYPE_VIS forward_list
546
+ class _LIBCPP_TYPE_VIS_ONLY forward_list
546
547
  : private __forward_list_base<_Tp, _Alloc>
547
548
  {
548
549
  typedef __forward_list_base<_Tp, _Alloc> base;
@@ -571,6 +572,9 @@ public:
571
572
  {} // = default;
572
573
  explicit forward_list(const allocator_type& __a);
573
574
  explicit forward_list(size_type __n);
575
+ #if _LIBCPP_STD_VER > 11
576
+ explicit forward_list(size_type __n, const allocator_type& __a);
577
+ #endif
574
578
  forward_list(size_type __n, const value_type& __v);
575
579
  forward_list(size_type __n, const value_type& __v, const allocator_type& __a);
576
580
  template <class _InputIterator>
@@ -794,6 +798,28 @@ forward_list<_Tp, _Alloc>::forward_list(size_type __n)
794
798
  }
795
799
  }
796
800
 
801
+ #if _LIBCPP_STD_VER > 11
802
+ template <class _Tp, class _Alloc>
803
+ forward_list<_Tp, _Alloc>::forward_list(size_type __n, const allocator_type& __a)
804
+ : base ( __a )
805
+ {
806
+ if (__n > 0)
807
+ {
808
+ __node_allocator& __a = base::__alloc();
809
+ typedef __allocator_destructor<__node_allocator> _Dp;
810
+ unique_ptr<__node, _Dp> __h(nullptr, _Dp(__a, 1));
811
+ for (__node_pointer __p = base::__before_begin(); __n > 0; --__n,
812
+ __p = __p->__next_)
813
+ {
814
+ __h.reset(__node_traits::allocate(__a, 1));
815
+ __node_traits::construct(__a, _VSTD::addressof(__h->__value_));
816
+ __h->__next_ = nullptr;
817
+ __p->__next_ = __h.release();
818
+ }
819
+ }
820
+ }
821
+ #endif
822
+
797
823
  template <class _Tp, class _Alloc>
798
824
  forward_list<_Tp, _Alloc>::forward_list(size_type __n, const value_type& __v)
799
825
  {
@@ -180,7 +180,7 @@ typedef basic_fstream<wchar_t> wfstream;
180
180
  _LIBCPP_BEGIN_NAMESPACE_STD
181
181
 
182
182
  template <class _CharT, class _Traits>
183
- class _LIBCPP_TYPE_VIS basic_filebuf
183
+ class _LIBCPP_TYPE_VIS_ONLY basic_filebuf
184
184
  : public basic_streambuf<_CharT, _Traits>
185
185
  {
186
186
  public:
@@ -994,7 +994,7 @@ basic_filebuf<_CharT, _Traits>::__write_mode()
994
994
  // basic_ifstream
995
995
 
996
996
  template <class _CharT, class _Traits>
997
- class _LIBCPP_TYPE_VIS basic_ifstream
997
+ class _LIBCPP_TYPE_VIS_ONLY basic_ifstream
998
998
  : public basic_istream<_CharT, _Traits>
999
999
  {
1000
1000
  public:
@@ -1139,7 +1139,7 @@ basic_ifstream<_CharT, _Traits>::close()
1139
1139
  // basic_ofstream
1140
1140
 
1141
1141
  template <class _CharT, class _Traits>
1142
- class _LIBCPP_TYPE_VIS basic_ofstream
1142
+ class _LIBCPP_TYPE_VIS_ONLY basic_ofstream
1143
1143
  : public basic_ostream<_CharT, _Traits>
1144
1144
  {
1145
1145
  public:
@@ -1284,7 +1284,7 @@ basic_ofstream<_CharT, _Traits>::close()
1284
1284
  // basic_fstream
1285
1285
 
1286
1286
  template <class _CharT, class _Traits>
1287
- class _LIBCPP_TYPE_VIS basic_fstream
1287
+ class _LIBCPP_TYPE_VIS_ONLY basic_fstream
1288
1288
  : public basic_iostream<_CharT, _Traits>
1289
1289
  {
1290
1290
  public: