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