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
@@ -90,7 +90,7 @@ struct allocator_traits
90
90
  template <class T>
91
91
  static void destroy(allocator_type& a, T* p);
92
92
 
93
- static size_type max_size(const allocator_type& a);
93
+ static size_type max_size(const allocator_type& a); // noexcept in C++14
94
94
 
95
95
  static allocator_type
96
96
  select_on_container_copy_construction(const allocator_type& a);
@@ -496,8 +496,8 @@ public:
496
496
  long use_count() const noexcept;
497
497
  bool expired() const noexcept;
498
498
  shared_ptr<T> lock() const noexcept;
499
- template<class U> bool owner_before(shared_ptr<U> const& b);
500
- template<class U> bool owner_before(weak_ptr<U> const& b);
499
+ template<class U> bool owner_before(shared_ptr<U> const& b) const;
500
+ template<class U> bool owner_before(weak_ptr<U> const& b) const;
501
501
  };
502
502
 
503
503
  // weak_ptr specialized algorithms:
@@ -618,60 +618,12 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space);
618
618
 
619
619
  _LIBCPP_BEGIN_NAMESPACE_STD
620
620
 
621
- // addressof
622
-
623
- template <class _Tp>
624
- inline _LIBCPP_INLINE_VISIBILITY
625
- _Tp*
626
- addressof(_Tp& __x) _NOEXCEPT
627
- {
628
- return (_Tp*)&reinterpret_cast<const volatile char&>(__x);
629
- }
630
-
631
- #if defined(_LIBCPP_HAS_OBJC_ARC) && !defined(_LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF)
632
- // Objective-C++ Automatic Reference Counting uses qualified pointers
633
- // that require special addressof() signatures. When
634
- // _LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF is defined, the compiler
635
- // itself is providing these definitions. Otherwise, we provide them.
636
- template <class _Tp>
637
- inline _LIBCPP_INLINE_VISIBILITY
638
- __strong _Tp*
639
- addressof(__strong _Tp& __x) _NOEXCEPT
640
- {
641
- return &__x;
642
- }
643
-
644
- #ifdef _LIBCPP_HAS_OBJC_ARC_WEAK
645
- template <class _Tp>
646
- inline _LIBCPP_INLINE_VISIBILITY
647
- __weak _Tp*
648
- addressof(__weak _Tp& __x) _NOEXCEPT
649
- {
650
- return &__x;
651
- }
652
- #endif
653
-
654
- template <class _Tp>
655
- inline _LIBCPP_INLINE_VISIBILITY
656
- __autoreleasing _Tp*
657
- addressof(__autoreleasing _Tp& __x) _NOEXCEPT
658
- {
659
- return &__x;
660
- }
661
-
662
- template <class _Tp>
663
- inline _LIBCPP_INLINE_VISIBILITY
664
- __unsafe_unretained _Tp*
665
- addressof(__unsafe_unretained _Tp& __x) _NOEXCEPT
666
- {
667
- return &__x;
668
- }
669
- #endif
621
+ // addressof moved to <__functional_base>
670
622
 
671
623
  template <class _Tp> class allocator;
672
624
 
673
625
  template <>
674
- class _LIBCPP_TYPE_VIS allocator<void>
626
+ class _LIBCPP_TYPE_VIS_ONLY allocator<void>
675
627
  {
676
628
  public:
677
629
  typedef void* pointer;
@@ -682,7 +634,7 @@ public:
682
634
  };
683
635
 
684
636
  template <>
685
- class _LIBCPP_TYPE_VIS allocator<const void>
637
+ class _LIBCPP_TYPE_VIS_ONLY allocator<const void>
686
638
  {
687
639
  public:
688
640
  typedef const void* pointer;
@@ -917,7 +869,7 @@ struct __pointer_traits_rebind<_Sp<_Tp, _A0, _A1, _A2>, _Up, false>
917
869
  #endif // _LIBCPP_HAS_NO_VARIADICS
918
870
 
919
871
  template <class _Ptr>
920
- struct _LIBCPP_TYPE_VIS pointer_traits
872
+ struct _LIBCPP_TYPE_VIS_ONLY pointer_traits
921
873
  {
922
874
  typedef _Ptr pointer;
923
875
  typedef typename __pointer_traits_element_type<pointer>::type element_type;
@@ -940,7 +892,7 @@ public:
940
892
  };
941
893
 
942
894
  template <class _Tp>
943
- struct _LIBCPP_TYPE_VIS pointer_traits<_Tp*>
895
+ struct _LIBCPP_TYPE_VIS_ONLY pointer_traits<_Tp*>
944
896
  {
945
897
  typedef _Tp* pointer;
946
898
  typedef _Tp element_type;
@@ -965,13 +917,13 @@ public:
965
917
 
966
918
  namespace __has_pointer_type_imp
967
919
  {
968
- template <class _Up> static __two test(...);
969
- template <class _Up> static char test(typename _Up::pointer* = 0);
920
+ template <class _Up> static __two __test(...);
921
+ template <class _Up> static char __test(typename _Up::pointer* = 0);
970
922
  }
971
923
 
972
924
  template <class _Tp>
973
925
  struct __has_pointer_type
974
- : public integral_constant<bool, sizeof(__has_pointer_type_imp::test<_Tp>(0)) == 1>
926
+ : public integral_constant<bool, sizeof(__has_pointer_type_imp::__test<_Tp>(0)) == 1>
975
927
  {
976
928
  };
977
929
 
@@ -1447,7 +1399,7 @@ struct __alloc_traits_difference_type<_Alloc, _Ptr, true>
1447
1399
  };
1448
1400
 
1449
1401
  template <class _Alloc>
1450
- struct _LIBCPP_TYPE_VIS allocator_traits
1402
+ struct _LIBCPP_TYPE_VIS_ONLY allocator_traits
1451
1403
  {
1452
1404
  typedef _Alloc allocator_type;
1453
1405
  typedef typename allocator_type::value_type value_type;
@@ -1531,7 +1483,7 @@ struct _LIBCPP_TYPE_VIS allocator_traits
1531
1483
  {__destroy(__has_destroy<allocator_type, _Tp*>(), __a, __p);}
1532
1484
 
1533
1485
  _LIBCPP_INLINE_VISIBILITY
1534
- static size_type max_size(const allocator_type& __a)
1486
+ static size_type max_size(const allocator_type& __a) _NOEXCEPT
1535
1487
  {return __max_size(__has_max_size<const allocator_type>(), __a);}
1536
1488
 
1537
1489
  _LIBCPP_INLINE_VISIBILITY
@@ -1653,7 +1605,7 @@ private:
1653
1605
  // allocator
1654
1606
 
1655
1607
  template <class _Tp>
1656
- class _LIBCPP_TYPE_VIS allocator
1608
+ class _LIBCPP_TYPE_VIS_ONLY allocator
1657
1609
  {
1658
1610
  public:
1659
1611
  typedef size_t size_type;
@@ -1745,7 +1697,7 @@ public:
1745
1697
  };
1746
1698
 
1747
1699
  template <class _Tp>
1748
- class _LIBCPP_TYPE_VIS allocator<const _Tp>
1700
+ class _LIBCPP_TYPE_VIS_ONLY allocator<const _Tp>
1749
1701
  {
1750
1702
  public:
1751
1703
  typedef size_t size_type;
@@ -1843,7 +1795,7 @@ inline _LIBCPP_INLINE_VISIBILITY
1843
1795
  bool operator!=(const allocator<_Tp>&, const allocator<_Up>&) _NOEXCEPT {return false;}
1844
1796
 
1845
1797
  template <class _OutputIterator, class _Tp>
1846
- class _LIBCPP_TYPE_VIS raw_storage_iterator
1798
+ class _LIBCPP_TYPE_VIS_ONLY raw_storage_iterator
1847
1799
  : public iterator<output_iterator_tag,
1848
1800
  _Tp, // purposefully not C++03
1849
1801
  ptrdiff_t, // purposefully not C++03
@@ -1896,7 +1848,7 @@ struct auto_ptr_ref
1896
1848
  };
1897
1849
 
1898
1850
  template<class _Tp>
1899
- class _LIBCPP_TYPE_VIS auto_ptr
1851
+ class _LIBCPP_TYPE_VIS_ONLY auto_ptr
1900
1852
  {
1901
1853
  private:
1902
1854
  _Tp* __ptr_;
@@ -1940,7 +1892,7 @@ public:
1940
1892
  };
1941
1893
 
1942
1894
  template <>
1943
- class _LIBCPP_TYPE_VIS auto_ptr<void>
1895
+ class _LIBCPP_TYPE_VIS_ONLY auto_ptr<void>
1944
1896
  {
1945
1897
  public:
1946
1898
  typedef void element_type;
@@ -2476,7 +2428,7 @@ struct __same_or_less_cv_qualified<_Ptr1, _Ptr2, true>
2476
2428
  // default_delete
2477
2429
 
2478
2430
  template <class _Tp>
2479
- struct _LIBCPP_TYPE_VIS default_delete
2431
+ struct _LIBCPP_TYPE_VIS_ONLY default_delete
2480
2432
  {
2481
2433
  #ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
2482
2434
  _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR default_delete() _NOEXCEPT = default;
@@ -2495,7 +2447,7 @@ struct _LIBCPP_TYPE_VIS default_delete
2495
2447
  };
2496
2448
 
2497
2449
  template <class _Tp>
2498
- struct _LIBCPP_TYPE_VIS default_delete<_Tp[]>
2450
+ struct _LIBCPP_TYPE_VIS_ONLY default_delete<_Tp[]>
2499
2451
  {
2500
2452
  public:
2501
2453
  #ifndef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
@@ -2518,7 +2470,7 @@ public:
2518
2470
  };
2519
2471
 
2520
2472
  template <class _Tp, class _Dp = default_delete<_Tp> >
2521
- class _LIBCPP_TYPE_VIS unique_ptr
2473
+ class _LIBCPP_TYPE_VIS_ONLY unique_ptr
2522
2474
  {
2523
2475
  public:
2524
2476
  typedef _Tp element_type;
@@ -2697,7 +2649,7 @@ public:
2697
2649
  };
2698
2650
 
2699
2651
  template <class _Tp, class _Dp>
2700
- class _LIBCPP_TYPE_VIS unique_ptr<_Tp[], _Dp>
2652
+ class _LIBCPP_TYPE_VIS_ONLY unique_ptr<_Tp[], _Dp>
2701
2653
  {
2702
2654
  public:
2703
2655
  typedef _Tp element_type;
@@ -3452,7 +3404,7 @@ struct __scalar_hash<_Tp, 4>
3452
3404
  };
3453
3405
 
3454
3406
  template<class _Tp>
3455
- struct _LIBCPP_TYPE_VIS hash<_Tp*>
3407
+ struct _LIBCPP_TYPE_VIS_ONLY hash<_Tp*>
3456
3408
  : public unary_function<_Tp*, size_t>
3457
3409
  {
3458
3410
  _LIBCPP_INLINE_VISIBILITY
@@ -3469,7 +3421,7 @@ struct _LIBCPP_TYPE_VIS hash<_Tp*>
3469
3421
  };
3470
3422
 
3471
3423
  template <class _Tp, class _Dp>
3472
- struct _LIBCPP_TYPE_VIS hash<unique_ptr<_Tp, _Dp> >
3424
+ struct _LIBCPP_TYPE_VIS_ONLY hash<unique_ptr<_Tp, _Dp> >
3473
3425
  {
3474
3426
  typedef unique_ptr<_Tp, _Dp> argument_type;
3475
3427
  typedef size_t result_type;
@@ -3642,9 +3594,9 @@ public:
3642
3594
  virtual const char* what() const _NOEXCEPT;
3643
3595
  };
3644
3596
 
3645
- template<class _Tp> class _LIBCPP_TYPE_VIS weak_ptr;
3597
+ template<class _Tp> class _LIBCPP_TYPE_VIS_ONLY weak_ptr;
3646
3598
 
3647
- class __shared_count
3599
+ class _LIBCPP_TYPE_VIS __shared_count
3648
3600
  {
3649
3601
  __shared_count(const __shared_count&);
3650
3602
  __shared_count& operator=(const __shared_count&);
@@ -3666,7 +3618,7 @@ public:
3666
3618
  long use_count() const _NOEXCEPT {return __shared_owners_ + 1;}
3667
3619
  };
3668
3620
 
3669
- class __shared_weak_count
3621
+ class _LIBCPP_TYPE_VIS __shared_weak_count
3670
3622
  : private __shared_count
3671
3623
  {
3672
3624
  long __shared_weak_owners_;
@@ -3811,10 +3763,10 @@ __shared_ptr_emplace<_Tp, _Alloc>::__on_zero_shared_weak() _NOEXCEPT
3811
3763
  __a.deallocate(this, 1);
3812
3764
  }
3813
3765
 
3814
- template<class _Tp> class _LIBCPP_TYPE_VIS enable_shared_from_this;
3766
+ template<class _Tp> class _LIBCPP_TYPE_VIS_ONLY enable_shared_from_this;
3815
3767
 
3816
3768
  template<class _Tp>
3817
- class _LIBCPP_TYPE_VIS shared_ptr
3769
+ class _LIBCPP_TYPE_VIS_ONLY shared_ptr
3818
3770
  {
3819
3771
  public:
3820
3772
  typedef _Tp element_type;
@@ -3943,8 +3895,8 @@ public:
3943
3895
  <
3944
3896
  !is_array<_Yp>::value &&
3945
3897
  is_convertible<_Yp*, element_type*>::value,
3946
- shared_ptr&
3947
- >::type
3898
+ shared_ptr
3899
+ >::type&
3948
3900
  operator=(auto_ptr<_Yp>&& __r);
3949
3901
  #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
3950
3902
  template<class _Yp>
@@ -4083,8 +4035,8 @@ private:
4083
4035
  _LIBCPP_INLINE_VISIBILITY
4084
4036
  void __enable_weak_this(const void*) _NOEXCEPT {}
4085
4037
 
4086
- template <class _Up> friend class _LIBCPP_TYPE_VIS shared_ptr;
4087
- template <class _Up> friend class _LIBCPP_TYPE_VIS weak_ptr;
4038
+ template <class _Up> friend class _LIBCPP_TYPE_VIS_ONLY shared_ptr;
4039
+ template <class _Up> friend class _LIBCPP_TYPE_VIS_ONLY weak_ptr;
4088
4040
  };
4089
4041
 
4090
4042
  template<class _Tp>
@@ -4570,8 +4522,8 @@ typename enable_if
4570
4522
  <
4571
4523
  !is_array<_Yp>::value &&
4572
4524
  is_convertible<_Yp*, _Tp*>::value,
4573
- shared_ptr<_Tp>&
4574
- >::type
4525
+ shared_ptr<_Tp>
4526
+ >::type&
4575
4527
  shared_ptr<_Tp>::operator=(auto_ptr<_Yp>&& __r)
4576
4528
  {
4577
4529
  shared_ptr(_VSTD::move(__r)).swap(*this);
@@ -4980,7 +4932,7 @@ get_deleter(const shared_ptr<_Tp>& __p) _NOEXCEPT
4980
4932
  #endif // _LIBCPP_NO_RTTI
4981
4933
 
4982
4934
  template<class _Tp>
4983
- class _LIBCPP_TYPE_VIS weak_ptr
4935
+ class _LIBCPP_TYPE_VIS_ONLY weak_ptr
4984
4936
  {
4985
4937
  public:
4986
4938
  typedef _Tp element_type;
@@ -5055,8 +5007,8 @@ public:
5055
5007
  bool owner_before(const weak_ptr<_Up>& __r) const
5056
5008
  {return __cntrl_ < __r.__cntrl_;}
5057
5009
 
5058
- template <class _Up> friend class _LIBCPP_TYPE_VIS weak_ptr;
5059
- template <class _Up> friend class _LIBCPP_TYPE_VIS shared_ptr;
5010
+ template <class _Up> friend class _LIBCPP_TYPE_VIS_ONLY weak_ptr;
5011
+ template <class _Up> friend class _LIBCPP_TYPE_VIS_ONLY shared_ptr;
5060
5012
  };
5061
5013
 
5062
5014
  template<class _Tp>
@@ -5256,7 +5208,7 @@ weak_ptr<_Tp>::lock() const _NOEXCEPT
5256
5208
  template <class _Tp> struct owner_less;
5257
5209
 
5258
5210
  template <class _Tp>
5259
- struct _LIBCPP_TYPE_VIS owner_less<shared_ptr<_Tp> >
5211
+ struct _LIBCPP_TYPE_VIS_ONLY owner_less<shared_ptr<_Tp> >
5260
5212
  : binary_function<shared_ptr<_Tp>, shared_ptr<_Tp>, bool>
5261
5213
  {
5262
5214
  typedef bool result_type;
@@ -5272,7 +5224,7 @@ struct _LIBCPP_TYPE_VIS owner_less<shared_ptr<_Tp> >
5272
5224
  };
5273
5225
 
5274
5226
  template <class _Tp>
5275
- struct _LIBCPP_TYPE_VIS owner_less<weak_ptr<_Tp> >
5227
+ struct _LIBCPP_TYPE_VIS_ONLY owner_less<weak_ptr<_Tp> >
5276
5228
  : binary_function<weak_ptr<_Tp>, weak_ptr<_Tp>, bool>
5277
5229
  {
5278
5230
  typedef bool result_type;
@@ -5288,7 +5240,7 @@ struct _LIBCPP_TYPE_VIS owner_less<weak_ptr<_Tp> >
5288
5240
  };
5289
5241
 
5290
5242
  template<class _Tp>
5291
- class _LIBCPP_TYPE_VIS enable_shared_from_this
5243
+ class _LIBCPP_TYPE_VIS_ONLY enable_shared_from_this
5292
5244
  {
5293
5245
  mutable weak_ptr<_Tp> __weak_this_;
5294
5246
  protected:
@@ -5313,7 +5265,7 @@ public:
5313
5265
  };
5314
5266
 
5315
5267
  template <class _Tp>
5316
- struct _LIBCPP_TYPE_VIS hash<shared_ptr<_Tp> >
5268
+ struct _LIBCPP_TYPE_VIS_ONLY hash<shared_ptr<_Tp> >
5317
5269
  {
5318
5270
  typedef shared_ptr<_Tp> argument_type;
5319
5271
  typedef size_t result_type;
@@ -5331,7 +5283,7 @@ operator<<(basic_ostream<_CharT, _Traits>& __os, shared_ptr<_Yp> const& __p);
5331
5283
 
5332
5284
  #if __has_feature(cxx_atomic)
5333
5285
 
5334
- class __sp_mut
5286
+ class _LIBCPP_TYPE_VIS __sp_mut
5335
5287
  {
5336
5288
  void* __lx;
5337
5289
  public:
@@ -5475,11 +5427,11 @@ struct _LIBCPP_TYPE_VIS pointer_safety
5475
5427
  operator int() const {return __v_;}
5476
5428
  };
5477
5429
 
5478
- void declare_reachable(void* __p);
5479
- void declare_no_pointers(char* __p, size_t __n);
5480
- void undeclare_no_pointers(char* __p, size_t __n);
5481
- pointer_safety get_pointer_safety() _NOEXCEPT;
5482
- void* __undeclare_reachable(void* __p);
5430
+ _LIBCPP_FUNC_VIS void declare_reachable(void* __p);
5431
+ _LIBCPP_FUNC_VIS void declare_no_pointers(char* __p, size_t __n);
5432
+ _LIBCPP_FUNC_VIS void undeclare_no_pointers(char* __p, size_t __n);
5433
+ _LIBCPP_FUNC_VIS pointer_safety get_pointer_safety() _NOEXCEPT;
5434
+ _LIBCPP_FUNC_VIS void* __undeclare_reachable(void* __p);
5483
5435
 
5484
5436
  template <class _Tp>
5485
5437
  inline _LIBCPP_INLINE_VISIBILITY
@@ -5489,7 +5441,7 @@ undeclare_reachable(_Tp* __p)
5489
5441
  return static_cast<_Tp*>(__undeclare_reachable(__p));
5490
5442
  }
5491
5443
 
5492
- void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space);
5444
+ _LIBCPP_FUNC_VIS void* align(size_t __align, size_t __sz, void*& __ptr, size_t& __space);
5493
5445
 
5494
5446
  _LIBCPP_END_NAMESPACE_STD
5495
5447
 
@@ -441,7 +441,7 @@ void call_once(once_flag&, _Callable);
441
441
 
442
442
  #endif // _LIBCPP_HAS_NO_VARIADICS
443
443
 
444
- struct _LIBCPP_TYPE_VIS once_flag
444
+ struct _LIBCPP_TYPE_VIS_ONLY once_flag
445
445
  {
446
446
  _LIBCPP_INLINE_VISIBILITY
447
447
  _LIBCPP_CONSTEXPR
@@ -527,7 +527,7 @@ __call_once_proxy(void* __vp)
527
527
  (*__p)();
528
528
  }
529
529
 
530
- void __call_once(volatile unsigned long&, void*, void(*)(void*));
530
+ _LIBCPP_FUNC_VIS void __call_once(volatile unsigned long&, void*, void(*)(void*));
531
531
 
532
532
  #ifndef _LIBCPP_HAS_NO_VARIADICS
533
533
 
@@ -27,6 +27,18 @@ public:
27
27
  virtual const char* what() const noexcept;
28
28
  };
29
29
 
30
+ class bad_array_length : public bad_alloc // C++14
31
+ {
32
+ public:
33
+ bad_array_length() noexcept;
34
+ };
35
+
36
+ class bad_array_new_length : public bad_alloc
37
+ {
38
+ public:
39
+ bad_array_new_length() noexcept;
40
+ };
41
+
30
42
  struct nothrow_t {};
31
43
  extern const nothrow_t nothrow;
32
44
  typedef void (*new_handler)();
@@ -81,7 +93,18 @@ public:
81
93
  virtual const char* what() const _NOEXCEPT;
82
94
  };
83
95
 
84
- void __throw_bad_alloc(); // not in C++ spec
96
+ #if defined(_LIBCPP_BUILDING_NEW) || (_LIBCPP_STD_VER > 11)
97
+ class _LIBCPP_EXCEPTION_ABI bad_array_length
98
+ : public bad_alloc
99
+ {
100
+ public:
101
+ bad_array_length() _NOEXCEPT;
102
+ virtual ~bad_array_length() _NOEXCEPT;
103
+ virtual const char* what() const _NOEXCEPT;
104
+ };
105
+ #endif
106
+
107
+ _LIBCPP_FUNC_VIS void __throw_bad_alloc(); // not in C++ spec
85
108
 
86
109
  struct _LIBCPP_TYPE_VIS nothrow_t {};
87
110
  extern _LIBCPP_FUNC_VIS const nothrow_t nothrow;
@@ -91,27 +114,33 @@ _LIBCPP_FUNC_VIS new_handler get_new_handler() _NOEXCEPT;
91
114
 
92
115
  } // std
