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
@@ -925,7 +925,7 @@ public:
925
925
  };
926
926
 
927
927
  template <class _CharT>
928
- struct _LIBCPP_TYPE_VIS regex_traits
928
+ struct _LIBCPP_TYPE_VIS_ONLY regex_traits
929
929
  {
930
930
  public:
931
931
  typedef _CharT char_type;
@@ -970,7 +970,7 @@ public:
970
970
  bool isctype(char_type __c, char_class_type __m) const;
971
971
  _LIBCPP_INLINE_VISIBILITY
972
972
  int value(char_type __ch, int __radix) const
973
- {return __value(__ch, __radix);}
973
+ {return __regex_traits_value(__ch, __radix);}
974
974
  locale_type imbue(locale_type __l);
975
975
  _LIBCPP_INLINE_VISIBILITY
976
976
  locale_type getloc()const {return __loc_;}
@@ -1001,11 +1001,11 @@ private:
1001
1001
  __lookup_classname(_ForwardIterator __f, _ForwardIterator __l,
1002
1002
  bool __icase, wchar_t) const;
1003
1003
 
1004
- static int __value(unsigned char __ch, int __radix);
1004
+ static int __regex_traits_value(unsigned char __ch, int __radix);
1005
1005
  _LIBCPP_INLINE_VISIBILITY
1006
- int __value(char __ch, int __radix) const
1007
- {return __value(static_cast<unsigned char>(__ch), __radix);}
1008
- int __value(wchar_t __ch, int __radix) const;
1006
+ int __regex_traits_value(char __ch, int __radix) const
1007
+ {return __regex_traits_value(static_cast<unsigned char>(__ch), __radix);}
1008
+ int __regex_traits_value(wchar_t __ch, int __radix) const;
1009
1009
  };
1010
1010
 
1011
1011
  template <class _CharT>
@@ -1100,7 +1100,7 @@ regex_traits<_CharT>::__transform_primary(_ForwardIterator __f,
1100
1100
 
1101
1101
  // lookup_collatename is very FreeBSD-specific
1102
1102
 
1103
- string __get_collation_name(const char* __s);
1103
+ _LIBCPP_FUNC_VIS string __get_collation_name(const char* __s);
1104
1104
 
1105
1105
  template <class _CharT>
1106
1106
  template <class _ForwardIterator>
@@ -1161,7 +1161,7 @@ regex_traits<_CharT>::__lookup_collatename(_ForwardIterator __f,
1161
1161
 
1162
1162
  // lookup_classname
1163
1163
 
1164
- ctype_base::mask __get_classname(const char* __s, bool __icase);
1164
+ ctype_base::mask _LIBCPP_FUNC_VIS __get_classname(const char* __s, bool __icase);
1165
1165
 
1166
1166
  template <class _CharT>
1167
1167
  template <class _ForwardIterator>
@@ -1207,7 +1207,7 @@ regex_traits<_CharT>::isctype(char_type __c, char_class_type __m) const
1207
1207
 
1208
1208
  template <class _CharT>
1209
1209
  int
1210
- regex_traits<_CharT>::__value(unsigned char __ch, int __radix)
1210
+ regex_traits<_CharT>::__regex_traits_value(unsigned char __ch, int __radix)
1211
1211
  {
1212
1212
  if ((__ch & 0xF8u) == 0x30) // '0' <= __ch && __ch <= '7'
1213
1213
  return __ch - '0';
@@ -1228,18 +1228,18 @@ regex_traits<_CharT>::__value(unsigned char __ch, int __radix)
1228
1228
  template <class _CharT>
1229
1229
  inline _LIBCPP_INLINE_VISIBILITY
1230
1230
  int
1231
- regex_traits<_CharT>::__value(wchar_t __ch, int __radix) const
1231
+ regex_traits<_CharT>::__regex_traits_value(wchar_t __ch, int __radix) const
1232
1232
  {
1233
- return __value(static_cast<unsigned char>(__ct_->narrow(__ch, char_type())), __radix);
1233
+ return __regex_traits_value(static_cast<unsigned char>(__ct_->narrow(__ch, char_type())), __radix);
1234
1234
  }
1235
1235
 
1236
1236
  template <class _CharT> class __node;
1237
1237
 
1238
- template <class _BidirectionalIterator> class _LIBCPP_TYPE_VIS sub_match;
1238
+ template <class _BidirectionalIterator> class _LIBCPP_TYPE_VIS_ONLY sub_match;
1239
1239
 
1240
1240
  template <class _BidirectionalIterator,
1241
1241
  class _Allocator = allocator<sub_match<_BidirectionalIterator> > >
1242
- class _LIBCPP_TYPE_VIS match_results;
1242
+ class _LIBCPP_TYPE_VIS_ONLY match_results;
1243
1243
 
1244
1244
  template <class _CharT>
1245
1245
  struct __state
@@ -2014,6 +2014,9 @@ public:
2014
2014
  virtual void __exec(__state&) const;
2015
2015
  };
2016
2016
 
2017
+ template <> _LIBCPP_FUNC_VIS void __match_any_but_newline<char>::__exec(__state&) const;
2018
+ template <> _LIBCPP_FUNC_VIS void __match_any_but_newline<wchar_t>::__exec(__state&) const;
2019
+
2017
2020
  // __match_char
2018
2021
 
2019
2022
  template <class _CharT>
@@ -2415,7 +2418,7 @@ __exit:
2415
2418
  template <class _CharT, class _Traits> class __lookahead;
2416
2419
 
2417
2420
  template <class _CharT, class _Traits = regex_traits<_CharT> >
2418
- class _LIBCPP_TYPE_VIS basic_regex
2421
+ class _LIBCPP_TYPE_VIS_ONLY basic_regex
2419
2422
  {
2420
2423
  public:
2421
2424
  // types:
@@ -3782,7 +3785,7 @@ basic_regex<_CharT, _Traits>::__parse_expression_term(_ForwardIterator __first,
3782
3785
  }
3783
3786
  __ml->__add_range(_VSTD::move(__start_range), _VSTD::move(__end_range));
3784
3787
  }
3785
- else
3788
+ else if (!__start_range.empty())
3786
3789
  {
3787
3790
  if (__start_range.size() == 1)
3788
3791
  __ml->__add_char(__start_range[0]);
@@ -3790,7 +3793,7 @@ basic_regex<_CharT, _Traits>::__parse_expression_term(_ForwardIterator __first,
3790
3793
  __ml->__add_digraph(__start_range[0], __start_range[1]);
3791
3794
  }
3792
3795
  }
3793
- else
3796
+ else if (!__start_range.empty())
3794
3797
  {
3795
3798
  if (__start_range.size() == 1)
3796
3799
  __ml->__add_char(__start_range[0]);
@@ -4781,7 +4784,7 @@ typedef basic_regex<wchar_t> wregex;
4781
4784
  // sub_match
4782
4785
 
4783
4786
  template <class _BidirectionalIterator>
4784
- class _LIBCPP_TYPE_VIS sub_match
4787
+ class _LIBCPP_TYPE_VIS_ONLY sub_match
4785
4788
  : public pair<_BidirectionalIterator, _BidirectionalIterator>
4786
4789
  {
4787
4790
  public:
@@ -5204,7 +5207,7 @@ operator<<(basic_ostream<_CharT, _ST>& __os, const sub_match<_BiIter>& __m)
5204
5207
  }
5205
5208
 
5206
5209
  template <class _BidirectionalIterator, class _Allocator>
5207
- class _LIBCPP_TYPE_VIS match_results
5210
+ class _LIBCPP_TYPE_VIS_ONLY match_results
5208
5211
  {
5209
5212
  public:
5210
5213
  typedef _Allocator allocator_type;
@@ -6007,7 +6010,7 @@ regex_match(const basic_string<_CharT, _ST, _SA>& __s,
6007
6010
  template <class _BidirectionalIterator,
6008
6011
  class _CharT = typename iterator_traits<_BidirectionalIterator>::value_type,
6009
6012
  class _Traits = regex_traits<_CharT> >
6010
- class _LIBCPP_TYPE_VIS regex_iterator
6013
+ class _LIBCPP_TYPE_VIS_ONLY regex_iterator
6011
6014
  {
6012
6015
  public:
6013
6016
  typedef basic_regex<_CharT, _Traits> regex_type;
@@ -6119,7 +6122,7 @@ typedef regex_iterator<wstring::const_iterator> wsregex_iterator;
6119
6122
  template <class _BidirectionalIterator,
6120
6123
  class _CharT = typename iterator_traits<_BidirectionalIterator>::value_type,
6121
6124
  class _Traits = regex_traits<_CharT> >
6122
- class _LIBCPP_TYPE_VIS regex_token_iterator
6125
+ class _LIBCPP_TYPE_VIS_ONLY regex_token_iterator
6123
6126
  {
6124
6127
  public:
6125
6128
  typedef basic_regex<_CharT, _Traits> regex_type;
@@ -365,7 +365,7 @@ struct __outermost<_Alloc, true>
365
365
  };
366
366
 
367
367
  template <class _OuterAlloc, class... _InnerAllocs>
368
- class _LIBCPP_TYPE_VIS scoped_allocator_adaptor<_OuterAlloc, _InnerAllocs...>
368
+ class _LIBCPP_TYPE_VIS_ONLY scoped_allocator_adaptor<_OuterAlloc, _InnerAllocs...>
369
369
  : public __scoped_allocator_storage<_OuterAlloc, _InnerAllocs...>
370
370
  {
371
371
  typedef __scoped_allocator_storage<_OuterAlloc, _InnerAllocs...> base;
@@ -66,6 +66,11 @@ public:
66
66
  set(initializer_list<value_type> il, const value_compare& comp = value_compare());
67
67
  set(initializer_list<value_type> il, const value_compare& comp,
68
68
  const allocator_type& a);
69
+ template <class InputIterator>
70
+ set(InputIterator first, InputIterator last, const allocator_type& a)
71
+ : set(first, last, Compare(), a) {} // C++14
72
+ set(initializer_list<value_type> il, const allocator_type& a)
73
+ : set(il, Compare(), a) {} // C++14
69
74
  ~set();
70
75
 
71
76
  set& operator=(const set& s);
@@ -129,13 +134,33 @@ public:
129
134
  // set operations:
130
135
  iterator find(const key_type& k);
131
136
  const_iterator find(const key_type& k) const;
137
+ template<typename K>
138
+ iterator find(const K& x);
139
+ template<typename K>
140
+ const_iterator find(const K& x) const; // C++14
141
+ template<typename K>
142
+ size_type count(const K& x) const; // C++14
143
+
132
144
  size_type count(const key_type& k) const;
133
145
  iterator lower_bound(const key_type& k);
134
146
  const_iterator lower_bound(const key_type& k) const;
147
+ template<typename K>
148
+ iterator lower_bound(const K& x); // C++14
149
+ template<typename K>
150
+ const_iterator lower_bound(const K& x) const; // C++14
151
+
135
152
  iterator upper_bound(const key_type& k);
136
153
  const_iterator upper_bound(const key_type& k) const;
154
+ template<typename K>
155
+ iterator upper_bound(const K& x); // C++14
156
+ template<typename K>
157
+ const_iterator upper_bound(const K& x) const; // C++14
137
158
  pair<iterator,iterator> equal_range(const key_type& k);
138
159
  pair<const_iterator,const_iterator> equal_range(const key_type& k) const;
160
+ template<typename K>
161
+ pair<iterator,iterator> equal_range(const K& x); // C++14
162
+ template<typename K>
163
+ pair<const_iterator,const_iterator> equal_range(const K& x) const; // C++14
139
164
  };
140
165
 
141
166
  template <class Key, class Compare, class Allocator>
@@ -222,6 +247,11 @@ public:
222
247
  multiset(initializer_list<value_type> il, const value_compare& comp = value_compare());
223
248
  multiset(initializer_list<value_type> il, const value_compare& comp,
224
249
  const allocator_type& a);
250
+ template <class InputIterator>
251
+ multiset(InputIterator first, InputIterator last, const allocator_type& a)
252
+ : set(first, last, Compare(), a) {} // C++14
253
+ multiset(initializer_list<value_type> il, const allocator_type& a)
254
+ : set(il, Compare(), a) {} // C++14
225
255
  ~multiset();
226
256
 
227
257
  multiset& operator=(const multiset& s);
@@ -285,13 +315,32 @@ public:
285
315
  // set operations:
286
316
  iterator find(const key_type& k);
287
317
  const_iterator find(const key_type& k) const;
318
+ template<typename K>
319
+ iterator find(const K& x);
320
+ template<typename K>
321
+ const_iterator find(const K& x) const; // C++14
322
+
288
323
  size_type count(const key_type& k) const;
289
324
  iterator lower_bound(const key_type& k);
290
325
  const_iterator lower_bound(const key_type& k) const;
326
+ template<typename K>
327
+ iterator lower_bound(const K& x); // C++14
328
+ template<typename K>
329
+ const_iterator lower_bound(const K& x) const; // C++14
330
+
291
331
  iterator upper_bound(const key_type& k);
292
332
  const_iterator upper_bound(const key_type& k) const;
333
+ template<typename K>
334
+ iterator upper_bound(const K& x); // C++14
335
+ template<typename K>
336
+ const_iterator upper_bound(const K& x) const; // C++14
337
+
293
338
  pair<iterator,iterator> equal_range(const key_type& k);
294
339
  pair<const_iterator,const_iterator> equal_range(const key_type& k) const;
340
+ template<typename K>
341
+ pair<iterator,iterator> equal_range(const K& x); // C++14
342
+ template<typename K>
343
+ pair<const_iterator,const_iterator> equal_range(const K& x) const; // C++14
295
344
  };
296
345
 
297
346
  template <class Key, class Compare, class Allocator>
@@ -346,7 +395,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD
346
395
 
347
396
  template <class _Key, class _Compare = less<_Key>,
348
397
  class _Allocator = allocator<_Key> >
349
- class _LIBCPP_TYPE_VIS set
398
+ class _LIBCPP_TYPE_VIS_ONLY set
350
399
  {
351
400
  public:
352
401
  // types:
@@ -403,6 +452,13 @@ public:
403
452
  insert(__f, __l);
404
453
  }
405
454
 
455
+ #if _LIBCPP_STD_VER > 11
456
+ template <class _InputIterator>
457
+ _LIBCPP_INLINE_VISIBILITY
458
+ set(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
459
+ : set(__f, __l, key_compare(), __a) {}
460
+ #endif
461
+
406
462
  _LIBCPP_INLINE_VISIBILITY
407
463
  set(const set& __s)
408
464
  : __tree_(__s.__tree_)
@@ -455,6 +511,12 @@ public:
455
511
  insert(__il.begin(), __il.end());
456
512
  }
457
513
 
514
+ #if _LIBCPP_STD_VER > 11
515
+ _LIBCPP_INLINE_VISIBILITY
516
+ set(initializer_list<value_type> __il, const allocator_type& __a)
517
+ : set(__il, key_compare(), __a) {}
518
+ #endif
519
+
458
520
  _LIBCPP_INLINE_VISIBILITY
459
521
  set& operator=(initializer_list<value_type> __il)
460
522
  {
@@ -579,6 +641,17 @@ public:
579
641
  iterator find(const key_type& __k) {return __tree_.find(__k);}
580
642
  _LIBCPP_INLINE_VISIBILITY
581
643
  const_iterator find(const key_type& __k) const {return __tree_.find(__k);}
644
+ #if _LIBCPP_STD_VER > 11
645
+ template <typename _K2>
646
+ _LIBCPP_INLINE_VISIBILITY
647
+ typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
648
+ find(const _K2& __k) {return __tree_.find(__k);}
649
+ template <typename _K2>
650
+ _LIBCPP_INLINE_VISIBILITY
651
+ typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
652
+ find(const _K2& __k) const {return __tree_.find(__k);}
653
+ #endif
654
+
582
655
  _LIBCPP_INLINE_VISIBILITY
583
656
  size_type count(const key_type& __k) const
584
657
  {return __tree_.__count_unique(__k);}
@@ -588,18 +661,51 @@ public:
588
661
  _LIBCPP_INLINE_VISIBILITY
589
662
  const_iterator lower_bound(const key_type& __k) const
590
663
  {return __tree_.lower_bound(__k);}
664
+ #if _LIBCPP_STD_VER > 11
665
+ template <typename _K2>
666
+ _LIBCPP_INLINE_VISIBILITY
667
+ typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
668
+ lower_bound(const _K2& __k) {return __tree_.lower_bound(__k);}
669
+
670
+ template <typename _K2>
671
+ _LIBCPP_INLINE_VISIBILITY
672
+ typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
673
+ lower_bound(const _K2& __k) const {return __tree_.lower_bound(__k);}
674
+ #endif
675
+
591
676
  _LIBCPP_INLINE_VISIBILITY
592
677
  iterator upper_bound(const key_type& __k)
593
678
  {return __tree_.upper_bound(__k);}
594
679
  _LIBCPP_INLINE_VISIBILITY
595
680
  const_iterator upper_bound(const key_type& __k) const
596
681
  {return __tree_.upper_bound(__k);}
682
+ #if _LIBCPP_STD_VER > 11
683
+ template <typename _K2>
684
+ _LIBCPP_INLINE_VISIBILITY
685
+ typename enable_if<__is_transparent<_Compare, _K2>::value,iterator>::type
686
+ upper_bound(const _K2& __k) {return __tree_.upper_bound(__k);}
687
+ template <typename _K2>
688
+ _LIBCPP_INLINE_VISIBILITY
689
+ typename enable_if<__is_transparent<_Compare, _K2>::value,const_iterator>::type
690
+ upper_bound(const _K2& __k) const {return __tree_.upper_bound(__k);}
691
+ #endif
692
+
597
693
  _LIBCPP_INLINE_VISIBILITY
598
694
  pair<iterator,iterator> equal_range(const key_type& __k)
599
695
  {return __tree_.__equal_range_unique(__k);}
600
696
  _LIBCPP_INLINE_VISIBILITY
601
697
  pair<const_iterator,const_iterator> equal_range(const key_type& __k) const
602
698
  {return __tree_.__equal_range_unique(__k);}
699
+ #if _LIBCPP_STD_VER > 11
700
+ template <typename _K2>
701
+ _LIBCPP_INLINE_VISIBILITY
702
+ typename enable_if<__is_transparent<_Compare, _K2>::value,pair<iterator,iterator>>::type
703
+ equal_range(const _K2& __k) {return __tree_.__equal_range_unique(__k);}
704
+ template <typename _K2>
705
+ _LIBCPP_INLINE_VISIBILITY
706
+ typename enable_if<__is_transparent<_Compare, _K2>::value,pair<const_iterator,const_iterator>>::type
707
+ equal_range(const _K2& __k) const {return __tree_.__equal_range_unique(__k);}
708
+ #endif
603
709
  };
604
710
 
605
711
  #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
@@ -685,7 +791,7 @@ swap(set<_Key, _Compare, _Allocator>& __x,
685
791
 
686
792
  template <class _Key, class _Compare = less<_Key>,
687
793
  class _Allocator = allocator<_Key> >
688
- class _LIBCPP_TYPE_VIS multiset
794
+ class _LIBCPP_TYPE_VIS_ONLY multiset
689
795
  {
690
796
  public:
691
797
  // types:
@@ -734,6 +840,13 @@ public:
734
840
  insert(__f, __l);
735
841
  }
736
842
 
843
+ #if _LIBCPP_STD_VER > 11
844
+ template <class _InputIterator>
845
+ _LIBCPP_INLINE_VISIBILITY
846
+ multiset(_InputIterator __f, _InputIterator __l, const allocator_type& __a)
847
+ : multiset(__f, __l, key_compare(), __a) {}
848
+ #endif
849
+
737
850
  template <class _InputIterator>
738
851
  _LIBCPP_INLINE_VISIBILITY
739
852
  multiset(_InputIterator __f, _InputIterator __l,
@@ -793,6 +906,12 @@ public:
793
906
  insert(__il.begin(), __il.end());
794
907
  }
795
908
 
909
+ #if _LIBCPP_STD_VER > 11
910
+ _LIBCPP_INLINE_VISIBILITY
911
+ multiset(initializer_list<value_type> __il, const allocator_type& __a)
912
+ : multiset(__il, key_compare(), __a) {}
913
+ #endif
914
+
796
915
  _LIBCPP_INLINE_VISIBILITY
797
916
  multiset& operator=(initializer_list<value_type> __il)
798
917
  {
@@ -917,27 +1036,72 @@ public:
917
1036
  iterator find(const key_type& __k) {return __tree_.find(__k);}
918
1037
  _LIBCPP_INLINE_VISIBILITY
919
1038
  const_iterator find(const key_type& __k) const {return __tree_.find(__k);}
1039
+ #if _LIBCPP_STD_VER > 11
1040
+ template <typename _K2>
1041
+ _LIBCPP_INLINE_VISIBILITY
1042
+ typename _VSTD::enable_if<_VSTD::__is_transparent<_Compare, _K2>::value,iterator>::type
1043
+ find(const _K2& __k) {return __tree_.find(__k);}
1044
+ template <typename _K2>
1045
+ _LIBCPP_INLINE_VISIBILITY
1046
+ typename _VSTD::enable_if<_VSTD::__is_transparent<_Compare, _K2>::value,const_iterator>::type
1047
+ find(const _K2& __k) const {return __tree_.find(__k);}
1048
+ #endif
1049
+
920
1050
  _LIBCPP_INLINE_VISIBILITY
921
1051
  size_type count(const key_type& __k) const
922
1052
  {return __tree_.__count_multi(__k);}
1053
+
923
1054
  _LIBCPP_INLINE_VISIBILITY
924
1055
  iterator lower_bound(const key_type& __k)
925
1056
  {return __tree_.lower_bound(__k);}
926
1057
  _LIBCPP_INLINE_VISIBILITY
927
1058
  const_iterator lower_bound(const key_type& __k) const
928
1059
  {return __tree_.lower_bound(__k);}
1060
+ #if _LIBCPP_STD_VER > 11
1061
+ template <typename _K2>
1062
+ _LIBCPP_INLINE_VISIBILITY
1063
+ typename _VSTD::enable_if<_VSTD::__is_transparent<_Compare, _K2>::value,iterator>::type
1064
+ lower_bound(const _K2& __k) {return __tree_.lower_bound(__k);}
1065
+
1066
+ template <typename _K2>
1067
+ _LIBCPP_INLINE_VISIBILITY
1068
+ typename _VSTD::enable_if<_VSTD::__is_transparent<_Compare, _K2>::value,const_iterator>::type
1069
+ lower_bound(const _K2& __k) const {return __tree_.lower_bound(__k);}
1070
+ #endif
1071
+
929
1072
  _LIBCPP_INLINE_VISIBILITY
930
1073
  iterator upper_bound(const key_type& __k)
931
1074
  {return __tree_.upper_bound(__k);}
932
1075
  _LIBCPP_INLINE_VISIBILITY
933
1076
  const_iterator upper_bound(const key_type& __k) const
934
1077
  {return __tree_.upper_bound(__k);}
1078
+ #if _LIBCPP_STD_VER > 11
1079
+ template <typename _K2>
1080
+ _LIBCPP_INLINE_VISIBILITY
1081
+ typename _VSTD::enable_if<_VSTD::__is_transparent<_Compare, _K2>::value,iterator>::type
1082
+ upper_bound(const _K2& __k) {return __tree_.upper_bound(__k);}
1083
+ template <typename _K2>
1084
+ _LIBCPP_INLINE_VISIBILITY
1085
+ typename _VSTD::enable_if<_VSTD::__is_transparent<_Compare, _K2>::value,const_iterator>::type
1086
+ upper_bound(const _K2& __k) const {return __tree_.upper_bound(__k);}
1087
+ #endif
1088
+
935
1089
  _LIBCPP_INLINE_VISIBILITY
936
1090
  pair<iterator,iterator> equal_range(const key_type& __k)
937
1091
  {return __tree_.__equal_range_multi(__k);}
938
1092
  _LIBCPP_INLINE_VISIBILITY
939
1093
  pair<const_iterator,const_iterator> equal_range(const key_type& __k) const
940
1094
  {return __tree_.__equal_range_multi(__k);}
1095
+ #if _LIBCPP_STD_VER > 11
1096
+ template <typename _K2>
1097
+ _LIBCPP_INLINE_VISIBILITY
1098
+ typename _VSTD::enable_if<_VSTD::__is_transparent<_Compare, _K2>::value,pair<iterator,iterator>>::type
1099
+ equal_range(const _K2& __k) {return __tree_.__equal_range_multi(__k);}
1100
+ template <typename _K2>
1101
+ _LIBCPP_INLINE_VISIBILITY
1102
+ typename _VSTD::enable_if<_VSTD::__is_transparent<_Compare, _K2>::value,pair<const_iterator,const_iterator>>::type
1103
+ equal_range(const _K2& __k) const {return __tree_.__equal_range_multi(__k);}
1104
+ #endif
941
1105
  };
942
1106
 
943
1107
  #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES