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