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
@@ -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: