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
@@ -19,10 +19,10 @@ namespace std
19
19
 
20
20
  enum class future_errc
21
21
  {
22
- broken_promise,
23
- future_already_retrieved,
22
+ future_already_retrieved = 1,
24
23
  promise_already_satisfied,
25
- no_state
24
+ no_state,
25
+ broken_promise
26
26
  };
27
27
 
28
28
  enum class launch
@@ -309,11 +309,11 @@ public:
309
309
  };
310
310
 
311
311
  template <class F, class... Args>
312
- future<typename result_of<F(Args...)>::type>
312
+ future<typename result_of<typename decay<F>::type(typename decay<Args>::type...)>::type>
313
313
  async(F&& f, Args&&... args);
314
314
 
315
315
  template <class F, class... Args>
316
- future<typename result_of<F(Args...)>::type>
316
+ future<typename result_of<typename decay<F>::type(typename decay<Args>::type...)>::type>
317
317
  async(launch policy, F&& f, Args&&... args);
318
318
 
319
319
  template <class> class packaged_task; // undefined
@@ -379,19 +379,19 @@ _LIBCPP_BEGIN_NAMESPACE_STD
379
379
  //enum class future_errc
380
380
  _LIBCPP_DECLARE_STRONG_ENUM(future_errc)
381
381
  {
382
- broken_promise,
383
- future_already_retrieved,
382
+ future_already_retrieved = 1,
384
383
  promise_already_satisfied,
385
- no_state
384
+ no_state,
385
+ broken_promise
386
386
  };
387
387
  _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(future_errc)
388
388
 
389
389
  template <>
390
- struct _LIBCPP_TYPE_VIS is_error_code_enum<future_errc> : public true_type {};
390
+ struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum<future_errc> : public true_type {};
391
391
 
392
392
  #ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
393
393
  template <>
394
- struct _LIBCPP_TYPE_VIS is_error_code_enum<future_errc::__lx> : public true_type { };
394
+ struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum<future_errc::__lx> : public true_type { };
395
395
  #endif
396
396
 
397
397
  //enum class launch
@@ -508,7 +508,7 @@ public:
508
508
  virtual ~future_error() _NOEXCEPT;
509
509
  };
510
510
 
511
- class __assoc_sub_state
511
+ class _LIBCPP_TYPE_VIS __assoc_sub_state
512
512
  : public __shared_count
513
513
  {
514
514
  protected:
@@ -542,14 +542,14 @@ public:
542
542
  __state_ |= __future_attached;
543
543
  }
544
544
  _LIBCPP_INLINE_VISIBILITY
545
- bool __has_future_attached() const {return __state_ & __future_attached;}
545
+ bool __has_future_attached() const {return (__state_ & __future_attached) != 0;}
546
546
 
547
547
  _LIBCPP_INLINE_VISIBILITY
548
548
  void __set_deferred() {__state_ |= deferred;}
549
549
 
550
550
  void __make_ready();
551
551
  _LIBCPP_INLINE_VISIBILITY
552
- bool __is_ready() const {return __state_ & ready;}
552
+ bool __is_ready() const {return (__state_ & ready) != 0;}
553
553
 
554
554
  void set_value();
555
555
  void set_value_at_thread_exit();
@@ -727,7 +727,7 @@ __assoc_state<_Rp&>::set_value(_Rp& __arg)
727
727
  if (this->__has_value())
728
728
  throw future_error(make_error_code(future_errc::promise_already_satisfied));
729
729
  #endif
730
- __value_ = &__arg;
730
+ __value_ = _VSTD::addressof(__arg);
731
731
  this->__state_ |= base::__constructed | base::ready;
732
732
  __lk.unlock();
733
733
  __cv_.notify_all();
@@ -742,7 +742,7 @@ __assoc_state<_Rp&>::set_value_at_thread_exit(_Rp& __arg)
742
742
  if (this->__has_value())
743
743
  throw future_error(make_error_code(future_errc::promise_already_satisfied));
744
744
  #endif
745
- __value_ = &__arg;
745
+ __value_ = _VSTD::addressof(__arg);
746
746
  this->__state_ |= base::__constructed;
747
747
  __thread_local_data()->__make_ready_at_thread_exit(this);
748
748
  __lk.unlock();
@@ -778,7 +778,7 @@ void
778
778
  __assoc_state_alloc<_Rp, _Alloc>::__on_zero_shared() _NOEXCEPT
779
779
  {
780
780
  if (this->__state_ & base::__constructed)
781
- reinterpret_cast<_Rp*>(&this->__value_)->~_Rp();
781
+ reinterpret_cast<_Rp*>(_VSTD::addressof(this->__value_))->~_Rp();
782
782
  typename _Alloc::template rebind<__assoc_state_alloc>::other __a(__alloc_);
783
783
  this->~__assoc_state_alloc();
784
784
  __a.deallocate(this, 1);
@@ -1032,12 +1032,12 @@ __async_assoc_state<void, _Fp>::__on_zero_shared() _NOEXCEPT
1032
1032
  base::__on_zero_shared();
1033
1033
  }
1034
1034
 
1035
- template <class _Rp> class _LIBCPP_TYPE_VIS promise;
1036
- template <class _Rp> class _LIBCPP_TYPE_VIS shared_future;
1035
+ template <class _Rp> class _LIBCPP_TYPE_VIS_ONLY promise;
1036
+ template <class _Rp> class _LIBCPP_TYPE_VIS_ONLY shared_future;
1037
1037
 
1038
1038
  // future
1039
1039
 
1040
- template <class _Rp> class _LIBCPP_TYPE_VIS future;
1040
+ template <class _Rp> class _LIBCPP_TYPE_VIS_ONLY future;
1041
1041
 
1042
1042
  template <class _Rp, class _Fp>
1043
1043
  future<_Rp>
@@ -1056,7 +1056,7 @@ __make_async_assoc_state(_Fp __f);
1056
1056
  #endif
1057
1057
 
1058
1058
  template <class _Rp>
1059
- class _LIBCPP_TYPE_VIS future
1059
+ class _LIBCPP_TYPE_VIS_ONLY future
1060
1060
  {
1061
1061
  __assoc_state<_Rp>* __state_;
1062
1062
 
@@ -1160,7 +1160,7 @@ future<_Rp>::get()
1160
1160
  }
1161
1161
 
1162
1162
  template <class _Rp>
1163
- class _LIBCPP_TYPE_VIS future<_Rp&>
1163
+ class _LIBCPP_TYPE_VIS_ONLY future<_Rp&>
1164
1164
  {
1165
1165
  __assoc_state<_Rp&>* __state_;
1166
1166
 
@@ -1341,7 +1341,7 @@ swap(future<_Rp>& __x, future<_Rp>& __y) _NOEXCEPT
1341
1341
  template <class _Callable> class packaged_task;
1342
1342
 
1343
1343
  template <class _Rp>
1344
- class _LIBCPP_TYPE_VIS promise
1344
+ class _LIBCPP_TYPE_VIS_ONLY promise
1345
1345
  {
1346
1346
  __assoc_state<_Rp>* __state_;
1347
1347
 
@@ -1519,7 +1519,7 @@ promise<_Rp>::set_exception_at_thread_exit(exception_ptr __p)
1519
1519
  // promise<R&>
1520
1520
 
1521
1521
  template <class _Rp>
1522
- class _LIBCPP_TYPE_VIS promise<_Rp&>
1522
+ class _LIBCPP_TYPE_VIS_ONLY promise<_Rp&>
1523
1523
  {
1524
1524
  __assoc_state<_Rp&>* __state_;
1525
1525
 
@@ -1736,7 +1736,7 @@ swap(promise<_Rp>& __x, promise<_Rp>& __y) _NOEXCEPT
1736
1736
  }
1737
1737
 
1738
1738
  template <class _Rp, class _Alloc>
1739
- struct _LIBCPP_TYPE_VIS uses_allocator<promise<_Rp>, _Alloc>
1739
+ struct _LIBCPP_TYPE_VIS_ONLY uses_allocator<promise<_Rp>, _Alloc>
1740
1740
  : public true_type {};
1741
1741
 
1742
1742
  #ifndef _LIBCPP_HAS_NO_VARIADICS
@@ -2000,7 +2000,7 @@ __packaged_task_function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) cons
2000
2000
  }
2001
2001
 
2002
2002
  template<class _Rp, class ..._ArgTypes>
2003
- class _LIBCPP_TYPE_VIS packaged_task<_Rp(_ArgTypes...)>
2003
+ class _LIBCPP_TYPE_VIS_ONLY packaged_task<_Rp(_ArgTypes...)>
2004
2004
  {
2005
2005
  public:
2006
2006
  typedef _Rp result_type;
@@ -2013,10 +2013,26 @@ public:
2013
2013
  // construction and destruction
2014
2014
  _LIBCPP_INLINE_VISIBILITY
2015
2015
  packaged_task() _NOEXCEPT : __p_(nullptr) {}
2016
- template <class _Fp>
2016
+ template <class _Fp,
2017
+ class = typename enable_if
2018
+ <
2019
+ !is_same<
2020
+ typename decay<_Fp>::type,
2021
+ packaged_task
2022
+ >::value
2023
+ >::type
2024
+ >
2017
2025
  _LIBCPP_INLINE_VISIBILITY
2018
2026
  explicit packaged_task(_Fp&& __f) : __f_(_VSTD::forward<_Fp>(__f)) {}
2019
- template <class _Fp, class _Allocator>
2027
+ template <class _Fp, class _Allocator,
2028
+ class = typename enable_if
2029
+ <
2030
+ !is_same<
2031
+ typename decay<_Fp>::type,
2032
+ packaged_task
2033
+ >::value
2034
+ >::type
2035
+ >
2020
2036
  _LIBCPP_INLINE_VISIBILITY
2021
2037
  explicit packaged_task(allocator_arg_t, const _Allocator& __a, _Fp&& __f)
2022
2038
  : __f_(allocator_arg, __a, _VSTD::forward<_Fp>(__f)),
@@ -2115,7 +2131,7 @@ packaged_task<_Rp(_ArgTypes...)>::reset()
2115
2131
  }
2116
2132
 
2117
2133
  template<class ..._ArgTypes>
2118
- class _LIBCPP_TYPE_VIS packaged_task<void(_ArgTypes...)>
2134
+ class _LIBCPP_TYPE_VIS_ONLY packaged_task<void(_ArgTypes...)>
2119
2135
  {
2120
2136
  public:
2121
2137
  typedef void result_type;
@@ -2128,10 +2144,26 @@ public:
2128
2144
  // construction and destruction
2129
2145
  _LIBCPP_INLINE_VISIBILITY
2130
2146
  packaged_task() _NOEXCEPT : __p_(nullptr) {}
2131
- template <class _Fp>
2147
+ template <class _Fp,
2148
+ class = typename enable_if
2149
+ <
2150
+ !is_same<
2151
+ typename decay<_Fp>::type,
2152
+ packaged_task
2153
+ >::value
2154
+ >::type
2155
+ >
2132
2156
  _LIBCPP_INLINE_VISIBILITY
2133
2157
  explicit packaged_task(_Fp&& __f) : __f_(_VSTD::forward<_Fp>(__f)) {}
2134
- template <class _Fp, class _Allocator>
2158
+ template <class _Fp, class _Allocator,
2159
+ class = typename enable_if
2160
+ <
2161
+ !is_same<
2162
+ typename decay<_Fp>::type,
2163
+ packaged_task
2164
+ >::value
2165
+ >::type
2166
+ >
2135
2167
  _LIBCPP_INLINE_VISIBILITY
2136
2168
  explicit packaged_task(allocator_arg_t, const _Allocator& __a, _Fp&& __f)
2137
2169
  : __f_(allocator_arg, __a, _VSTD::forward<_Fp>(__f)),
@@ -2240,7 +2272,7 @@ swap(packaged_task<_Callable>& __x, packaged_task<_Callable>& __y) _NOEXCEPT
2240
2272
  }
2241
2273
 
2242
2274
  template <class _Callable, class _Alloc>
2243
- struct _LIBCPP_TYPE_VIS uses_allocator<packaged_task<_Callable>, _Alloc>
2275
+ struct _LIBCPP_TYPE_VIS_ONLY uses_allocator<packaged_task<_Callable>, _Alloc>
2244
2276
  : public true_type {};
2245
2277
 
2246
2278
  template <class _Rp, class _Fp>
@@ -2299,20 +2331,32 @@ private:
2299
2331
  }
2300
2332
  };
2301
2333
 
2334
+ inline _LIBCPP_INLINE_VISIBILITY bool __does_policy_contain(launch __policy, launch __value )
2335
+ { return (int(__policy) & int(__value)) != 0; }
2336
+
2302
2337
  template <class _Fp, class... _Args>
2303
2338
  future<typename __invoke_of<typename decay<_Fp>::type, typename decay<_Args>::type...>::type>
2304
2339
  async(launch __policy, _Fp&& __f, _Args&&... __args)
2305
2340
  {
2306
2341
  typedef __async_func<typename decay<_Fp>::type, typename decay<_Args>::type...> _BF;
2307
2342
  typedef typename _BF::_Rp _Rp;
2308
- future<_Rp> __r;
2309
- if (int(__policy) & int(launch::async))
2310
- __r = _VSTD::__make_async_assoc_state<_Rp>(_BF(__decay_copy(_VSTD::forward<_Fp>(__f)),
2343
+
2344
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2345
+ try
2346
+ {
2347
+ #endif
2348
+ if (__does_policy_contain(__policy, launch::async))
2349
+ return _VSTD::__make_async_assoc_state<_Rp>(_BF(__decay_copy(_VSTD::forward<_Fp>(__f)),
2311
2350
  __decay_copy(_VSTD::forward<_Args>(__args))...));
2312
- else if (int(__policy) & int(launch::deferred))
2313
- __r = _VSTD::__make_deferred_assoc_state<_Rp>(_BF(__decay_copy(_VSTD::forward<_Fp>(__f)),
2351
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2352
+ }
2353
+ catch ( ... ) { if (__policy == launch::async) throw ; }
2354
+ #endif
2355
+
2356
+ if (__does_policy_contain(__policy, launch::deferred))
2357
+ return _VSTD::__make_deferred_assoc_state<_Rp>(_BF(__decay_copy(_VSTD::forward<_Fp>(__f)),
2314
2358
  __decay_copy(_VSTD::forward<_Args>(__args))...));
2315
- return __r;
2359
+ return future<_Rp>{};
2316
2360
  }
2317
2361
 
2318
2362
  template <class _Fp, class... _Args>
@@ -2329,7 +2373,7 @@ async(_Fp&& __f, _Args&&... __args)
2329
2373
  // shared_future
2330
2374
 
2331
2375
  template <class _Rp>
2332
- class _LIBCPP_TYPE_VIS shared_future
2376
+ class _LIBCPP_TYPE_VIS_ONLY shared_future
2333
2377
  {
2334
2378
  __assoc_state<_Rp>* __state_;
2335
2379
 
@@ -2403,7 +2447,7 @@ shared_future<_Rp>::operator=(const shared_future& __rhs)
2403
2447
  }
2404
2448
 
2405
2449
  template <class _Rp>
2406
- class _LIBCPP_TYPE_VIS shared_future<_Rp&>
2450
+ class _LIBCPP_TYPE_VIS_ONLY shared_future<_Rp&>
2407
2451
  {
2408
2452
  __assoc_state<_Rp&>* __state_;
2409
2453
 
@@ -29,15 +29,15 @@ public:
29
29
  typedef const E* iterator;
30
30
  typedef const E* const_iterator;
31
31
 
32
- initializer_list() noexcept;
32
+ initializer_list() noexcept; // constexpr in C++14
33
33
 
34
- size_t size() const noexcept;
35
- const E* begin() const noexcept;
36
- const E* end() const noexcept;
34
+ size_t size() const noexcept; // constexpr in C++14
35
+ const E* begin() const noexcept; // constexpr in C++14
36
+ const E* end() const noexcept; // constexpr in C++14
37
37
  };
38
38
 
39
- template<class E> const E* begin(initializer_list<E> il) noexcept;
40
- template<class E> const E* end(initializer_list<E> il) noexcept;
39
+ template<class E> const E* begin(initializer_list<E> il) noexcept; // constexpr in C++14
40
+ template<class E> const E* end(initializer_list<E> il) noexcept; // constexpr in C++14
41
41
 
42
42
  } // std
43
43
 
@@ -56,12 +56,13 @@ namespace std // purposefully not versioned
56
56
  #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
57
57
 
58
58
  template<class _Ep>
59
- class _LIBCPP_TYPE_VIS initializer_list
59
+ class _LIBCPP_TYPE_VIS_ONLY initializer_list
60
60
  {
61
61
  const _Ep* __begin_;
62
62
  size_t __size_;
63
63
 
64
64
  _LIBCPP_ALWAYS_INLINE
65
+ _LIBCPP_CONSTEXPR_AFTER_CXX11
65
66
  initializer_list(const _Ep* __b, size_t __s) _NOEXCEPT
66
67
  : __begin_(__b),
67
68
  __size_(__s)
@@ -75,15 +76,26 @@ public:
75
76
  typedef const _Ep* iterator;
76
77
  typedef const _Ep* const_iterator;
77
78
 
78
- _LIBCPP_ALWAYS_INLINE initializer_list() _NOEXCEPT : __begin_(nullptr), __size_(0) {}
79
+ _LIBCPP_ALWAYS_INLINE
80
+ _LIBCPP_CONSTEXPR_AFTER_CXX11
81
+ initializer_list() _NOEXCEPT : __begin_(nullptr), __size_(0) {}
79
82
 
80
- _LIBCPP_ALWAYS_INLINE size_t size() const _NOEXCEPT {return __size_;}
81
- _LIBCPP_ALWAYS_INLINE const _Ep* begin() const _NOEXCEPT {return __begin_;}
82
- _LIBCPP_ALWAYS_INLINE const _Ep* end() const _NOEXCEPT {return __begin_ + __size_;}
83
+ _LIBCPP_ALWAYS_INLINE
84
+ _LIBCPP_CONSTEXPR_AFTER_CXX11
85
+ size_t size() const _NOEXCEPT {return __size_;}
86
+
87
+ _LIBCPP_ALWAYS_INLINE
88
+ _LIBCPP_CONSTEXPR_AFTER_CXX11
89
+ const _Ep* begin() const _NOEXCEPT {return __begin_;}
90
+
91
+ _LIBCPP_ALWAYS_INLINE
92
+ _LIBCPP_CONSTEXPR_AFTER_CXX11
93
+ const _Ep* end() const _NOEXCEPT {return __begin_ + __size_;}
83
94
  };
84
95
 
85
96
  template<class _Ep>
86
97
  inline _LIBCPP_INLINE_VISIBILITY
98
+ _LIBCPP_CONSTEXPR_AFTER_CXX11
87
99
  const _Ep*
88
100
  begin(initializer_list<_Ep> __il) _NOEXCEPT
89
101
  {
@@ -92,6 +104,7 @@ begin(initializer_list<_Ep> __il) _NOEXCEPT
92
104
 
93
105
  template<class _Ep>
94
106
  inline _LIBCPP_INLINE_VISIBILITY
107
+ _LIBCPP_CONSTEXPR_AFTER_CXX11
95
108
  const _Ep*
96
109
  end(initializer_list<_Ep> __il) _NOEXCEPT
97
110
  {
@@ -26,6 +26,17 @@ template <class charT, class moneyT> T8 put_money(const moneyT& mon, bool intl =
26
26
  template <class charT> T9 get_time(struct tm* tmb, const charT* fmt);
27
27
  template <class charT> T10 put_time(const struct tm* tmb, const charT* fmt);
28
28
 
29
+ template <class charT>
30
+ T11 quoted(const charT* s, charT delim=charT('"'), charT escape=charT('\\')); // C++14
31
+
32
+ template <class charT, class traits, class Allocator>
33
+ T12 quoted(const basic_string<charT, traits, Allocator>& s,
34
+ charT delim=charT('"'), charT escape=charT('\\')); // C++14
35
+
36
+ template <class charT, class traits, class Allocator>
37
+ T13 quoted(basic_string<charT, traits, Allocator>& s,
38
+ charT delim=charT('"'), charT escape=charT('\\')); // C++14
39
+
29
40
  } // std
30
41
 
31
42
  */
@@ -499,6 +510,142 @@ put_time(const tm* __tm, const _CharT* __fmt)
499
510
  return __iom_t10<_CharT>(__tm, __fmt);
500
511
  }
501
512
 
513
+ #if _LIBCPP_STD_VER > 11
514
+
515
+ template <class _CharT, class _Traits, class _ForwardIterator>
516
+ std::basic_ostream<_CharT, _Traits> &
517
+ __quoted_output ( basic_ostream<_CharT, _Traits> &__os,
518
+ _ForwardIterator __first, _ForwardIterator __last, _CharT __delim, _CharT __escape )
519
+ {
520
+ __os << __delim;
521
+ for ( ; __first != __last; ++ __first )
522
+ {
523
+ if (_Traits::eq (*__first, __escape) || _Traits::eq (*__first, __delim))
524
+ __os << __escape;
525
+ __os << *__first;
526
+ }
527
+ __os << __delim;
528
+ return __os;
529
+ }
530
+
531
+ template <class _CharT, class _Traits, class _String>
532
+ basic_istream<_CharT, _Traits> &
533
+ __quoted_input ( basic_istream<_CharT, _Traits> &__is, _String & __string, _CharT __delim, _CharT __escape )
534
+ {
535
+ __string.clear ();
536
+ _CharT __c;
537
+ __is >> __c;
538
+ if ( __is.fail ())
539
+ return __is;
540
+
541
+ if (!_Traits::eq (__c, __delim)) // no delimiter, read the whole string
542
+ {
543
+ __is.unget ();
544
+ __is >> __string;
545
+ return __is;
546
+ }
547
+
548
+ __save_flags<_CharT, _Traits> sf(__is);
549
+ noskipws (__is);
550
+ while (true)
551
+ {
552
+ __is >> __c;
553
+ if ( __is.fail ())
554
+ break;
555
+ if (_Traits::eq (__c, __escape))
556
+ {
557
+ __is >> __c;
558
+ if ( __is.fail ())
559
+ break;
560
+ }
561
+ else if (_Traits::eq (__c, __delim))
562
+ break;
563
+ __string.push_back ( __c );
564
+ }
565
+ return __is;
566
+ }
567
+
568
+
569
+ template <class _CharT, class _Iter, class _Traits=char_traits<_CharT>>
570
+ struct __quoted_output_proxy
571
+ {
572
+ _Iter __first;
573
+ _Iter __last;
574
+ _CharT __delim;
575
+ _CharT __escape;
576
+
577
+ __quoted_output_proxy(_Iter __f, _Iter __l, _CharT __d, _CharT __e)
578
+ : __first(__f), __last(__l), __delim(__d), __escape(__e) {}
579
+ // This would be a nice place for a string_ref
580
+ };
581
+
582
+ template <class _CharT, class _Traits, class _Iter>
583
+ basic_ostream<_CharT, _Traits>& operator<<(
584
+ basic_ostream<_CharT, _Traits>& __os,
585
+ const __quoted_output_proxy<_CharT, _Iter, _Traits> & __proxy)
586
+ {
587
+ return __quoted_output (__os, __proxy.__first, __proxy.__last, __proxy.__delim, __proxy.__escape);
588
+ }
589
+
590
+ template <class _CharT, class _Traits, class _Allocator>
591
+ struct __quoted_proxy
592
+ {
593
+ basic_string<_CharT, _Traits, _Allocator> &__string;
594
+ _CharT __delim;
595
+ _CharT __escape;
596
+
597
+ __quoted_proxy(basic_string<_CharT, _Traits, _Allocator> &__s, _CharT __d, _CharT __e)
598
+ : __string(__s), __delim(__d), __escape(__e) {}
599
+ };
600
+
601
+ template <class _CharT, class _Traits, class _Allocator>
602
+ _LIBCPP_INLINE_VISIBILITY
603
+ basic_ostream<_CharT, _Traits>& operator<<(
604
+ basic_ostream<_CharT, _Traits>& __os,
605
+ const __quoted_proxy<_CharT, _Traits, _Allocator> & __proxy)
606
+ {
607
+ return __quoted_output (__os, __proxy.string.cbegin (), __proxy.string.cend (), __proxy.__delim, __proxy.__escape);
608
+ }
609
+
610
+ // extractor for non-const basic_string& proxies
611
+ template <class _CharT, class _Traits, class _Allocator>
612
+ _LIBCPP_INLINE_VISIBILITY
613
+ basic_istream<_CharT, _Traits>& operator>>(
614
+ basic_istream<_CharT, _Traits>& __is,
615
+ const __quoted_proxy<_CharT, _Traits, _Allocator> & __proxy)
616
+ {
617
+ return __quoted_input ( __is, __proxy.__string, __proxy.__delim, __proxy.__escape );
618
+ }
619
+
620
+
621
+ template <class _CharT>
622
+ _LIBCPP_INLINE_VISIBILITY
623
+ __quoted_output_proxy<_CharT, const _CharT *>
624
+ quoted ( const _CharT *__s, _CharT __delim = _CharT('"'), _CharT __escape =_CharT('\\'))
625
+ {
626
+ const _CharT *__end = __s;
627
+ while ( *__end ) ++__end;
628
+ return __quoted_output_proxy<_CharT, const _CharT *> ( __s, __end, __delim, __escape );
629
+ }
630
+
631
+ template <class _CharT, class _Traits, class _Allocator>
632
+ _LIBCPP_INLINE_VISIBILITY
633
+ __quoted_output_proxy<_CharT, typename basic_string <_CharT, _Traits, _Allocator>::const_iterator>
634
+ quoted ( const basic_string <_CharT, _Traits, _Allocator> &__s, _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\'))
635
+ {
636
+ return __quoted_output_proxy<_CharT,
637
+ typename basic_string <_CharT, _Traits, _Allocator>::const_iterator>
638
+ ( __s.cbegin(), __s.cend (), __delim, __escape );
639
+ }
640
+
641
+ template <class _CharT, class _Traits, class _Allocator>
642
+ __quoted_proxy<_CharT, _Traits, _Allocator>
643
+ quoted ( basic_string <_CharT, _Traits, _Allocator> &__s, _CharT __delim = _CharT('"'), _CharT __escape=_CharT('\\'))
644
+ {
645
+ return __quoted_proxy<_CharT, _Traits, _Allocator>( __s, __delim, __escape );
646
+ }
647
+ #endif
648
+
502
649
  _LIBCPP_END_NAMESPACE_STD
503
650
 
504
651
  #endif // _LIBCPP_IOMANIP
@@ -203,9 +203,9 @@ enum class io_errc
203
203
  };
204
204
 
205
205
  concept_map ErrorCodeEnum<io_errc> { };
206
- error_code make_error_code(io_errc e);
207
- error_condition make_error_condition(io_errc e);
208
- storage-class-specifier const error_category& iostream_category;
206
+ error_code make_error_code(io_errc e) noexcept;
207
+ error_condition make_error_condition(io_errc e) noexcept;
208
+ storage-class-specifier const error_category& iostream_category() noexcept;
209
209
 
210
210
  } // std
211
211
 
@@ -216,6 +216,10 @@ storage-class-specifier const error_category& iostream_category;
216
216
  #include <__locale>
217
217
  #include <system_error>
218
218
 
219
+ #if __has_feature(cxx_atomic)
220
+ #include <atomic> // for __xindex_
221
+ #endif
222
+
219
223
  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
220
224
  #pragma GCC system_header
221
225
  #endif
@@ -319,7 +323,7 @@ public:
319
323
  _LIBCPP_INLINE_VISIBILITY bool bad() const;
320
324
 
321
325
  _LIBCPP_INLINE_VISIBILITY iostate exceptions() const;
322
- _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __except);
326
+ _LIBCPP_INLINE_VISIBILITY void exceptions(iostate __iostate);
323
327
 
324
328
  void __set_badbit_and_consider_rethrow();
325
329
  void __set_failbit_and_consider_rethrow();
@@ -363,7 +367,11 @@ private:
363
367
  int* __index_;
364
368
  size_t __event_size_;
365
369
  size_t __event_cap_;
370
+ #if __has_feature(cxx_atomic) && !defined(__EMSCRIPTEN__)
371
+ static atomic<int> __xindex_;
372
+ #else
366
373
  static int __xindex_;
374
+ #endif
367
375
  long* __iarray_;
368
376
  size_t __iarray_size_;
369
377
  size_t __iarray_cap_;
@@ -380,26 +388,26 @@ _LIBCPP_DECLARE_STRONG_ENUM(io_errc)
380
388
  _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(io_errc)
381
389
 
382
390
  template <>
383
- struct _LIBCPP_TYPE_VIS is_error_code_enum<io_errc> : public true_type { };
391
+ struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum<io_errc> : public true_type { };
384
392
 
385
393
  #ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
386
394
  template <>
387
- struct _LIBCPP_TYPE_VIS is_error_code_enum<io_errc::__lx> : public true_type { };
395
+ struct _LIBCPP_TYPE_VIS_ONLY is_error_code_enum<io_errc::__lx> : public true_type { };
388
396
  #endif
389
397
 
390
398
  _LIBCPP_FUNC_VIS
391
- const error_category& iostream_category();
399
+ const error_category& iostream_category() _NOEXCEPT;
392
400
 
393
401
  inline _LIBCPP_INLINE_VISIBILITY
394
402
  error_code
395
- make_error_code(io_errc __e)
403
+ make_error_code(io_errc __e) _NOEXCEPT
396
404
  {
397
405
  return error_code(static_cast<int>(__e), iostream_category());
398
406
  }
399
407
 
400
408
  inline _LIBCPP_INLINE_VISIBILITY
401
409
  error_condition
402
- make_error_condition(io_errc __e)
410
+ make_error_condition(io_errc __e) _NOEXCEPT
403
411
  {
404
412
  return error_condition(static_cast<int>(__e), iostream_category());
405
413
  }
@@ -527,21 +535,21 @@ inline _LIBCPP_INLINE_VISIBILITY
527
535
  bool
528
536
  ios_base::eof() const
529
537
  {
530
- return __rdstate_ & eofbit;
538
+ return (__rdstate_ & eofbit) != 0;
531
539
  }
532
540
 
533
541
  inline _LIBCPP_INLINE_VISIBILITY
534
542
  bool
535
543
  ios_base::fail() const
536
544
  {
537
- return __rdstate_ & (failbit | badbit);
545
+ return (__rdstate_ & (failbit | badbit)) != 0;
538
546
  }
539
547
 
540
548
  inline _LIBCPP_INLINE_VISIBILITY
541
549
  bool
542
550
  ios_base::bad() const
543
551
  {
544
- return __rdstate_ & badbit;
552
+ return (__rdstate_ & badbit) != 0;
545
553
  }
546
554
 
547
555
  inline _LIBCPP_INLINE_VISIBILITY
@@ -553,14 +561,14 @@ ios_base::exceptions() const
553
561
 
554
562
  inline _LIBCPP_INLINE_VISIBILITY
555
563
  void
556
- ios_base::exceptions(iostate __except)
564
+ ios_base::exceptions(iostate __iostate)
557
565
  {
558
- __exceptions_ = __except;
566
+ __exceptions_ = __iostate;
559
567
  clear(__rdstate_);
560
568
  }
561
569
 
562
570
  template <class _CharT, class _Traits>
563
- class _LIBCPP_TYPE_VIS basic_ios
571
+ class _LIBCPP_TYPE_VIS_ONLY basic_ios
564
572
  : public ios_base
565
573
  {
566
574
  public:
@@ -585,7 +593,7 @@ public:
585
593
  _LIBCPP_ALWAYS_INLINE bool bad() const {return ios_base::bad();}
586
594
 
587
595
  _LIBCPP_ALWAYS_INLINE iostate exceptions() const {return ios_base::exceptions();}
588
- _LIBCPP_ALWAYS_INLINE void exceptions(iostate __except) {ios_base::exceptions(__except);}
596
+ _LIBCPP_ALWAYS_INLINE void exceptions(iostate __iostate) {ios_base::exceptions(__iostate);}
589
597
 
590
598
  // 27.5.4.1 Constructor/destructor:
591
599
  _LIBCPP_INLINE_VISIBILITY