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,11 +19,13 @@
19
19
  #include <cstdint>
20
20
  #include <cctype>
21
21
  #include <locale.h>
22
- #ifdef _LIBCPP_MSVCRT
22
+ #if defined(_LIBCPP_MSVCRT) || defined(__MINGW32__)
23
23
  # include <support/win32/locale_win32.h>
24
- #elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__)) || defined(__EMSCRIPTEN__)
24
+ #elif _AIX
25
+ # include <support/ibm/xlocale.h>
26
+ #elif (defined(__GLIBC__) || defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__)) || defined(__EMSCRIPTEN__) || defined(__IBMCPP__)
25
27
  # include <xlocale.h>
26
- #endif // _WIN32 || __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__ || __EMSCRIPTEN__
28
+ #endif // _WIN32 || __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun__ || __EMSCRIPTEN__ || __IBMCPP__
27
29
 
28
30
  #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
29
31
  #pragma GCC system_header
@@ -175,7 +177,7 @@ use_facet(const locale& __l)
175
177
  // template <class _CharT> class collate;
176
178
 
177
179
  template <class _CharT>
178
- class _LIBCPP_TYPE_VIS collate
180
+ class _LIBCPP_TYPE_VIS_ONLY collate
179
181
  : public locale::facet
180
182
  {
181
183
  public:
@@ -254,12 +256,12 @@ collate<_CharT>::do_hash(const char_type* __lo, const char_type* __hi) const
254
256
  return static_cast<long>(__h);
255
257
  }
256
258
 
257
- _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS collate<char>)
258
- _LIBCPP_EXTERN_TEMPLATE(class _LIBCPP_TYPE_VIS collate<wchar_t>)
259
+ _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS collate<char>)
260
+ _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS collate<wchar_t>)
259
261
 
260
262
  // template <class CharT> class collate_byname;
261
263
 
262
- template <class _CharT> class _LIBCPP_TYPE_VIS collate_byname;
264
+ template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY collate_byname;
263
265
 
264
266
  template <>
265
267
  class _LIBCPP_TYPE_VIS collate_byname<char>
@@ -361,7 +363,7 @@ public:
361
363
  # else
362
364
  static const mask blank = _CTYPE_B;
363
365
  # endif
364
- #elif defined(__sun__)
366
+ #elif defined(__sun__) || defined(_AIX)
365
367
  typedef unsigned int mask;
366
368
  static const mask space = _ISSPACE;
367
369
  static const mask print = _ISPRINT;
@@ -392,7 +394,7 @@ public:
392
394
  _LIBCPP_ALWAYS_INLINE ctype_base() {}
393
395
  };
394
396
 
395
- template <class _CharT> class _LIBCPP_TYPE_VIS ctype;
397
+ template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY ctype;
396
398
 
397
399
  template <>
398
400
  class _LIBCPP_TYPE_VIS ctype<wchar_t>
@@ -510,7 +512,7 @@ public:
510
512
  _LIBCPP_ALWAYS_INLINE
511
513
  bool is(mask __m, char_type __c) const
512
514
  {
513
- return isascii(__c) ? __tab_[static_cast<int>(__c)] & __m : false;
515
+ return isascii(__c) ? (__tab_[static_cast<int>(__c)] & __m) !=0 : false;
514
516
  }
515
517
 
516
518
  _LIBCPP_ALWAYS_INLINE
@@ -619,7 +621,7 @@ protected:
619
621
 
620
622
  // template <class CharT> class ctype_byname;
621
623
 
622
- template <class _CharT> class _LIBCPP_TYPE_VIS ctype_byname;
624
+ template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY ctype_byname;
623
625
 
624
626
  template <>
625
627
  class _LIBCPP_TYPE_VIS ctype_byname<char>
@@ -780,7 +782,7 @@ public:
780
782
 
781
783
  // template <class internT, class externT, class stateT> class codecvt;
782
784
 
