webruby 0.1.0

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 (1364) hide show
  1. checksums.yaml +7 -0
  2. data/bin/webruby +36 -0
  3. data/driver/driver.c +50 -0
  4. data/driver/main.c +40 -0
  5. data/lib/webruby/app.rb +13 -0
  6. data/lib/webruby/config.rb +61 -0
  7. data/lib/webruby/environment.rb +32 -0
  8. data/lib/webruby/rake/files.rake +66 -0
  9. data/lib/webruby/rake/general.rake +22 -0
  10. data/lib/webruby/rake/mruby.rake +44 -0
  11. data/lib/webruby/utility.rb +132 -0
  12. data/lib/webruby.rb +10 -0
  13. data/modules/emscripten/AUTHORS +89 -0
  14. data/modules/emscripten/LICENSE +68 -0
  15. data/modules/emscripten/README.markdown +14 -0
  16. data/modules/emscripten/cmake/Platform/Emscripten.cmake +61 -0
  17. data/modules/emscripten/cmake/Platform/Emscripten_unix.cmake +24 -0
  18. data/modules/emscripten/em++ +12 -0
  19. data/modules/emscripten/em++.bat +2 -0
  20. data/modules/emscripten/em-config +24 -0
  21. data/modules/emscripten/em-config.bat +2 -0
  22. data/modules/emscripten/emar +24 -0
  23. data/modules/emscripten/emar.bat +2 -0
  24. data/modules/emscripten/emcc +1744 -0
  25. data/modules/emscripten/emcc.bat +2 -0
  26. data/modules/emscripten/emcc.py +5 -0
  27. data/modules/emscripten/emconfigure +27 -0
  28. data/modules/emscripten/emconfigure.bat +2 -0
  29. data/modules/emscripten/emlibtool +11 -0
  30. data/modules/emscripten/emlibtool.bat +2 -0
  31. data/modules/emscripten/emlink.py +293 -0
  32. data/modules/emscripten/emmake +29 -0
  33. data/modules/emscripten/emmake.bat +2 -0
  34. data/modules/emscripten/emranlib +9 -0
  35. data/modules/emscripten/emranlib.bat +2 -0
  36. data/modules/emscripten/emscons +20 -0
  37. data/modules/emscripten/emscripten.py +835 -0
  38. data/modules/emscripten/patches/README +4 -0
  39. data/modules/emscripten/patches/series +2 -0
  40. data/modules/emscripten/scons-tools/closure.py +28 -0
  41. data/modules/emscripten/scons-tools/emscripten.py +359 -0
  42. data/modules/emscripten/scons-tools/llvm.py +33 -0
  43. data/modules/emscripten/src/analyzer.js +1695 -0
  44. data/modules/emscripten/src/compiler.html +48 -0
  45. data/modules/emscripten/src/compiler.js +298 -0
  46. data/modules/emscripten/src/corruptionCheck.js +98 -0
  47. data/modules/emscripten/src/determinstic.js +20 -0
  48. data/modules/emscripten/src/embind/embind.js +1677 -0
  49. data/modules/emscripten/src/embind/emval.js +283 -0
  50. data/modules/emscripten/src/experimental/allow_loopvars_from_memsetcpy_inasm.diff +97 -0
  51. data/modules/emscripten/src/experimental/batching.diff +44 -0
  52. data/modules/emscripten/src/experimental/functypeopt.diff +113 -0
  53. data/modules/emscripten/src/experimental/multiple_heaps.diff +175 -0
  54. data/modules/emscripten/src/experimental/noncallgraphprofiling.diff +197 -0
  55. data/modules/emscripten/src/experimental/optimize_memcpy_for_ta1.diff +124 -0
  56. data/modules/emscripten/src/experimental/remove__label__s.diff +140 -0
  57. data/modules/emscripten/src/experimental/renderer_cache_hash.diff +99 -0
  58. data/modules/emscripten/src/experimental/sdl_key_forwarding.diff +57 -0
  59. data/modules/emscripten/src/experimental/simplifyGeneratedFunctionsDetection.diff +336 -0
  60. data/modules/emscripten/src/experimental/stringCache.diff +147 -0
  61. data/modules/emscripten/src/fastLong.js +299 -0
  62. data/modules/emscripten/src/framework.js +257 -0
  63. data/modules/emscripten/src/gl-matrix.js +1952 -0
  64. data/modules/emscripten/src/headless.js +904 -0
  65. data/modules/emscripten/src/intertyper.js +1050 -0
  66. data/modules/emscripten/src/jsifier.js +1827 -0
  67. data/modules/emscripten/src/library.js +8270 -0
  68. data/modules/emscripten/src/library_browser.js +911 -0
  69. data/modules/emscripten/src/library_egl.js +491 -0
  70. data/modules/emscripten/src/library_gc.js +236 -0
  71. data/modules/emscripten/src/library_gl.js +4452 -0
  72. data/modules/emscripten/src/library_glfw.js +576 -0
  73. data/modules/emscripten/src/library_glut.js +449 -0
  74. data/modules/emscripten/src/library_jansson.js +320 -0
  75. data/modules/emscripten/src/library_openal.js +602 -0
  76. data/modules/emscripten/src/library_sdl.js +2024 -0
  77. data/modules/emscripten/src/library_strtok_r.c +97 -0
  78. data/modules/emscripten/src/library_xlib.js +23 -0
  79. data/modules/emscripten/src/long.js +1609 -0
  80. data/modules/emscripten/src/modules.js +491 -0
  81. data/modules/emscripten/src/parseTools.js +2474 -0
  82. data/modules/emscripten/src/postamble.js +170 -0
  83. data/modules/emscripten/src/postamble_sharedlib.js +16 -0
  84. data/modules/emscripten/src/preamble.js +914 -0
  85. data/modules/emscripten/src/preamble_sharedlib.js +25 -0
  86. data/modules/emscripten/src/relooper/README.markdown +14 -0
  87. data/modules/emscripten/src/relooper/Relooper.cpp +1236 -0
  88. data/modules/emscripten/src/relooper/Relooper.h +250 -0
  89. data/modules/emscripten/src/relooper/doit.sh +70 -0
  90. data/modules/emscripten/src/relooper/emscripten/glue.js +57 -0
  91. data/modules/emscripten/src/relooper/emscripten/test.js +44 -0
  92. data/modules/emscripten/src/relooper/fuzzer.py +116 -0
  93. data/modules/emscripten/src/relooper/ministring.h +35 -0
  94. data/modules/emscripten/src/relooper/paper.pdf +0 -0
  95. data/modules/emscripten/src/relooper/test.cpp +262 -0
  96. data/modules/emscripten/src/relooper/test.txt +155 -0
  97. data/modules/emscripten/src/relooper/test2.c +44 -0
  98. data/modules/emscripten/src/relooper/test2.txt +12 -0
  99. data/modules/emscripten/src/relooper/test3.c +42 -0
  100. data/modules/emscripten/src/relooper/test3.txt +27 -0
  101. data/modules/emscripten/src/relooper/test4.cpp +40 -0
  102. data/modules/emscripten/src/relooper/test4.txt +23 -0
  103. data/modules/emscripten/src/relooper/test5.cpp +40 -0
  104. data/modules/emscripten/src/relooper/test5.txt +32 -0
  105. data/modules/emscripten/src/relooper/test6.cpp +31 -0
  106. data/modules/emscripten/src/relooper/test6.txt +12 -0
  107. data/modules/emscripten/src/relooper/test_dead.cpp +28 -0
  108. data/modules/emscripten/src/relooper/test_dead.txt +9 -0
  109. data/modules/emscripten/src/relooper/test_debug.cpp +30 -0
  110. data/modules/emscripten/src/relooper/test_debug.txt +128 -0
  111. data/modules/emscripten/src/relooper/test_fuzz1.cpp +52 -0
  112. data/modules/emscripten/src/relooper/test_fuzz1.txt +32 -0
  113. data/modules/emscripten/src/relooper/test_fuzz2.cpp +34 -0
  114. data/modules/emscripten/src/relooper/test_fuzz2.txt +13 -0
  115. data/modules/emscripten/src/relooper/test_fuzz3.cpp +36 -0
  116. data/modules/emscripten/src/relooper/test_fuzz3.txt +9 -0
  117. data/modules/emscripten/src/relooper/test_fuzz4.cpp +38 -0
  118. data/modules/emscripten/src/relooper/test_fuzz4.txt +19 -0
  119. data/modules/emscripten/src/relooper/test_fuzz5.cpp +57 -0
  120. data/modules/emscripten/src/relooper/test_fuzz5.txt +52 -0
  121. data/modules/emscripten/src/relooper/test_fuzz6.cpp +322 -0
  122. data/modules/emscripten/src/relooper/test_fuzz6.txt +108 -0
  123. data/modules/emscripten/src/relooper/test_inf.cpp +813 -0
  124. data/modules/emscripten/src/relooper/test_inf.txt +385 -0
  125. data/modules/emscripten/src/relooper/testit.sh +62 -0
  126. data/modules/emscripten/src/relooper/updateit.sh +17 -0
  127. data/modules/emscripten/src/relooper.js +11516 -0
  128. data/modules/emscripten/src/relooper.js.raw.js +11511 -0
  129. data/modules/emscripten/src/runtime.js +546 -0
  130. data/modules/emscripten/src/settings.js +1284 -0
  131. data/modules/emscripten/src/shell.html +92 -0
  132. data/modules/emscripten/src/shell.js +153 -0
  133. data/modules/emscripten/src/shell_sharedlib.js +12 -0
  134. data/modules/emscripten/src/socket.io.js +3870 -0
  135. data/modules/emscripten/src/utility.js +379 -0
  136. data/modules/emscripten/src/wrtcp.js +821 -0
  137. data/modules/emscripten/system/include/AL/al.h +172 -0
  138. data/modules/emscripten/system/include/AL/alc.h +84 -0
  139. data/modules/emscripten/system/include/EGL/egl.h +329 -0
  140. data/modules/emscripten/system/include/EGL/eglext.h +398 -0
  141. data/modules/emscripten/system/include/EGL/eglplatform.h +141 -0
  142. data/modules/emscripten/system/include/GL/freeglut_std.h +628 -0
  143. data/modules/emscripten/system/include/GL/gl.h +2241 -0
  144. data/modules/emscripten/system/include/GL/glew.h +6 -0
  145. data/modules/emscripten/system/include/GL/glext.h +11127 -0
  146. data/modules/emscripten/system/include/GL/glfw.h +518 -0
  147. data/modules/emscripten/system/include/GL/glu.h +353 -0
  148. data/modules/emscripten/system/include/GL/glut.h +21 -0
  149. data/modules/emscripten/system/include/GLES/gl.h +770 -0
  150. data/modules/emscripten/system/include/GLES/glext.h +1278 -0
  151. data/modules/emscripten/system/include/GLES/glplatform.h +30 -0
  152. data/modules/emscripten/system/include/GLES2/gl2.h +621 -0
  153. data/modules/emscripten/system/include/GLES2/gl2ext.h +803 -0
  154. data/modules/emscripten/system/include/GLES2/gl2platform.h +30 -0
  155. data/modules/emscripten/system/include/KHR/khrplatform.h +277 -0
  156. data/modules/emscripten/system/include/SDL/COPYING +19 -0
  157. data/modules/emscripten/system/include/SDL/SDL.h +162 -0
  158. data/modules/emscripten/system/include/SDL/SDL_assert.h +241 -0
  159. data/modules/emscripten/system/include/SDL/SDL_atomic.h +318 -0
  160. data/modules/emscripten/system/include/SDL/SDL_audio.h +509 -0
  161. data/modules/emscripten/system/include/SDL/SDL_blendmode.h +60 -0
  162. data/modules/emscripten/system/include/SDL/SDL_clipboard.h +75 -0
  163. data/modules/emscripten/system/include/SDL/SDL_compat.h +365 -0
  164. data/modules/emscripten/system/include/SDL/SDL_config.h +48 -0
  165. data/modules/emscripten/system/include/SDL/SDL_config.h.in +297 -0
  166. data/modules/emscripten/system/include/SDL/SDL_config_android.h +133 -0
  167. data/modules/emscripten/system/include/SDL/SDL_config_iphoneos.h +148 -0
  168. data/modules/emscripten/system/include/SDL/SDL_config_macosx.h +172 -0
  169. data/modules/emscripten/system/include/SDL/SDL_config_minimal.h +74 -0
  170. data/modules/emscripten/system/include/SDL/SDL_config_nintendods.h +129 -0
  171. data/modules/emscripten/system/include/SDL/SDL_config_pandora.h +125 -0
  172. data/modules/emscripten/system/include/SDL/SDL_config_windows.h +207 -0
  173. data/modules/emscripten/system/include/SDL/SDL_config_wiz.h +119 -0
  174. data/modules/emscripten/system/include/SDL/SDL_copying.h +20 -0
  175. data/modules/emscripten/system/include/SDL/SDL_cpuinfo.h +150 -0
  176. data/modules/emscripten/system/include/SDL/SDL_endian.h +248 -0
  177. data/modules/emscripten/system/include/SDL/SDL_error.h +77 -0
  178. data/modules/emscripten/system/include/SDL/SDL_events.h +639 -0
  179. data/modules/emscripten/system/include/SDL/SDL_gesture.h +91 -0
  180. data/modules/emscripten/system/include/SDL/SDL_gfxPrimitives.h +246 -0
  181. data/modules/emscripten/system/include/SDL/SDL_haptic.h +1200 -0
  182. data/modules/emscripten/system/include/SDL/SDL_hints.h +206 -0
  183. data/modules/emscripten/system/include/SDL/SDL_image.h +138 -0
  184. data/modules/emscripten/system/include/SDL/SDL_input.h +87 -0
  185. data/modules/emscripten/system/include/SDL/SDL_joystick.h +208 -0
  186. data/modules/emscripten/system/include/SDL/SDL_keyboard.h +169 -0
  187. data/modules/emscripten/system/include/SDL/SDL_keycode.h +344 -0
  188. data/modules/emscripten/system/include/SDL/SDL_loadso.h +85 -0
  189. data/modules/emscripten/system/include/SDL/SDL_log.h +211 -0
  190. data/modules/emscripten/system/include/SDL/SDL_main.h +98 -0
  191. data/modules/emscripten/system/include/SDL/SDL_mixer.h +634 -0
  192. data/modules/emscripten/system/include/SDL/SDL_mouse.h +213 -0
  193. data/modules/emscripten/system/include/SDL/SDL_mutex.h +248 -0
  194. data/modules/emscripten/system/include/SDL/SDL_name.h +11 -0
  195. data/modules/emscripten/system/include/SDL/SDL_opengl.h +11116 -0
  196. data/modules/emscripten/system/include/SDL/SDL_opengles.h +38 -0
  197. data/modules/emscripten/system/include/SDL/SDL_opengles2.h +38 -0
  198. data/modules/emscripten/system/include/SDL/SDL_pixels.h +423 -0
  199. data/modules/emscripten/system/include/SDL/SDL_platform.h +160 -0
  200. data/modules/emscripten/system/include/SDL/SDL_power.h +79 -0
  201. data/modules/emscripten/system/include/SDL/SDL_quit.h +58 -0
  202. data/modules/emscripten/system/include/SDL/SDL_rect.h +136 -0
  203. data/modules/emscripten/system/include/SDL/SDL_render.h +615 -0
  204. data/modules/emscripten/system/include/SDL/SDL_revision.h +2 -0
  205. data/modules/emscripten/system/include/SDL/SDL_revision.h.orig +2 -0
  206. data/modules/emscripten/system/include/SDL/SDL_rotozoom.h +123 -0
  207. data/modules/emscripten/system/include/SDL/SDL_rwops.h +220 -0
  208. data/modules/emscripten/system/include/SDL/SDL_scancode.h +398 -0
  209. data/modules/emscripten/system/include/SDL/SDL_shape.h +147 -0
  210. data/modules/emscripten/system/include/SDL/SDL_stdinc.h +764 -0
  211. data/modules/emscripten/system/include/SDL/SDL_surface.h +499 -0
  212. data/modules/emscripten/system/include/SDL/SDL_syswm.h +241 -0
  213. data/modules/emscripten/system/include/SDL/SDL_thread.h +182 -0
  214. data/modules/emscripten/system/include/SDL/SDL_timer.h +108 -0
  215. data/modules/emscripten/system/include/SDL/SDL_touch.h +124 -0
  216. data/modules/emscripten/system/include/SDL/SDL_ttf.h +249 -0
  217. data/modules/emscripten/system/include/SDL/SDL_types.h +29 -0
  218. data/modules/emscripten/system/include/SDL/SDL_version.h +166 -0
  219. data/modules/emscripten/system/include/SDL/SDL_video.h +820 -0
  220. data/modules/emscripten/system/include/SDL/begin_code.h +135 -0
  221. data/modules/emscripten/system/include/SDL/close_code.h +37 -0
  222. data/modules/emscripten/system/include/X11/X.h +717 -0
  223. data/modules/emscripten/system/include/X11/Xatom.h +79 -0
  224. data/modules/emscripten/system/include/X11/Xfuncproto.h +127 -0
  225. data/modules/emscripten/system/include/X11/Xlib.h +4023 -0
  226. data/modules/emscripten/system/include/X11/Xosdefs.h +116 -0
  227. data/modules/emscripten/system/include/X11/Xutil.h +826 -0
  228. data/modules/emscripten/system/include/X11/keysym.h +73 -0
  229. data/modules/emscripten/system/include/X11/keysymdef.h +2389 -0
  230. data/modules/emscripten/system/include/bsd/float.h +91 -0
  231. data/modules/emscripten/system/include/bsd/readme.txt +2 -0
  232. data/modules/emscripten/system/include/bsd/sys/mman.h +180 -0
  233. data/modules/emscripten/system/include/bsd/sys/utsname.h +70 -0
  234. data/modules/emscripten/system/include/dlfcn.h +31 -0
  235. data/modules/emscripten/system/include/emscripten/bind.h +1210 -0
  236. data/modules/emscripten/system/include/emscripten/emscripten.h +388 -0
  237. data/modules/emscripten/system/include/emscripten/val.h +311 -0
  238. data/modules/emscripten/system/include/emscripten/wire.h +393 -0
  239. data/modules/emscripten/system/include/err.h +95 -0
  240. data/modules/emscripten/system/include/execinfo.h +44 -0
  241. data/modules/emscripten/system/include/features.h +3 -0
  242. data/modules/emscripten/system/include/gc.h +70 -0
  243. data/modules/emscripten/system/include/gfx/png.h +3798 -0
  244. data/modules/emscripten/system/include/gfx/pngconf.h +1665 -0
  245. data/modules/emscripten/system/include/gfx/tiff.h +654 -0
  246. data/modules/emscripten/system/include/gfx/tiffconf.h +104 -0
  247. data/modules/emscripten/system/include/gfx/tiffio.h +526 -0
  248. data/modules/emscripten/system/include/gfx/tiffvers.h +9 -0
  249. data/modules/emscripten/system/include/jansson.h +323 -0
  250. data/modules/emscripten/system/include/jansson_config.h +54 -0
  251. data/modules/emscripten/system/include/libc/_ansi.h +135 -0
  252. data/modules/emscripten/system/include/libc/_syslist.h +40 -0
  253. data/modules/emscripten/system/include/libc/alloca.h +21 -0
  254. data/modules/emscripten/system/include/libc/ar.h +69 -0
  255. data/modules/emscripten/system/include/libc/argz.h +33 -0
  256. data/modules/emscripten/system/include/libc/assert.h +46 -0
  257. data/modules/emscripten/system/include/libc/complex.h +124 -0
  258. data/modules/emscripten/system/include/libc/ctype.h +196 -0
  259. data/modules/emscripten/system/include/libc/dirent.h +16 -0
  260. data/modules/emscripten/system/include/libc/endian.h +3 -0
  261. data/modules/emscripten/system/include/libc/envlock.h +15 -0
  262. data/modules/emscripten/system/include/libc/envz.h +16 -0
  263. data/modules/emscripten/system/include/libc/errno.h +11 -0
  264. data/modules/emscripten/system/include/libc/fastmath.h +13 -0
  265. data/modules/emscripten/system/include/libc/fcntl.h +1 -0
  266. data/modules/emscripten/system/include/libc/fnmatch.h +55 -0
  267. data/modules/emscripten/system/include/libc/getopt.h +196 -0
  268. data/modules/emscripten/system/include/libc/glob.h +89 -0
  269. data/modules/emscripten/system/include/libc/grp.h +94 -0
  270. data/modules/emscripten/system/include/libc/iconv.h +62 -0
  271. data/modules/emscripten/system/include/libc/ieeefp.h +256 -0
  272. data/modules/emscripten/system/include/libc/ifaddrs.h +64 -0
  273. data/modules/emscripten/system/include/libc/inttypes.h +290 -0
  274. data/modules/emscripten/system/include/libc/iso646.h +43 -0
  275. data/modules/emscripten/system/include/libc/langinfo.h +316 -0
  276. data/modules/emscripten/system/include/libc/libgen.h +23 -0
  277. data/modules/emscripten/system/include/libc/limits.h +155 -0
  278. data/modules/emscripten/system/include/libc/locale.h +80 -0
  279. data/modules/emscripten/system/include/libc/machine/_default_types.h +121 -0
  280. data/modules/emscripten/system/include/libc/machine/_types.h +8 -0
  281. data/modules/emscripten/system/include/libc/machine/ansi.h +1 -0
  282. data/modules/emscripten/system/include/libc/machine/endian.h +31 -0
  283. data/modules/emscripten/system/include/libc/machine/fastmath.h +100 -0
  284. data/modules/emscripten/system/include/libc/machine/ieeefp.h +376 -0
  285. data/modules/emscripten/system/include/libc/machine/malloc.h +8 -0
  286. data/modules/emscripten/system/include/libc/machine/param.h +1 -0
  287. data/modules/emscripten/system/include/libc/machine/setjmp-dj.h +43 -0
  288. data/modules/emscripten/system/include/libc/machine/setjmp.h +361 -0
  289. data/modules/emscripten/system/include/libc/machine/stdlib.h +8 -0
  290. data/modules/emscripten/system/include/libc/machine/termios.h +1 -0
  291. data/modules/emscripten/system/include/libc/machine/time.h +19 -0
  292. data/modules/emscripten/system/include/libc/machine/types.h +30 -0
  293. data/modules/emscripten/system/include/libc/malloc.h +169 -0
  294. data/modules/emscripten/system/include/libc/math.h +594 -0
  295. data/modules/emscripten/system/include/libc/newlib.h +2 -0
  296. data/modules/emscripten/system/include/libc/paths.h +7 -0
  297. data/modules/emscripten/system/include/libc/process.h +44 -0
  298. data/modules/emscripten/system/include/libc/pthread.h +362 -0
  299. data/modules/emscripten/system/include/libc/pwd.h +78 -0
  300. data/modules/emscripten/system/include/libc/readme.txt +3 -0
  301. data/modules/emscripten/system/include/libc/reent.h +183 -0
  302. data/modules/emscripten/system/include/libc/regdef.h +7 -0
  303. data/modules/emscripten/system/include/libc/regex.h +102 -0
  304. data/modules/emscripten/system/include/libc/sched.h +97 -0
  305. data/modules/emscripten/system/include/libc/search.h +59 -0
  306. data/modules/emscripten/system/include/libc/setjmp.h +20 -0
  307. data/modules/emscripten/system/include/libc/signal.h +30 -0
  308. data/modules/emscripten/system/include/libc/stdarg.h +50 -0
  309. data/modules/emscripten/system/include/libc/stddef.h +64 -0
  310. data/modules/emscripten/system/include/libc/stdint.h +493 -0
  311. data/modules/emscripten/system/include/libc/stdio.h +694 -0
  312. data/modules/emscripten/system/include/libc/stdlib.h +230 -0
  313. data/modules/emscripten/system/include/libc/string.h +105 -0
  314. data/modules/emscripten/system/include/libc/strings.h +35 -0
  315. data/modules/emscripten/system/include/libc/sys/_default_fcntl.h +223 -0
  316. data/modules/emscripten/system/include/libc/sys/_types.h +93 -0
  317. data/modules/emscripten/system/include/libc/sys/cdefs.h +123 -0
  318. data/modules/emscripten/system/include/libc/sys/config.h +255 -0
  319. data/modules/emscripten/system/include/libc/sys/custom_file.h +2 -0
  320. data/modules/emscripten/system/include/libc/sys/dir.h +10 -0
  321. data/modules/emscripten/system/include/libc/sys/dirent.h +58 -0
  322. data/modules/emscripten/system/include/libc/sys/errno.h +190 -0
  323. data/modules/emscripten/system/include/libc/sys/fcntl.h +4 -0
  324. data/modules/emscripten/system/include/libc/sys/features.h +212 -0
  325. data/modules/emscripten/system/include/libc/sys/file.h +2 -0
  326. data/modules/emscripten/system/include/libc/sys/iconvnls.h +77 -0
  327. data/modules/emscripten/system/include/libc/sys/lock.h +24 -0
  328. data/modules/emscripten/system/include/libc/sys/param.h +25 -0
  329. data/modules/emscripten/system/include/libc/sys/queue.h +471 -0
  330. data/modules/emscripten/system/include/libc/sys/reent.h +843 -0
  331. data/modules/emscripten/system/include/libc/sys/resource.h +59 -0
  332. data/modules/emscripten/system/include/libc/sys/sched.h +67 -0
  333. data/modules/emscripten/system/include/libc/sys/signal.h +314 -0
  334. data/modules/emscripten/system/include/libc/sys/stat.h +222 -0
  335. data/modules/emscripten/system/include/libc/sys/stdio.h +27 -0
  336. data/modules/emscripten/system/include/libc/sys/string.h +2 -0
  337. data/modules/emscripten/system/include/libc/sys/syslimits.h +65 -0
  338. data/modules/emscripten/system/include/libc/sys/termios.h +280 -0
  339. data/modules/emscripten/system/include/libc/sys/time.h +85 -0
  340. data/modules/emscripten/system/include/libc/sys/timeb.h +39 -0
  341. data/modules/emscripten/system/include/libc/sys/times.h +28 -0
  342. data/modules/emscripten/system/include/libc/sys/ttydefaults.h +97 -0
  343. data/modules/emscripten/system/include/libc/sys/types.h +481 -0
  344. data/modules/emscripten/system/include/libc/sys/unistd.h +514 -0
  345. data/modules/emscripten/system/include/libc/sys/utime.h +26 -0
  346. data/modules/emscripten/system/include/libc/sys/wait.h +40 -0
  347. data/modules/emscripten/system/include/libc/tar.h +39 -0
  348. data/modules/emscripten/system/include/libc/termios.h +7 -0
  349. data/modules/emscripten/system/include/libc/time.h +273 -0
  350. data/modules/emscripten/system/include/libc/unctrl.h +46 -0
  351. data/modules/emscripten/system/include/libc/unistd.h +6 -0
  352. data/modules/emscripten/system/include/libc/utime.h +12 -0
  353. data/modules/emscripten/system/include/libc/utmp.h +8 -0
  354. data/modules/emscripten/system/include/libc/wchar.h +194 -0
  355. data/modules/emscripten/system/include/libc/wctype.h +47 -0
  356. data/modules/emscripten/system/include/libc/wordexp.h +53 -0
  357. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +91 -0
  358. data/modules/emscripten/system/include/libcxx/LICENSE.txt +76 -0
  359. data/modules/emscripten/system/include/libcxx/__bit_reference +1268 -0
  360. data/modules/emscripten/system/include/libcxx/__config +485 -0
  361. data/modules/emscripten/system/include/libcxx/__debug +193 -0
  362. data/modules/emscripten/system/include/libcxx/__functional_03 +2130 -0
  363. data/modules/emscripten/system/include/libcxx/__functional_base +437 -0
  364. data/modules/emscripten/system/include/libcxx/__functional_base_03 +1087 -0
  365. data/modules/emscripten/system/include/libcxx/__hash_table +1945 -0
  366. data/modules/emscripten/system/include/libcxx/__locale +1435 -0
  367. data/modules/emscripten/system/include/libcxx/__mutex_base +438 -0
  368. data/modules/emscripten/system/include/libcxx/__split_buffer +654 -0
  369. data/modules/emscripten/system/include/libcxx/__sso_allocator +77 -0
  370. data/modules/emscripten/system/include/libcxx/__std_stream +317 -0
  371. data/modules/emscripten/system/include/libcxx/__tree +2293 -0
  372. data/modules/emscripten/system/include/libcxx/__tuple +305 -0
  373. data/modules/emscripten/system/include/libcxx/__tuple_03 +27 -0
  374. data/modules/emscripten/system/include/libcxx/__undef_min_max +19 -0
  375. data/modules/emscripten/system/include/libcxx/algorithm +5458 -0
  376. data/modules/emscripten/system/include/libcxx/array +341 -0
  377. data/modules/emscripten/system/include/libcxx/atomic +1521 -0
  378. data/modules/emscripten/system/include/libcxx/bitset +1081 -0
  379. data/modules/emscripten/system/include/libcxx/cassert +25 -0
  380. data/modules/emscripten/system/include/libcxx/ccomplex +29 -0
  381. data/modules/emscripten/system/include/libcxx/cctype +164 -0
  382. data/modules/emscripten/system/include/libcxx/cerrno +393 -0
  383. data/modules/emscripten/system/include/libcxx/cfenv +82 -0
  384. data/modules/emscripten/system/include/libcxx/cfloat +78 -0
  385. data/modules/emscripten/system/include/libcxx/chrono +898 -0
  386. data/modules/emscripten/system/include/libcxx/cinttypes +259 -0
  387. data/modules/emscripten/system/include/libcxx/ciso646 +25 -0
  388. data/modules/emscripten/system/include/libcxx/climits +48 -0
  389. data/modules/emscripten/system/include/libcxx/clocale +53 -0
  390. data/modules/emscripten/system/include/libcxx/cmath +1683 -0
  391. data/modules/emscripten/system/include/libcxx/codecvt +547 -0
  392. data/modules/emscripten/system/include/libcxx/complex +1526 -0
  393. data/modules/emscripten/system/include/libcxx/complex.h +35 -0
  394. data/modules/emscripten/system/include/libcxx/condition_variable +256 -0
  395. data/modules/emscripten/system/include/libcxx/csetjmp +52 -0
  396. data/modules/emscripten/system/include/libcxx/csignal +58 -0
  397. data/modules/emscripten/system/include/libcxx/cstdarg +48 -0
  398. data/modules/emscripten/system/include/libcxx/cstdbool +32 -0
  399. data/modules/emscripten/system/include/libcxx/cstddef +103 -0
  400. data/modules/emscripten/system/include/libcxx/cstdint +191 -0
  401. data/modules/emscripten/system/include/libcxx/cstdio +175 -0
  402. data/modules/emscripten/system/include/libcxx/cstdlib +172 -0
  403. data/modules/emscripten/system/include/libcxx/cstring +112 -0
  404. data/modules/emscripten/system/include/libcxx/ctgmath +29 -0
  405. data/modules/emscripten/system/include/libcxx/ctime +72 -0
  406. data/modules/emscripten/system/include/libcxx/cwchar +208 -0
  407. data/modules/emscripten/system/include/libcxx/cwctype +213 -0
  408. data/modules/emscripten/system/include/libcxx/deque +2846 -0
  409. data/modules/emscripten/system/include/libcxx/exception +250 -0
  410. data/modules/emscripten/system/include/libcxx/ext/__hash +46 -0
  411. data/modules/emscripten/system/include/libcxx/ext/hash_map +1003 -0
  412. data/modules/emscripten/system/include/libcxx/ext/hash_set +657 -0
  413. data/modules/emscripten/system/include/libcxx/forward_list +1636 -0
  414. data/modules/emscripten/system/include/libcxx/fstream +1415 -0
  415. data/modules/emscripten/system/include/libcxx/functional +2063 -0
  416. data/modules/emscripten/system/include/libcxx/future +2505 -0
  417. data/modules/emscripten/system/include/libcxx/initializer_list +105 -0
  418. data/modules/emscripten/system/include/libcxx/iomanip +504 -0
  419. data/modules/emscripten/system/include/libcxx/ios +988 -0
  420. data/modules/emscripten/system/include/libcxx/iosfwd +194 -0
  421. data/modules/emscripten/system/include/libcxx/iostream +60 -0
  422. data/modules/emscripten/system/include/libcxx/istream +1713 -0
  423. data/modules/emscripten/system/include/libcxx/iterator +1869 -0
  424. data/modules/emscripten/system/include/libcxx/limits +809 -0
  425. data/modules/emscripten/system/include/libcxx/list +2275 -0
  426. data/modules/emscripten/system/include/libcxx/locale +4591 -0
  427. data/modules/emscripten/system/include/libcxx/map +1924 -0
  428. data/modules/emscripten/system/include/libcxx/memory +5437 -0
  429. data/modules/emscripten/system/include/libcxx/mutex +566 -0
  430. data/modules/emscripten/system/include/libcxx/new +117 -0
  431. data/modules/emscripten/system/include/libcxx/numeric +197 -0
  432. data/modules/emscripten/system/include/libcxx/ostream +1286 -0
  433. data/modules/emscripten/system/include/libcxx/queue +717 -0
  434. data/modules/emscripten/system/include/libcxx/random +6750 -0
  435. data/modules/emscripten/system/include/libcxx/ratio +487 -0
  436. data/modules/emscripten/system/include/libcxx/readme.txt +1 -0
  437. data/modules/emscripten/system/include/libcxx/regex +6439 -0
  438. data/modules/emscripten/system/include/libcxx/scoped_allocator +578 -0
  439. data/modules/emscripten/system/include/libcxx/set +1025 -0
  440. data/modules/emscripten/system/include/libcxx/sstream +888 -0
  441. data/modules/emscripten/system/include/libcxx/stack +292 -0
  442. data/modules/emscripten/system/include/libcxx/stdexcept +162 -0
  443. data/modules/emscripten/system/include/libcxx/streambuf +564 -0
  444. data/modules/emscripten/system/include/libcxx/string +3987 -0
  445. data/modules/emscripten/system/include/libcxx/strstream +400 -0
  446. data/modules/emscripten/system/include/libcxx/support/solaris/floatingpoint.h +5 -0
  447. data/modules/emscripten/system/include/libcxx/support/solaris/wchar.h +38 -0
  448. data/modules/emscripten/system/include/libcxx/support/solaris/xlocale.h +146 -0
  449. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +79 -0
  450. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +116 -0
  451. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +113 -0
  452. data/modules/emscripten/system/include/libcxx/support/win32/support.h +115 -0
  453. data/modules/emscripten/system/include/libcxx/system_error +636 -0
  454. data/modules/emscripten/system/include/libcxx/tgmath.h +29 -0
  455. data/modules/emscripten/system/include/libcxx/thread +459 -0
  456. data/modules/emscripten/system/include/libcxx/tuple +1092 -0
  457. data/modules/emscripten/system/include/libcxx/type_traits +3040 -0
  458. data/modules/emscripten/system/include/libcxx/typeindex +103 -0
  459. data/modules/emscripten/system/include/libcxx/typeinfo +124 -0
  460. data/modules/emscripten/system/include/libcxx/unordered_map +1864 -0
  461. data/modules/emscripten/system/include/libcxx/unordered_set +1144 -0
  462. data/modules/emscripten/system/include/libcxx/utility +583 -0
  463. data/modules/emscripten/system/include/libcxx/valarray +4779 -0
  464. data/modules/emscripten/system/include/libcxx/vector +3228 -0
  465. data/modules/emscripten/system/include/memory.h +10 -0
  466. data/modules/emscripten/system/include/mntent.h +23 -0
  467. data/modules/emscripten/system/include/net/arpa/inet.h +32 -0
  468. data/modules/emscripten/system/include/net/arpa/nameser.h +535 -0
  469. data/modules/emscripten/system/include/net/arpa/nameser_compat.h +187 -0
  470. data/modules/emscripten/system/include/net/if.h +87 -0
  471. data/modules/emscripten/system/include/net/netinet/in.h +166 -0
  472. data/modules/emscripten/system/include/net/netinet/tcp.h +246 -0
  473. data/modules/emscripten/system/include/net/resolv.h +389 -0
  474. data/modules/emscripten/system/include/netdb.h +94 -0
  475. data/modules/emscripten/system/include/nl_types.h +19 -0
  476. data/modules/emscripten/system/include/poll.h +3 -0
  477. data/modules/emscripten/system/include/pty.h +6 -0
  478. data/modules/emscripten/system/include/semaphore.h +31 -0
  479. data/modules/emscripten/system/include/spawn.h +105 -0
  480. data/modules/emscripten/system/include/stdbool.h +16 -0
  481. data/modules/emscripten/system/include/sys/bitypes.h +3 -0
  482. data/modules/emscripten/system/include/sys/io.h +14 -0
  483. data/modules/emscripten/system/include/sys/ioctl.h +26 -0
  484. data/modules/emscripten/system/include/sys/poll.h +31 -0
  485. data/modules/emscripten/system/include/sys/select.h +14 -0
  486. data/modules/emscripten/system/include/sys/socket.h +101 -0
  487. data/modules/emscripten/system/include/sys/socketvar.h +3 -0
  488. data/modules/emscripten/system/include/sys/statvfs.h +32 -0
  489. data/modules/emscripten/system/include/sys/sysctl.h +14 -0
  490. data/modules/emscripten/system/include/sys/uio.h +22 -0
  491. data/modules/emscripten/system/include/sys/un.h +66 -0
  492. data/modules/emscripten/system/include/sysexits.h +108 -0
  493. data/modules/emscripten/system/include/unwind.h +154 -0
  494. data/modules/emscripten/system/include/xlocale.h +47 -0
  495. data/modules/emscripten/system/include/zconf.h +428 -0
  496. data/modules/emscripten/system/include/zlib.h +1613 -0
  497. data/modules/emscripten/system/lib/compiler-rt/LICENSE.TXT +97 -0
  498. data/modules/emscripten/system/lib/compiler-rt/divdi3.c +47 -0
  499. data/modules/emscripten/system/lib/compiler-rt/int_endianness.h +116 -0
  500. data/modules/emscripten/system/lib/compiler-rt/int_lib.h +46 -0
  501. data/modules/emscripten/system/lib/compiler-rt/int_math.h +67 -0
  502. data/modules/emscripten/system/lib/compiler-rt/int_types.h +140 -0
  503. data/modules/emscripten/system/lib/compiler-rt/int_util.h +29 -0
  504. data/modules/emscripten/system/lib/compiler-rt/muldi3.c +56 -0
  505. data/modules/emscripten/system/lib/compiler-rt/readme.txt +20 -0
  506. data/modules/emscripten/system/lib/compiler-rt/udivdi3.c +36 -0
  507. data/modules/emscripten/system/lib/compiler-rt/udivmoddi4.c +251 -0
  508. data/modules/emscripten/system/lib/debugging.cpp +24 -0
  509. data/modules/emscripten/system/lib/dlmalloc.c +6299 -0
  510. data/modules/emscripten/system/lib/embind/bind.cpp +63 -0
  511. data/modules/emscripten/system/lib/libc/gen/err.c +49 -0
  512. data/modules/emscripten/system/lib/libc/gen/errx.c +49 -0
  513. data/modules/emscripten/system/lib/libc/gen/verr.c +58 -0
  514. data/modules/emscripten/system/lib/libc/gen/verrx.c +51 -0
  515. data/modules/emscripten/system/lib/libc/gen/vwarn.c +55 -0
  516. data/modules/emscripten/system/lib/libc/gen/vwarnx.c +48 -0
  517. data/modules/emscripten/system/lib/libc/gen/warn.c +49 -0
  518. data/modules/emscripten/system/lib/libc/gen/warnx.c +49 -0
  519. data/modules/emscripten/system/lib/libc/musl/COPYRIGHT +92 -0
  520. data/modules/emscripten/system/lib/libc/musl/readme.txt +1 -0
  521. data/modules/emscripten/system/lib/libc/musl/src/ctype/alpha.h +125 -0
  522. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswalnum.c +7 -0
  523. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswalpha.c +14 -0
  524. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswblank.c +8 -0
  525. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswcntrl.c +10 -0
  526. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswctype.c +63 -0
  527. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswdigit.c +9 -0
  528. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswgraph.c +7 -0
  529. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswlower.c +6 -0
  530. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswprint.c +19 -0
  531. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswpunct.c +12 -0
  532. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswspace.c +19 -0
  533. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswupper.c +6 -0
  534. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswxdigit.c +7 -0
  535. data/modules/emscripten/system/lib/libc/musl/src/ctype/nonspacing.h +62 -0
  536. data/modules/emscripten/system/lib/libc/musl/src/ctype/punct.h +109 -0
  537. data/modules/emscripten/system/lib/libc/musl/src/ctype/towctrans.c +268 -0
  538. data/modules/emscripten/system/lib/libc/musl/src/ctype/wcswidth.c +8 -0
  539. data/modules/emscripten/system/lib/libc/musl/src/ctype/wctrans.c +16 -0
  540. data/modules/emscripten/system/lib/libc/musl/src/ctype/wcwidth.c +29 -0
  541. data/modules/emscripten/system/lib/libc/musl/src/ctype/wide.h +42 -0
  542. data/modules/emscripten/system/lib/libc/musl/src/internal/libc.c +22 -0
  543. data/modules/emscripten/system/lib/libc/musl/src/internal/libc.h +71 -0
  544. data/modules/emscripten/system/lib/libc/musl/src/multibyte/btowc.c +7 -0
  545. data/modules/emscripten/system/lib/libc/musl/src/multibyte/internal.c +38 -0
  546. data/modules/emscripten/system/lib/libc/musl/src/multibyte/internal.h +22 -0
  547. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mblen.c +17 -0
  548. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbrlen.c +18 -0
  549. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbrtowc.c +57 -0
  550. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsinit.c +17 -0
  551. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsnrtowcs.c +65 -0
  552. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsrtowcs.c +100 -0
  553. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbstowcs.c +7 -0
  554. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbtowc.c +53 -0
  555. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcrtomb.c +38 -0
  556. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcsnrtombs.c +52 -0
  557. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcsrtombs.c +58 -0
  558. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcstombs.c +7 -0
  559. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wctob.c +8 -0
  560. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wctomb.c +18 -0
  561. data/modules/emscripten/system/lib/libc/musl/src/string/wcpcpy.c +6 -0
  562. data/modules/emscripten/system/lib/libc/musl/src/string/wcpncpy.c +6 -0
  563. data/modules/emscripten/system/lib/libc/musl/src/string/wcscasecmp.c +7 -0
  564. data/modules/emscripten/system/lib/libc/musl/src/string/wcscasecmp_l.c +6 -0
  565. data/modules/emscripten/system/lib/libc/musl/src/string/wcscat.c +7 -0
  566. data/modules/emscripten/system/lib/libc/musl/src/string/wcschr.c +8 -0
  567. data/modules/emscripten/system/lib/libc/musl/src/string/wcscmp.c +7 -0
  568. data/modules/emscripten/system/lib/libc/musl/src/string/wcscpy.c +8 -0
  569. data/modules/emscripten/system/lib/libc/musl/src/string/wcscspn.c +10 -0
  570. data/modules/emscripten/system/lib/libc/musl/src/string/wcsdup.c +11 -0
  571. data/modules/emscripten/system/lib/libc/musl/src/string/wcslen.c +8 -0
  572. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncasecmp.c +9 -0
  573. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncasecmp_l.c +6 -0
  574. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncat.c +10 -0
  575. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncmp.c +7 -0
  576. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncpy.c +9 -0
  577. data/modules/emscripten/system/lib/libc/musl/src/string/wcsnlen.c +8 -0
  578. data/modules/emscripten/system/lib/libc/musl/src/string/wcspbrk.c +7 -0
  579. data/modules/emscripten/system/lib/libc/musl/src/string/wcsrchr.c +8 -0
  580. data/modules/emscripten/system/lib/libc/musl/src/string/wcsspn.c +8 -0
  581. data/modules/emscripten/system/lib/libc/musl/src/string/wcsstr.c +108 -0
  582. data/modules/emscripten/system/lib/libc/musl/src/string/wcstok.c +12 -0
  583. data/modules/emscripten/system/lib/libc/musl/src/string/wcswcs.c +6 -0
  584. data/modules/emscripten/system/lib/libc/musl/src/string/wmemchr.c +8 -0
  585. data/modules/emscripten/system/lib/libc/musl/src/string/wmemcmp.c +8 -0
  586. data/modules/emscripten/system/lib/libc/musl/src/string/wmemcpy.c +9 -0
  587. data/modules/emscripten/system/lib/libc/musl/src/string/wmemmove.c +12 -0
  588. data/modules/emscripten/system/lib/libc/musl/src/string/wmemset.c +9 -0
  589. data/modules/emscripten/system/lib/libc/stdlib/getopt_long.c +511 -0
  590. data/modules/emscripten/system/lib/libc/stdlib/strtod.c +305 -0
  591. data/modules/emscripten/system/lib/libc.symbols +81 -0
  592. data/modules/emscripten/system/lib/libcextra.symbols +61 -0
  593. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +91 -0
  594. data/modules/emscripten/system/lib/libcxx/LICENSE.txt +76 -0
  595. data/modules/emscripten/system/lib/libcxx/algorithm.cpp +83 -0
  596. data/modules/emscripten/system/lib/libcxx/bind.cpp +30 -0
  597. data/modules/emscripten/system/lib/libcxx/chrono.cpp +132 -0
  598. data/modules/emscripten/system/lib/libcxx/condition_variable.cpp +81 -0
  599. data/modules/emscripten/system/lib/libcxx/debug.cpp +504 -0
  600. data/modules/emscripten/system/lib/libcxx/exception.cpp +226 -0
  601. data/modules/emscripten/system/lib/libcxx/future.cpp +285 -0
  602. data/modules/emscripten/system/lib/libcxx/hash.cpp +564 -0
  603. data/modules/emscripten/system/lib/libcxx/ios.cpp +455 -0
  604. data/modules/emscripten/system/lib/libcxx/iostream.cpp +68 -0
  605. data/modules/emscripten/system/lib/libcxx/locale.cpp +6093 -0
  606. data/modules/emscripten/system/lib/libcxx/memory.cpp +223 -0
  607. data/modules/emscripten/system/lib/libcxx/mutex.cpp +250 -0
  608. data/modules/emscripten/system/lib/libcxx/new.cpp +205 -0
  609. data/modules/emscripten/system/lib/libcxx/random.cpp +48 -0
  610. data/modules/emscripten/system/lib/libcxx/readme.txt +1 -0
  611. data/modules/emscripten/system/lib/libcxx/regex.cpp +325 -0
  612. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +196 -0
  613. data/modules/emscripten/system/lib/libcxx/string.cpp +687 -0
  614. data/modules/emscripten/system/lib/libcxx/strstream.cpp +329 -0
  615. data/modules/emscripten/system/lib/libcxx/support/solaris/README +4 -0
  616. data/modules/emscripten/system/lib/libcxx/support/solaris/mbsnrtowcs.inc +76 -0
  617. data/modules/emscripten/system/lib/libcxx/support/solaris/wcsnrtombs.inc +93 -0
  618. data/modules/emscripten/system/lib/libcxx/support/solaris/xlocale.c +245 -0
  619. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +94 -0
  620. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +70 -0
  621. data/modules/emscripten/system/lib/libcxx/symbols +2927 -0
  622. data/modules/emscripten/system/lib/libcxx/system_error.cpp +201 -0
  623. data/modules/emscripten/system/lib/libcxx/thread.cpp +208 -0
  624. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +60 -0
  625. data/modules/emscripten/system/lib/libcxx/utility.cpp +17 -0
  626. data/modules/emscripten/system/lib/libcxx/valarray.cpp +54 -0
  627. data/modules/emscripten/system/lib/libcxxabi/CREDITS.TXT +38 -0
  628. data/modules/emscripten/system/lib/libcxxabi/LICENSE.TXT +76 -0
  629. data/modules/emscripten/system/lib/libcxxabi/include/cxa_demangle.h +167 -0
  630. data/modules/emscripten/system/lib/libcxxabi/include/cxxabi.h +175 -0
  631. data/modules/emscripten/system/lib/libcxxabi/lib/buildit +99 -0
  632. data/modules/emscripten/system/lib/libcxxabi/readme.txt +1 -0
  633. data/modules/emscripten/system/lib/libcxxabi/src/abort_message.cpp +50 -0
  634. data/modules/emscripten/system/lib/libcxxabi/src/abort_message.h +33 -0
  635. data/modules/emscripten/system/lib/libcxxabi/src/cxa_aux_runtime.cpp +34 -0
  636. data/modules/emscripten/system/lib/libcxxabi/src/cxa_demangle.cpp +11036 -0
  637. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception.cpp +622 -0
  638. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception.hpp +123 -0
  639. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception_storage.cpp +91 -0
  640. data/modules/emscripten/system/lib/libcxxabi/src/cxa_guard.cpp +231 -0
  641. data/modules/emscripten/system/lib/libcxxabi/src/cxa_handlers.cpp +125 -0
  642. data/modules/emscripten/system/lib/libcxxabi/src/cxa_handlers.hpp +54 -0
  643. data/modules/emscripten/system/lib/libcxxabi/src/cxa_new_delete.cpp +242 -0
  644. data/modules/emscripten/system/lib/libcxxabi/src/cxa_personality.cpp +1055 -0
  645. data/modules/emscripten/system/lib/libcxxabi/src/cxa_unexpected.cpp +27 -0
  646. data/modules/emscripten/system/lib/libcxxabi/src/cxa_vector.cpp +367 -0
  647. data/modules/emscripten/system/lib/libcxxabi/src/cxa_virtual.cpp +31 -0
  648. data/modules/emscripten/system/lib/libcxxabi/src/exception.cpp +41 -0
  649. data/modules/emscripten/system/lib/libcxxabi/src/fallback_malloc.ipp +174 -0
  650. data/modules/emscripten/system/lib/libcxxabi/src/private_typeinfo.cpp +1146 -0
  651. data/modules/emscripten/system/lib/libcxxabi/src/private_typeinfo.h +248 -0
  652. data/modules/emscripten/system/lib/libcxxabi/src/stdexcept.cpp +169 -0
  653. data/modules/emscripten/system/lib/libcxxabi/src/typeinfo.cpp +53 -0
  654. data/modules/emscripten/system/lib/libcxxabi/symbols +236 -0
  655. data/modules/emscripten/system/lib/sdl.cpp +13 -0
  656. data/modules/emscripten/system/lib/sdl.symbols +1 -0
  657. data/modules/emscripten/tests/hello_world.js +92 -0
  658. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/CppHeaderParser.py +2347 -0
  659. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/__init__.py +4 -0
  660. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/doc/CppHeaderParser.html +657 -0
  661. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h +147 -0
  662. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py +74 -0
  663. data/modules/emscripten/third_party/CppHeaderParser/PKG-INFO +249 -0
  664. data/modules/emscripten/third_party/CppHeaderParser/README.html +544 -0
  665. data/modules/emscripten/third_party/CppHeaderParser/README.txt +226 -0
  666. data/modules/emscripten/third_party/CppHeaderParser/setup.py +43 -0
  667. data/modules/emscripten/third_party/ansidecl.h +371 -0
  668. data/modules/emscripten/third_party/closure-compiler/COPYING +202 -0
  669. data/modules/emscripten/third_party/closure-compiler/README +292 -0
  670. data/modules/emscripten/third_party/closure-compiler/compiler.jar +0 -0
  671. data/modules/emscripten/third_party/closure-compiler/readme.txt +3 -0
  672. data/modules/emscripten/third_party/cp-demangle.h +161 -0
  673. data/modules/emscripten/third_party/demangle.h +549 -0
  674. data/modules/emscripten/third_party/demangler.py +49 -0
  675. data/modules/emscripten/third_party/gcc_demangler.c +4226 -0
  676. data/modules/emscripten/third_party/gcc_demangler.js +21282 -0
  677. data/modules/emscripten/third_party/jni/emjvm.cpp +133 -0
  678. data/modules/emscripten/third_party/jni/emjvm.h +8 -0
  679. data/modules/emscripten/third_party/jni/emjvm.js +185 -0
  680. data/modules/emscripten/third_party/jni/jni.h +1154 -0
  681. data/modules/emscripten/third_party/libiberty.h +634 -0
  682. data/modules/emscripten/third_party/lzma.js/README.markdown +37 -0
  683. data/modules/emscripten/third_party/lzma.js/doit.sh +37 -0
  684. data/modules/emscripten/third_party/lzma.js/lzip/AUTHORS +7 -0
  685. data/modules/emscripten/third_party/lzma.js/lzip/COPYING +676 -0
  686. data/modules/emscripten/third_party/lzma.js/lzip/ChangeLog +201 -0
  687. data/modules/emscripten/third_party/lzma.js/lzip/INSTALL +56 -0
  688. data/modules/emscripten/third_party/lzma.js/lzip/Makefile +160 -0
  689. data/modules/emscripten/third_party/lzma.js/lzip/Makefile.in +138 -0
  690. data/modules/emscripten/third_party/lzma.js/lzip/NEWS +22 -0
  691. data/modules/emscripten/third_party/lzma.js/lzip/README +77 -0
  692. data/modules/emscripten/third_party/lzma.js/lzip/arg_parser.cc +204 -0
  693. data/modules/emscripten/third_party/lzma.js/lzip/arg_parser.h +106 -0
  694. data/modules/emscripten/third_party/lzma.js/lzip/configure +192 -0
  695. data/modules/emscripten/third_party/lzma.js/lzip/decoder.cc +252 -0
  696. data/modules/emscripten/third_party/lzma.js/lzip/decoder.h +268 -0
  697. data/modules/emscripten/third_party/lzma.js/lzip/encoder.cc +643 -0
  698. data/modules/emscripten/third_party/lzma.js/lzip/encoder.h +582 -0
  699. data/modules/emscripten/third_party/lzma.js/lzip/fast_encoder.cc +378 -0
  700. data/modules/emscripten/third_party/lzma.js/lzip/fast_encoder.h +171 -0
  701. data/modules/emscripten/third_party/lzma.js/lzip/lzip.h +264 -0
  702. data/modules/emscripten/third_party/lzma.js/lzip/main.cc +545 -0
  703. data/modules/emscripten/third_party/lzma.js/lzma-decoder.js +27 -0
  704. data/modules/emscripten/third_party/lzma.js/lzma-full.js +27 -0
  705. data/modules/emscripten/third_party/lzma.js/native_test.sh +5 -0
  706. data/modules/emscripten/third_party/lzma.js/post.js +13 -0
  707. data/modules/emscripten/third_party/lzma.js/pre.js +13 -0
  708. data/modules/emscripten/third_party/lzma.js/test-decoder.js +39 -0
  709. data/modules/emscripten/third_party/lzma.js/test-full.html +9 -0
  710. data/modules/emscripten/third_party/lzma.js/test-full.js +78 -0
  711. data/modules/emscripten/third_party/ply/ANNOUNCE +40 -0
  712. data/modules/emscripten/third_party/ply/CHANGES +1093 -0
  713. data/modules/emscripten/third_party/ply/PKG-INFO +22 -0
  714. data/modules/emscripten/third_party/ply/README +271 -0
  715. data/modules/emscripten/third_party/ply/TODO +16 -0
  716. data/modules/emscripten/third_party/ply/doc/internal.html +874 -0
  717. data/modules/emscripten/third_party/ply/doc/makedoc.py +194 -0
  718. data/modules/emscripten/third_party/ply/doc/ply.html +3262 -0
  719. data/modules/emscripten/third_party/ply/example/BASIC/README +79 -0
  720. data/modules/emscripten/third_party/ply/example/BASIC/basic.py +71 -0
  721. data/modules/emscripten/third_party/ply/example/BASIC/basiclex.py +74 -0
  722. data/modules/emscripten/third_party/ply/example/BASIC/basiclog.py +79 -0
  723. data/modules/emscripten/third_party/ply/example/BASIC/basinterp.py +441 -0
  724. data/modules/emscripten/third_party/ply/example/BASIC/basparse.py +424 -0
  725. data/modules/emscripten/third_party/ply/example/BASIC/dim.bas +14 -0
  726. data/modules/emscripten/third_party/ply/example/BASIC/func.bas +5 -0
  727. data/modules/emscripten/third_party/ply/example/BASIC/gcd.bas +22 -0
  728. data/modules/emscripten/third_party/ply/example/BASIC/gosub.bas +13 -0
  729. data/modules/emscripten/third_party/ply/example/BASIC/hello.bas +4 -0
  730. data/modules/emscripten/third_party/ply/example/BASIC/linear.bas +17 -0
  731. data/modules/emscripten/third_party/ply/example/BASIC/maxsin.bas +12 -0
  732. data/modules/emscripten/third_party/ply/example/BASIC/powers.bas +13 -0
  733. data/modules/emscripten/third_party/ply/example/BASIC/rand.bas +4 -0
  734. data/modules/emscripten/third_party/ply/example/BASIC/sales.bas +20 -0
  735. data/modules/emscripten/third_party/ply/example/BASIC/sears.bas +18 -0
  736. data/modules/emscripten/third_party/ply/example/BASIC/sqrt1.bas +5 -0
  737. data/modules/emscripten/third_party/ply/example/BASIC/sqrt2.bas +4 -0
  738. data/modules/emscripten/third_party/ply/example/GardenSnake/GardenSnake.py +709 -0
  739. data/modules/emscripten/third_party/ply/example/GardenSnake/README +5 -0
  740. data/modules/emscripten/third_party/ply/example/README +10 -0
  741. data/modules/emscripten/third_party/ply/example/ansic/README +2 -0
  742. data/modules/emscripten/third_party/ply/example/ansic/clex.py +164 -0
  743. data/modules/emscripten/third_party/ply/example/ansic/cparse.py +863 -0
  744. data/modules/emscripten/third_party/ply/example/calc/calc.py +107 -0
  745. data/modules/emscripten/third_party/ply/example/calcdebug/calc.py +113 -0
  746. data/modules/emscripten/third_party/ply/example/classcalc/calc.py +157 -0
  747. data/modules/emscripten/third_party/ply/example/cleanup.sh +2 -0
  748. data/modules/emscripten/third_party/ply/example/closurecalc/calc.py +130 -0
  749. data/modules/emscripten/third_party/ply/example/hedit/hedit.py +48 -0
  750. data/modules/emscripten/third_party/ply/example/newclasscalc/calc.py +160 -0
  751. data/modules/emscripten/third_party/ply/example/optcalc/README +9 -0
  752. data/modules/emscripten/third_party/ply/example/optcalc/calc.py +119 -0
  753. data/modules/emscripten/third_party/ply/example/unicalc/calc.py +117 -0
  754. data/modules/emscripten/third_party/ply/example/yply/README +41 -0
  755. data/modules/emscripten/third_party/ply/example/yply/ylex.py +112 -0
  756. data/modules/emscripten/third_party/ply/example/yply/yparse.py +217 -0
  757. data/modules/emscripten/third_party/ply/example/yply/yply.py +53 -0
  758. data/modules/emscripten/third_party/ply/ply/__init__.py +4 -0
  759. data/modules/emscripten/third_party/ply/ply/cpp.py +898 -0
  760. data/modules/emscripten/third_party/ply/ply/ctokens.py +133 -0
  761. data/modules/emscripten/third_party/ply/ply/lex.py +1058 -0
  762. data/modules/emscripten/third_party/ply/ply/yacc.py +3276 -0
  763. data/modules/emscripten/third_party/ply/setup.py +31 -0
  764. data/modules/emscripten/third_party/ply/test/README +7 -0
  765. data/modules/emscripten/third_party/ply/test/calclex.py +49 -0
  766. data/modules/emscripten/third_party/ply/test/cleanup.sh +4 -0
  767. data/modules/emscripten/third_party/ply/test/lex_closure.py +54 -0
  768. data/modules/emscripten/third_party/ply/test/lex_doc1.py +26 -0
  769. data/modules/emscripten/third_party/ply/test/lex_dup1.py +29 -0
  770. data/modules/emscripten/third_party/ply/test/lex_dup2.py +33 -0
  771. data/modules/emscripten/third_party/ply/test/lex_dup3.py +31 -0
  772. data/modules/emscripten/third_party/ply/test/lex_empty.py +20 -0
  773. data/modules/emscripten/third_party/ply/test/lex_error1.py +24 -0
  774. data/modules/emscripten/third_party/ply/test/lex_error2.py +26 -0
  775. data/modules/emscripten/third_party/ply/test/lex_error3.py +27 -0
  776. data/modules/emscripten/third_party/ply/test/lex_error4.py +27 -0
  777. data/modules/emscripten/third_party/ply/test/lex_hedit.py +47 -0
  778. data/modules/emscripten/third_party/ply/test/lex_ignore.py +31 -0
  779. data/modules/emscripten/third_party/ply/test/lex_ignore2.py +29 -0
  780. data/modules/emscripten/third_party/ply/test/lex_literal1.py +25 -0
  781. data/modules/emscripten/third_party/ply/test/lex_literal2.py +25 -0
  782. data/modules/emscripten/third_party/ply/test/lex_many_tokens.py +27 -0
  783. data/modules/emscripten/third_party/ply/test/lex_module.py +10 -0
  784. data/modules/emscripten/third_party/ply/test/lex_module_import.py +42 -0
  785. data/modules/emscripten/third_party/ply/test/lex_object.py +55 -0
  786. data/modules/emscripten/third_party/ply/test/lex_opt_alias.py +54 -0
  787. data/modules/emscripten/third_party/ply/test/lex_optimize.py +50 -0
  788. data/modules/emscripten/third_party/ply/test/lex_optimize2.py +50 -0
  789. data/modules/emscripten/third_party/ply/test/lex_optimize3.py +52 -0
  790. data/modules/emscripten/third_party/ply/test/lex_re1.py +27 -0
  791. data/modules/emscripten/third_party/ply/test/lex_re2.py +27 -0
  792. data/modules/emscripten/third_party/ply/test/lex_re3.py +29 -0
  793. data/modules/emscripten/third_party/ply/test/lex_rule1.py +27 -0
  794. data/modules/emscripten/third_party/ply/test/lex_rule2.py +29 -0
  795. data/modules/emscripten/third_party/ply/test/lex_rule3.py +27 -0
  796. data/modules/emscripten/third_party/ply/test/lex_state1.py +40 -0
  797. data/modules/emscripten/third_party/ply/test/lex_state2.py +40 -0
  798. data/modules/emscripten/third_party/ply/test/lex_state3.py +42 -0
  799. data/modules/emscripten/third_party/ply/test/lex_state4.py +41 -0
  800. data/modules/emscripten/third_party/ply/test/lex_state5.py +40 -0
  801. data/modules/emscripten/third_party/ply/test/lex_state_noerror.py +39 -0
  802. data/modules/emscripten/third_party/ply/test/lex_state_norule.py +40 -0
  803. data/modules/emscripten/third_party/ply/test/lex_state_try.py +45 -0
  804. data/modules/emscripten/third_party/ply/test/lex_token1.py +19 -0
  805. data/modules/emscripten/third_party/ply/test/lex_token2.py +22 -0
  806. data/modules/emscripten/third_party/ply/test/lex_token3.py +24 -0
  807. data/modules/emscripten/third_party/ply/test/lex_token4.py +26 -0
  808. data/modules/emscripten/third_party/ply/test/lex_token5.py +31 -0
  809. data/modules/emscripten/third_party/ply/test/lex_token_dup.py +29 -0
  810. data/modules/emscripten/third_party/ply/test/testlex.py +606 -0
  811. data/modules/emscripten/third_party/ply/test/testyacc.py +347 -0
  812. data/modules/emscripten/third_party/ply/test/yacc_badargs.py +68 -0
  813. data/modules/emscripten/third_party/ply/test/yacc_badid.py +77 -0
  814. data/modules/emscripten/third_party/ply/test/yacc_badprec.py +64 -0
  815. data/modules/emscripten/third_party/ply/test/yacc_badprec2.py +68 -0
  816. data/modules/emscripten/third_party/ply/test/yacc_badprec3.py +68 -0
  817. data/modules/emscripten/third_party/ply/test/yacc_badrule.py +68 -0
  818. data/modules/emscripten/third_party/ply/test/yacc_badtok.py +68 -0
  819. data/modules/emscripten/third_party/ply/test/yacc_dup.py +68 -0
  820. data/modules/emscripten/third_party/ply/test/yacc_error1.py +68 -0
  821. data/modules/emscripten/third_party/ply/test/yacc_error2.py +68 -0
  822. data/modules/emscripten/third_party/ply/test/yacc_error3.py +67 -0
  823. data/modules/emscripten/third_party/ply/test/yacc_error4.py +72 -0
  824. data/modules/emscripten/third_party/ply/test/yacc_inf.py +56 -0
  825. data/modules/emscripten/third_party/ply/test/yacc_literal.py +69 -0
  826. data/modules/emscripten/third_party/ply/test/yacc_misplaced.py +68 -0
  827. data/modules/emscripten/third_party/ply/test/yacc_missing1.py +68 -0
  828. data/modules/emscripten/third_party/ply/test/yacc_nested.py +33 -0
  829. data/modules/emscripten/third_party/ply/test/yacc_nodoc.py +67 -0
  830. data/modules/emscripten/third_party/ply/test/yacc_noerror.py +66 -0
  831. data/modules/emscripten/third_party/ply/test/yacc_nop.py +68 -0
  832. data/modules/emscripten/third_party/ply/test/yacc_notfunc.py +66 -0
  833. data/modules/emscripten/third_party/ply/test/yacc_notok.py +67 -0
  834. data/modules/emscripten/third_party/ply/test/yacc_prec1.py +68 -0
  835. data/modules/emscripten/third_party/ply/test/yacc_rr.py +72 -0
  836. data/modules/emscripten/third_party/ply/test/yacc_rr_unused.py +30 -0
  837. data/modules/emscripten/third_party/ply/test/yacc_simple.py +68 -0
  838. data/modules/emscripten/third_party/ply/test/yacc_sr.py +63 -0
  839. data/modules/emscripten/third_party/ply/test/yacc_term1.py +68 -0
  840. data/modules/emscripten/third_party/ply/test/yacc_unused.py +77 -0
  841. data/modules/emscripten/third_party/ply/test/yacc_unused_rule.py +72 -0
  842. data/modules/emscripten/third_party/ply/test/yacc_uprec.py +63 -0
  843. data/modules/emscripten/third_party/ply/test/yacc_uprec2.py +63 -0
  844. data/modules/emscripten/third_party/readme.txt +7 -0
  845. data/modules/emscripten/third_party/websockify/CHANGES.txt +23 -0
  846. data/modules/emscripten/third_party/websockify/LICENSE.txt +16 -0
  847. data/modules/emscripten/third_party/websockify/MANIFEST.in +1 -0
  848. data/modules/emscripten/third_party/websockify/Makefile +11 -0
  849. data/modules/emscripten/third_party/websockify/README.md +168 -0
  850. data/modules/emscripten/third_party/websockify/Windows/Windows Service Readme.txt +39 -0
  851. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Program.cs +24 -0
  852. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.Designer.cs +61 -0
  853. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.cs +19 -0
  854. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.resx +129 -0
  855. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Properties/AssemblyInfo.cs +36 -0
  856. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Service1.Designer.cs +37 -0
  857. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Service1.cs +41 -0
  858. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/noVNC Websocket.csproj +75 -0
  859. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/noVNC Websocket.sln +20 -0
  860. data/modules/emscripten/third_party/websockify/docs/LICENSE.GPL-3 +621 -0
  861. data/modules/emscripten/third_party/websockify/docs/LICENSE.LGPL-3 +165 -0
  862. data/modules/emscripten/third_party/websockify/docs/LICENSE.MPL-2.0 +373 -0
  863. data/modules/emscripten/third_party/websockify/docs/TODO +9 -0
  864. data/modules/emscripten/third_party/websockify/docs/flash_policy.txt +4 -0
  865. data/modules/emscripten/third_party/websockify/docs/latency_results.txt +114 -0
  866. data/modules/emscripten/third_party/websockify/docs/notes +17 -0
  867. data/modules/emscripten/third_party/websockify/docs/release.txt +9 -0
  868. data/modules/emscripten/third_party/websockify/docs/websockify.1 +110 -0
  869. data/modules/emscripten/third_party/websockify/include/VT100.js +919 -0
  870. data/modules/emscripten/third_party/websockify/include/base64.js +114 -0
  871. data/modules/emscripten/third_party/websockify/include/keysym.js +99 -0
  872. data/modules/emscripten/third_party/websockify/include/util.js +359 -0
  873. data/modules/emscripten/third_party/websockify/include/web-socket-js/README.txt +109 -0
  874. data/modules/emscripten/third_party/websockify/include/web-socket-js/WebSocketMain.swf +0 -0
  875. data/modules/emscripten/third_party/websockify/include/web-socket-js/swfobject.js +4 -0
  876. data/modules/emscripten/third_party/websockify/include/web-socket-js/web_socket.js +391 -0
  877. data/modules/emscripten/third_party/websockify/include/websock.js +422 -0
  878. data/modules/emscripten/third_party/websockify/include/webutil.js +216 -0
  879. data/modules/emscripten/third_party/websockify/include/wsirc.js +235 -0
  880. data/modules/emscripten/third_party/websockify/include/wstelnet.js +335 -0
  881. data/modules/emscripten/third_party/websockify/other/Makefile +14 -0
  882. data/modules/emscripten/third_party/websockify/other/README.md +51 -0
  883. data/modules/emscripten/third_party/websockify/other/launch.sh +108 -0
  884. data/modules/emscripten/third_party/websockify/other/project.clj +13 -0
  885. data/modules/emscripten/third_party/websockify/other/websocket.c +802 -0
  886. data/modules/emscripten/third_party/websockify/other/websocket.h +84 -0
  887. data/modules/emscripten/third_party/websockify/other/websocket.rb +456 -0
  888. data/modules/emscripten/third_party/websockify/other/websockify.c +385 -0
  889. data/modules/emscripten/third_party/websockify/other/websockify.clj +233 -0
  890. data/modules/emscripten/third_party/websockify/other/websockify.js +196 -0
  891. data/modules/emscripten/third_party/websockify/other/websockify.rb +171 -0
  892. data/modules/emscripten/third_party/websockify/other/wswrap +22 -0
  893. data/modules/emscripten/third_party/websockify/rebind +18 -0
  894. data/modules/emscripten/third_party/websockify/rebind.c +94 -0
  895. data/modules/emscripten/third_party/websockify/run +5 -0
  896. data/modules/emscripten/third_party/websockify/setup.py +30 -0
  897. data/modules/emscripten/third_party/websockify/tests/b64_vs_utf8.py +29 -0
  898. data/modules/emscripten/third_party/websockify/tests/base64.html +91 -0
  899. data/modules/emscripten/third_party/websockify/tests/base64.js +12 -0
  900. data/modules/emscripten/third_party/websockify/tests/echo.html +148 -0
  901. data/modules/emscripten/third_party/websockify/tests/echo.py +75 -0
  902. data/modules/emscripten/third_party/websockify/tests/echo.rb +62 -0
  903. data/modules/emscripten/third_party/websockify/tests/latency.html +290 -0
  904. data/modules/emscripten/third_party/websockify/tests/latency.py +75 -0
  905. data/modules/emscripten/third_party/websockify/tests/load.html +250 -0
  906. data/modules/emscripten/third_party/websockify/tests/load.py +167 -0
  907. data/modules/emscripten/third_party/websockify/tests/plain_echo.html +168 -0
  908. data/modules/emscripten/third_party/websockify/tests/simple.html +68 -0
  909. data/modules/emscripten/third_party/websockify/tests/utf8-list.py +22 -0
  910. data/modules/emscripten/third_party/websockify/websockify/__init__.py +2 -0
  911. data/modules/emscripten/third_party/websockify/websockify/websocket.py +982 -0
  912. data/modules/emscripten/third_party/websockify/websockify/websocketproxy.py +393 -0
  913. data/modules/emscripten/third_party/websockify/websockify.py +5 -0
  914. data/modules/emscripten/third_party/websockify/wsirc.html +99 -0
  915. data/modules/emscripten/third_party/websockify/wstelnet.html +74 -0
  916. data/modules/emscripten/tools/__init__.py +0 -0
  917. data/modules/emscripten/tools/__init__.pyc +0 -0
  918. data/modules/emscripten/tools/autodebugger.py +289 -0
  919. data/modules/emscripten/tools/autodebugger_c.py +37 -0
  920. data/modules/emscripten/tools/autodebugger_indenter.py +18 -0
  921. data/modules/emscripten/tools/autodebugger_js.py +47 -0
  922. data/modules/emscripten/tools/autodediffer.py +60 -0
  923. data/modules/emscripten/tools/bindings_generator.py +832 -0
  924. data/modules/emscripten/tools/bisect_pair.py +88 -0
  925. data/modules/emscripten/tools/cache.py +198 -0
  926. data/modules/emscripten/tools/cache.pyc +0 -0
  927. data/modules/emscripten/tools/clean_webconsole.py +34 -0
  928. data/modules/emscripten/tools/crunch-worker.js +124 -0
  929. data/modules/emscripten/tools/diff_autodebugger.py +15 -0
  930. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +5129 -0
  931. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +6861 -0
  932. data/modules/emscripten/tools/eliminator/eliminator-test-output.js +6122 -0
  933. data/modules/emscripten/tools/eliminator/eliminator-test.js +8856 -0
  934. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/README.html +888 -0
  935. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/README.org +463 -0
  936. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/bin/uglifyjs +317 -0
  937. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/docstyle.css +75 -0
  938. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/object-ast.js +75 -0
  939. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js +1363 -0
  940. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/process.js +2005 -0
  941. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/squeeze-more.js +51 -0
  942. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/package.json +22 -0
  943. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/beautify.js +28 -0
  944. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/testparser.js +402 -0
  945. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array1.js +1 -0
  946. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array2.js +1 -0
  947. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array3.js +1 -0
  948. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array4.js +1 -0
  949. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/assignment.js +1 -0
  950. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/concatstring.js +1 -0
  951. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/const.js +1 -0
  952. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js +1 -0
  953. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/forstatement.js +1 -0
  954. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/if.js +1 -0
  955. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js +1 -0
  956. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js +1 -0
  957. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue10.js +1 -0
  958. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue11.js +1 -0
  959. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue13.js +1 -0
  960. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue14.js +1 -0
  961. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue16.js +1 -0
  962. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue17.js +1 -0
  963. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue20.js +1 -0
  964. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue21.js +1 -0
  965. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue25.js +1 -0
  966. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue27.js +1 -0
  967. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue28.js +1 -0
  968. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue29.js +1 -0
  969. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue30.js +1 -0
  970. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue34.js +1 -0
  971. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue4.js +1 -0
  972. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue48.js +1 -0
  973. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue50.js +1 -0
  974. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue53.js +1 -0
  975. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js +1 -0
  976. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue68.js +1 -0
  977. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue69.js +1 -0
  978. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue9.js +1 -0
  979. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/mangle.js +1 -0
  980. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js +1 -0
  981. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/var.js +1 -0
  982. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/with.js +1 -0
  983. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array1.js +3 -0
  984. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array2.js +4 -0
  985. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array3.js +4 -0
  986. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array4.js +6 -0
  987. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/assignment.js +20 -0
  988. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/concatstring.js +3 -0
  989. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/const.js +5 -0
  990. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js +4 -0
  991. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/forstatement.js +10 -0
  992. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/if.js +6 -0
  993. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/ifreturn.js +9 -0
  994. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js +16 -0
  995. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue10.js +1 -0
  996. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue11.js +3 -0
  997. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue13.js +1 -0
  998. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue14.js +1 -0
  999. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue16.js +1 -0
  1000. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue17.js +4 -0
  1001. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue20.js +1 -0
  1002. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue21.js +6 -0
  1003. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue25.js +7 -0
  1004. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue27.js +1 -0
  1005. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue28.js +3 -0
  1006. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue29.js +1 -0
  1007. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue30.js +3 -0
  1008. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue34.js +3 -0
  1009. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue4.js +3 -0
  1010. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue48.js +1 -0
  1011. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue50.js +9 -0
  1012. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue53.js +1 -0
  1013. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue54.1.js +3 -0
  1014. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue68.js +5 -0
  1015. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue69.js +1 -0
  1016. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue9.js +4 -0
  1017. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/mangle.js +5 -0
  1018. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/strict-equals.js +3 -0
  1019. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/var.js +3 -0
  1020. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/with.js +2 -0
  1021. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/scripts.js +55 -0
  1022. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/hoist.js +33 -0
  1023. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/instrument.js +97 -0
  1024. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/instrument2.js +138 -0
  1025. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/test.js +16 -0
  1026. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/uglify-js.js +17 -0
  1027. data/modules/emscripten/tools/eliminator/safe-eliminator-test-output.js +85 -0
  1028. data/modules/emscripten/tools/eliminator/safe-eliminator-test.js +103 -0
  1029. data/modules/emscripten/tools/emconfiguren.py +19 -0
  1030. data/modules/emscripten/tools/emmaken.py +230 -0
  1031. data/modules/emscripten/tools/emmakenxx.py +18 -0
  1032. data/modules/emscripten/tools/exec_llvm.py +50 -0
  1033. data/modules/emscripten/tools/file2json.py +49 -0
  1034. data/modules/emscripten/tools/file_packager.py +649 -0
  1035. data/modules/emscripten/tools/find_bigfuncs.py +23 -0
  1036. data/modules/emscripten/tools/find_bigis.py +18 -0
  1037. data/modules/emscripten/tools/fix_closure.py +88 -0
  1038. data/modules/emscripten/tools/ie7_fix.py +14 -0
  1039. data/modules/emscripten/tools/js-optimizer.js +3440 -0
  1040. data/modules/emscripten/tools/js_optimizer.py +341 -0
  1041. data/modules/emscripten/tools/js_optimizer.pyc +0 -0
  1042. data/modules/emscripten/tools/jsrun.py +27 -0
  1043. data/modules/emscripten/tools/jsrun.pyc +0 -0
  1044. data/modules/emscripten/tools/ll-strip.py +56 -0
  1045. data/modules/emscripten/tools/make_file.py +19 -0
  1046. data/modules/emscripten/tools/make_minigzip.py +13 -0
  1047. data/modules/emscripten/tools/namespacer.py +95 -0
  1048. data/modules/emscripten/tools/nativize_llvm.py +34 -0
  1049. data/modules/emscripten/tools/node_modules/source-map/CHANGELOG.md +58 -0
  1050. data/modules/emscripten/tools/node_modules/source-map/LICENSE +28 -0
  1051. data/modules/emscripten/tools/node_modules/source-map/Makefile.dryice.js +166 -0
  1052. data/modules/emscripten/tools/node_modules/source-map/README.md +347 -0
  1053. data/modules/emscripten/tools/node_modules/source-map/build/assert-shim.js +56 -0
  1054. data/modules/emscripten/tools/node_modules/source-map/build/mini-require.js +152 -0
  1055. data/modules/emscripten/tools/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  1056. data/modules/emscripten/tools/node_modules/source-map/build/prefix-utils.jsm +18 -0
  1057. data/modules/emscripten/tools/node_modules/source-map/build/suffix-browser.js +8 -0
  1058. data/modules/emscripten/tools/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  1059. data/modules/emscripten/tools/node_modules/source-map/build/suffix-utils.jsm +21 -0
  1060. data/modules/emscripten/tools/node_modules/source-map/build/test-prefix.js +8 -0
  1061. data/modules/emscripten/tools/node_modules/source-map/build/test-suffix.js +3 -0
  1062. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/array-set.js +96 -0
  1063. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/base64-vlq.js +144 -0
  1064. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/base64.js +42 -0
  1065. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/binary-search.js +81 -0
  1066. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-map-consumer.js +430 -0
  1067. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-map-generator.js +381 -0
  1068. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-node.js +353 -0
  1069. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/util.js +117 -0
  1070. data/modules/emscripten/tools/node_modules/source-map/lib/source-map.js +8 -0
  1071. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  1072. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/README.md +119 -0
  1073. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  1074. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/package.json +33 -0
  1075. data/modules/emscripten/tools/node_modules/source-map/package.json +74 -0
  1076. data/modules/emscripten/tools/node_modules/source-map/test/run-tests.js +73 -0
  1077. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-api.js +26 -0
  1078. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-array-set.js +71 -0
  1079. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-base64-vlq.js +24 -0
  1080. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-base64.js +35 -0
  1081. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  1082. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-dog-fooding.js +72 -0
  1083. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-map-consumer.js +306 -0
  1084. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-map-generator.js +391 -0
  1085. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-node.js +282 -0
  1086. data/modules/emscripten/tools/node_modules/source-map/test/source-map/util.js +152 -0
  1087. data/modules/emscripten/tools/reproduceriter.js +216 -0
  1088. data/modules/emscripten/tools/reproduceriter.py +160 -0
  1089. data/modules/emscripten/tools/response_file.py +28 -0
  1090. data/modules/emscripten/tools/response_file.pyc +0 -0
  1091. data/modules/emscripten/tools/scan_js.py +20 -0
  1092. data/modules/emscripten/tools/scan_ll.py +18 -0
  1093. data/modules/emscripten/tools/scons/site_scons/site_tools/emscripten/__init__.py +3 -0
  1094. data/modules/emscripten/tools/scons/site_scons/site_tools/emscripten/emscripten.py +46 -0
  1095. data/modules/emscripten/tools/settings_template_readonly.py +47 -0
  1096. data/modules/emscripten/tools/shared.py +1437 -0
  1097. data/modules/emscripten/tools/shared.pyc +0 -0
  1098. data/modules/emscripten/tools/source-maps/sourcemap2json.js +15 -0
  1099. data/modules/emscripten/tools/source-maps/sourcemapper.js +177 -0
  1100. data/modules/emscripten/tools/split.py +97 -0
  1101. data/modules/emscripten/tools/tempfiles.py +40 -0
  1102. data/modules/emscripten/tools/tempfiles.pyc +0 -0
  1103. data/modules/emscripten/tools/test-js-optimizer-asm-last-output.js +75 -0
  1104. data/modules/emscripten/tools/test-js-optimizer-asm-last.js +91 -0
  1105. data/modules/emscripten/tools/test-js-optimizer-asm-outline-output.js +570 -0
  1106. data/modules/emscripten/tools/test-js-optimizer-asm-outline.js +606 -0
  1107. data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +540 -0
  1108. data/modules/emscripten/tools/test-js-optimizer-asm-pre.js +550 -0
  1109. data/modules/emscripten/tools/test-js-optimizer-asm-regs-min-output.js +36 -0
  1110. data/modules/emscripten/tools/test-js-optimizer-asm-regs-min.js +37 -0
  1111. data/modules/emscripten/tools/test-js-optimizer-asm-regs-output.js +106 -0
  1112. data/modules/emscripten/tools/test-js-optimizer-asm-regs.js +110 -0
  1113. data/modules/emscripten/tools/test-js-optimizer-asm-relocate-output.js +9 -0
  1114. data/modules/emscripten/tools/test-js-optimizer-asm-relocate.js +12 -0
  1115. data/modules/emscripten/tools/test-js-optimizer-output.js +291 -0
  1116. data/modules/emscripten/tools/test-js-optimizer-regs-output.js +232 -0
  1117. data/modules/emscripten/tools/test-js-optimizer-regs.js +237 -0
  1118. data/modules/emscripten/tools/test-js-optimizer-t2-output.js +91 -0
  1119. data/modules/emscripten/tools/test-js-optimizer-t2.js +92 -0
  1120. data/modules/emscripten/tools/test-js-optimizer-t2c-output.js +17 -0
  1121. data/modules/emscripten/tools/test-js-optimizer-t2c.js +18 -0
  1122. data/modules/emscripten/tools/test-js-optimizer-t3-output.js +49 -0
  1123. data/modules/emscripten/tools/test-js-optimizer-t3.js +50 -0
  1124. data/modules/emscripten/tools/test-js-optimizer.js +401 -0
  1125. data/modules/mruby/AUTHORS +18 -0
  1126. data/modules/mruby/CONTRIBUTING.md +65 -0
  1127. data/modules/mruby/ChangeLog +15 -0
  1128. data/modules/mruby/INSTALL +29 -0
  1129. data/modules/mruby/LEGAL +6 -0
  1130. data/modules/mruby/MITL +20 -0
  1131. data/modules/mruby/Makefile +18 -0
  1132. data/modules/mruby/NEWS +13 -0
  1133. data/modules/mruby/README.md +116 -0
  1134. data/modules/mruby/Rakefile +114 -0
  1135. data/modules/mruby/TODO +11 -0
  1136. data/modules/mruby/benchmark/ao-render.rb +315 -0
  1137. data/modules/mruby/benchmark/bm_so_lists.rb +47 -0
  1138. data/modules/mruby/benchmark/fib39.rb +8 -0
  1139. data/modules/mruby/build_config.rb +88 -0
  1140. data/modules/mruby/doc/compile/README.md +376 -0
  1141. data/modules/mruby/doc/mrbgems/README.md +254 -0
  1142. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/README.md +4 -0
  1143. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +23 -0
  1144. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +5 -0
  1145. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +20 -0
  1146. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/test/example.rb +7 -0
  1147. data/modules/mruby/examples/mrbgems/c_extension_example/README.md +4 -0
  1148. data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +23 -0
  1149. data/modules/mruby/examples/mrbgems/c_extension_example/src/example.c +20 -0
  1150. data/modules/mruby/examples/mrbgems/c_extension_example/test/example.c +7 -0
  1151. data/modules/mruby/examples/mrbgems/c_extension_example/test/example.rb +3 -0
  1152. data/modules/mruby/examples/mrbgems/ruby_extension_example/README.md +4 -0
  1153. data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +23 -0
  1154. data/modules/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +5 -0
  1155. data/modules/mruby/examples/mrbgems/ruby_extension_example/test/example.rb +3 -0
  1156. data/modules/mruby/examples/targets/ArduinoDue.rb +65 -0
  1157. data/modules/mruby/examples/targets/chipKitMax32.rb +68 -0
  1158. data/modules/mruby/include/mrbconf.h +87 -0
  1159. data/modules/mruby/include/mruby/array.h +63 -0
  1160. data/modules/mruby/include/mruby/class.h +75 -0
  1161. data/modules/mruby/include/mruby/compile.h +176 -0
  1162. data/modules/mruby/include/mruby/data.h +53 -0
  1163. data/modules/mruby/include/mruby/dump.h +151 -0
  1164. data/modules/mruby/include/mruby/gc.h +17 -0
  1165. data/modules/mruby/include/mruby/hash.h +54 -0
  1166. data/modules/mruby/include/mruby/irep.h +40 -0
  1167. data/modules/mruby/include/mruby/khash.h +257 -0
  1168. data/modules/mruby/include/mruby/numeric.h +32 -0
  1169. data/modules/mruby/include/mruby/proc.h +62 -0
  1170. data/modules/mruby/include/mruby/range.h +35 -0
  1171. data/modules/mruby/include/mruby/string.h +78 -0
  1172. data/modules/mruby/include/mruby/value.h +483 -0
  1173. data/modules/mruby/include/mruby/variable.h +78 -0
  1174. data/modules/mruby/include/mruby.h +388 -0
  1175. data/modules/mruby/minirake +477 -0
  1176. data/modules/mruby/mrbgems/default.gembox +61 -0
  1177. data/modules/mruby/mrbgems/full-core.gembox +9 -0
  1178. data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +4 -0
  1179. data/modules/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +204 -0
  1180. data/modules/mruby/mrbgems/mruby-array-ext/src/array.c +140 -0
  1181. data/modules/mruby/mrbgems/mruby-array-ext/test/array.rb +109 -0
  1182. data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +5 -0
  1183. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +365 -0
  1184. data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +5 -0
  1185. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +243 -0
  1186. data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +4 -0
  1187. data/modules/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +164 -0
  1188. data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +44 -0
  1189. data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +4 -0
  1190. data/modules/mruby/mrbgems/mruby-eval/src/eval.c +23 -0
  1191. data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +4 -0
  1192. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +251 -0
  1193. data/modules/mruby/mrbgems/mruby-fiber/test/fiber.rb +64 -0
  1194. data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +4 -0
  1195. data/modules/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +13 -0
  1196. data/modules/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +62 -0
  1197. data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +26 -0
  1198. data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +4 -0
  1199. data/modules/mruby/mrbgems/mruby-math/src/math.c +685 -0
  1200. data/modules/mruby/mrbgems/mruby-math/test/math.rb +136 -0
  1201. data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +4 -0
  1202. data/modules/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +31 -0
  1203. data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +10 -0
  1204. data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +4 -0
  1205. data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +108 -0
  1206. data/modules/mruby/mrbgems/mruby-object-ext/test/nil.rb +11 -0
  1207. data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +9 -0
  1208. data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +4 -0
  1209. data/modules/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +117 -0
  1210. data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +38 -0
  1211. data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +4 -0
  1212. data/modules/mruby/mrbgems/mruby-print/mrblib/print.rb +64 -0
  1213. data/modules/mruby/mrbgems/mruby-print/src/print.c +44 -0
  1214. data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +4 -0
  1215. data/modules/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +40 -0
  1216. data/modules/mruby/mrbgems/mruby-proc-ext/src/proc.c +97 -0
  1217. data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +41 -0
  1218. data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +4 -0
  1219. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.c +193 -0
  1220. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.h +48 -0
  1221. data/modules/mruby/mrbgems/mruby-random/src/random.c +231 -0
  1222. data/modules/mruby/mrbgems/mruby-random/src/random.h +12 -0
  1223. data/modules/mruby/mrbgems/mruby-random/test/random.rb +32 -0
  1224. data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +4 -0
  1225. data/modules/mruby/mrbgems/mruby-range-ext/src/range.c +141 -0
  1226. data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +20 -0
  1227. data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +4 -0
  1228. data/modules/mruby/mrbgems/mruby-sprintf/src/kernel.c +30 -0
  1229. data/modules/mruby/mrbgems/mruby-sprintf/src/sprintf.c +1102 -0
  1230. data/modules/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +3 -0
  1231. data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +4 -0
  1232. data/modules/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +52 -0
  1233. data/modules/mruby/mrbgems/mruby-string-ext/src/string.c +175 -0
  1234. data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +112 -0
  1235. data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +4 -0
  1236. data/modules/mruby/mrbgems/mruby-struct/mrblib/struct.rb +50 -0
  1237. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +818 -0
  1238. data/modules/mruby/mrbgems/mruby-struct/test/struct.rb +77 -0
  1239. data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +4 -0
  1240. data/modules/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +9 -0
  1241. data/modules/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +55 -0
  1242. data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +12 -0
  1243. data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +4 -0
  1244. data/modules/mruby/mrbgems/mruby-time/src/time.c +749 -0
  1245. data/modules/mruby/mrbgems/mruby-time/test/time.rb +201 -0
  1246. data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +4 -0
  1247. data/modules/mruby/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb +11 -0
  1248. data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +24 -0
  1249. data/modules/mruby/mrblib/array.rb +111 -0
  1250. data/modules/mruby/mrblib/class.rb +26 -0
  1251. data/modules/mruby/mrblib/compar.rb +104 -0
  1252. data/modules/mruby/mrblib/enum.rb +398 -0
  1253. data/modules/mruby/mrblib/error.rb +66 -0
  1254. data/modules/mruby/mrblib/hash.rb +193 -0
  1255. data/modules/mruby/mrblib/init_mrblib.c +14 -0
  1256. data/modules/mruby/mrblib/kernel.rb +46 -0
  1257. data/modules/mruby/mrblib/mrblib.rake +18 -0
  1258. data/modules/mruby/mrblib/numeric.rb +101 -0
  1259. data/modules/mruby/mrblib/print.rb +18 -0
  1260. data/modules/mruby/mrblib/range.rb +40 -0
  1261. data/modules/mruby/mrblib/string.rb +145 -0
  1262. data/modules/mruby/src/array.c +1150 -0
  1263. data/modules/mruby/src/backtrace.c +73 -0
  1264. data/modules/mruby/src/class.c +1942 -0
  1265. data/modules/mruby/src/codegen.c +2864 -0
  1266. data/modules/mruby/src/compar.c +13 -0
  1267. data/modules/mruby/src/crc.c +38 -0
  1268. data/modules/mruby/src/dump.c +542 -0
  1269. data/modules/mruby/src/enum.c +14 -0
  1270. data/modules/mruby/src/error.c +454 -0
  1271. data/modules/mruby/src/error.h +18 -0
  1272. data/modules/mruby/src/etc.c +204 -0
  1273. data/modules/mruby/src/gc.c +1542 -0
  1274. data/modules/mruby/src/hash.c +1261 -0
  1275. data/modules/mruby/src/init.c +62 -0
  1276. data/modules/mruby/src/kernel.c +1105 -0
  1277. data/modules/mruby/src/keywords +50 -0
  1278. data/modules/mruby/src/lex.def +212 -0
  1279. data/modules/mruby/src/load.c +629 -0
  1280. data/modules/mruby/src/mruby_core.rake +28 -0
  1281. data/modules/mruby/src/node.h +117 -0
  1282. data/modules/mruby/src/numeric.c +1418 -0
  1283. data/modules/mruby/src/object.c +593 -0
  1284. data/modules/mruby/src/opcode.h +160 -0
  1285. data/modules/mruby/src/parse.y +6050 -0
  1286. data/modules/mruby/src/pool.c +190 -0
  1287. data/modules/mruby/src/print.c +71 -0
  1288. data/modules/mruby/src/proc.c +209 -0
  1289. data/modules/mruby/src/range.c +442 -0
  1290. data/modules/mruby/src/re.h +13 -0
  1291. data/modules/mruby/src/state.c +200 -0
  1292. data/modules/mruby/src/string.c +2580 -0
  1293. data/modules/mruby/src/symbol.c +456 -0
  1294. data/modules/mruby/src/value_array.h +27 -0
  1295. data/modules/mruby/src/variable.c +1147 -0
  1296. data/modules/mruby/src/vm.c +2129 -0
  1297. data/modules/mruby/tasks/libmruby.rake +18 -0
  1298. data/modules/mruby/tasks/mrbgem_spec.rake +297 -0
  1299. data/modules/mruby/tasks/mrbgems.rake +85 -0
  1300. data/modules/mruby/tasks/mrbgems_test.rake +88 -0
  1301. data/modules/mruby/tasks/mruby_build.rake +211 -0
  1302. data/modules/mruby/tasks/mruby_build_commands.rake +287 -0
  1303. data/modules/mruby/tasks/mruby_build_gem.rake +67 -0
  1304. data/modules/mruby/tasks/ruby_ext.rake +70 -0
  1305. data/modules/mruby/tasks/toolchains/androideabi.rake +126 -0
  1306. data/modules/mruby/tasks/toolchains/clang.rake +8 -0
  1307. data/modules/mruby/tasks/toolchains/gcc.rake +21 -0
  1308. data/modules/mruby/tasks/toolchains/vs2010.rake +3 -0
  1309. data/modules/mruby/tasks/toolchains/vs2012.rake +44 -0
  1310. data/modules/mruby/test/README.md +7 -0
  1311. data/modules/mruby/test/assert.rb +238 -0
  1312. data/modules/mruby/test/driver.c +118 -0
  1313. data/modules/mruby/test/init_mrbtest.c +24 -0
  1314. data/modules/mruby/test/mrbtest.rake +47 -0
  1315. data/modules/mruby/test/report.rb +4 -0
  1316. data/modules/mruby/test/t/argumenterror.rb +21 -0
  1317. data/modules/mruby/test/t/array.rb +309 -0
  1318. data/modules/mruby/test/t/basicobject.rb +11 -0
  1319. data/modules/mruby/test/t/bs_block.rb +489 -0
  1320. data/modules/mruby/test/t/bs_literal.rb +38 -0
  1321. data/modules/mruby/test/t/class.rb +219 -0
  1322. data/modules/mruby/test/t/comparable.rb +72 -0
  1323. data/modules/mruby/test/t/enumerable.rb +108 -0
  1324. data/modules/mruby/test/t/exception.rb +337 -0
  1325. data/modules/mruby/test/t/false.rb +33 -0
  1326. data/modules/mruby/test/t/float.rb +145 -0
  1327. data/modules/mruby/test/t/gc.rb +45 -0
  1328. data/modules/mruby/test/t/hash.rb +310 -0
  1329. data/modules/mruby/test/t/indexerror.rb +10 -0
  1330. data/modules/mruby/test/t/integer.rb +222 -0
  1331. data/modules/mruby/test/t/kernel.rb +425 -0
  1332. data/modules/mruby/test/t/literals.rb +287 -0
  1333. data/modules/mruby/test/t/localjumperror.rb +13 -0
  1334. data/modules/mruby/test/t/methods.rb +109 -0
  1335. data/modules/mruby/test/t/module.rb +344 -0
  1336. data/modules/mruby/test/t/nameerror.rb +32 -0
  1337. data/modules/mruby/test/t/nil.rb +29 -0
  1338. data/modules/mruby/test/t/nomethoderror.rb +13 -0
  1339. data/modules/mruby/test/t/numeric.rb +29 -0
  1340. data/modules/mruby/test/t/object.rb +11 -0
  1341. data/modules/mruby/test/t/proc.rb +56 -0
  1342. data/modules/mruby/test/t/range.rb +82 -0
  1343. data/modules/mruby/test/t/rangeerror.rb +10 -0
  1344. data/modules/mruby/test/t/regexperror.rb +4 -0
  1345. data/modules/mruby/test/t/runtimeerror.rb +6 -0
  1346. data/modules/mruby/test/t/standarderror.rb +10 -0
  1347. data/modules/mruby/test/t/string.rb +483 -0
  1348. data/modules/mruby/test/t/symbol.rb +27 -0
  1349. data/modules/mruby/test/t/syntax.rb +67 -0
  1350. data/modules/mruby/test/t/true.rb +33 -0
  1351. data/modules/mruby/test/t/typeerror.rb +11 -0
  1352. data/modules/mruby/tools/mrbc/mrbc.c +318 -0
  1353. data/modules/mruby/tools/mrbc/mrbc.rake +14 -0
  1354. data/modules/mruby/travis_config.rb +6 -0
  1355. data/modules/mrubymix/LICENSE +21 -0
  1356. data/modules/mrubymix/README.md +6 -0
  1357. data/modules/mrubymix/bin/mrubymix +29 -0
  1358. data/modules/mrubymix/lib/mrubymix.rb +93 -0
  1359. data/modules/mrubymix/mrubymix.gemspec +13 -0
  1360. data/scripts/gen_gems_config.rb +185 -0
  1361. data/scripts/gen_post.rb +104 -0
  1362. data/templates/minimal/Rakefile +36 -0
  1363. data/templates/minimal/app/app.rb +3 -0
  1364. metadata +1408 -0