93
116
 
94
- _LIBCPP_FUNC_VIS void* operator new(std::size_t __sz)
117
+ #if defined(_WIN32) && !defined(cxx_EXPORTS)
118
+ # define _LIBCPP_NEW_DELETE_VIS _LIBCPP_FUNC_VIS_ONLY
119
+ #else
120
+ # define _LIBCPP_NEW_DELETE_VIS _LIBCPP_FUNC_VIS
121
+ #endif
122
+
123
+ _LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz)
95
124
  #if !__has_feature(cxx_noexcept)
96
125
  throw(std::bad_alloc)
97
126
  #endif
98
127
  ;
99
- _LIBCPP_FUNC_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
100
- _LIBCPP_FUNC_VIS void operator delete(void* __p) _NOEXCEPT;
101
- _LIBCPP_FUNC_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT;
128
+ _LIBCPP_NEW_DELETE_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
129
+ _LIBCPP_NEW_DELETE_VIS void operator delete(void* __p) _NOEXCEPT;
130
+ _LIBCPP_NEW_DELETE_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT;
102
131
 
103
- _LIBCPP_FUNC_VIS void* operator new[](std::size_t __sz)
132
+ _LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz)
104
133
  #if !__has_feature(cxx_noexcept)
105
134
  throw(std::bad_alloc)