783
- template <class _InternT, class _ExternT, class _StateT> class _LIBCPP_TYPE_VIS codecvt;
785
+ template <class _InternT, class _ExternT, class _StateT> class _LIBCPP_TYPE_VIS_ONLY codecvt;
784
786
 
785
787
  // template <> class codecvt<char, char, mbstate_t>
786
788
 
@@ -1126,7 +1128,7 @@ protected:
1126
1128
  // template <class _InternT, class _ExternT, class _StateT> class codecvt_byname
1127
1129
 
1128
1130
  template <class _InternT, class _ExternT, class _StateT>
1129
- class _LIBCPP_TYPE_VIS codecvt_byname
1131
+ class _LIBCPP_TYPE_VIS_ONLY codecvt_byname
1130
1132
  : public codecvt<_InternT, _ExternT, _StateT>
1131
1133
  {
1132
1134
  public:
@@ -1145,10 +1147,10 @@ codecvt_byname<_InternT, _ExternT, _StateT>::~codecvt_byname()
1145
1147
  {
1146
1148
  }
1147
1149
 
1148
- _LIBCPP_EXTERN_TEMPLATE(class codecvt_byname<char, char, mbstate_t>)
1149
- _LIBCPP_EXTERN_TEMPLATE(class codecvt_byname<wchar_t, char, mbstate_t>)
1150
- _LIBCPP_EXTERN_TEMPLATE(class codecvt_byname<char16_t, char, mbstate_t>)
1151
- _LIBCPP_EXTERN_TEMPLATE(class codecvt_byname<char32_t, char, mbstate_t>)
1150
+ _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS codecvt_byname<char, char, mbstate_t>)
1151
+ _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS codecvt_byname<wchar_t, char, mbstate_t>)
1152
+ _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS codecvt_byname<char16_t, char, mbstate_t>)
1153
+ _LIBCPP_EXTERN_TEMPLATE2(class _LIBCPP_TYPE_VIS codecvt_byname<char32_t, char, mbstate_t>)
1152
1154
 
1153
1155
  _LIBCPP_FUNC_VIS void __throw_runtime_error(const char*);
1154
1156
 
@@ -1334,7 +1336,7 @@ struct __widen_from_utf8<32>
1334
1336
 
1335
1337
  // template <class charT> class numpunct
1336
1338
 
1337
- template <class _CharT> class _LIBCPP_TYPE_VIS numpunct;
1339
+ template <class _CharT> class _LIBCPP_TYPE_VIS_ONLY numpunct;
1338
1340
 
1339
1341
  template <>
1340
1342
  class _LIBCPP_TYPE_VIS numpunct<char>
@@ -1400,7 +1402,7 @@ protected:
1400
1402
 
1401
1403
  // template <class charT> class numpunct_byname
1402
1404
 
1403
- template <class charT> class _LIBCPP_TYPE_VIS numpunct_byname;
1405
+ template <class charT> class _LIBCPP_TYPE_VIS_ONLY numpunct_byname;
1404
1406
 
1405
1407
  template <>
1406
1408
  class _LIBCPP_TYPE_VIS numpunct_byname<char>
@@ -20,16 +20,6 @@
20
20
  #pragma GCC system_header
21
21
  #endif
22
22
 
23
- #ifdef _LIBCPP_SHARED_LOCK
24
-
25
- namespace ting {
26
- template <class _Mutex> class shared_lock;
27
- template <class _Mutex> class upgrade_lock;
28
- }
29
-
30
- #endif // _LIBCPP_SHARED_LOCK
31
-
32
-
33
23
  _LIBCPP_BEGIN_NAMESPACE_STD
34
24
 
35
25
  class _LIBCPP_TYPE_VIS mutex
@@ -77,7 +67,7 @@ constexpr adopt_lock_t adopt_lock = adopt_lock_t();
77
67
  #endif
78
68
 
79
69
  template <class _Mutex>
80
- class _LIBCPP_TYPE_VIS lock_guard
70
+ class _LIBCPP_TYPE_VIS_ONLY lock_guard
81
71
  {
82
72
  public:
83
73
  typedef _Mutex mutex_type;
@@ -101,7 +91,7 @@ private:
101
91
  };