@@ -0,0 +1,3040 @@
1
+ // -*- C++ -*-
2
+ //===------------------------ type_traits ---------------------------------===//
3
+ //
4
+ // The LLVM Compiler Infrastructure
5
+ //
6
+ // This file is dual licensed under the MIT and the University of Illinois Open
7
+ // Source Licenses. See LICENSE.TXT for details.
8
+ //
9
+ //===----------------------------------------------------------------------===//
10
+
11
+ #ifndef _LIBCPP_TYPE_TRAITS
12
+ #define _LIBCPP_TYPE_TRAITS
13
+
14
+ /*
15
+ type_traits synopsis
16
+
17
+ namespace std
18
+ {
19
+
20
+ // helper class:
21
+ template <class T, T v> struct integral_constant;
22
+ typedef integral_constant<bool, true> true_type;
23
+ typedef integral_constant<bool, false> false_type;
24
+
25
+ // helper traits
26
+ template <bool, class T = void> struct enable_if;
27
+ template <bool, class T, class F> struct conditional;
28
+
29
+ // Primary classification traits:
30
+ template <class T> struct is_void;
31
+ template <class T> struct is_integral;
32
+ template <class T> struct is_floating_point;
33
+ template <class T> struct is_array;
34
+ template <class T> struct is_pointer;
35
+ template <class T> struct is_lvalue_reference;
36
+ template <class T> struct is_rvalue_reference;
37
+ template <class T> struct is_member_object_pointer;
38
+ template <class T> struct is_member_function_pointer;
39
+ template <class T> struct is_enum;
40
+ template <class T> struct is_union;
41
+ template <class T> struct is_class;
42
+ template <class T> struct is_function;
43
+
44
+ // Secondary classification traits:
45
+ template <class T> struct is_reference;
46
+ template <class T> struct is_arithmetic;
47
+ template <class T> struct is_fundamental;
48
+ template <class T> struct is_member_pointer;
49
+ template <class T> struct is_scalar;
50
+ template <class T> struct is_object;
51
+ template <class T> struct is_compound;
52
+
53
+ // Const-volatile properties and transformations:
54
+ template <class T> struct is_const;
55
+ template <class T> struct is_volatile;
56
+ template <class T> struct remove_const;
57
+ template <class T> struct remove_volatile;
58
+ template <class T> struct remove_cv;
59
+ template <class T> struct add_const;
60
+ template <class T> struct add_volatile;
61
+ template <class T> struct add_cv;
62
+
63
+ // Reference transformations:
64
+ template <class T> struct remove_reference;
65
+ template <class T> struct add_lvalue_reference;
66
+ template <class T> struct add_rvalue_reference;
67
+
68
+ // Pointer transformations:
69
+ template <class T> struct remove_pointer;
70
+ template <class T> struct add_pointer;
71
+
72
+ // Integral properties:
73
+ template <class T> struct is_signed;
74
+ template <class T> struct is_unsigned;
75
+ template <class T> struct make_signed;
76
+ template <class T> struct make_unsigned;
77
+
78
+ // Array properties and transformations:
79
+ template <class T> struct rank;
80
+ template <class T, unsigned I = 0> struct extent;
81
+ template <class T> struct remove_extent;
82
+ template <class T> struct remove_all_extents;
83
+
84
+ // Member introspection:
85
+ template <class T> struct is_pod;
86
+ template <class T> struct is_trivial;
87
+ template <class T> struct is_trivially_copyable;
88
+ template <class T> struct is_standard_layout;
89
+ template <class T> struct is_literal_type;
90
+ template <class T> struct is_empty;
91
+ template <class T> struct is_polymorphic;
92
+ template <class T> struct is_abstract;
93
+
94
+ template <class T, class... Args> struct is_constructible;
95
+ template <class T> struct is_default_constructible;
96
+ template <class T> struct is_copy_constructible;
97
+ template <class T> struct is_move_constructible;
98
+ template <class T, class U> struct is_assignable;
99
+ template <class T> struct is_copy_assignable;
100
+ template <class T> struct is_move_assignable;
101
+ template <class T> struct is_destructible;
102
+
103
+ template <class T, class... Args> struct is_trivially_constructible;
104
+ template <class T> struct is_trivially_default_constructible;
105
+ template <class T> struct is_trivially_copy_constructible;
106
+ template <class T> struct is_trivially_move_constructible;
107
+ template <class T, class U> struct is_trivially_assignable;
108
+ template <class T> struct is_trivially_copy_assignable;
109
+ template <class T> struct is_trivially_move_assignable;
110
+ template <class T> struct is_trivially_destructible;
111
+
112
+ template <class T, class... Args> struct is_nothrow_constructible;
113
+ template <class T> struct is_nothrow_default_constructible;
114
+ template <class T> struct is_nothrow_copy_constructible;
115
+ template <class T> struct is_nothrow_move_constructible;
116
+ template <class T, class U> struct is_nothrow_assignable;
117
+ template <class T> struct is_nothrow_copy_assignable;
118
+ template <class T> struct is_nothrow_move_assignable;
119
+ template <class T> struct is_nothrow_destructible;
120
+
121
+ template <class T> struct has_virtual_destructor;
122
+
123
+ // Relationships between types:
124
+ template <class T, class U> struct is_same;
125
+ template <class Base, class Derived> struct is_base_of;
126
+ template <class From, class To> struct is_convertible;
127
+
128
+ // Alignment properties and transformations:
129
+ template <class T> struct alignment_of;
130
+ template <size_t Len, size_t Align = most_stringent_alignment_requirement>
131
+ struct aligned_storage;
132
+
133
+ template <class T> struct decay;
134
+ template <class... T> struct common_type;
135
+ template <class T> struct underlying_type;
136
+ template <class> class result_of; // undefined
137
+ template <class Fn, class... ArgTypes> class result_of<Fn(ArgTypes...)>;
138
+
139
+ } // std
140
+
141
+ */
142
+ #include <__config>
143
+ #include <cstddef>
144
+
145
+ #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
146
+ #pragma GCC system_header
147
+ #endif
148
+
149
+ _LIBCPP_BEGIN_NAMESPACE_STD
150
+
151
+ template <bool _Bp, class _If, class _Then>
152
+ struct _LIBCPP_TYPE_VIS conditional {typedef _If type;};
153
+ template <class _If, class _Then>
154
+ struct _LIBCPP_TYPE_VIS conditional<false, _If, _Then> {typedef _Then type;};
155
+
156
+ template <bool, class _Tp = void> struct _LIBCPP_TYPE_VIS enable_if {};
157
+ template <class _Tp> struct _LIBCPP_TYPE_VIS enable_if<true, _Tp> {typedef _Tp type;};
158
+
159
+ struct __two {char __lx[2];};
160
+
161
+ // helper class:
162
+
163
+ template <class _Tp, _Tp __v>
164
+ struct _LIBCPP_TYPE_VIS integral_constant
165
+ {
166
+ static _LIBCPP_CONSTEXPR const _Tp value = __v;
167
+ typedef _Tp value_type;
168
+ typedef integral_constant type;
169
+ _LIBCPP_INLINE_VISIBILITY
170
+ _LIBCPP_CONSTEXPR operator value_type() const {return value;}
171
+ };
172
+
173
+ template <class _Tp, _Tp __v>
174
+ _LIBCPP_CONSTEXPR const _Tp integral_constant<_Tp, __v>::value;
175
+
176
+ typedef integral_constant<bool, true> true_type;
177
+ typedef integral_constant<bool, false> false_type;
178
+
179
+ // is_const
180
+
181
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_const : public false_type {};
182
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_const<_Tp const> : public true_type {};
183
+
184
+ // is_volatile
185
+
186
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_volatile : public false_type {};
187
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_volatile<_Tp volatile> : public true_type {};
188
+
189
+ // remove_const
190
+
191
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_const {typedef _Tp type;};
192
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_const<const _Tp> {typedef _Tp type;};
193
+
194
+ // remove_volatile
195
+
196
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_volatile {typedef _Tp type;};
197
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_volatile<volatile _Tp> {typedef _Tp type;};
198
+
199
+ // remove_cv
200
+
201
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_cv
202
+ {typedef typename remove_volatile<typename remove_const<_Tp>::type>::type type;};
203
+
204
+ // is_void
205
+
206
+ template <class _Tp> struct __is_void : public false_type {};
207
+ template <> struct __is_void<void> : public true_type {};
208
+
209
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_void
210
+ : public __is_void<typename remove_cv<_Tp>::type> {};
211
+
212
+ // __is_nullptr_t
213
+
214
+ template <class _Tp> struct ____is_nullptr_t : public false_type {};
215
+ template <> struct ____is_nullptr_t<nullptr_t> : public true_type {};
216
+
217
+ template <class _Tp> struct _LIBCPP_TYPE_VIS __is_nullptr_t
218
+ : public ____is_nullptr_t<typename remove_cv<_Tp>::type> {};
219
+
220
+ // is_integral
221
+
222
+ template <class _Tp> struct __is_integral : public false_type {};
223
+ template <> struct __is_integral<bool> : public true_type {};
224
+ template <> struct __is_integral<char> : public true_type {};
225
+ template <> struct __is_integral<signed char> : public true_type {};
226
+ template <> struct __is_integral<unsigned char> : public true_type {};
227
+ template <> struct __is_integral<wchar_t> : public true_type {};
228
+ #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
229
+ template <> struct __is_integral<char16_t> : public true_type {};
230
+ template <> struct __is_integral<char32_t> : public true_type {};
231
+ #endif // _LIBCPP_HAS_NO_UNICODE_CHARS
232
+ template <> struct __is_integral<short> : public true_type {};
233
+ template <> struct __is_integral<unsigned short> : public true_type {};
234
+ template <> struct __is_integral<int> : public true_type {};
235
+ template <> struct __is_integral<unsigned int> : public true_type {};
236
+ template <> struct __is_integral<long> : public true_type {};
237
+ template <> struct __is_integral<unsigned long> : public true_type {};
238
+ template <> struct __is_integral<long long> : public true_type {};
239
+ template <> struct __is_integral<unsigned long long> : public true_type {};
240
+
241
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_integral
242
+ : public __is_integral<typename remove_cv<_Tp>::type> {};
243
+
244
+ // is_floating_point
245
+
246
+ template <class _Tp> struct __is_floating_point : public false_type {};
247
+ template <> struct __is_floating_point<float> : public true_type {};
248
+ template <> struct __is_floating_point<double> : public true_type {};
249
+ template <> struct __is_floating_point<long double> : public true_type {};
250
+
251
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_floating_point
252
+ : public __is_floating_point<typename remove_cv<_Tp>::type> {};
253
+
254
+ // is_array
255
+
256
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_array
257
+ : public false_type {};
258
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_array<_Tp[]>
259
+ : public true_type {};
260
+ template <class _Tp, size_t _Np> struct _LIBCPP_TYPE_VIS is_array<_Tp[_Np]>
261
+ : public true_type {};
262
+
263
+ // is_pointer
264
+
265
+ template <class _Tp> struct __is_pointer : public false_type {};
266
+ template <class _Tp> struct __is_pointer<_Tp*> : public true_type {};
267
+
268
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_pointer
269
+ : public __is_pointer<typename remove_cv<_Tp>::type> {};
270
+
271
+ // is_reference
272
+
273
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_lvalue_reference : public false_type {};
274
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_lvalue_reference<_Tp&> : public true_type {};
275
+
276
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_rvalue_reference : public false_type {};
277
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
278
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_rvalue_reference<_Tp&&> : public true_type {};
279
+ #endif
280
+
281
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_reference : public false_type {};
282
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_reference<_Tp&> : public true_type {};
283
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
284
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_reference<_Tp&&> : public true_type {};
285
+ #endif
286
+
287
+ #if defined(__clang__) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
288
+ #define _LIBCPP_HAS_TYPE_TRAITS
289
+ #endif
290
+
291
+ // is_union
292
+
293
+ #if __has_feature(is_union) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
294
+
295
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_union
296
+ : public integral_constant<bool, __is_union(_Tp)> {};
297
+
298
+ #else
299
+
300
+ template <class _Tp> struct __libcpp_union : public false_type {};
301
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_union
302
+ : public __libcpp_union<typename remove_cv<_Tp>::type> {};
303
+
304
+ #endif
305
+
306
+ // is_class
307
+
308
+ #if __has_feature(is_class) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
309
+
310
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_class
311
+ : public integral_constant<bool, __is_class(_Tp)> {};
312
+
313
+ #else
314
+
315
+ namespace __is_class_imp
316
+ {
317
+ template <class _Tp> char __test(int _Tp::*);
318
+ template <class _Tp> __two __test(...);
319
+ }
320
+
321
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_class
322
+ : public integral_constant<bool, sizeof(__is_class_imp::__test<_Tp>(0)) == 1 && !is_union<_Tp>::value> {};
323
+
324
+ #endif
325
+
326
+ // is_same
327
+
328
+ template <class _Tp, class _Up> struct _LIBCPP_TYPE_VIS is_same : public false_type {};
329
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_same<_Tp, _Tp> : public true_type {};
330
+
331
+ // is_function
332
+
333
+ namespace __is_function_imp
334
+ {
335
+ template <class _Tp> char __test(_Tp*);
336
+ template <class _Tp> __two __test(...);
337
+ template <class _Tp> _Tp& __source();
338
+ }
339
+
340
+ template <class _Tp, bool = is_class<_Tp>::value ||
341
+ is_union<_Tp>::value ||
342
+ is_void<_Tp>::value ||
343
+ is_reference<_Tp>::value ||
344
+ is_same<_Tp, nullptr_t>::value >
345
+ struct __is_function
346
+ : public integral_constant<bool, sizeof(__is_function_imp::__test<_Tp>(__is_function_imp::__source<_Tp>())) == 1>
347
+ {};
348
+ template <class _Tp> struct __is_function<_Tp, true> : public false_type {};
349
+
350
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_function
351
+ : public __is_function<_Tp> {};
352
+
353
+ // is_member_function_pointer
354
+
355
+ template <class _Tp> struct __is_member_function_pointer : public false_type {};
356
+ template <class _Tp, class _Up> struct __is_member_function_pointer<_Tp _Up::*> : public is_function<_Tp> {};
357
+
358
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_member_function_pointer
359
+ : public __is_member_function_pointer<typename remove_cv<_Tp>::type> {};
360
+
361
+ // is_member_pointer
362
+
363
+ template <class _Tp> struct __is_member_pointer : public false_type {};
364
+ template <class _Tp, class _Up> struct __is_member_pointer<_Tp _Up::*> : public true_type {};
365
+
366
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_member_pointer
367
+ : public __is_member_pointer<typename remove_cv<_Tp>::type> {};
368
+
369
+ // is_member_object_pointer
370
+
371
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_member_object_pointer
372
+ : public integral_constant<bool, is_member_pointer<_Tp>::value &&
373
+ !is_member_function_pointer<_Tp>::value> {};
374
+
375
+ // is_enum
376
+
377
+ #if __has_feature(is_enum) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
378
+
379
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_enum
380
+ : public integral_constant<bool, __is_enum(_Tp)> {};
381
+
382
+ #else
383
+
384
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_enum
385
+ : public integral_constant<bool, !is_void<_Tp>::value &&
386
+ !is_integral<_Tp>::value &&
387
+ !is_floating_point<_Tp>::value &&
388
+ !is_array<_Tp>::value &&
389
+ !is_pointer<_Tp>::value &&
390
+ !is_reference<_Tp>::value &&
391
+ !is_member_pointer<_Tp>::value &&
392
+ !is_union<_Tp>::value &&
393
+ !is_class<_Tp>::value &&
394
+ !is_function<_Tp>::value > {};
395
+
396
+ #endif
397
+
398
+ // is_arithmetic
399
+
400
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_arithmetic
401
+ : public integral_constant<bool, is_integral<_Tp>::value ||
402
+ is_floating_point<_Tp>::value> {};
403
+
404
+ // is_fundamental
405
+
406
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_fundamental
407
+ : public integral_constant<bool, is_void<_Tp>::value ||
408
+ __is_nullptr_t<_Tp>::value ||
409
+ is_arithmetic<_Tp>::value> {};
410
+
411
+ // is_scalar
412
+
413
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_scalar
414
+ : public integral_constant<bool, is_arithmetic<_Tp>::value ||
415
+ is_member_pointer<_Tp>::value ||
416
+ is_pointer<_Tp>::value ||
417
+ __is_nullptr_t<_Tp>::value ||
418
+ is_enum<_Tp>::value > {};
419
+
420
+ template <> struct _LIBCPP_TYPE_VIS is_scalar<nullptr_t> : public true_type {};
421
+
422
+ // is_object
423
+
424
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_object
425
+ : public integral_constant<bool, is_scalar<_Tp>::value ||
426
+ is_array<_Tp>::value ||
427
+ is_union<_Tp>::value ||
428
+ is_class<_Tp>::value > {};
429
+
430
+ // is_compound
431
+
432
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_compound
433
+ : public integral_constant<bool, !is_fundamental<_Tp>::value> {};
434
+
435
+ // add_const
436
+
437
+ template <class _Tp, bool = is_reference<_Tp>::value ||
438
+ is_function<_Tp>::value ||
439
+ is_const<_Tp>::value >
440
+ struct __add_const {typedef _Tp type;};
441
+
442
+ template <class _Tp>
443
+ struct __add_const<_Tp, false> {typedef const _Tp type;};
444
+
445
+ template <class _Tp> struct _LIBCPP_TYPE_VIS add_const
446
+ {typedef typename __add_const<_Tp>::type type;};
447
+
448
+ // add_volatile
449
+
450
+ template <class _Tp, bool = is_reference<_Tp>::value ||
451
+ is_function<_Tp>::value ||
452
+ is_volatile<_Tp>::value >
453
+ struct __add_volatile {typedef _Tp type;};
454
+
455
+ template <class _Tp>
456
+ struct __add_volatile<_Tp, false> {typedef volatile _Tp type;};
457
+
458
+ template <class _Tp> struct _LIBCPP_TYPE_VIS add_volatile
459
+ {typedef typename __add_volatile<_Tp>::type type;};
460
+
461
+ // add_cv
462
+
463
+ template <class _Tp> struct _LIBCPP_TYPE_VIS add_cv
464
+ {typedef typename add_const<typename add_volatile<_Tp>::type>::type type;};
465
+
466
+ // remove_reference
467
+
468
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_reference {typedef _Tp type;};
469
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_reference<_Tp&> {typedef _Tp type;};
470
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
471
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_reference<_Tp&&> {typedef _Tp type;};
472
+ #endif
473
+
474
+ // add_lvalue_reference
475
+
476
+ template <class _Tp> struct _LIBCPP_TYPE_VIS add_lvalue_reference {typedef _Tp& type;};
477
+ template <class _Tp> struct _LIBCPP_TYPE_VIS add_lvalue_reference<_Tp&> {typedef _Tp& type;}; // for older compiler
478
+ template <> struct _LIBCPP_TYPE_VIS add_lvalue_reference<void> {typedef void type;};
479
+ template <> struct _LIBCPP_TYPE_VIS add_lvalue_reference<const void> {typedef const void type;};
480
+ template <> struct _LIBCPP_TYPE_VIS add_lvalue_reference<volatile void> {typedef volatile void type;};
481
+ template <> struct _LIBCPP_TYPE_VIS add_lvalue_reference<const volatile void> {typedef const volatile void type;};
482
+
483
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
484
+
485
+ template <class _Tp> struct _LIBCPP_TYPE_VIS add_rvalue_reference {typedef _Tp&& type;};
486
+ template <> struct _LIBCPP_TYPE_VIS add_rvalue_reference<void> {typedef void type;};
487
+ template <> struct _LIBCPP_TYPE_VIS add_rvalue_reference<const void> {typedef const void type;};
488
+ template <> struct _LIBCPP_TYPE_VIS add_rvalue_reference<volatile void> {typedef volatile void type;};
489
+ template <> struct _LIBCPP_TYPE_VIS add_rvalue_reference<const volatile void> {typedef const volatile void type;};
490
+
491
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
492
+
493
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
494
+
495
+ template <class _Tp>
496
+ typename add_rvalue_reference<_Tp>::type
497
+ declval() _NOEXCEPT;
498
+
499
+ #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
500
+
501
+ template <class _Tp>
502
+ typename add_lvalue_reference<_Tp>::type
503
+ declval();
504
+
505
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
506
+
507
+ struct __any
508
+ {
509
+ __any(...);
510
+ };
511
+
512
+ // remove_pointer
513
+
514
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_pointer {typedef _Tp type;};
515
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_pointer<_Tp*> {typedef _Tp type;};
516
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_pointer<_Tp* const> {typedef _Tp type;};
517
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_pointer<_Tp* volatile> {typedef _Tp type;};
518
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_pointer<_Tp* const volatile> {typedef _Tp type;};
519
+
520
+ // add_pointer
521
+
522
+ template <class _Tp> struct _LIBCPP_TYPE_VIS add_pointer
523
+ {typedef typename remove_reference<_Tp>::type* type;};
524
+
525
+ // is_signed
526
+
527
+ template <class _Tp, bool = is_integral<_Tp>::value>
528
+ struct ___is_signed : public integral_constant<bool, _Tp(-1) < _Tp(0)> {};
529
+
530
+ template <class _Tp>
531
+ struct ___is_signed<_Tp, false> : public true_type {}; // floating point
532
+
533
+ template <class _Tp, bool = is_arithmetic<_Tp>::value>
534
+ struct __is_signed : public ___is_signed<_Tp> {};
535
+
536
+ template <class _Tp> struct __is_signed<_Tp, false> : public false_type {};
537
+
538
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_signed : public __is_signed<_Tp> {};
539
+
540
+ // is_unsigned
541
+
542
+ template <class _Tp, bool = is_integral<_Tp>::value>
543
+ struct ___is_unsigned : public integral_constant<bool, _Tp(0) < _Tp(-1)> {};
544
+
545
+ template <class _Tp>
546
+ struct ___is_unsigned<_Tp, false> : public false_type {}; // floating point
547
+
548
+ template <class _Tp, bool = is_arithmetic<_Tp>::value>
549
+ struct __is_unsigned : public ___is_unsigned<_Tp> {};
550
+
551
+ template <class _Tp> struct __is_unsigned<_Tp, false> : public false_type {};
552
+
553
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_unsigned : public __is_unsigned<_Tp> {};
554
+
555
+ // rank
556
+
557
+ template <class _Tp> struct _LIBCPP_TYPE_VIS rank
558
+ : public integral_constant<size_t, 0> {};
559
+ template <class _Tp> struct _LIBCPP_TYPE_VIS rank<_Tp[]>
560
+ : public integral_constant<size_t, rank<_Tp>::value + 1> {};
561
+ template <class _Tp, size_t _Np> struct _LIBCPP_TYPE_VIS rank<_Tp[_Np]>
562
+ : public integral_constant<size_t, rank<_Tp>::value + 1> {};
563
+
564
+ // extent
565
+
566
+ template <class _Tp, unsigned _Ip = 0> struct _LIBCPP_TYPE_VIS extent
567
+ : public integral_constant<size_t, 0> {};
568
+ template <class _Tp> struct _LIBCPP_TYPE_VIS extent<_Tp[], 0>
569
+ : public integral_constant<size_t, 0> {};
570
+ template <class _Tp, unsigned _Ip> struct _LIBCPP_TYPE_VIS extent<_Tp[], _Ip>
571
+ : public integral_constant<size_t, extent<_Tp, _Ip-1>::value> {};
572
+ template <class _Tp, size_t _Np> struct _LIBCPP_TYPE_VIS extent<_Tp[_Np], 0>
573
+ : public integral_constant<size_t, _Np> {};
574
+ template <class _Tp, size_t _Np, unsigned _Ip> struct _LIBCPP_TYPE_VIS extent<_Tp[_Np], _Ip>
575
+ : public integral_constant<size_t, extent<_Tp, _Ip-1>::value> {};
576
+
577
+ // remove_extent
578
+
579
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_extent
580
+ {typedef _Tp type;};
581
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_extent<_Tp[]>
582
+ {typedef _Tp type;};
583
+ template <class _Tp, size_t _Np> struct _LIBCPP_TYPE_VIS remove_extent<_Tp[_Np]>
584
+ {typedef _Tp type;};
585
+
586
+ // remove_all_extents
587
+
588
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_all_extents
589
+ {typedef _Tp type;};
590
+ template <class _Tp> struct _LIBCPP_TYPE_VIS remove_all_extents<_Tp[]>
591
+ {typedef typename remove_all_extents<_Tp>::type type;};
592
+ template <class _Tp, size_t _Np> struct _LIBCPP_TYPE_VIS remove_all_extents<_Tp[_Np]>
593
+ {typedef typename remove_all_extents<_Tp>::type type;};
594
+
595
+ // is_abstract
596
+
597
+ namespace __is_abstract_imp
598
+ {
599
+ template <class _Tp> char __test(_Tp (*)[1]);
600
+ template <class _Tp> __two __test(...);
601
+ }
602
+
603
+ template <class _Tp, bool = is_class<_Tp>::value>
604
+ struct __libcpp_abstract : public integral_constant<bool, sizeof(__is_abstract_imp::__test<_Tp>(0)) != 1> {};
605
+
606
+ template <class _Tp> struct __libcpp_abstract<_Tp, false> : public false_type {};
607
+
608
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_abstract : public __libcpp_abstract<_Tp> {};
609
+
610
+ // is_base_of
611
+
612
+ #ifdef _LIBCP_HAS_IS_BASE_OF
613
+
614
+ template <class _Bp, class _Dp>
615
+ struct _LIBCPP_TYPE_VIS is_base_of
616
+ : public integral_constant<bool, __is_base_of(_Bp, _Dp)> {};
617
+
618
+ #else // __has_feature(is_base_of)
619
+
620
+ namespace __is_base_of_imp
621
+ {
622
+ template <class _Tp>
623
+ struct _Dst
624
+ {
625
+ _Dst(const volatile _Tp &);
626
+ };
627
+ template <class _Tp>
628
+ struct _Src
629
+ {
630
+ operator const volatile _Tp &();
631
+ template <class _Up> operator const _Dst<_Up> &();
632
+ };
633
+ template <size_t> struct __one { typedef char type; };
634
+ template <class _Bp, class _Dp> typename __one<sizeof(_Dst<_Bp>(declval<_Src<_Dp> >()))>::type __test(int);
635
+ template <class _Bp, class _Dp> __two __test(...);
636
+ }
637
+
638
+ template <class _Bp, class _Dp>
639
+ struct _LIBCPP_TYPE_VIS is_base_of
640
+ : public integral_constant<bool, is_class<_Bp>::value &&
641
+ sizeof(__is_base_of_imp::__test<_Bp, _Dp>(0)) == 2> {};
642
+
643
+ #endif // __has_feature(is_base_of)
644
+
645
+ // is_convertible
646
+
647
+ #if __has_feature(is_convertible_to)
648
+
649
+ template <class _T1, class _T2> struct _LIBCPP_TYPE_VIS is_convertible
650
+ : public integral_constant<bool, __is_convertible_to(_T1, _T2) &&
651
+ !is_abstract<_T2>::value> {};
652
+
653
+ #else // __has_feature(is_convertible_to)
654
+
655
+ namespace __is_convertible_imp
656
+ {
657
+ template <class _Tp> char __test(_Tp);
658
+ template <class _Tp> __two __test(...);
659
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
660
+ template <class _Tp> _Tp&& __source();
661
+ #else
662
+ template <class _Tp> typename remove_reference<_Tp>::type& __source();
663
+ #endif
664
+
665
+ template <class _Tp, bool _IsArray = is_array<_Tp>::value,
666
+ bool _IsFunction = is_function<_Tp>::value,
667
+ bool _IsVoid = is_void<_Tp>::value>
668
+ struct __is_array_function_or_void {enum {value = 0};};
669
+ template <class _Tp> struct __is_array_function_or_void<_Tp, true, false, false> {enum {value = 1};};
670
+ template <class _Tp> struct __is_array_function_or_void<_Tp, false, true, false> {enum {value = 2};};
671
+ template <class _Tp> struct __is_array_function_or_void<_Tp, false, false, true> {enum {value = 3};};
672
+ }
673
+
674
+ template <class _Tp,
675
+ unsigned = __is_convertible_imp::__is_array_function_or_void<typename remove_reference<_Tp>::type>::value>
676
+ struct __is_convertible_check
677
+ {
678
+ static const size_t __v = 0;
679
+ };
680
+
681
+ template <class _Tp>
682
+ struct __is_convertible_check<_Tp, 0>
683
+ {
684
+ static const size_t __v = sizeof(_Tp);
685
+ };
686
+
687
+ template <class _T1, class _T2,
688
+ unsigned _T1_is_array_function_or_void = __is_convertible_imp::__is_array_function_or_void<_T1>::value,
689
+ unsigned _T2_is_array_function_or_void = __is_convertible_imp::__is_array_function_or_void<_T2>::value>
690
+ struct __is_convertible
691
+ : public integral_constant<bool,
692
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
693
+ sizeof(__is_convertible_imp::__test<_T2>(__is_convertible_imp::__source<_T1>())) == 1
694
+ #else
695
+ sizeof(__is_convertible_imp::__test<_T2>(__is_convertible_imp::__source<_T1>())) == 1
696
+ && !(!is_function<_T1>::value && !is_reference<_T1>::value && is_reference<_T2>::value
697
+ && (!is_const<typename remove_reference<_T2>::type>::value
698
+ || is_volatile<typename remove_reference<_T2>::type>::value)
699
+ && (is_same<typename remove_cv<_T1>::type,
700
+ typename remove_cv<typename remove_reference<_T2>::type>::type>::value
701
+ || is_base_of<typename remove_reference<_T2>::type, _T1>::value))
702
+ #endif
703
+ >
704
+ {};
705
+
706
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 0> : false_type {};
707
+
708
+ template <class _T1> struct __is_convertible<_T1, const _T1&, 1, 0> : true_type {};
709
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
710
+ template <class _T1> struct __is_convertible<_T1, _T1&&, 1, 0> : true_type {};
711
+ template <class _T1> struct __is_convertible<_T1, const _T1&&, 1, 0> : true_type {};
712
+ template <class _T1> struct __is_convertible<_T1, volatile _T1&&, 1, 0> : true_type {};
713
+ template <class _T1> struct __is_convertible<_T1, const volatile _T1&&, 1, 0> : true_type {};
714
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
715
+
716
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2*, 1, 0>
717
+ : public integral_constant<bool, __is_convertible<typename remove_all_extents<_T1>::type*, _T2*>::value> {};
718
+
719
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2* const, 1, 0>
720
+ : public integral_constant<bool, __is_convertible<typename remove_all_extents<_T1>::type*, _T2*const>::value> {};
721
+
722
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2* volatile, 1, 0>
723
+ : public integral_constant<bool, __is_convertible<typename remove_all_extents<_T1>::type*, _T2*volatile>::value> {};
724
+
725
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2* const volatile, 1, 0>
726
+ : public integral_constant<bool, __is_convertible<typename remove_all_extents<_T1>::type*, _T2*const volatile>::value> {};
727
+
728
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 0> : public false_type {};
729
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
730
+ template <class _T1> struct __is_convertible<_T1, _T1&&, 2, 0> : public true_type {};
731
+ #endif
732
+ template <class _T1> struct __is_convertible<_T1, _T1&, 2, 0> : public true_type {};
733
+ template <class _T1> struct __is_convertible<_T1, _T1*, 2, 0> : public true_type {};
734
+ template <class _T1> struct __is_convertible<_T1, _T1*const, 2, 0> : public true_type {};
735
+ template <class _T1> struct __is_convertible<_T1, _T1*volatile, 2, 0> : public true_type {};
736
+ template <class _T1> struct __is_convertible<_T1, _T1*const volatile, 2, 0> : public true_type {};
737
+
738
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 0> : public false_type {};
739
+
740
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 1> : public false_type {};
741
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 1> : public false_type {};
742
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 1> : public false_type {};
743
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 1> : public false_type {};
744
+
745
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 2> : public false_type {};
746
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 2> : public false_type {};
747
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 2> : public false_type {};
748
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 2> : public false_type {};
749
+
750
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 3> : public false_type {};
751
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 3> : public false_type {};
752
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 3> : public false_type {};
753
+ template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 3> : public true_type {};
754
+
755
+ template <class _T1, class _T2> struct _LIBCPP_TYPE_VIS is_convertible
756
+ : public __is_convertible<_T1, _T2>
757
+ {
758
+ static const size_t __complete_check1 = __is_convertible_check<_T1>::__v;
759
+ static const size_t __complete_check2 = __is_convertible_check<_T2>::__v;
760
+ };
761
+
762
+ #endif // __has_feature(is_convertible_to)
763
+
764
+ // is_empty
765
+
766
+ #if __has_feature(is_empty)
767
+
768
+ template <class _Tp>
769
+ struct _LIBCPP_TYPE_VIS is_empty
770
+ : public integral_constant<bool, __is_empty(_Tp)> {};
771
+
772
+ #else // __has_feature(is_empty)
773
+
774
+ template <class _Tp>
775
+ struct __is_empty1
776
+ : public _Tp
777
+ {
778
+ double __lx;
779
+ };
780
+
781
+ struct __is_empty2
782
+ {
783
+ double __lx;
784
+ };
785
+
786
+ template <class _Tp, bool = is_class<_Tp>::value>
787
+ struct __libcpp_empty : public integral_constant<bool, sizeof(__is_empty1<_Tp>) == sizeof(__is_empty2)> {};
788
+
789
+ template <class _Tp> struct __libcpp_empty<_Tp, false> : public false_type {};
790
+
791
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_empty : public __libcpp_empty<_Tp> {};
792
+
793
+ #endif // __has_feature(is_empty)
794
+
795
+ // is_polymorphic
796
+
797
+ #if __has_feature(is_polymorphic)
798
+
799
+ template <class _Tp>
800
+ struct _LIBCPP_TYPE_VIS is_polymorphic
801
+ : public integral_constant<bool, __is_polymorphic(_Tp)> {};
802
+
803
+ #else
804
+
805
+ template <class _Tp> struct __is_polymorphic1 : public _Tp {};
806
+ template <class _Tp> struct __is_polymorphic2 : public _Tp {virtual ~__is_polymorphic2() throw();};
807
+
808
+ template <class _Tp, bool = is_class<_Tp>::value>
809
+ struct __libcpp_polymorphic
810
+ : public integral_constant<bool, sizeof(__is_polymorphic1<_Tp>) == sizeof(__is_polymorphic2<_Tp>)> {};
811
+
812
+ template <class _Tp> struct __libcpp_polymorphic<_Tp, false> : public false_type {};
813
+
814
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_polymorphic
815
+ : public __libcpp_polymorphic<_Tp> {};
816
+
817
+ #endif // __has_feature(is_polymorphic)
818
+
819
+ // has_virtual_destructor
820
+
821
+ #if __has_feature(has_virtual_destructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
822
+
823
+ template <class _Tp> struct _LIBCPP_TYPE_VIS has_virtual_destructor
824
+ : public integral_constant<bool, __has_virtual_destructor(_Tp)> {};
825
+
826
+ #else // _LIBCPP_HAS_TYPE_TRAITS
827
+
828
+ template <class _Tp> struct _LIBCPP_TYPE_VIS has_virtual_destructor
829
+ : public false_type {};
830
+
831
+ #endif // _LIBCPP_HAS_TYPE_TRAITS
832
+
833
+ // alignment_of
834
+
835
+ template <class _Tp> struct __alignment_of {_Tp __lx;};
836
+
837
+ template <class _Tp> struct _LIBCPP_TYPE_VIS alignment_of
838
+ : public integral_constant<size_t, __alignof__(__alignment_of<typename remove_all_extents<_Tp>::type>)> {};
839
+
840
+ // aligned_storage
841
+
842
+ template <class _Hp, class _Tp>
843
+ struct __type_list
844
+ {
845
+ typedef _Hp _Head;
846
+ typedef _Tp _Tail;
847
+ };
848
+
849
+ struct __nat
850
+ {
851
+ #ifndef _LIBCPP_HAS_NO_DELETED_FUNCTIONS
852
+ __nat() = delete;
853
+ __nat(const __nat&) = delete;
854
+ __nat& operator=(const __nat&) = delete;
855
+ ~__nat() = delete;
856
+ #endif
857
+ };
858
+
859
+ template <class _Tp>
860
+ struct __align_type
861
+ {
862
+ static const size_t value = alignment_of<_Tp>::value;
863
+ typedef _Tp type;
864
+ };
865
+
866
+ struct __struct_double {long double __lx;};
867
+ struct __struct_double4 {double __lx[4];};
868
+
869
+ typedef
870
+ __type_list<__align_type<unsigned char>,
871
+ __type_list<__align_type<unsigned short>,
872
+ __type_list<__align_type<unsigned int>,
873
+ __type_list<__align_type<unsigned long>,
874
+ __type_list<__align_type<unsigned long long>,
875
+ __type_list<__align_type<double>,
876
+ __type_list<__align_type<long double>,
877
+ __type_list<__align_type<__struct_double>,
878
+ __type_list<__align_type<__struct_double4>,
879
+ __type_list<__align_type<int*>,
880
+ __nat
881
+ > > > > > > > > > > __all_types;
882
+
883
+ template <class _TL, size_t _Align> struct __find_pod;
884
+
885
+ template <class _Hp, size_t _Align>
886
+ struct __find_pod<__type_list<_Hp, __nat>, _Align>
887
+ {
888
+ typedef typename conditional<
889
+ _Align == _Hp::value,
890
+ typename _Hp::type,
891
+ void
892
+ >::type type;
893
+ };
894
+
895
+ template <class _Hp, class _Tp, size_t _Align>
896
+ struct __find_pod<__type_list<_Hp, _Tp>, _Align>
897
+ {
898
+ typedef typename conditional<
899
+ _Align == _Hp::value,
900
+ typename _Hp::type,
901
+ typename __find_pod<_Tp, _Align>::type
902
+ >::type type;
903
+ };
904
+
905
+ template <class _TL, size_t _Len> struct __find_max_align;
906
+
907
+ template <class _Hp, size_t _Len>
908
+ struct __find_max_align<__type_list<_Hp, __nat>, _Len> : public integral_constant<size_t, _Hp::value> {};
909
+
910
+ template <size_t _Len, size_t _A1, size_t _A2>
911
+ struct __select_align
912
+ {
913
+ private:
914
+ static const size_t __min = _A2 < _A1 ? _A2 : _A1;
915
+ static const size_t __max = _A1 < _A2 ? _A2 : _A1;
916
+ public:
917
+ static const size_t value = _Len < __max ? __min : __max;
918
+ };
919
+
920
+ template <class _Hp, class _Tp, size_t _Len>
921
+ struct __find_max_align<__type_list<_Hp, _Tp>, _Len>
922
+ : public integral_constant<size_t, __select_align<_Len, _Hp::value, __find_max_align<_Tp, _Len>::value>::value> {};
923
+
924
+ template <size_t _Len, const size_t _Align = __find_max_align<__all_types, _Len>::value>
925
+ struct _LIBCPP_TYPE_VIS aligned_storage
926
+ {
927
+ typedef typename __find_pod<__all_types, _Align>::type _Aligner;
928
+ static_assert(!is_void<_Aligner>::value, "");
929
+ union type
930
+ {
931
+ _Aligner __align;
932
+ unsigned char __data[_Len];
933
+ };
934
+ };
935
+
936
+ #define _CREATE_ALIGNED_STORAGE_SPECIALIZATION(n) \
937
+ template <size_t _Len>\
938
+ struct _LIBCPP_TYPE_VIS aligned_storage<_Len, n>\
939
+ {\
940
+ struct _ALIGNAS(n) type\
941
+ {\
942
+ unsigned char __lx[_Len];\
943
+ };\
944
+ }
945
+
946
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x1);
947
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x2);
948
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x4);
949
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x8);
950
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x10);
951
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x20);
952
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x40);
953
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x80);
954
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x100);
955
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x200);
956
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x400);
957
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x800);
958
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x1000);
959
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x2000);
960
+ // MSDN says that MSVC does not support alignment beyond 8192 (=0x2000)
961
+ #if !defined(_MSC_VER)
962
+ _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x4000);
963
+ #endif // !_MSC_VER
964
+
965
+ #undef _CREATE_ALIGNED_STORAGE_SPECIALIZATION
966
+
967
+ // __promote
968
+
969
+ template <class _A1, class _A2 = void, class _A3 = void,
970
+ bool = (is_arithmetic<_A1>::value || is_void<_A1>::value) &&
971
+ (is_arithmetic<_A2>::value || is_void<_A2>::value) &&
972
+ (is_arithmetic<_A3>::value || is_void<_A3>::value)>
973
+ class __promote {};
974
+
975
+ template <class _A1, class _A2, class _A3>
976
+ class __promote<_A1, _A2, _A3, true>
977
+ {
978
+ private:
979
+ typedef typename __promote<_A1>::type __type1;
980
+ typedef typename __promote<_A2>::type __type2;
981
+ typedef typename __promote<_A3>::type __type3;
982
+ public:
983
+ typedef decltype(__type1() + __type2() + __type3()) type;
984
+ };
985
+
986
+ template <class _A1, class _A2>
987
+ class __promote<_A1, _A2, void, true>
988
+ {
989
+ private:
990
+ typedef typename __promote<_A1>::type __type1;
991
+ typedef typename __promote<_A2>::type __type2;
992
+ public:
993
+ typedef decltype(__type1() + __type2()) type;
994
+ };
995
+
996
+ template <class _A1>
997
+ class __promote<_A1, void, void, true>
998
+ {
999
+ public:
1000
+ typedef typename conditional<is_arithmetic<_A1>::value,
1001
+ typename conditional<is_integral<_A1>::value, double, _A1>::type,
1002
+ void
1003
+ >::type type;
1004
+ };
1005
+
1006
+ #ifdef _LIBCPP_STORE_AS_OPTIMIZATION
1007
+
1008
+ // __transform
1009
+
1010
+ template <class _Tp, size_t = sizeof(_Tp), bool = is_scalar<_Tp>::value> struct __transform {typedef _Tp type;};
1011
+ template <class _Tp> struct __transform<_Tp, 1, true> {typedef unsigned char type;};
1012
+ template <class _Tp> struct __transform<_Tp, 2, true> {typedef unsigned short type;};
1013
+ template <class _Tp> struct __transform<_Tp, 4, true> {typedef unsigned int type;};
1014
+ template <class _Tp> struct __transform<_Tp, 8, true> {typedef unsigned long long type;};
1015
+
1016
+ #endif // _LIBCPP_STORE_AS_OPTIMIZATION
1017
+
1018
+ // make_signed / make_unsigned
1019
+
1020
+ typedef
1021
+ __type_list<signed char,
1022
+ __type_list<signed short,
1023
+ __type_list<signed int,
1024
+ __type_list<signed long,
1025
+ __type_list<signed long long,
1026
+ __nat
1027
+ > > > > > __signed_types;
1028
+
1029
+ typedef
1030
+ __type_list<unsigned char,
1031
+ __type_list<unsigned short,
1032
+ __type_list<unsigned int,
1033
+ __type_list<unsigned long,
1034
+ __type_list<unsigned long long,
1035
+ __nat
1036
+ > > > > > __unsigned_types;
1037
+
1038
+ template <class _TypeList, size_t _Size, bool = _Size <= sizeof(typename _TypeList::_Head)> struct __find_first;
1039
+
1040
+ template <class _Hp, class _Tp, size_t _Size>
1041
+ struct __find_first<__type_list<_Hp, _Tp>, _Size, true>
1042
+ {
1043
+ typedef _Hp type;
1044
+ };
1045
+
1046
+ template <class _Hp, class _Tp, size_t _Size>
1047
+ struct __find_first<__type_list<_Hp, _Tp>, _Size, false>
1048
+ {
1049
+ typedef typename __find_first<_Tp, _Size>::type type;
1050
+ };
1051
+
1052
+ template <class _Tp, class _Up, bool = is_const<typename remove_reference<_Tp>::type>::value,
1053
+ bool = is_volatile<typename remove_reference<_Tp>::type>::value>
1054
+ struct __apply_cv
1055
+ {
1056
+ typedef _Up type;
1057
+ };
1058
+
1059
+ template <class _Tp, class _Up>
1060
+ struct __apply_cv<_Tp, _Up, true, false>
1061
+ {
1062
+ typedef const _Up type;
1063
+ };
1064
+
1065
+ template <class _Tp, class _Up>
1066
+ struct __apply_cv<_Tp, _Up, false, true>
1067
+ {
1068
+ typedef volatile _Up type;
1069
+ };
1070
+
1071
+ template <class _Tp, class _Up>
1072
+ struct __apply_cv<_Tp, _Up, true, true>
1073
+ {
1074
+ typedef const volatile _Up type;
1075
+ };
1076
+
1077
+ template <class _Tp, class _Up>
1078
+ struct __apply_cv<_Tp&, _Up, false, false>
1079
+ {
1080
+ typedef _Up& type;
1081
+ };
1082
+
1083
+ template <class _Tp, class _Up>
1084
+ struct __apply_cv<_Tp&, _Up, true, false>
1085
+ {
1086
+ typedef const _Up& type;
1087
+ };
1088
+
1089
+ template <class _Tp, class _Up>
1090
+ struct __apply_cv<_Tp&, _Up, false, true>
1091
+ {
1092
+ typedef volatile _Up& type;
1093
+ };
1094
+
1095
+ template <class _Tp, class _Up>
1096
+ struct __apply_cv<_Tp&, _Up, true, true>
1097
+ {
1098
+ typedef const volatile _Up& type;
1099
+ };
1100
+
1101
+ template <class _Tp, bool = is_integral<_Tp>::value || is_enum<_Tp>::value>
1102
+ struct __make_signed {};
1103
+
1104
+ template <class _Tp>
1105
+ struct __make_signed<_Tp, true>
1106
+ {
1107
+ typedef typename __find_first<__signed_types, sizeof(_Tp)>::type type;
1108
+ };
1109
+
1110
+ template <> struct __make_signed<bool, true> {};
1111
+ template <> struct __make_signed< signed short, true> {typedef short type;};
1112
+ template <> struct __make_signed<unsigned short, true> {typedef short type;};
1113
+ template <> struct __make_signed< signed int, true> {typedef int type;};
1114
+ template <> struct __make_signed<unsigned int, true> {typedef int type;};
1115
+ template <> struct __make_signed< signed long, true> {typedef long type;};
1116
+ template <> struct __make_signed<unsigned long, true> {typedef long type;};
1117
+ template <> struct __make_signed< signed long long, true> {typedef long long type;};
1118
+ template <> struct __make_signed<unsigned long long, true> {typedef long long type;};
1119
+
1120
+ template <class _Tp>
1121
+ struct _LIBCPP_TYPE_VIS make_signed
1122
+ {
1123
+ typedef typename __apply_cv<_Tp, typename __make_signed<typename remove_cv<_Tp>::type>::type>::type type;
1124
+ };
1125
+
1126
+ template <class _Tp, bool = is_integral<_Tp>::value || is_enum<_Tp>::value>
1127
+ struct __make_unsigned {};
1128
+
1129
+ template <class _Tp>
1130
+ struct __make_unsigned<_Tp, true>
1131
+ {
1132
+ typedef typename __find_first<__unsigned_types, sizeof(_Tp)>::type type;
1133
+ };
1134
+
1135
+ template <> struct __make_unsigned<bool, true> {};
1136
+ template <> struct __make_unsigned< signed short, true> {typedef unsigned short type;};
1137
+ template <> struct __make_unsigned<unsigned short, true> {typedef unsigned short type;};
1138
+ template <> struct __make_unsigned< signed int, true> {typedef unsigned int type;};
1139
+ template <> struct __make_unsigned<unsigned int, true> {typedef unsigned int type;};
1140
+ template <> struct __make_unsigned< signed long, true> {typedef unsigned long type;};
1141
+ template <> struct __make_unsigned<unsigned long, true> {typedef unsigned long type;};
1142
+ template <> struct __make_unsigned< signed long long, true> {typedef unsigned long long type;};
1143
+ template <> struct __make_unsigned<unsigned long long, true> {typedef unsigned long long type;};
1144
+
1145
+ template <class _Tp>
1146
+ struct _LIBCPP_TYPE_VIS make_unsigned
1147
+ {
1148
+ typedef typename __apply_cv<_Tp, typename __make_unsigned<typename remove_cv<_Tp>::type>::type>::type type;
1149
+ };
1150
+
1151
+ #ifdef _LIBCPP_HAS_NO_VARIADICS
1152
+
1153
+ template <class _Tp, class _Up = void, class V = void>
1154
+ struct _LIBCPP_TYPE_VIS common_type
1155
+ {
1156
+ public:
1157
+ typedef typename common_type<typename common_type<_Tp, _Up>::type, V>::type type;
1158
+ };
1159
+
1160
+ template <class _Tp>
1161
+ struct _LIBCPP_TYPE_VIS common_type<_Tp, void, void>
1162
+ {
1163
+ public:
1164
+ typedef _Tp type;
1165
+ };
1166
+
1167
+ template <class _Tp, class _Up>
1168
+ struct _LIBCPP_TYPE_VIS common_type<_Tp, _Up, void>
1169
+ {
1170
+ private:
1171
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1172
+ static _Tp&& __t();
1173
+ static _Up&& __u();
1174
+ #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1175
+ static _Tp __t();
1176
+ static _Up __u();
1177
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1178
+ public:
1179
+ typedef typename remove_reference<decltype(true ? __t() : __u())>::type type;
1180
+ };
1181
+
1182
+ #else // _LIBCPP_HAS_NO_VARIADICS
1183
+
1184
+ template <class ..._Tp> struct common_type;
1185
+
1186
+ template <class _Tp>
1187
+ struct _LIBCPP_TYPE_VIS common_type<_Tp>
1188
+ {
1189
+ typedef _Tp type;
1190
+ };
1191
+
1192
+ template <class _Tp, class _Up>
1193
+ struct _LIBCPP_TYPE_VIS common_type<_Tp, _Up>
1194
+ {
1195
+ private:
1196
+ static _Tp&& __t();
1197
+ static _Up&& __u();
1198
+ static bool __f();
1199
+ public:
1200
+ typedef typename remove_reference<decltype(__f() ? __t() : __u())>::type type;
1201
+ };
1202
+
1203
+ template <class _Tp, class _Up, class ..._Vp>
1204
+ struct _LIBCPP_TYPE_VIS common_type<_Tp, _Up, _Vp...>
1205
+ {
1206
+ typedef typename common_type<typename common_type<_Tp, _Up>::type, _Vp...>::type type;
1207
+ };
1208
+
1209
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1210
+
1211
+ // is_assignable
1212
+
1213
+ template <class _Tp, class _Arg>
1214
+ decltype((_VSTD::declval<_Tp>() = _VSTD::declval<_Arg>(), true_type()))
1215
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1216
+ __is_assignable_test(_Tp&&, _Arg&&);
1217
+ #else
1218
+ __is_assignable_test(_Tp, _Arg&);
1219
+ #endif
1220
+
1221
+ template <class _Arg>
1222
+ false_type
1223
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1224
+ __is_assignable_test(__any, _Arg&&);
1225
+ #else
1226
+ __is_assignable_test(__any, _Arg&);
1227
+ #endif
1228
+
1229
+ template <class _Tp, class _Arg, bool = is_void<_Tp>::value || is_void<_Arg>::value>
1230
+ struct __is_assignable_imp
1231
+ : public common_type
1232
+ <
1233
+ decltype(__is_assignable_test(declval<_Tp>(), declval<_Arg>()))
1234
+ >::type {};
1235
+
1236
+ template <class _Tp, class _Arg>
1237
+ struct __is_assignable_imp<_Tp, _Arg, true>
1238
+ : public false_type
1239
+ {
1240
+ };
1241
+
1242
+ template <class _Tp, class _Arg>
1243
+ struct is_assignable
1244
+ : public __is_assignable_imp<_Tp, _Arg> {};
1245
+
1246
+ // is_copy_assignable
1247
+
1248
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_copy_assignable
1249
+ : public is_assignable<typename add_lvalue_reference<_Tp>::type,
1250
+ const typename add_lvalue_reference<_Tp>::type> {};
1251
+
1252
+ // is_move_assignable
1253
+
1254
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_move_assignable
1255
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1256
+ : public is_assignable<typename add_lvalue_reference<_Tp>::type,
1257
+ const typename add_rvalue_reference<_Tp>::type> {};
1258
+ #else
1259
+ : public is_copy_assignable<_Tp> {};
1260
+ #endif
1261
+
1262
+ // is_destructible
1263
+
1264
+ template <class _Tp>
1265
+ struct __destructible_test
1266
+ {
1267
+ _Tp __t;
1268
+ };
1269
+
1270
+ template <class _Tp>
1271
+ decltype((_VSTD::declval<__destructible_test<_Tp> >().~__destructible_test<_Tp>(), true_type()))
1272
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1273
+ __is_destructible_test(_Tp&&);
1274
+ #else
1275
+ __is_destructible_test(_Tp&);
1276
+ #endif
1277
+
1278
+ false_type
1279
+ __is_destructible_test(__any);
1280
+
1281
+ template <class _Tp, bool = is_void<_Tp>::value || is_abstract<_Tp>::value>
1282
+ struct __destructible_imp
1283
+ : public common_type
1284
+ <
1285
+ decltype(__is_destructible_test(declval<_Tp>()))
1286
+ >::type {};
1287
+
1288
+ template <class _Tp>
1289
+ struct __destructible_imp<_Tp, true>
1290
+ : public false_type {};
1291
+
1292
+ template <class _Tp>
1293
+ struct is_destructible
1294
+ : public __destructible_imp<_Tp> {};
1295
+
1296
+ // move
1297
+
1298
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1299
+
1300
+ template <class _Tp>
1301
+ inline _LIBCPP_INLINE_VISIBILITY
1302
+ typename remove_reference<_Tp>::type&&
1303
+ move(_Tp&& __t) _NOEXCEPT
1304
+ {
1305
+ typedef typename remove_reference<_Tp>::type _Up;
1306
+ return static_cast<_Up&&>(__t);
1307
+ }
1308
+
1309
+ template <class _Tp>
1310
+ inline _LIBCPP_INLINE_VISIBILITY
1311
+ _Tp&&
1312
+ forward(typename std::remove_reference<_Tp>::type& __t) _NOEXCEPT
1313
+ {
1314
+ return static_cast<_Tp&&>(__t);
1315
+ }
1316
+
1317
+ template <class _Tp>
1318
+ inline _LIBCPP_INLINE_VISIBILITY
1319
+ _Tp&&
1320
+ forward(typename std::remove_reference<_Tp>::type&& __t) _NOEXCEPT
1321
+ {
1322
+ static_assert(!std::is_lvalue_reference<_Tp>::value,
1323
+ "Can not forward an rvalue as an lvalue.");
1324
+ return static_cast<_Tp&&>(__t);
1325
+ }
1326
+
1327
+ #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1328
+
1329
+ template <class _Tp>
1330
+ inline _LIBCPP_INLINE_VISIBILITY
1331
+ _Tp&
1332
+ move(_Tp& __t)
1333
+ {
1334
+ return __t;
1335
+ }
1336
+
1337
+ template <class _Tp>
1338
+ inline _LIBCPP_INLINE_VISIBILITY
1339
+ const _Tp&
1340
+ move(const _Tp& __t)
1341
+ {
1342
+ return __t;
1343
+ }
1344
+
1345
+ template <class _Tp>
1346
+ inline _LIBCPP_INLINE_VISIBILITY
1347
+ _Tp&
1348
+ forward(typename std::remove_reference<_Tp>::type& __t) _NOEXCEPT
1349
+ {
1350
+ return __t;
1351
+ }
1352
+
1353
+
1354
+ template <class _Tp>
1355
+ class __rv
1356
+ {
1357
+ typedef typename remove_reference<_Tp>::type _Trr;
1358
+ _Trr& t_;
1359
+ public:
1360
+ _LIBCPP_INLINE_VISIBILITY
1361
+ _Trr* operator->() {return &t_;}
1362
+ _LIBCPP_INLINE_VISIBILITY
1363
+ explicit __rv(_Trr& __t) : t_(__t) {}
1364
+ };
1365
+
1366
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1367
+
1368
+ template <class _Tp>
1369
+ struct _LIBCPP_TYPE_VIS decay
1370
+ {
1371
+ private:
1372
+ typedef typename remove_reference<_Tp>::type _Up;
1373
+ public:
1374
+ typedef typename conditional
1375
+ <
1376
+ is_array<_Up>::value,
1377
+ typename remove_extent<_Up>::type*,
1378
+ typename conditional
1379
+ <
1380
+ is_function<_Up>::value,
1381
+ typename add_pointer<_Up>::type,
1382
+ typename remove_cv<_Up>::type
1383
+ >::type
1384
+ >::type type;
1385
+ };
1386
+
1387
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1388
+
1389
+ template <class _Tp>
1390
+ inline _LIBCPP_INLINE_VISIBILITY
1391
+ typename decay<_Tp>::type
1392
+ __decay_copy(_Tp&& __t)
1393
+ {
1394
+ return _VSTD::forward<_Tp>(__t);
1395
+ }
1396
+
1397
+ #else
1398
+
1399
+ template <class _Tp>
1400
+ inline _LIBCPP_INLINE_VISIBILITY
1401
+ typename decay<_Tp>::type
1402
+ __decay_copy(const _Tp& __t)
1403
+ {
1404
+ return _VSTD::forward<_Tp>(__t);
1405
+ }
1406
+
1407
+ #endif
1408
+
1409
+ template <class _MP, bool _IsMemberFuctionPtr, bool _IsMemberObjectPtr>
1410
+ struct __member_pointer_traits_imp
1411
+ {
1412
+ };
1413
+
1414
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
1415
+
1416
+ template <class _Rp, class _Class, class ..._Param>
1417
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...), true, false>
1418
+ {
1419
+ typedef _Class _ClassType;
1420
+ typedef _Rp _ReturnType;
1421
+ };
1422
+
1423
+ template <class _Rp, class _Class, class ..._Param>
1424
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const, true, false>
1425
+ {
1426
+ typedef _Class const _ClassType;
1427
+ typedef _Rp _ReturnType;
1428
+ };
1429
+
1430
+ template <class _Rp, class _Class, class ..._Param>
1431
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile, true, false>
1432
+ {
1433
+ typedef _Class volatile _ClassType;
1434
+ typedef _Rp _ReturnType;
1435
+ };
1436
+
1437
+ template <class _Rp, class _Class, class ..._Param>
1438
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile, true, false>
1439
+ {
1440
+ typedef _Class const volatile _ClassType;
1441
+ typedef _Rp _ReturnType;
1442
+ };
1443
+
1444
+ #if __has_feature(cxx_reference_qualified_functions)
1445
+
1446
+ template <class _Rp, class _Class, class ..._Param>
1447
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &, true, false>
1448
+ {
1449
+ typedef _Class& _ClassType;
1450
+ typedef _Rp _ReturnType;
1451
+ };
1452
+
1453
+ template <class _Rp, class _Class, class ..._Param>
1454
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&, true, false>
1455
+ {
1456
+ typedef _Class const& _ClassType;
1457
+ typedef _Rp _ReturnType;
1458
+ };
1459
+
1460
+ template <class _Rp, class _Class, class ..._Param>
1461
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&, true, false>
1462
+ {
1463
+ typedef _Class volatile& _ClassType;
1464
+ typedef _Rp _ReturnType;
1465
+ };
1466
+
1467
+ template <class _Rp, class _Class, class ..._Param>
1468
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&, true, false>
1469
+ {
1470
+ typedef _Class const volatile& _ClassType;
1471
+ typedef _Rp _ReturnType;
1472
+ };
1473
+
1474
+ template <class _Rp, class _Class, class ..._Param>
1475
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &&, true, false>
1476
+ {
1477
+ typedef _Class&& _ClassType;
1478
+ typedef _Rp _ReturnType;
1479
+ };
1480
+
1481
+ template <class _Rp, class _Class, class ..._Param>
1482
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&&, true, false>
1483
+ {
1484
+ typedef _Class const&& _ClassType;
1485
+ typedef _Rp _ReturnType;
1486
+ };
1487
+
1488
+ template <class _Rp, class _Class, class ..._Param>
1489
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&&, true, false>
1490
+ {
1491
+ typedef _Class volatile&& _ClassType;
1492
+ typedef _Rp _ReturnType;
1493
+ };
1494
+
1495
+ template <class _Rp, class _Class, class ..._Param>
1496
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&&, true, false>
1497
+ {
1498
+ typedef _Class const volatile&& _ClassType;
1499
+ typedef _Rp _ReturnType;
1500
+ };
1501
+
1502
+ #endif // __has_feature(cxx_reference_qualified_functions)
1503
+
1504
+ #else // _LIBCPP_HAS_NO_VARIADICS
1505
+
1506
+ template <class _Rp, class _Class>
1507
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(), true, false>
1508
+ {
1509
+ typedef _Class _ClassType;
1510
+ typedef _Rp _ReturnType;
1511
+ };
1512
+
1513
+ template <class _Rp, class _Class, class _P0>
1514
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0), true, false>
1515
+ {
1516
+ typedef _Class _ClassType;
1517
+ typedef _Rp _ReturnType;
1518
+ };
1519
+
1520
+ template <class _Rp, class _Class, class _P0, class _P1>
1521
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1), true, false>
1522
+ {
1523
+ typedef _Class _ClassType;
1524
+ typedef _Rp _ReturnType;
1525
+ };
1526
+
1527
+ template <class _Rp, class _Class, class _P0, class _P1, class _P2>
1528
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2), true, false>
1529
+ {
1530
+ typedef _Class _ClassType;
1531
+ typedef _Rp _ReturnType;
1532
+ };
1533
+
1534
+ template <class _Rp, class _Class>
1535
+ struct __member_pointer_traits_imp<_Rp (_Class::*)() const, true, false>
1536
+ {
1537
+ typedef _Class const _ClassType;
1538
+ typedef _Rp _ReturnType;
1539
+ };
1540
+
1541
+ template <class _Rp, class _Class, class _P0>
1542
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0) const, true, false>
1543
+ {
1544
+ typedef _Class const _ClassType;
1545
+ typedef _Rp _ReturnType;
1546
+ };
1547
+
1548
+ template <class _Rp, class _Class, class _P0, class _P1>
1549
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1) const, true, false>
1550
+ {
1551
+ typedef _Class const _ClassType;
1552
+ typedef _Rp _ReturnType;
1553
+ };
1554
+
1555
+ template <class _Rp, class _Class, class _P0, class _P1, class _P2>
1556
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2) const, true, false>
1557
+ {
1558
+ typedef _Class const _ClassType;
1559
+ typedef _Rp _ReturnType;
1560
+ };
1561
+
1562
+ template <class _Rp, class _Class>
1563
+ struct __member_pointer_traits_imp<_Rp (_Class::*)() volatile, true, false>
1564
+ {
1565
+ typedef _Class volatile _ClassType;
1566
+ typedef _Rp _ReturnType;
1567
+ };
1568
+
1569
+ template <class _Rp, class _Class, class _P0>
1570
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0) volatile, true, false>
1571
+ {
1572
+ typedef _Class volatile _ClassType;
1573
+ typedef _Rp _ReturnType;
1574
+ };
1575
+
1576
+ template <class _Rp, class _Class, class _P0, class _P1>
1577
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1) volatile, true, false>
1578
+ {
1579
+ typedef _Class volatile _ClassType;
1580
+ typedef _Rp _ReturnType;
1581
+ };
1582
+
1583
+ template <class _Rp, class _Class, class _P0, class _P1, class _P2>
1584
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2) volatile, true, false>
1585
+ {
1586
+ typedef _Class volatile _ClassType;
1587
+ typedef _Rp _ReturnType;
1588
+ };
1589
+
1590
+ template <class _Rp, class _Class>
1591
+ struct __member_pointer_traits_imp<_Rp (_Class::*)() const volatile, true, false>
1592
+ {
1593
+ typedef _Class const volatile _ClassType;
1594
+ typedef _Rp _ReturnType;
1595
+ };
1596
+
1597
+ template <class _Rp, class _Class, class _P0>
1598
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0) const volatile, true, false>
1599
+ {
1600
+ typedef _Class const volatile _ClassType;
1601
+ typedef _Rp _ReturnType;
1602
+ };
1603
+
1604
+ template <class _Rp, class _Class, class _P0, class _P1>
1605
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1) const volatile, true, false>
1606
+ {
1607
+ typedef _Class const volatile _ClassType;
1608
+ typedef _Rp _ReturnType;
1609
+ };
1610
+
1611
+ template <class _Rp, class _Class, class _P0, class _P1, class _P2>
1612
+ struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2) const volatile, true, false>
1613
+ {
1614
+ typedef _Class const volatile _ClassType;
1615
+ typedef _Rp _ReturnType;
1616
+ };
1617
+
1618
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1619
+
1620
+ template <class _Rp, class _Class>
1621
+ struct __member_pointer_traits_imp<_Rp _Class::*, false, true>
1622
+ {
1623
+ typedef _Class _ClassType;
1624
+ typedef _Rp _ReturnType;
1625
+ };
1626
+
1627
+ template <class _MP>
1628
+ struct __member_pointer_traits
1629
+ : public __member_pointer_traits_imp<_MP,
1630
+ is_member_function_pointer<_MP>::value,
1631
+ is_member_object_pointer<_MP>::value>
1632
+ {
1633
+ // typedef ... _ClassType;
1634
+ // typedef ... _ReturnType;
1635
+ };
1636
+
1637
+ // result_of
1638
+
1639
+ template <class _Callable> class result_of;
1640
+
1641
+ #ifdef _LIBCPP_HAS_NO_VARIADICS
1642
+
1643
+ template <class _Fn, bool, bool>
1644
+ class __result_of
1645
+ {
1646
+ };
1647
+
1648
+ template <class _Fn>
1649
+ class __result_of<_Fn(), true, false>
1650
+ {
1651
+ public:
1652
+ typedef decltype(declval<_Fn>()()) type;
1653
+ };
1654
+
1655
+ template <class _Fn, class _A0>
1656
+ class __result_of<_Fn(_A0), true, false>
1657
+ {
1658
+ public:
1659
+ typedef decltype(declval<_Fn>()(declval<_A0>())) type;
1660
+ };
1661
+
1662
+ template <class _Fn, class _A0, class _A1>
1663
+ class __result_of<_Fn(_A0, _A1), true, false>
1664
+ {
1665
+ public:
1666
+ typedef decltype(declval<_Fn>()(declval<_A0>(), declval<_A1>())) type;
1667
+ };
1668
+
1669
+ template <class _Fn, class _A0, class _A1, class _A2>
1670
+ class __result_of<_Fn(_A0, _A1, _A2), true, false>
1671
+ {
1672
+ public:
1673
+ typedef decltype(declval<_Fn>()(declval<_A0>(), declval<_A1>(), declval<_A2>())) type;
1674
+ };
1675
+
1676
+ template <class _MP, class _Tp, bool _IsMemberFunctionPtr>
1677
+ struct __result_of_mp;
1678
+
1679
+ // member function pointer
1680
+
1681
+ template <class _MP, class _Tp>
1682
+ struct __result_of_mp<_MP, _Tp, true>
1683
+ : public common_type<typename __member_pointer_traits<_MP>::_ReturnType>
1684
+ {
1685
+ };
1686
+
1687
+ // member data pointer
1688
+
1689
+ template <class _MP, class _Tp, bool>
1690
+ struct __result_of_mdp;
1691
+
1692
+ template <class _Rp, class _Class, class _Tp>
1693
+ struct __result_of_mdp<_Rp _Class::*, _Tp, false>
1694
+ {
1695
+ typedef typename __apply_cv<decltype(*_VSTD::declval<_Tp>()), _Rp>::type& type;
1696
+ };
1697
+
1698
+ template <class _Rp, class _Class, class _Tp>
1699
+ struct __result_of_mdp<_Rp _Class::*, _Tp, true>
1700
+ {
1701
+ typedef typename __apply_cv<_Tp, _Rp>::type& type;
1702
+ };
1703
+
1704
+ template <class _Rp, class _Class, class _Tp>
1705
+ struct __result_of_mp<_Rp _Class::*, _Tp, false>
1706
+ : public __result_of_mdp<_Rp _Class::*, _Tp,
1707
+ is_base_of<_Class, typename remove_reference<_Tp>::type>::value>
1708
+ {
1709
+ };
1710
+
1711
+
1712
+
1713
+ template <class _Fn, class _Tp>
1714
+ class __result_of<_Fn(_Tp), false, true> // _Fn must be member pointer
1715
+ : public __result_of_mp<typename remove_reference<_Fn>::type,
1716
+ _Tp,
1717
+ is_member_function_pointer<typename remove_reference<_Fn>::type>::value>
1718
+ {
1719
+ };
1720
+
1721
+ template <class _Fn, class _Tp, class _A0>
1722
+ class __result_of<_Fn(_Tp, _A0), false, true> // _Fn must be member pointer
1723
+ : public __result_of_mp<typename remove_reference<_Fn>::type,
1724
+ _Tp,
1725
+ is_member_function_pointer<typename remove_reference<_Fn>::type>::value>
1726
+ {
1727
+ };
1728
+
1729
+ template <class _Fn, class _Tp, class _A0, class _A1>
1730
+ class __result_of<_Fn(_Tp, _A0, _A1), false, true> // _Fn must be member pointer
1731
+ : public __result_of_mp<typename remove_reference<_Fn>::type,
1732
+ _Tp,
1733
+ is_member_function_pointer<typename remove_reference<_Fn>::type>::value>
1734
+ {
1735
+ };
1736
+
1737
+ template <class _Fn, class _Tp, class _A0, class _A1, class _A2>
1738
+ class __result_of<_Fn(_Tp, _A0, _A1, _A2), false, true> // _Fn must be member pointer
1739
+ : public __result_of_mp<typename remove_reference<_Fn>::type,
1740
+ _Tp,
1741
+ is_member_function_pointer<typename remove_reference<_Fn>::type>::value>
1742
+ {
1743
+ };
1744
+
1745
+ // result_of
1746
+
1747
+ template <class _Fn>
1748
+ class _LIBCPP_TYPE_VIS result_of<_Fn()>
1749
+ : public __result_of<_Fn(),
1750
+ is_class<typename remove_reference<_Fn>::type>::value ||
1751
+ is_function<typename remove_reference<_Fn>::type>::value,
1752
+ is_member_pointer<typename remove_reference<_Fn>::type>::value
1753
+ >
1754
+ {
1755
+ };
1756
+
1757
+ template <class _Fn, class _A0>
1758
+ class _LIBCPP_TYPE_VIS result_of<_Fn(_A0)>
1759
+ : public __result_of<_Fn(_A0),
1760
+ is_class<typename remove_reference<_Fn>::type>::value ||
1761
+ is_function<typename remove_reference<_Fn>::type>::value,
1762
+ is_member_pointer<typename remove_reference<_Fn>::type>::value
1763
+ >
1764
+ {
1765
+ };
1766
+
1767
+ template <class _Fn, class _A0, class _A1>
1768
+ class _LIBCPP_TYPE_VIS result_of<_Fn(_A0, _A1)>
1769
+ : public __result_of<_Fn(_A0, _A1),
1770
+ is_class<typename remove_reference<_Fn>::type>::value ||
1771
+ is_function<typename remove_reference<_Fn>::type>::value,
1772
+ is_member_pointer<typename remove_reference<_Fn>::type>::value
1773
+ >
1774
+ {
1775
+ };
1776
+
1777
+ template <class _Fn, class _A0, class _A1, class _A2>
1778
+ class _LIBCPP_TYPE_VIS result_of<_Fn(_A0, _A1, _A2)>
1779
+ : public __result_of<_Fn(_A0, _A1, _A2),
1780
+ is_class<typename remove_reference<_Fn>::type>::value ||
1781
+ is_function<typename remove_reference<_Fn>::type>::value,
1782
+ is_member_pointer<typename remove_reference<_Fn>::type>::value
1783
+ >
1784
+ {
1785
+ };
1786
+
1787
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1788
+
1789
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
1790
+
1791
+ // template <class T, class... Args> struct is_constructible;
1792
+
1793
+ // main is_constructible test
1794
+
1795
+ template<typename, typename T> struct __select_2nd { typedef T type; };
1796
+
1797
+ template <class _Tp, class ..._Args>
1798
+ typename __select_2nd<decltype(_VSTD::move(_Tp(_VSTD::declval<_Args>()...))), true_type>::type
1799
+ __is_constructible_test(_Tp&&, _Args&& ...);
1800
+
1801
+ template <class ..._Args>
1802
+ false_type
1803
+ __is_constructible_test(__any, _Args&& ...);
1804
+
1805
+ template <bool, class _Tp, class... _Args>
1806
+ struct __is_constructible // false, _Tp is not a scalar
1807
+ : public common_type
1808
+ <
1809
+ decltype(__is_constructible_test(declval<_Tp>(), declval<_Args>()...))
1810
+ >::type
1811
+ {};
1812
+
1813
+ // function types are not constructible
1814
+
1815
+ template <class _Rp, class... _A1, class... _A2>
1816
+ struct __is_constructible<false, _Rp(_A1...), _A2...>
1817
+ : public false_type
1818
+ {};
1819
+
1820
+ // handle scalars and reference types
1821
+
1822
+ // Scalars are default constructible, references are not
1823
+
1824
+ template <class _Tp>
1825
+ struct __is_constructible<true, _Tp>
1826
+ : public is_scalar<_Tp>
1827
+ {};
1828
+
1829
+ // Scalars and references are constructible from one arg if that arg is
1830
+ // implicitly convertible to the scalar or reference.
1831
+
1832
+ template <class _Tp>
1833
+ struct __is_constructible_ref
1834
+ {
1835
+ true_type static __lxx(_Tp);
1836
+ false_type static __lxx(...);
1837
+ };
1838
+
1839
+ template <class _Tp, class _A0>
1840
+ struct __is_constructible<true, _Tp, _A0>
1841
+ : public common_type
1842
+ <
1843
+ decltype(__is_constructible_ref<_Tp>::__lxx(declval<_A0>()))
1844
+ >::type
1845
+ {};
1846
+
1847
+ // Scalars and references are not constructible from multiple args.
1848
+
1849
+ template <class _Tp, class _A0, class ..._Args>
1850
+ struct __is_constructible<true, _Tp, _A0, _Args...>
1851
+ : public false_type
1852
+ {};
1853
+
1854
+ // Treat scalars and reference types separately
1855
+
1856
+ template <bool, class _Tp, class... _Args>
1857
+ struct __is_constructible_void_check
1858
+ : public __is_constructible<is_scalar<_Tp>::value || is_reference<_Tp>::value,
1859
+ _Tp, _Args...>
1860
+ {};
1861
+
1862
+ // If any of T or Args is void, is_constructible should be false
1863
+
1864
+ template <class _Tp, class... _Args>
1865
+ struct __is_constructible_void_check<true, _Tp, _Args...>
1866
+ : public false_type
1867
+ {};
1868
+
1869
+ template <class ..._Args> struct __contains_void;
1870
+
1871
+ template <> struct __contains_void<> : false_type {};
1872
+
1873
+ template <class _A0, class ..._Args>
1874
+ struct __contains_void<_A0, _Args...>
1875
+ {
1876
+ static const bool value = is_void<_A0>::value ||
1877
+ __contains_void<_Args...>::value;
1878
+ };
1879
+
1880
+ // is_constructible entry point
1881
+
1882
+ template <class _Tp, class... _Args>
1883
+ struct _LIBCPP_TYPE_VIS is_constructible
1884
+ : public __is_constructible_void_check<__contains_void<_Tp, _Args...>::value
1885
+ || is_abstract<_Tp>::value,
1886
+ _Tp, _Args...>
1887
+ {};
1888
+
1889
+ // Array types are default constructible if their element type
1890
+ // is default constructible
1891
+
1892
+ template <class _Ap, size_t _Np>
1893
+ struct __is_constructible<false, _Ap[_Np]>
1894
+ : public is_constructible<typename remove_all_extents<_Ap>::type>
1895
+ {};
1896
+
1897
+ // Otherwise array types are not constructible by this syntax
1898
+
1899
+ template <class _Ap, size_t _Np, class ..._Args>
1900
+ struct __is_constructible<false, _Ap[_Np], _Args...>
1901
+ : public false_type
1902
+ {};
1903
+
1904
+ // Incomplete array types are not constructible
1905
+
1906
+ template <class _Ap, class ..._Args>
1907
+ struct __is_constructible<false, _Ap[], _Args...>
1908
+ : public false_type
1909
+ {};
1910
+
1911
+ #else // _LIBCPP_HAS_NO_VARIADICS
1912
+
1913
+ // template <class T> struct is_constructible0;
1914
+
1915
+ // main is_constructible0 test
1916
+
1917
+ template <class _Tp>
1918
+ decltype((_Tp(), true_type()))
1919
+ __is_constructible0_test(_Tp&);
1920
+
1921
+ false_type
1922
+ __is_constructible0_test(__any);
1923
+
1924
+ template <class _Tp, class _A0>
1925
+ decltype((_Tp(_VSTD::declval<_A0>()), true_type()))
1926
+ __is_constructible1_test(_Tp&, _A0&);
1927
+
1928
+ template <class _A0>
1929
+ false_type
1930
+ __is_constructible1_test(__any, _A0&);
1931
+
1932
+ template <class _Tp, class _A0, class _A1>
1933
+ decltype((_Tp(_VSTD::declval<_A0>(), _VSTD::declval<_A1>()), true_type()))
1934
+ __is_constructible2_test(_Tp&, _A0&, _A1&);
1935
+
1936
+ template <class _A0, class _A1>
1937
+ false_type
1938
+ __is_constructible2_test(__any, _A0&, _A1&);
1939
+
1940
+ template <bool, class _Tp>
1941
+ struct __is_constructible0_imp // false, _Tp is not a scalar
1942
+ : public common_type
1943
+ <
1944
+ decltype(__is_constructible0_test(declval<_Tp&>()))
1945
+ >::type
1946
+ {};
1947
+
1948
+ template <bool, class _Tp, class _A0>
1949
+ struct __is_constructible1_imp // false, _Tp is not a scalar
1950
+ : public common_type
1951
+ <
1952
+ decltype(__is_constructible1_test(declval<_Tp&>(), declval<_A0&>()))
1953
+ >::type
1954
+ {};
1955
+
1956
+ template <bool, class _Tp, class _A0, class _A1>
1957
+ struct __is_constructible2_imp // false, _Tp is not a scalar
1958
+ : public common_type
1959
+ <
1960
+ decltype(__is_constructible2_test(declval<_Tp&>(), declval<_A0>(), declval<_A1>()))
1961
+ >::type
1962
+ {};
1963
+
1964
+ // handle scalars and reference types
1965
+
1966
+ // Scalars are default constructible, references are not
1967
+
1968
+ template <class _Tp>
1969
+ struct __is_constructible0_imp<true, _Tp>
1970
+ : public is_scalar<_Tp>
1971
+ {};
1972
+
1973
+ template <class _Tp, class _A0>
1974
+ struct __is_constructible1_imp<true, _Tp, _A0>
1975
+ : public is_convertible<_A0, _Tp>
1976
+ {};
1977
+
1978
+ template <class _Tp, class _A0, class _A1>
1979
+ struct __is_constructible2_imp<true, _Tp, _A0, _A1>
1980
+ : public false_type
1981
+ {};
1982
+
1983
+ // Treat scalars and reference types separately
1984
+
1985
+ template <bool, class _Tp>
1986
+ struct __is_constructible0_void_check
1987
+ : public __is_constructible0_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value,
1988
+ _Tp>
1989
+ {};
1990
+
1991
+ template <bool, class _Tp, class _A0>
1992
+ struct __is_constructible1_void_check
1993
+ : public __is_constructible1_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value,
1994
+ _Tp, _A0>
1995
+ {};
1996
+
1997
+ template <bool, class _Tp, class _A0, class _A1>
1998
+ struct __is_constructible2_void_check
1999
+ : public __is_constructible2_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value,
2000
+ _Tp, _A0, _A1>
2001
+ {};
2002
+
2003
+ // If any of T or Args is void, is_constructible should be false
2004
+
2005
+ template <class _Tp>
2006
+ struct __is_constructible0_void_check<true, _Tp>
2007
+ : public false_type
2008
+ {};
2009
+
2010
+ template <class _Tp, class _A0>
2011
+ struct __is_constructible1_void_check<true, _Tp, _A0>
2012
+ : public false_type
2013
+ {};
2014
+
2015
+ template <class _Tp, class _A0, class _A1>
2016
+ struct __is_constructible2_void_check<true, _Tp, _A0, _A1>
2017
+ : public false_type
2018
+ {};
2019
+
2020
+ // is_constructible entry point
2021
+
2022
+ namespace __is_construct
2023
+ {
2024
+
2025
+ struct __nat {};
2026
+
2027
+ }
2028
+
2029
+ template <class _Tp, class _A0 = __is_construct::__nat,
2030
+ class _A1 = __is_construct::__nat>
2031
+ struct _LIBCPP_TYPE_VIS is_constructible
2032
+ : public __is_constructible2_void_check<is_void<_Tp>::value
2033
+ || is_abstract<_Tp>::value
2034
+ || is_function<_Tp>::value
2035
+ || is_void<_A0>::value
2036
+ || is_void<_A1>::value,
2037
+ _Tp, _A0, _A1>
2038
+ {};
2039
+
2040
+ template <class _Tp>
2041
+ struct _LIBCPP_TYPE_VIS is_constructible<_Tp, __is_construct::__nat, __is_construct::__nat>
2042
+ : public __is_constructible0_void_check<is_void<_Tp>::value
2043
+ || is_abstract<_Tp>::value
2044
+ || is_function<_Tp>::value,
2045
+ _Tp>
2046
+ {};
2047
+
2048
+ template <class _Tp, class _A0>
2049
+ struct _LIBCPP_TYPE_VIS is_constructible<_Tp, _A0, __is_construct::__nat>
2050
+ : public __is_constructible1_void_check<is_void<_Tp>::value
2051
+ || is_abstract<_Tp>::value
2052
+ || is_function<_Tp>::value
2053
+ || is_void<_A0>::value,
2054
+ _Tp, _A0>
2055
+ {};
2056
+
2057
+ // Array types are default constructible if their element type
2058
+ // is default constructible
2059
+
2060
+ template <class _Ap, size_t _Np>
2061
+ struct __is_constructible0_imp<false, _Ap[_Np]>
2062
+ : public is_constructible<typename remove_all_extents<_Ap>::type>
2063
+ {};
2064
+
2065
+ template <class _Ap, size_t _Np, class _A0>
2066
+ struct __is_constructible1_imp<false, _Ap[_Np], _A0>
2067
+ : public false_type
2068
+ {};
2069
+
2070
+ template <class _Ap, size_t _Np, class _A0, class _A1>
2071
+ struct __is_constructible2_imp<false, _Ap[_Np], _A0, _A1>
2072
+ : public false_type
2073
+ {};
2074
+
2075
+ // Incomplete array types are not constructible
2076
+
2077
+ template <class _Ap>
2078
+ struct __is_constructible0_imp<false, _Ap[]>
2079
+ : public false_type
2080
+ {};
2081
+
2082
+ template <class _Ap, class _A0>
2083
+ struct __is_constructible1_imp<false, _Ap[], _A0>
2084
+ : public false_type
2085
+ {};
2086
+
2087
+ template <class _Ap, class _A0, class _A1>
2088
+ struct __is_constructible2_imp<false, _Ap[], _A0, _A1>
2089
+ : public false_type
2090
+ {};
2091
+
2092
+ #endif // _LIBCPP_HAS_NO_VARIADICS
2093
+
2094
+ // is_default_constructible
2095
+
2096
+ template <class _Tp>
2097
+ struct _LIBCPP_TYPE_VIS is_default_constructible
2098
+ : public is_constructible<_Tp>
2099
+ {};
2100
+
2101
+ // is_copy_constructible
2102
+
2103
+ template <class _Tp>
2104
+ struct _LIBCPP_TYPE_VIS is_copy_constructible
2105
+ : public is_constructible<_Tp, const typename add_lvalue_reference<_Tp>::type>
2106
+ {};
2107
+
2108
+ // is_move_constructible
2109
+
2110
+ template <class _Tp>
2111
+ struct _LIBCPP_TYPE_VIS is_move_constructible
2112
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2113
+ : public is_constructible<_Tp, typename add_rvalue_reference<_Tp>::type>
2114
+ #else
2115
+ : public is_copy_constructible<_Tp>
2116
+ #endif
2117
+ {};
2118
+
2119
+ // is_trivially_constructible
2120
+
2121
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
2122
+
2123
+ #if __has_feature(is_trivially_constructible)
2124
+
2125
+ template <class _Tp, class... _Args>
2126
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible
2127
+ : integral_constant<bool, __is_trivially_constructible(_Tp, _Args...)>
2128
+ {
2129
+ };
2130
+
2131
+ #else // !__has_feature(is_trivially_constructible)
2132
+
2133
+ template <class _Tp, class... _Args>
2134
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible
2135
+ : false_type
2136
+ {
2137
+ };
2138
+
2139
+ template <class _Tp>
2140
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp>
2141
+ #if __has_feature(has_trivial_constructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2142
+ : integral_constant<bool, __has_trivial_constructor(_Tp)>
2143
+ #else
2144
+ : integral_constant<bool, is_scalar<_Tp>::value>
2145
+ #endif
2146
+ {
2147
+ };
2148
+
2149
+ template <class _Tp>
2150
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2151
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&&>
2152
+ #else
2153
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp>
2154
+ #endif
2155
+ : integral_constant<bool, is_scalar<_Tp>::value>
2156
+ {
2157
+ };
2158
+
2159
+ template <class _Tp>
2160
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, const _Tp&>
2161
+ : integral_constant<bool, is_scalar<_Tp>::value>
2162
+ {
2163
+ };
2164
+
2165
+ template <class _Tp>
2166
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&>
2167
+ : integral_constant<bool, is_scalar<_Tp>::value>
2168
+ {
2169
+ };
2170
+
2171
+ #endif // !__has_feature(is_trivially_constructible)
2172
+
2173
+ #else // _LIBCPP_HAS_NO_VARIADICS
2174
+
2175
+ template <class _Tp, class _A0 = __is_construct::__nat,
2176
+ class _A1 = __is_construct::__nat>
2177
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible
2178
+ : false_type
2179
+ {
2180
+ };
2181
+
2182
+ #if __has_feature(is_trivially_constructible)
2183
+
2184
+ template <class _Tp>
2185
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, __is_construct::__nat,
2186
+ __is_construct::__nat>
2187
+ : integral_constant<bool, __is_trivially_constructible(_Tp)>
2188
+ {
2189
+ };
2190
+
2191
+ template <class _Tp>
2192
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp,
2193
+ __is_construct::__nat>
2194
+ : integral_constant<bool, __is_trivially_constructible(_Tp, _Tp)>
2195
+ {
2196
+ };
2197
+
2198
+ template <class _Tp>
2199
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, const _Tp&,
2200
+ __is_construct::__nat>
2201
+ : integral_constant<bool, __is_trivially_constructible(_Tp, const _Tp&)>
2202
+ {
2203
+ };
2204
+
2205
+ template <class _Tp>
2206
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&,
2207
+ __is_construct::__nat>
2208
+ : integral_constant<bool, __is_trivially_constructible(_Tp, _Tp&)>
2209
+ {
2210
+ };
2211
+
2212
+ #else // !__has_feature(is_trivially_constructible)
2213
+
2214
+ template <class _Tp>
2215
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, __is_construct::__nat,
2216
+ __is_construct::__nat>
2217
+ : integral_constant<bool, is_scalar<_Tp>::value>
2218
+ {
2219
+ };
2220
+
2221
+ template <class _Tp>
2222
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp,
2223
+ __is_construct::__nat>
2224
+ : integral_constant<bool, is_scalar<_Tp>::value>
2225
+ {
2226
+ };
2227
+
2228
+ template <class _Tp>
2229
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, const _Tp&,
2230
+ __is_construct::__nat>
2231
+ : integral_constant<bool, is_scalar<_Tp>::value>
2232
+ {
2233
+ };
2234
+
2235
+ template <class _Tp>
2236
+ struct _LIBCPP_TYPE_VIS is_trivially_constructible<_Tp, _Tp&,
2237
+ __is_construct::__nat>
2238
+ : integral_constant<bool, is_scalar<_Tp>::value>
2239
+ {
2240
+ };
2241
+
2242
+ #endif // !__has_feature(is_trivially_constructible)
2243
+
2244
+ #endif // _LIBCPP_HAS_NO_VARIADICS
2245
+
2246
+ // is_trivially_default_constructible
2247
+
2248
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivially_default_constructible
2249
+ : public is_trivially_constructible<_Tp>
2250
+ {};
2251
+
2252
+ // is_trivially_copy_constructible
2253
+
2254
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivially_copy_constructible
2255
+ : public is_trivially_constructible<_Tp, const typename add_lvalue_reference<_Tp>::type>
2256
+ {};
2257
+
2258
+ // is_trivially_move_constructible
2259
+
2260
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivially_move_constructible
2261
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2262
+ : public is_trivially_constructible<_Tp, typename add_rvalue_reference<_Tp>::type>
2263
+ #else
2264
+ : public is_trivially_copy_constructible<_Tp>
2265
+ #endif
2266
+ {};
2267
+
2268
+ // is_trivially_assignable
2269
+
2270
+ #if __has_feature(is_trivially_constructible)
2271
+
2272
+ template <class _Tp, class _Arg>
2273
+ struct is_trivially_assignable
2274
+ : integral_constant<bool, __is_trivially_assignable(_Tp, _Arg)>
2275
+ {
2276
+ };
2277
+
2278
+ #else // !__has_feature(is_trivially_constructible)
2279
+
2280
+ template <class _Tp, class _Arg>
2281
+ struct is_trivially_assignable
2282
+ : public false_type {};
2283
+
2284
+ template <class _Tp>
2285
+ struct is_trivially_assignable<_Tp&, _Tp>
2286
+ : integral_constant<bool, is_scalar<_Tp>::value> {};
2287
+
2288
+ template <class _Tp>
2289
+ struct is_trivially_assignable<_Tp&, _Tp&>
2290
+ : integral_constant<bool, is_scalar<_Tp>::value> {};
2291
+
2292
+ template <class _Tp>
2293
+ struct is_trivially_assignable<_Tp&, const _Tp&>
2294
+ : integral_constant<bool, is_scalar<_Tp>::value> {};
2295
+
2296
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2297
+
2298
+ template <class _Tp>
2299
+ struct is_trivially_assignable<_Tp&, _Tp&&>
2300
+ : integral_constant<bool, is_scalar<_Tp>::value> {};
2301
+
2302
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
2303
+
2304
+ #endif // !__has_feature(is_trivially_constructible)
2305
+
2306
+ // is_trivially_copy_assignable
2307
+
2308
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivially_copy_assignable
2309
+ : public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type,
2310
+ const typename add_lvalue_reference<_Tp>::type>
2311
+ {};
2312
+
2313
+ // is_trivially_move_assignable
2314
+
2315
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivially_move_assignable
2316
+ : public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type,
2317
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2318
+ typename add_rvalue_reference<_Tp>::type>
2319
+ #else
2320
+ typename add_lvalue_reference<_Tp>::type>
2321
+ #endif
2322
+ {};
2323
+
2324
+ // is_trivially_destructible
2325
+
2326
+ #if __has_feature(has_trivial_destructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2327
+
2328
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivially_destructible
2329
+ : public integral_constant<bool, __has_trivial_destructor(_Tp)> {};
2330
+
2331
+ #else // _LIBCPP_HAS_TYPE_TRAITS
2332
+
2333
+ template <class _Tp> struct __libcpp_trivial_destructor
2334
+ : public integral_constant<bool, is_scalar<_Tp>::value ||
2335
+ is_reference<_Tp>::value> {};
2336
+
2337
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivially_destructible
2338
+ : public __libcpp_trivial_destructor<typename remove_all_extents<_Tp>::type> {};
2339
+
2340
+ #endif // _LIBCPP_HAS_TYPE_TRAITS
2341
+
2342
+ // is_nothrow_constructible
2343
+
2344
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
2345
+
2346
+ #if __has_feature(cxx_noexcept)
2347
+
2348
+ template <bool, class _Tp, class... _Args> struct __is_nothrow_constructible;
2349
+
2350
+ template <class _Tp, class... _Args>
2351
+ struct __is_nothrow_constructible<true, _Tp, _Args...>
2352
+ : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))>
2353
+ {
2354
+ };
2355
+
2356
+ template <class _Tp, class... _Args>
2357
+ struct __is_nothrow_constructible<false, _Tp, _Args...>
2358
+ : public false_type
2359
+ {
2360
+ };
2361
+
2362
+ template <class _Tp, class... _Args>
2363
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible
2364
+ : __is_nothrow_constructible<is_constructible<_Tp, _Args...>::value, _Tp, _Args...>
2365
+ {
2366
+ };
2367
+
2368
+ template <class _Tp, size_t _Ns>
2369
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp[_Ns]>
2370
+ : __is_nothrow_constructible<is_constructible<_Tp>::value, _Tp>
2371
+ {
2372
+ };
2373
+
2374
+ #else // __has_feature(cxx_noexcept)
2375
+
2376
+ template <class _Tp, class... _Args>
2377
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible
2378
+ : false_type
2379
+ {
2380
+ };
2381
+
2382
+ template <class _Tp>
2383
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp>
2384
+ #if __has_feature(has_nothrow_constructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2385
+ : integral_constant<bool, __has_nothrow_constructor(_Tp)>
2386
+ #else
2387
+ : integral_constant<bool, is_scalar<_Tp>::value>
2388
+ #endif
2389
+ {
2390
+ };
2391
+
2392
+ template <class _Tp>
2393
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2394
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp&&>
2395
+ #else
2396
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp>
2397
+ #endif
2398
+ #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2399
+ : integral_constant<bool, __has_nothrow_copy(_Tp)>
2400
+ #else
2401
+ : integral_constant<bool, is_scalar<_Tp>::value>
2402
+ #endif
2403
+ {
2404
+ };
2405
+
2406
+ template <class _Tp>
2407
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, const _Tp&>
2408
+ #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2409
+ : integral_constant<bool, __has_nothrow_copy(_Tp)>
2410
+ #else
2411
+ : integral_constant<bool, is_scalar<_Tp>::value>
2412
+ #endif
2413
+ {
2414
+ };
2415
+
2416
+ template <class _Tp>
2417
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp&>
2418
+ #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2419
+ : integral_constant<bool, __has_nothrow_copy(_Tp)>
2420
+ #else
2421
+ : integral_constant<bool, is_scalar<_Tp>::value>
2422
+ #endif
2423
+ {
2424
+ };
2425
+
2426
+ #endif // __has_feature(cxx_noexcept)
2427
+
2428
+ #else // _LIBCPP_HAS_NO_VARIADICS
2429
+
2430
+ template <class _Tp, class _A0 = __is_construct::__nat,
2431
+ class _A1 = __is_construct::__nat>
2432
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible
2433
+ : false_type
2434
+ {
2435
+ };
2436
+
2437
+ template <class _Tp>
2438
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, __is_construct::__nat,
2439
+ __is_construct::__nat>
2440
+ #if __has_feature(has_nothrow_constructor) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2441
+ : integral_constant<bool, __has_nothrow_constructor(_Tp)>
2442
+ #else
2443
+ : integral_constant<bool, is_scalar<_Tp>::value>
2444
+ #endif
2445
+ {
2446
+ };
2447
+
2448
+ template <class _Tp>
2449
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp,
2450
+ __is_construct::__nat>
2451
+ #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2452
+ : integral_constant<bool, __has_nothrow_copy(_Tp)>
2453
+ #else
2454
+ : integral_constant<bool, is_scalar<_Tp>::value>
2455
+ #endif
2456
+ {
2457
+ };
2458
+
2459
+ template <class _Tp>
2460
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, const _Tp&,
2461
+ __is_construct::__nat>
2462
+ #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2463
+ : integral_constant<bool, __has_nothrow_copy(_Tp)>
2464
+ #else
2465
+ : integral_constant<bool, is_scalar<_Tp>::value>
2466
+ #endif
2467
+ {
2468
+ };
2469
+
2470
+ template <class _Tp>
2471
+ struct _LIBCPP_TYPE_VIS is_nothrow_constructible<_Tp, _Tp&,
2472
+ __is_construct::__nat>
2473
+ #if __has_feature(has_nothrow_copy) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2474
+ : integral_constant<bool, __has_nothrow_copy(_Tp)>
2475
+ #else
2476
+ : integral_constant<bool, is_scalar<_Tp>::value>
2477
+ #endif
2478
+ {
2479
+ };
2480
+
2481
+ #endif // _LIBCPP_HAS_NO_VARIADICS
2482
+
2483
+ // is_nothrow_default_constructible
2484
+
2485
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_nothrow_default_constructible
2486
+ : public is_nothrow_constructible<_Tp>
2487
+ {};
2488
+
2489
+ // is_nothrow_copy_constructible
2490
+
2491
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_nothrow_copy_constructible
2492
+ : public is_nothrow_constructible<_Tp, const typename add_lvalue_reference<_Tp>::type>
2493
+ {};
2494
+
2495
+ // is_nothrow_move_constructible
2496
+
2497
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_nothrow_move_constructible
2498
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2499
+ : public is_nothrow_constructible<_Tp, typename add_rvalue_reference<_Tp>::type>
2500
+ #else
2501
+ : public is_nothrow_copy_constructible<_Tp>
2502
+ #endif
2503
+ {};
2504
+
2505
+ // is_nothrow_assignable
2506
+
2507
+ #if __has_feature(cxx_noexcept)
2508
+
2509
+ template <bool, class _Tp, class _Arg> struct __is_nothrow_assignable;
2510
+
2511
+ template <class _Tp, class _Arg>
2512
+ struct __is_nothrow_assignable<false, _Tp, _Arg>
2513
+ : public false_type
2514
+ {
2515
+ };
2516
+
2517
+ template <class _Tp, class _Arg>
2518
+ struct __is_nothrow_assignable<true, _Tp, _Arg>
2519
+ : public integral_constant<bool, noexcept(_VSTD::declval<_Tp>() = _VSTD::declval<_Arg>()) >
2520
+ {
2521
+ };
2522
+
2523
+ template <class _Tp, class _Arg>
2524
+ struct _LIBCPP_TYPE_VIS is_nothrow_assignable
2525
+ : public __is_nothrow_assignable<is_assignable<_Tp, _Arg>::value, _Tp, _Arg>
2526
+ {
2527
+ };
2528
+
2529
+ #else // __has_feature(cxx_noexcept)
2530
+
2531
+ template <class _Tp, class _Arg>
2532
+ struct _LIBCPP_TYPE_VIS is_nothrow_assignable
2533
+ : public false_type {};
2534
+
2535
+ template <class _Tp>
2536
+ struct _LIBCPP_TYPE_VIS is_nothrow_assignable<_Tp&, _Tp>
2537
+ #if __has_feature(has_nothrow_assign) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2538
+ : integral_constant<bool, __has_nothrow_assign(_Tp)> {};
2539
+ #else
2540
+ : integral_constant<bool, is_scalar<_Tp>::value> {};
2541
+ #endif
2542
+
2543
+ template <class _Tp>
2544
+ struct _LIBCPP_TYPE_VIS is_nothrow_assignable<_Tp&, _Tp&>
2545
+ #if __has_feature(has_nothrow_assign) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2546
+ : integral_constant<bool, __has_nothrow_assign(_Tp)> {};
2547
+ #else
2548
+ : integral_constant<bool, is_scalar<_Tp>::value> {};
2549
+ #endif
2550
+
2551
+ template <class _Tp>
2552
+ struct _LIBCPP_TYPE_VIS is_nothrow_assignable<_Tp&, const _Tp&>
2553
+ #if __has_feature(has_nothrow_assign) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2554
+ : integral_constant<bool, __has_nothrow_assign(_Tp)> {};
2555
+ #else
2556
+ : integral_constant<bool, is_scalar<_Tp>::value> {};
2557
+ #endif
2558
+
2559
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2560
+
2561
+ template <class _Tp>
2562
+ struct is_nothrow_assignable<_Tp&, _Tp&&>
2563
+ #if __has_feature(has_nothrow_assign) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2564
+ : integral_constant<bool, __has_nothrow_assign(_Tp)> {};
2565
+ #else
2566
+ : integral_constant<bool, is_scalar<_Tp>::value> {};
2567
+ #endif
2568
+
2569
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
2570
+
2571
+ #endif // __has_feature(cxx_noexcept)
2572
+
2573
+ // is_nothrow_copy_assignable
2574
+
2575
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_nothrow_copy_assignable
2576
+ : public is_nothrow_assignable<typename add_lvalue_reference<_Tp>::type,
2577
+ const typename add_lvalue_reference<_Tp>::type>
2578
+ {};
2579
+
2580
+ // is_nothrow_move_assignable
2581
+
2582
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_nothrow_move_assignable
2583
+ : public is_nothrow_assignable<typename add_lvalue_reference<_Tp>::type,
2584
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2585
+ typename add_rvalue_reference<_Tp>::type>
2586
+ #else
2587
+ typename add_lvalue_reference<_Tp>::type>
2588
+ #endif
2589
+ {};
2590
+
2591
+ // is_nothrow_destructible
2592
+
2593
+ #if __has_feature(cxx_noexcept)
2594
+
2595
+ template <bool, class _Tp> struct __is_nothrow_destructible;
2596
+
2597
+ template <class _Tp>
2598
+ struct __is_nothrow_destructible<false, _Tp>
2599
+ : public false_type
2600
+ {
2601
+ };
2602
+
2603
+ template <class _Tp>
2604
+ struct __is_nothrow_destructible<true, _Tp>
2605
+ : public integral_constant<bool, noexcept(_VSTD::declval<_Tp>().~_Tp()) >
2606
+ {
2607
+ };
2608
+
2609
+ template <class _Tp>
2610
+ struct _LIBCPP_TYPE_VIS is_nothrow_destructible
2611
+ : public __is_nothrow_destructible<is_destructible<_Tp>::value, _Tp>
2612
+ {
2613
+ };
2614
+
2615
+ template <class _Tp, size_t _Ns>
2616
+ struct _LIBCPP_TYPE_VIS is_nothrow_destructible<_Tp[_Ns]>
2617
+ : public is_nothrow_destructible<_Tp>
2618
+ {
2619
+ };
2620
+
2621
+ template <class _Tp>
2622
+ struct _LIBCPP_TYPE_VIS is_nothrow_destructible<_Tp&>
2623
+ : public true_type
2624
+ {
2625
+ };
2626
+
2627
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2628
+
2629
+ template <class _Tp>
2630
+ struct _LIBCPP_TYPE_VIS is_nothrow_destructible<_Tp&&>
2631
+ : public true_type
2632
+ {
2633
+ };
2634
+
2635
+ #endif
2636
+
2637
+ #else
2638
+
2639
+ template <class _Tp> struct __libcpp_nothrow_destructor
2640
+ : public integral_constant<bool, is_scalar<_Tp>::value ||
2641
+ is_reference<_Tp>::value> {};
2642
+
2643
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_nothrow_destructible
2644
+ : public __libcpp_nothrow_destructor<typename remove_all_extents<_Tp>::type> {};
2645
+
2646
+ #endif
2647
+
2648
+ // is_pod
2649
+
2650
+ #if __has_feature(is_pod) || (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
2651
+
2652
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_pod
2653
+ : public integral_constant<bool, __is_pod(_Tp)> {};
2654
+
2655
+ #else // _LIBCPP_HAS_TYPE_TRAITS
2656
+
2657
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_pod
2658
+ : public integral_constant<bool, is_trivially_default_constructible<_Tp>::value &&
2659
+ is_trivially_copy_constructible<_Tp>::value &&
2660
+ is_trivially_copy_assignable<_Tp>::value &&
2661
+ is_trivially_destructible<_Tp>::value> {};
2662
+
2663
+ #endif // _LIBCPP_HAS_TYPE_TRAITS
2664
+
2665
+ // is_literal_type;
2666
+
2667
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_literal_type
2668
+ #if __has_feature(is_literal)
2669
+ : public integral_constant<bool, __is_literal(_Tp)>
2670
+ #else
2671
+ : integral_constant<bool, is_scalar<typename remove_all_extents<_Tp>::type>::value ||
2672
+ is_reference<typename remove_all_extents<_Tp>::type>::value>
2673
+ #endif
2674
+ {};
2675
+
2676
+ // is_standard_layout;
2677
+
2678
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_standard_layout
2679
+ #if __has_feature(is_standard_layout)
2680
+ : public integral_constant<bool, __is_standard_layout(_Tp)>
2681
+ #else
2682
+ : integral_constant<bool, is_scalar<typename remove_all_extents<_Tp>::type>::value>
2683
+ #endif
2684
+ {};
2685
+
2686
+ // is_trivially_copyable;
2687
+
2688
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivially_copyable
2689
+ #if __has_feature(is_trivially_copyable)
2690
+ : public integral_constant<bool, __is_trivially_copyable(_Tp)>
2691
+ #else
2692
+ : integral_constant<bool, is_scalar<typename remove_all_extents<_Tp>::type>::value>
2693
+ #endif
2694
+ {};
2695
+
2696
+ // is_trivial;
2697
+
2698
+ template <class _Tp> struct _LIBCPP_TYPE_VIS is_trivial
2699
+ #if __has_feature(is_trivial)
2700
+ : public integral_constant<bool, __is_trivial(_Tp)>
2701
+ #else
2702
+ : integral_constant<bool, is_trivially_copyable<_Tp>::value &&
2703
+ is_trivially_default_constructible<_Tp>::value>
2704
+ #endif
2705
+ {};
2706
+
2707
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
2708
+
2709
+ // Check for complete types
2710
+
2711
+ template <class ..._Tp> struct __check_complete;
2712
+
2713
+ template <>
2714
+ struct __check_complete<>
2715
+ {
2716
+ };
2717
+
2718
+ template <class _Hp, class _T0, class ..._Tp>
2719
+ struct __check_complete<_Hp, _T0, _Tp...>
2720
+ : private __check_complete<_Hp>,
2721
+ private __check_complete<_T0, _Tp...>
2722
+ {
2723
+ };
2724
+
2725
+ template <class _Hp>
2726
+ struct __check_complete<_Hp, _Hp>
2727
+ : private __check_complete<_Hp>
2728
+ {
2729
+ };
2730
+
2731
+ template <class _Tp>
2732
+ struct __check_complete<_Tp>
2733
+ {
2734
+ static_assert(sizeof(_Tp) > 0, "Type must be complete.");
2735
+ };
2736
+
2737
+ template <class _Tp>
2738
+ struct __check_complete<_Tp&>
2739
+ : private __check_complete<_Tp>
2740
+ {
2741
+ };
2742
+
2743
+ template <class _Tp>
2744
+ struct __check_complete<_Tp&&>
2745
+ : private __check_complete<_Tp>
2746
+ {
2747
+ };
2748
+
2749
+ template <class _Rp, class ..._Param>
2750
+ struct __check_complete<_Rp (*)(_Param...)>
2751
+ : private __check_complete<_Rp>
2752
+ {
2753
+ };
2754
+
2755
+ template <class _Rp, class ..._Param>
2756
+ struct __check_complete<_Rp (_Param...)>
2757
+ : private __check_complete<_Rp>
2758
+ {
2759
+ };
2760
+
2761
+ template <class _Rp, class _Class, class ..._Param>
2762
+ struct __check_complete<_Rp (_Class::*)(_Param...)>
2763
+ : private __check_complete<_Class>
2764
+ {
2765
+ };
2766
+
2767
+ template <class _Rp, class _Class, class ..._Param>
2768
+ struct __check_complete<_Rp (_Class::*)(_Param...) const>
2769
+ : private __check_complete<_Class>
2770
+ {
2771
+ };
2772
+
2773
+ template <class _Rp, class _Class, class ..._Param>
2774
+ struct __check_complete<_Rp (_Class::*)(_Param...) volatile>
2775
+ : private __check_complete<_Class>
2776
+ {
2777
+ };
2778
+
2779
+ template <class _Rp, class _Class, class ..._Param>
2780
+ struct __check_complete<_Rp (_Class::*)(_Param...) const volatile>
2781
+ : private __check_complete<_Class>
2782
+ {
2783
+ };
2784
+
2785
+ #if __has_feature(cxx_reference_qualified_functions)
2786
+
2787
+ template <class _Rp, class _Class, class ..._Param>
2788
+ struct __check_complete<_Rp (_Class::*)(_Param...) &>
2789
+ : private __check_complete<_Class>
2790
+ {
2791
+ };
2792
+
2793
+ template <class _Rp, class _Class, class ..._Param>
2794
+ struct __check_complete<_Rp (_Class::*)(_Param...) const&>
2795
+ : private __check_complete<_Class>
2796
+ {
2797
+ };
2798
+
2799
+ template <class _Rp, class _Class, class ..._Param>
2800
+ struct __check_complete<_Rp (_Class::*)(_Param...) volatile&>
2801
+ : private __check_complete<_Class>
2802
+ {
2803
+ };
2804
+
2805
+ template <class _Rp, class _Class, class ..._Param>
2806
+ struct __check_complete<_Rp (_Class::*)(_Param...) const volatile&>
2807
+ : private __check_complete<_Class>
2808
+ {
2809
+ };
2810
+
2811
+ template <class _Rp, class _Class, class ..._Param>
2812
+ struct __check_complete<_Rp (_Class::*)(_Param...) &&>
2813
+ : private __check_complete<_Class>
2814
+ {
2815
+ };
2816
+
2817
+ template <class _Rp, class _Class, class ..._Param>
2818
+ struct __check_complete<_Rp (_Class::*)(_Param...) const&&>
2819
+ : private __check_complete<_Class>
2820
+ {
2821
+ };
2822
+
2823
+ template <class _Rp, class _Class, class ..._Param>
2824
+ struct __check_complete<_Rp (_Class::*)(_Param...) volatile&&>
2825
+ : private __check_complete<_Class>
2826
+ {
2827
+ };
2828
+
2829
+ template <class _Rp, class _Class, class ..._Param>
2830
+ struct __check_complete<_Rp (_Class::*)(_Param...) const volatile&&>
2831
+ : private __check_complete<_Class>
2832
+ {
2833
+ };
2834
+
2835
+ #endif
2836
+
2837
+ template <class _Rp, class _Class>
2838
+ struct __check_complete<_Rp _Class::*>
2839
+ : private __check_complete<_Class>
2840
+ {
2841
+ };
2842
+
2843
+ // __invoke forward declarations
2844
+
2845
+ // fall back - none of the bullets
2846
+
2847
+ template <class ..._Args>
2848
+ auto
2849
+ __invoke(__any, _Args&& ...__args)
2850
+ -> __nat;
2851
+
2852
+ // bullets 1 and 2
2853
+
2854
+ template <class _Fp, class _A0, class ..._Args>
2855
+ _LIBCPP_INLINE_VISIBILITY
2856
+ auto
2857
+ __invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args)
2858
+ -> decltype((_VSTD::forward<_A0>(__a0).*__f)(_VSTD::forward<_Args>(__args)...));
2859
+
2860
+ template <class _Fp, class _A0, class ..._Args>
2861
+ _LIBCPP_INLINE_VISIBILITY
2862
+ auto
2863
+ __invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args)
2864
+ -> decltype(((*_VSTD::forward<_A0>(__a0)).*__f)(_VSTD::forward<_Args>(__args)...));
2865
+
2866
+ // bullets 3 and 4
2867
+
2868
+ template <class _Fp, class _A0>
2869
+ _LIBCPP_INLINE_VISIBILITY
2870
+ auto
2871
+ __invoke(_Fp&& __f, _A0&& __a0)
2872
+ -> decltype(_VSTD::forward<_A0>(__a0).*__f);
2873
+
2874
+ template <class _Fp, class _A0>
2875
+ _LIBCPP_INLINE_VISIBILITY
2876
+ auto
2877
+ __invoke(_Fp&& __f, _A0&& __a0)
2878
+ -> decltype((*_VSTD::forward<_A0>(__a0)).*__f);
2879
+
2880
+ // bullet 5
2881
+
2882
+ template <class _Fp, class ..._Args>
2883
+ _LIBCPP_INLINE_VISIBILITY
2884
+ auto
2885
+ __invoke(_Fp&& __f, _Args&& ...__args)
2886
+ -> decltype(_VSTD::forward<_Fp>(__f)(_VSTD::forward<_Args>(__args)...));
2887
+
2888
+ // __invokable
2889
+
2890
+ template <class _Fp, class ..._Args>
2891
+ struct __invokable_imp
2892
+ : private __check_complete<_Fp>
2893
+ {
2894
+ typedef decltype(
2895
+ __invoke(_VSTD::declval<_Fp>(), _VSTD::declval<_Args>()...)
2896
+ ) type;
2897
+ static const bool value = !is_same<type, __nat>::value;
2898
+ };
2899
+
2900
+ template <class _Fp, class ..._Args>
2901
+ struct __invokable
2902
+ : public integral_constant<bool,
2903
+ __invokable_imp<_Fp, _Args...>::value>
2904
+ {
2905
+ };
2906
+
2907
+ // __invoke_of
2908
+
2909
+ template <bool _Invokable, class _Fp, class ..._Args>
2910
+ struct __invoke_of_imp // false
2911
+ {
2912
+ };
2913
+
2914
+ template <class _Fp, class ..._Args>
2915
+ struct __invoke_of_imp<true, _Fp, _Args...>
2916
+ {
2917
+ typedef typename __invokable_imp<_Fp, _Args...>::type type;
2918
+ };
2919
+
2920
+ template <class _Fp, class ..._Args>
2921
+ struct __invoke_of
2922
+ : public __invoke_of_imp<__invokable<_Fp, _Args...>::value, _Fp, _Args...>
2923
+ {
2924
+ };
2925
+
2926
+ template <class _Fp, class ..._Args>
2927
+ class _LIBCPP_TYPE_VIS result_of<_Fp(_Args...)>
2928
+ : public __invoke_of<_Fp, _Args...>
2929
+ {
2930
+ };
2931
+
2932
+ #endif // _LIBCPP_HAS_NO_VARIADICS
2933
+
2934
+ template <class _Tp>
2935
+ inline _LIBCPP_INLINE_VISIBILITY
2936
+ #ifndef _LIBCPP_HAS_NO_ADVANCED_SFINAE
2937
+ typename enable_if
2938
+ <
2939
+ is_move_constructible<_Tp>::value &&
2940
+ is_move_assignable<_Tp>::value
2941
+ >::type
2942
+ #else
2943
+ void
2944
+ #endif
2945
+ swap(_Tp& __x, _Tp& __y) _NOEXCEPT_(is_nothrow_move_constructible<_Tp>::value &&
2946
+ is_nothrow_move_assignable<_Tp>::value)
2947
+ {
2948
+ _Tp __t(_VSTD::move(__x));
2949
+ __x = _VSTD::move(__y);
2950
+ __y = _VSTD::move(__t);
2951
+ }
2952
+
2953
+ template <class _ForwardIterator1, class _ForwardIterator2>
2954
+ inline _LIBCPP_INLINE_VISIBILITY
2955
+ void
2956
+ iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)
2957
+ // _NOEXCEPT_(_NOEXCEPT_(swap(*__a, *__b)))
2958
+ _NOEXCEPT_(_NOEXCEPT_(swap(*_VSTD::declval<_ForwardIterator1>(),
2959
+ *_VSTD::declval<_ForwardIterator2>())))
2960
+ {
2961
+ swap(*__a, *__b);
2962
+ }
2963
+
2964
+ // __swappable
2965
+
2966
+ namespace __detail
2967
+ {
2968
+
2969
+ using _VSTD::swap;
2970
+ __nat swap(__any, __any);
2971
+
2972
+ template <class _Tp>
2973
+ struct __swappable
2974
+ {
2975
+ typedef decltype(swap(_VSTD::declval<_Tp&>(), _VSTD::declval<_Tp&>())) type;
2976
+ static const bool value = !is_same<type, __nat>::value;
2977
+ };
2978
+
2979
+ } // __detail
2980
+
2981
+ template <class _Tp>
2982
+ struct __is_swappable
2983
+ : public integral_constant<bool, __detail::__swappable<_Tp>::value>
2984
+ {
2985
+ };
2986
+
2987
+ #if __has_feature(cxx_noexcept)
2988
+
2989
+ template <bool, class _Tp>
2990
+ struct __is_nothrow_swappable_imp
2991
+ : public integral_constant<bool, noexcept(swap(_VSTD::declval<_Tp&>(),
2992
+ _VSTD::declval<_Tp&>()))>
2993
+ {
2994
+ };
2995
+
2996
+ template <class _Tp>
2997
+ struct __is_nothrow_swappable_imp<false, _Tp>
2998
+ : public false_type
2999
+ {
3000
+ };
3001
+
3002
+ template <class _Tp>
3003
+ struct __is_nothrow_swappable
3004
+ : public __is_nothrow_swappable_imp<__is_swappable<_Tp>::value, _Tp>
3005
+ {
3006
+ };
3007
+
3008
+ #else // __has_feature(cxx_noexcept)
3009
+
3010
+ template <class _Tp>
3011
+ struct __is_nothrow_swappable
3012
+ : public false_type
3013
+ {
3014
+ };
3015
+
3016
+ #endif // __has_feature(cxx_noexcept)
3017
+
3018
+ #ifdef _LIBCXX_UNDERLYING_TYPE
3019
+
3020
+ template <class _Tp>
3021
+ struct underlying_type
3022
+ {
3023
+ typedef _LIBCXX_UNDERLYING_TYPE(_Tp) type;
3024
+ };
3025
+
3026
+ #else // _LIBCXX_UNDERLYING_TYPE
3027
+
3028
+ template <class _Tp, bool _Support = false>
3029
+ struct underlying_type
3030
+ {
3031
+ static_assert(_Support, "The underyling_type trait requires compiler "
3032
+ "support. Either no such support exists or "
3033
+ "libc++ does not know how to use it.");
3034
+ };
3035
+
3036
+ #endif // _LIBCXX_UNDERLYING_TYPE
3037
+
3038
+ _LIBCPP_END_NAMESPACE_STD
3039
+
3040
+ #endif // _LIBCPP_TYPE_TRAITS