106
135
  #endif
107
136
  ;
108
- _LIBCPP_FUNC_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
109
- _LIBCPP_FUNC_VIS void operator delete[](void* __p) _NOEXCEPT;
110
- _LIBCPP_FUNC_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT;
111
-
112
- _LIBCPP_INLINE_VISIBILITY inline void* operator new (std::size_t, void* __p) _NOEXCEPT {return __p;}
113
- _LIBCPP_INLINE_VISIBILITY inline void* operator new[](std::size_t, void* __p) _NOEXCEPT {return __p;}
114
- _LIBCPP_INLINE_VISIBILITY inline void operator delete (void*, void*) _NOEXCEPT {}
115
- _LIBCPP_INLINE_VISIBILITY inline void operator delete[](void*, void*) _NOEXCEPT {}
137
+ _LIBCPP_NEW_DELETE_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS;
138
+ _LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p) _NOEXCEPT;
139
+ _LIBCPP_NEW_DELETE_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT;
140
+
141
+ inline _LIBCPP_INLINE_VISIBILITY void* operator new (std::size_t, void* __p) _NOEXCEPT {return __p;}
142
+ inline _LIBCPP_INLINE_VISIBILITY void* operator new[](std::size_t, void* __p) _NOEXCEPT {return __p;}
143
+ inline _LIBCPP_INLINE_VISIBILITY void operator delete (void*, void*) _NOEXCEPT {}
144
+ inline _LIBCPP_INLINE_VISIBILITY void operator delete[](void*, void*) _NOEXCEPT {}
116
145
 
117
146
  #endif // _LIBCPP_NEW
@@ -157,7 +157,7 @@ adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterat
157
157
  {
158
158
  typename iterator_traits<_InputIterator>::value_type __t2(*__first);
159
159
  *__result = __t2 - __t1;
160
- __t1 = __t2;
160
+ __t1 = _VSTD::move(__t2);
161
161
  }
162
162
  }
163
163
  return __result;
@@ -177,7 +177,7 @@ adjacent_difference(_InputIterator __first, _InputIterator __last, _OutputIterat
177
177
  {
178
178
  typename iterator_traits<_InputIterator>::value_type __t2(*__first);
179
179
  *__result = __binary_op(__t2, __t1);
180
- __t1 = __t2;
180
+ __t1 = _VSTD::move(__t2);
181
181
  }
182
182
  }
183
183
  return __result;