102
92
 
103
93
  template <class _Mutex>
104
- class _LIBCPP_TYPE_VIS unique_lock
94
+ class _LIBCPP_TYPE_VIS_ONLY unique_lock
105
95
  {
106
96
  public:
107
97
  typedef _Mutex mutex_type;
@@ -162,27 +152,6 @@ public:
162
152
  return *this;
163
153
  }
164
154
 
165
- #ifdef _LIBCPP_SHARED_LOCK
166
-
167
- unique_lock(ting::shared_lock<mutex_type>&&, try_to_lock_t);
168
- template <class _Clock, class _Duration>
169
- unique_lock(ting::shared_lock<mutex_type>&&,
170
- const chrono::time_point<_Clock, _Duration>&);
171
- template <class _Rep, class _Period>
172
- unique_lock(ting::shared_lock<mutex_type>&&,
173
- const chrono::duration<_Rep, _Period>&);
174
-
175
- explicit unique_lock(ting::upgrade_lock<mutex_type>&&);
176
- unique_lock(ting::upgrade_lock<mutex_type>&&, try_to_lock_t);
177
- template <class _Clock, class _Duration>
178
- unique_lock(ting::upgrade_lock<mutex_type>&&,
179
- const chrono::time_point<_Clock, _Duration>&);
180
- template <class _Rep, class _Period>
181
- unique_lock(ting::upgrade_lock<mutex_type>&&,
182
- const chrono::duration<_Rep, _Period>&);
183
-
184
- #endif // _LIBCPP_SHARED_LOCK
185
-
186
155
  #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
187
156
 
188
157
  void lock();
@@ -285,7 +285,7 @@ __split_buffer<_Tp, _Allocator>::__construct_at_end(_ForwardIterator __first, _F
285
285
  }
286
286
 
287
287
  template <class _Tp, class _Allocator>
288
- _LIBCPP_INLINE_VISIBILITY inline
288
+ inline _LIBCPP_INLINE_VISIBILITY
289
289
  void
290
290
  __split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, false_type)
291
291
  {
@@ -294,7 +294,7 @@ __split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, false_
294
294
  }
295
295
 
296
296
  template <class _Tp, class _Allocator>
297
- _LIBCPP_INLINE_VISIBILITY inline
297
+ inline _LIBCPP_INLINE_VISIBILITY
298
298
  void
299
299
  __split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, true_type)
300
300
  {
@@ -302,7 +302,7 @@ __split_buffer<_Tp, _Allocator>::__destruct_at_begin(pointer __new_begin, true_t
302
302
  }
303
303
 
304
304
  template <class _Tp, class _Allocator>
305
- _LIBCPP_INLINE_VISIBILITY inline
305
+ inline _LIBCPP_INLINE_VISIBILITY
306
306
  void
307
307
  __split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, false_type) _NOEXCEPT
308
308
  {
@@ -311,7 +311,7 @@ __split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, false_typ
311
311
  }
312
312
 
313
313
  template <class _Tp, class _Allocator>
314
- _LIBCPP_INLINE_VISIBILITY inline
314
+ inline _LIBCPP_INLINE_VISIBILITY
315
315
  void
316
316
  __split_buffer<_Tp, _Allocator>::__destruct_at_end(pointer __new_last, true_type) _NOEXCEPT
317
317
  {
@@ -328,7 +328,7 @@ __split_buffer<_Tp, _Allocator>::__split_buffer(size_type __cap, size_type __sta
328
328
  }
329
329
 
330
330
  template <class _Tp, class _Allocator>
331
- _LIBCPP_INLINE_VISIBILITY inline
331
+ inline _LIBCPP_INLINE_VISIBILITY
332
332
  __split_buffer<_Tp, _Allocator>::__split_buffer()
333
333
  _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
334
334
  : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr)
@@ -336,14 +336,14 @@ __split_buffer<_Tp, _Allocator>::__split_buffer()
336
336
  }
337
337
 
338
338
  template <class _Tp, class _Allocator>
339
- _LIBCPP_INLINE_VISIBILITY inline
339
+ inline _LIBCPP_INLINE_VISIBILITY
340
340
  __split_buffer<_Tp, _Allocator>::__split_buffer(__alloc_rr& __a)
341
341
  : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __a)
342
342
  {
343
343
  }
344
344
 
345
345
  template <class _Tp, class _Allocator>
346
- _LIBCPP_INLINE_VISIBILITY inline
346
+ inline _LIBCPP_INLINE_VISIBILITY
347
347
  __split_buffer<_Tp, _Allocator>::__split_buffer(const __alloc_rr& __a)
348
348
  : __first_(nullptr), __begin_(nullptr), __end_(nullptr), __end_cap_(nullptr, __a)
349
349
  {
@@ -541,7 +541,7 @@ __split_buffer<_Tp, _Allocator>::push_front(value_type&& __x)
541
541
  #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
542
542
 
543
543
  template <class _Tp, class _Allocator>
544
- _LIBCPP_INLINE_VISIBILITY inline
544
+ inline _LIBCPP_INLINE_VISIBILITY
545
545
  void
546
546
  __split_buffer<_Tp, _Allocator>::push_back(const_reference __x)
547
547
  {
@@ -640,7 +640,7 @@ __split_buffer<_Tp, _Allocator>::emplace_back(_Args&&... __args)
640
640
  #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
641
641
 
642
642
  template <class _Tp, class _Allocator>
643
- _LIBCPP_INLINE_VISIBILITY inline
643
+ inline _LIBCPP_INLINE_VISIBILITY
644
644
  void
645
645
  swap(__split_buffer<_Tp, _Allocator>& __x, __split_buffer<_Tp, _Allocator>& __y)
646
646
  _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
@@ -233,6 +233,7 @@ public:
233
233
 
234
234
  protected:
235
235
  virtual int_type overflow (int_type __c = traits_type::eof());
236
+ virtual streamsize xsputn(const char_type* __s, streamsize __n);
236
237
  virtual int sync();
237
238
  virtual void imbue(const locale& __loc);
238
239
 
@@ -308,6 +309,19 @@ __stdoutbuf<_CharT>::overflow(int_type __c)
308
309
  return traits_type::not_eof(__c);
309
310
  }
310
311
 
312
+ template <class _CharT>
313
+ streamsize
314
+ __stdoutbuf<_CharT>::xsputn(const char_type* __s, streamsize __n)
315
+ {
316
+ if (__always_noconv_)
317
+ return fwrite(__s, sizeof(char_type), __n, __file_);
318
+ streamsize __i = 0;
319
+ for (; __i < __n; ++__i, ++__s)
320
+ if (overflow(traits_type::to_int_type(*__s)) == traits_type::eof())
321
+ break;
322
+ return __i;
323
+ }
324
+
311
325
  template <class _CharT>
312
326
  int
313
327
  __stdoutbuf<_CharT>::sync()
@@ -25,17 +25,17 @@ _LIBCPP_BEGIN_NAMESPACE_STD
25
25
 
26
26
  template <class _Tp, class _Compare, class _Allocator> class __tree;
27
27
  template <class _Tp, class _NodePtr, class _DiffType>
28
- class _LIBCPP_TYPE_VIS __tree_iterator;
28
+ class _LIBCPP_TYPE_VIS_ONLY __tree_iterator;
29
29
  template <class _Tp, class _ConstNodePtr, class _DiffType>
30
- class _LIBCPP_TYPE_VIS __tree_const_iterator;
30
+ class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator;
31
31
  template <class _Key, class _Tp, class _Compare, class _Allocator>
32
- class _LIBCPP_TYPE_VIS map;
32
+ class _LIBCPP_TYPE_VIS_ONLY map;
33
33
  template <class _Key, class _Tp, class _Compare, class _Allocator>
34
- class _LIBCPP_TYPE_VIS multimap;
34
+ class _LIBCPP_TYPE_VIS_ONLY multimap;
35
35
  template <class _Key, class _Compare, class _Allocator>
36
- class _LIBCPP_TYPE_VIS set;
36
+ class _LIBCPP_TYPE_VIS_ONLY set;
37
37
  template <class _Key, class _Compare, class _Allocator>
38
- class _LIBCPP_TYPE_VIS multiset;
38
+ class _LIBCPP_TYPE_VIS_ONLY multiset;
39
39
 
40
40
  /*
41
41
 
@@ -614,11 +614,11 @@ public:
614
614
  #endif // !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) && !defined(_LIBCPP_HAS_NO_VARIADICS)
615
615
  };
616
616
 
617
- template <class _TreeIterator> class _LIBCPP_TYPE_VIS __map_iterator;
618
- template <class _TreeIterator> class _LIBCPP_TYPE_VIS __map_const_iterator;
617
+ template <class _TreeIterator> class _LIBCPP_TYPE_VIS_ONLY __map_iterator;
618
+ template <class _TreeIterator> class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator;
619
619
 
620
620
  template <class _Tp, class _NodePtr, class _DiffType>
621
- class _LIBCPP_TYPE_VIS __tree_iterator
621
+ class _LIBCPP_TYPE_VIS_ONLY __tree_iterator
622
622
  {
623
623
  typedef _NodePtr __node_pointer;
624
624
  typedef typename pointer_traits<__node_pointer>::element_type __node;
@@ -641,7 +641,11 @@ public:
641
641
  #endif
642
642
  pointer;
643
643
 
644
- _LIBCPP_INLINE_VISIBILITY __tree_iterator() _NOEXCEPT {}
644
+ _LIBCPP_INLINE_VISIBILITY __tree_iterator() _NOEXCEPT
645
+ #if _LIBCPP_STD_VER > 11
646
+ : __ptr_(nullptr)
647
+ #endif
648
+ {}
645
649
 
646
650
  _LIBCPP_INLINE_VISIBILITY reference operator*() const {return __ptr_->__value_;}
647
651
  _LIBCPP_INLINE_VISIBILITY pointer operator->() const
@@ -674,16 +678,16 @@ private:
674
678
  _LIBCPP_INLINE_VISIBILITY
675
679
  explicit __tree_iterator(__node_pointer __p) _NOEXCEPT : __ptr_(__p) {}
676
680
  template <class, class, class> friend class __tree;
677
- template <class, class, class> friend class _LIBCPP_TYPE_VIS __tree_const_iterator;
678
- template <class> friend class _LIBCPP_TYPE_VIS __map_iterator;
679
- template <class, class, class, class> friend class _LIBCPP_TYPE_VIS map;
680
- template <class, class, class, class> friend class _LIBCPP_TYPE_VIS multimap;
681
- template <class, class, class> friend class _LIBCPP_TYPE_VIS set;
682
- template <class, class, class> friend class _LIBCPP_TYPE_VIS multiset;
681
+ template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator;
682
+ template <class> friend class _LIBCPP_TYPE_VIS_ONLY __map_iterator;
683
+ template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
684
+ template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap;
685
+ template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY set;
686
+ template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multiset;
683
687
  };
684
688
 
685
689
  template <class _Tp, class _ConstNodePtr, class _DiffType>
686
- class _LIBCPP_TYPE_VIS __tree_const_iterator
690
+ class _LIBCPP_TYPE_VIS_ONLY __tree_const_iterator
687
691
  {
688
692
  typedef _ConstNodePtr __node_pointer;
689
693
  typedef typename pointer_traits<__node_pointer>::element_type __node;
@@ -712,7 +716,12 @@ public:
712
716
  #endif
713
717
  pointer;
714
718
 
715
- _LIBCPP_INLINE_VISIBILITY __tree_const_iterator() {}
719
+ _LIBCPP_INLINE_VISIBILITY __tree_const_iterator() _NOEXCEPT
720
+ #if _LIBCPP_STD_VER > 11
721
+ : __ptr_(nullptr)
722
+ #endif
723
+ {}
724
+
716
725
  private:
717
726
  typedef typename remove_const<__node>::type __non_const_node;
718
727
  typedef typename pointer_traits<__node_pointer>::template
@@ -761,11 +770,11 @@ private:
761
770
  explicit __tree_const_iterator(__node_pointer __p) _NOEXCEPT
762
771
  : __ptr_(__p) {}
763
772
  template <class, class, class> friend class __tree;
764
- template <class, class, class, class> friend class _LIBCPP_TYPE_VIS map;
765
- template <class, class, class, class> friend class _LIBCPP_TYPE_VIS multimap;
766
- template <class, class, class> friend class _LIBCPP_TYPE_VIS set;
767
- template <class, class, class> friend class _LIBCPP_TYPE_VIS multiset;
768
- template <class> friend class _LIBCPP_TYPE_VIS __map_const_iterator;
773
+ template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
774
+ template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap;
775
+ template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY set;
776
+ template <class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multiset;
777
+ template <class> friend class _LIBCPP_TYPE_VIS_ONLY __map_const_iterator;
769
778
  };
770
779
 
771
780
  template <class _Tp, class _Compare, class _Allocator>
@@ -1107,8 +1116,8 @@ private:
1107
1116
  __node_pointer __detach();
1108
1117
  static __node_pointer __detach(__node_pointer);
1109
1118
 
1110
- template <class, class, class, class> friend class _LIBCPP_TYPE_VIS map;
1111
- template <class, class, class, class> friend class _LIBCPP_TYPE_VIS multimap;
1119
+ template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY map;
1120
+ template <class, class, class, class> friend class _LIBCPP_TYPE_VIS_ONLY multimap;
1112
1121
  };
1113
1122
 
1114
1123
  template <class _Tp, class _Compare, class _Allocator>
@@ -1845,7 +1854,7 @@ __tree<_Tp, _Compare, _Allocator>::__construct_node(const value_type& __v)
1845
1854
  __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1846
1855
  __node_traits::construct(__na, _VSTD::addressof(__h->__value_), __v);
1847
1856
  __h.get_deleter().__value_constructed = true;
1848
- return _VSTD::move(__h);
1857
+ return _VSTD::move(__h); // explicitly moved for C++03
1849
1858
  }
1850
1859
 
1851
1860
  #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
@@ -27,46 +27,46 @@
27
27
 
28
28
  _LIBCPP_BEGIN_NAMESPACE_STD
29
29
 
30
- template <class _Tp> class _LIBCPP_TYPE_VIS tuple_size;
30
+ template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_size;
31
31
 
32
32
  template <class _Tp>
33
- class _LIBCPP_TYPE_VIS tuple_size<const _Tp>
33
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<const _Tp>
34
34
  : public tuple_size<_Tp> {};
35
35
 
36
36
  template <class _Tp>
37
- class _LIBCPP_TYPE_VIS tuple_size<volatile _Tp>
37
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<volatile _Tp>
38
38
  : public tuple_size<_Tp> {};
39
39
 
40
40
  template <class _Tp>
41
- class _LIBCPP_TYPE_VIS tuple_size<const volatile _Tp>
41
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<const volatile _Tp>
42
42
  : public tuple_size<_Tp> {};
43
43
 
44
- template <size_t _Ip, class _Tp> class _LIBCPP_TYPE_VIS tuple_element;
44
+ template <size_t _Ip, class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_element;
45
45
 
46
46
  template <size_t _Ip, class _Tp>
47
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, const _Tp>
47
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const _Tp>
48
48
  {
49
49
  public:
50
50
  typedef typename add_const<typename tuple_element<_Ip, _Tp>::type>::type type;
51
51
  };
52
52
 
53
53
  template <size_t _Ip, class _Tp>
54
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, volatile _Tp>
54
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, volatile _Tp>
55
55
  {
56
56
  public:
57
57
  typedef typename add_volatile<typename tuple_element<_Ip, _Tp>::type>::type type;
58
58
  };
59
59
 
60
60
  template <size_t _Ip, class _Tp>
61
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, const volatile _Tp>
61
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, const volatile _Tp>
62
62
  {
63
63
  public:
64
64
  typedef typename add_cv<typename tuple_element<_Ip, _Tp>::type>::type type;
65
65
  };
66
66
 
67
- template <class ..._Tp> class _LIBCPP_TYPE_VIS tuple;
68
- template <class _T1, class _T2> struct _LIBCPP_TYPE_VIS pair;
69
- template <class _Tp, size_t _Size> struct _LIBCPP_TYPE_VIS array;
67
+ template <class ..._Tp> class _LIBCPP_TYPE_VIS_ONLY tuple;
68
+ template <class _T1, class _T2> struct _LIBCPP_TYPE_VIS_ONLY pair;
69
+ template <class _Tp, size_t _Size> struct _LIBCPP_TYPE_VIS_ONLY array;
70
70
 
71
71
  template <class _Tp> struct __tuple_like : false_type {};
72
72
 
@@ -154,7 +154,7 @@ struct __make_tuple_indices
154
154
  template <class ..._Tp> struct __tuple_types {};
155
155
 
156
156
  template <size_t _Ip>
157
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, __tuple_types<> >
157
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, __tuple_types<> >
158
158
  {
159
159
  public:
160
160
  static_assert(_Ip == 0, "tuple_element index out of range");
@@ -162,21 +162,21 @@ public:
162
162
  };
163
163
 
164
164
  template <class _Hp, class ..._Tp>
165
- class _LIBCPP_TYPE_VIS tuple_element<0, __tuple_types<_Hp, _Tp...> >
165
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<0, __tuple_types<_Hp, _Tp...> >
166
166
  {
167
167
  public:
168
168
  typedef _Hp type;
169
169
  };
170
170
 
171
171
  template <size_t _Ip, class _Hp, class ..._Tp>
172
- class _LIBCPP_TYPE_VIS tuple_element<_Ip, __tuple_types<_Hp, _Tp...> >
172
+ class _LIBCPP_TYPE_VIS_ONLY tuple_element<_Ip, __tuple_types<_Hp, _Tp...> >
173
173
  {
174
174
  public:
175
175
  typedef typename tuple_element<_Ip-1, __tuple_types<_Tp...> >::type type;
176
176
  };
177
177
 
178
178
  template <class ..._Tp>
179
- class _LIBCPP_TYPE_VIS tuple_size<__tuple_types<_Tp...> >
179
+ class _LIBCPP_TYPE_VIS_ONLY tuple_size<__tuple_types<_Tp...> >
180
180
  : public integral_constant<size_t, sizeof...(_Tp)>
181
181
  {
182
182
  };
@@ -19,8 +19,8 @@
19
19
 
20
20
  _LIBCPP_BEGIN_NAMESPACE_STD
21
21
 
22
- template <class _Tp> class _LIBCPP_TYPE_VIS tuple_size;
23
- template <size_t _Ip, class _Tp> class _LIBCPP_TYPE_VIS tuple_element;
22
+ template <class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_size;
23
+ template <size_t _Ip, class _Tp> class _LIBCPP_TYPE_VIS_ONLY tuple_element;
24
24
 
25
25
  _LIBCPP_END_NAMESPACE_STD
26
26
 
@@ -9,11 +9,19 @@
9
9
  //===----------------------------------------------------------------------===//
10
10
 
11
11
  #ifdef min
12
+ #if defined(_MSC_VER) && ! defined(__clang__)
13
+ _LIBCPP_WARNING("macro min is incompatible with C++. #undefing min")
14
+ #else
12
15
  #warning: macro min is incompatible with C++. #undefing min
16
+ #endif
13
17
  #undef min
14
18
  #endif
15
19
 
16
20
  #ifdef max
21
+ #if defined(_MSC_VER) && ! defined(__clang__)
22
+ _LIBCPP_WARNING("macro max is incompatible with C++. #undefing max")
23
+ #else
17
24
  #warning: macro max is incompatible with C++. #undefing max
25
+ #endif
18
26
  #undef max
19
27
  #endif