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,2063 @@
1
+ // -*- C++ -*-
2
+ //===------------------------ functional ----------------------------------===//
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_FUNCTIONAL
12
+ #define _LIBCPP_FUNCTIONAL
13
+
14
+ /*
15
+ functional synopsis
16
+
17
+ namespace std
18
+ {
19
+
20
+ template <class Arg, class Result>
21
+ struct unary_function
22
+ {
23
+ typedef Arg argument_type;
24
+ typedef Result result_type;
25
+ };
26
+
27
+ template <class Arg1, class Arg2, class Result>
28
+ struct binary_function
29
+ {
30
+ typedef Arg1 first_argument_type;
31
+ typedef Arg2 second_argument_type;
32
+ typedef Result result_type;
33
+ };
34
+
35
+ template <class T>
36
+ class reference_wrapper
37
+ : public unary_function<T1, R> // if wrapping a unary functor
38
+ : public binary_function<T1, T2, R> // if wraping a binary functor
39
+ {
40
+ public:
41
+ // types
42
+ typedef T type;
43
+ typedef see below result_type; // Not always defined
44
+
45
+ // construct/copy/destroy
46
+ reference_wrapper(T&) noexcept;
47
+ reference_wrapper(T&&) = delete; // do not bind to temps
48
+ reference_wrapper(const reference_wrapper<T>& x) noexcept;
49
+
50
+ // assignment
51
+ reference_wrapper& operator=(const reference_wrapper<T>& x) noexcept;
52
+
53
+ // access
54
+ operator T& () const noexcept;
55
+ T& get() const noexcept;
56
+
57
+ // invoke
58
+ template <class... ArgTypes>
59
+ typename result_of<T(ArgTypes...)>::type
60
+ operator() (ArgTypes&&...) const;
61
+ };
62
+
63
+ template <class T> reference_wrapper<T> ref(T& t) noexcept;
64
+ template <class T> void ref(const T&& t) = delete;
65
+ template <class T> reference_wrapper<T> ref(reference_wrapper<T>t) noexcept;
66
+
67
+ template <class T> reference_wrapper<const T> cref(const T& t) noexcept;
68
+ template <class T> void cref(const T&& t) = delete;
69
+ template <class T> reference_wrapper<const T> cref(reference_wrapper<T> t) noexcept;
70
+
71
+ template <class T>
72
+ struct plus : binary_function<T, T, T>
73
+ {
74
+ T operator()(const T& x, const T& y) const;
75
+ };
76
+
77
+ template <class T>
78
+ struct minus : binary_function<T, T, T>
79
+ {
80
+ T operator()(const T& x, const T& y) const;
81
+ };
82
+
83
+ template <class T>
84
+ struct multiplies : binary_function<T, T, T>
85
+ {
86
+ T operator()(const T& x, const T& y) const;
87
+ };
88
+
89
+ template <class T>
90
+ struct divides : binary_function<T, T, T>
91
+ {
92
+ T operator()(const T& x, const T& y) const;
93
+ };
94
+
95
+ template <class T>
96
+ struct modulus : binary_function<T, T, T>
97
+ {
98
+ T operator()(const T& x, const T& y) const;
99
+ };
100
+
101
+ template <class T>
102
+ struct negate : unary_function<T, T>
103
+ {
104
+ T operator()(const T& x) const;
105
+ };
106
+
107
+ template <class T>
108
+ struct equal_to : binary_function<T, T, bool>
109
+ {
110
+ bool operator()(const T& x, const T& y) const;
111
+ };
112
+
113
+ template <class T>
114
+ struct not_equal_to : binary_function<T, T, bool>
115
+ {
116
+ bool operator()(const T& x, const T& y) const;
117
+ };
118
+
119
+ template <class T>
120
+ struct greater : binary_function<T, T, bool>
121
+ {
122
+ bool operator()(const T& x, const T& y) const;
123
+ };
124
+
125
+ template <class T>
126
+ struct less : binary_function<T, T, bool>
127
+ {
128
+ bool operator()(const T& x, const T& y) const;
129
+ };
130
+
131
+ template <class T>
132
+ struct greater_equal : binary_function<T, T, bool>
133
+ {
134
+ bool operator()(const T& x, const T& y) const;
135
+ };
136
+
137
+ template <class T>
138
+ struct less_equal : binary_function<T, T, bool>
139
+ {
140
+ bool operator()(const T& x, const T& y) const;
141
+ };
142
+
143
+ template <class T>
144
+ struct logical_and : binary_function<T, T, bool>
145
+ {
146
+ bool operator()(const T& x, const T& y) const;
147
+ };
148
+
149
+ template <class T>
150
+ struct logical_or : binary_function<T, T, bool>
151
+ {
152
+ bool operator()(const T& x, const T& y) const;
153
+ };
154
+
155
+ template <class T>
156
+ struct logical_not : unary_function<T, bool>
157
+ {
158
+ bool operator()(const T& x) const;
159
+ };
160
+
161
+ template <class Predicate>
162
+ class unary_negate
163
+ : public unary_function<typename Predicate::argument_type, bool>
164
+ {
165
+ public:
166
+ explicit unary_negate(const Predicate& pred);
167
+ bool operator()(const typename Predicate::argument_type& x) const;
168
+ };
169
+
170
+ template <class Predicate> unary_negate<Predicate> not1(const Predicate& pred);
171
+
172
+ template <class Predicate>
173
+ class binary_negate
174
+ : public binary_function<typename Predicate::first_argument_type,
175
+ typename Predicate::second_argument_type,
176
+ bool>
177
+ {
178
+ public:
179
+ explicit binary_negate(const Predicate& pred);
180
+ bool operator()(const typename Predicate::first_argument_type& x,
181
+ const typename Predicate::second_argument_type& y) const;
182
+ };
183
+
184
+ template <class Predicate> binary_negate<Predicate> not2(const Predicate& pred);
185
+
186
+ template<class T> struct is_bind_expression;
187
+ template<class T> struct is_placeholder;
188
+
189
+ template<class Fn, class... BoundArgs>
190
+ unspecified bind(Fn&&, BoundArgs&&...);
191
+ template<class R, class Fn, class... BoundArgs>
192
+ unspecified bind(Fn&&, BoundArgs&&...);
193
+
194
+ namespace placeholders {
195
+ // M is the implementation-defined number of placeholders
196
+ extern unspecified _1;
197
+ extern unspecified _2;
198
+ .
199
+ .
200
+ .
201
+ extern unspecified _Mp;
202
+ }
203
+
204
+ template <class Operation>
205
+ class binder1st
206
+ : public unary_function<typename Operation::second_argument_type,
207
+ typename Operation::result_type>
208
+ {
209
+ protected:
210
+ Operation op;
211
+ typename Operation::first_argument_type value;
212
+ public:
213
+ binder1st(const Operation& x, const typename Operation::first_argument_type y);
214
+ typename Operation::result_type operator()( typename Operation::second_argument_type& x) const;
215
+ typename Operation::result_type operator()(const typename Operation::second_argument_type& x) const;
216
+ };
217
+
218
+ template <class Operation, class T>
219
+ binder1st<Operation> bind1st(const Operation& op, const T& x);
220
+
221
+ template <class Operation>
222
+ class binder2nd
223
+ : public unary_function<typename Operation::first_argument_type,
224
+ typename Operation::result_type>
225
+ {
226
+ protected:
227
+ Operation op;
228
+ typename Operation::second_argument_type value;
229
+ public:
230
+ binder2nd(const Operation& x, const typename Operation::second_argument_type y);
231
+ typename Operation::result_type operator()( typename Operation::first_argument_type& x) const;
232
+ typename Operation::result_type operator()(const typename Operation::first_argument_type& x) const;
233
+ };
234
+
235
+ template <class Operation, class T>
236
+ binder2nd<Operation> bind2nd(const Operation& op, const T& x);
237
+
238
+ template <class Arg, class Result>
239
+ class pointer_to_unary_function : public unary_function<Arg, Result>
240
+ {
241
+ public:
242
+ explicit pointer_to_unary_function(Result (*f)(Arg));
243
+ Result operator()(Arg x) const;
244
+ };
245
+
246
+ template <class Arg, class Result>
247
+ pointer_to_unary_function<Arg,Result> ptr_fun(Result (*f)(Arg));
248
+
249
+ template <class Arg1, class Arg2, class Result>
250
+ class pointer_to_binary_function : public binary_function<Arg1, Arg2, Result>
251
+ {
252
+ public:
253
+ explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2));
254
+ Result operator()(Arg1 x, Arg2 y) const;
255
+ };
256
+
257
+ template <class Arg1, class Arg2, class Result>
258
+ pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun(Result (*f)(Arg1,Arg2));
259
+
260
+ template<class S, class T>
261
+ class mem_fun_t : public unary_function<T*, S>
262
+ {
263
+ public:
264
+ explicit mem_fun_t(S (T::*p)());
265
+ S operator()(T* p) const;
266
+ };
267
+
268
+ template<class S, class T, class A>
269
+ class mem_fun1_t : public binary_function<T*, A, S>
270
+ {
271
+ public:
272
+ explicit mem_fun1_t(S (T::*p)(A));
273
+ S operator()(T* p, A x) const;
274
+ };
275
+
276
+ template<class S, class T> mem_fun_t<S,T> mem_fun(S (T::*f)());
277
+ template<class S, class T, class A> mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A));
278
+
279
+ template<class S, class T>
280
+ class mem_fun_ref_t : public unary_function<T, S>
281
+ {
282
+ public:
283
+ explicit mem_fun_ref_t(S (T::*p)());
284
+ S operator()(T& p) const;
285
+ };
286
+
287
+ template<class S, class T, class A>
288
+ class mem_fun1_ref_t : public binary_function<T, A, S>
289
+ {
290
+ public:
291
+ explicit mem_fun1_ref_t(S (T::*p)(A));
292
+ S operator()(T& p, A x) const;
293
+ };
294
+
295
+ template<class S, class T> mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)());
296
+ template<class S, class T, class A> mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A));
297
+
298
+ template <class S, class T>
299
+ class const_mem_fun_t : public unary_function<const T*, S>
300
+ {
301
+ public:
302
+ explicit const_mem_fun_t(S (T::*p)() const);
303
+ S operator()(const T* p) const;
304
+ };
305
+
306
+ template <class S, class T, class A>
307
+ class const_mem_fun1_t : public binary_function<const T*, A, S>
308
+ {
309
+ public:
310
+ explicit const_mem_fun1_t(S (T::*p)(A) const);
311
+ S operator()(const T* p, A x) const;
312
+ };
313
+
314
+ template <class S, class T> const_mem_fun_t<S,T> mem_fun(S (T::*f)() const);
315
+ template <class S, class T, class A> const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const);
316
+
317
+ template <class S, class T>
318
+ class const_mem_fun_ref_t : public unary_function<T, S>
319
+ {
320
+ public:
321
+ explicit const_mem_fun_ref_t(S (T::*p)() const);
322
+ S operator()(const T& p) const;
323
+ };
324
+
325
+ template <class S, class T, class A>
326
+ class const_mem_fun1_ref_t : public binary_function<T, A, S>
327
+ {
328
+ public:
329
+ explicit const_mem_fun1_ref_t(S (T::*p)(A) const);
330
+ S operator()(const T& p, A x) const;
331
+ };
332
+
333
+ template <class S, class T> const_mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)() const);
334
+ template <class S, class T, class A> const_mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A) const);
335
+
336
+ template<class R, class T> unspecified mem_fn(R T::*);
337
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...));
338
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) const);
339
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) volatile);
340
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) const volatile);
341
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) &);
342
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) const &);
343
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) volatile &);
344
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) const volatile &);
345
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) &&);
346
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) const &&);
347
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) volatile &&);
348
+ template<class R, class T, class... Args> unspecified mem_fn(R (T::*)(Args...) const volatile &&);
349
+
350
+ class bad_function_call
351
+ : public exception
352
+ {
353
+ };
354
+
355
+ template<class> class function; // undefined
356
+
357
+ template<class R, class... ArgTypes>
358
+ class function<R(ArgTypes...)>
359
+ : public unary_function<T1, R> // iff sizeof...(ArgTypes) == 1 and
360
+ // ArgTypes contains T1
361
+ : public binary_function<T1, T2, R> // iff sizeof...(ArgTypes) == 2 and
362
+ // ArgTypes contains T1 and T2
363
+ {
364
+ public:
365
+ typedef R result_type;
366
+
367
+ // construct/copy/destroy:
368
+ function() noexcept;
369
+ function(nullptr_t) noexcept;
370
+ function(const function&);
371
+ function(function&&) noexcept;
372
+ template<class F>
373
+ function(F);
374
+ template<Allocator Alloc>
375
+ function(allocator_arg_t, const Alloc&) noexcept;
376
+ template<Allocator Alloc>
377
+ function(allocator_arg_t, const Alloc&, nullptr_t) noexcept;
378
+ template<Allocator Alloc>
379
+ function(allocator_arg_t, const Alloc&, const function&);
380
+ template<Allocator Alloc>
381
+ function(allocator_arg_t, const Alloc&, function&&);
382
+ template<class F, Allocator Alloc>
383
+ function(allocator_arg_t, const Alloc&, F);
384
+
385
+ function& operator=(const function&);
386
+ function& operator=(function&&) noexcept;
387
+ function& operator=(nullptr_t) noexcept;
388
+ template<class F>
389
+ function& operator=(F&&);
390
+ template<class F>
391
+ function& operator=(reference_wrapper<F>) noexcept;
392
+
393
+ ~function();
394
+
395
+ // function modifiers:
396
+ void swap(function&) noexcept;
397
+ template<class F, class Alloc>
398
+ void assign(F&&, const Alloc&);
399
+
400
+ // function capacity:
401
+ explicit operator bool() const noexcept;
402
+
403
+ // function invocation:
404
+ R operator()(ArgTypes...) const;
405
+
406
+ // function target access:
407
+ const std::type_info& target_type() const noexcept;
408
+ template <typename T> T* target() noexcept;
409
+ template <typename T> const T* target() const noexcept;
410
+ };
411
+
412
+ // Null pointer comparisons:
413
+ template <class R, class ... ArgTypes>
414
+ bool operator==(const function<R(ArgTypes...)>&, nullptr_t) noexcept;
415
+
416
+ template <class R, class ... ArgTypes>
417
+ bool operator==(nullptr_t, const function<R(ArgTypes...)>&) noexcept;
418
+
419
+ template <class R, class ... ArgTypes>
420
+ bool operator!=(const function<R(ArgTypes...)>&, nullptr_t) noexcept;
421
+
422
+ template <class R, class ... ArgTypes>
423
+ bool operator!=(nullptr_t, const function<R(ArgTypes...)>&) noexcept;
424
+
425
+ // specialized algorithms:
426
+ template <class R, class ... ArgTypes>
427
+ void swap(function<R(ArgTypes...)>&, function<R(ArgTypes...)>&) noexcept;
428
+
429
+ template <class T> struct hash;
430
+
431
+ template <> struct hash<bool>;
432
+ template <> struct hash<char>;
433
+ template <> struct hash<signed char>;
434
+ template <> struct hash<unsigned char>;
435
+ template <> struct hash<char16_t>;
436
+ template <> struct hash<char32_t>;
437
+ template <> struct hash<wchar_t>;
438
+ template <> struct hash<short>;
439
+ template <> struct hash<unsigned short>;
440
+ template <> struct hash<int>;
441
+ template <> struct hash<unsigned int>;
442
+ template <> struct hash<long>;
443
+ template <> struct hash<long long>;
444
+ template <> struct hash<unsigned long>;
445
+ template <> struct hash<unsigned long long>;
446
+
447
+ template <> struct hash<float>;
448
+ template <> struct hash<double>;
449
+ template <> struct hash<long double>;
450
+
451
+ template<class T> struct hash<T*>;
452
+
453
+ } // std
454
+
455
+ POLICY: For non-variadic implementations, the number of arguments is limited
456
+ to 3. It is hoped that the need for non-variadic implementations
457
+ will be minimal.
458
+
459
+ */
460
+
461
+ #include <__config>
462
+ #include <type_traits>
463
+ #include <typeinfo>
464
+ #include <exception>
465
+ #include <memory>
466
+ #include <tuple>
467
+
468
+ #include <__functional_base>
469
+
470
+ #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
471
+ #pragma GCC system_header
472
+ #endif
473
+
474
+ _LIBCPP_BEGIN_NAMESPACE_STD
475
+
476
+ template <class _Tp>
477
+ struct _LIBCPP_TYPE_VIS plus : binary_function<_Tp, _Tp, _Tp>
478
+ {
479
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
480
+ {return __x + __y;}
481
+ };
482
+
483
+ template <class _Tp>
484
+ struct _LIBCPP_TYPE_VIS minus : binary_function<_Tp, _Tp, _Tp>
485
+ {
486
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
487
+ {return __x - __y;}
488
+ };
489
+
490
+ template <class _Tp>
491
+ struct _LIBCPP_TYPE_VIS multiplies : binary_function<_Tp, _Tp, _Tp>
492
+ {
493
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
494
+ {return __x * __y;}
495
+ };
496
+
497
+ template <class _Tp>
498
+ struct _LIBCPP_TYPE_VIS divides : binary_function<_Tp, _Tp, _Tp>
499
+ {
500
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
501
+ {return __x / __y;}
502
+ };
503
+
504
+ template <class _Tp>
505
+ struct _LIBCPP_TYPE_VIS modulus : binary_function<_Tp, _Tp, _Tp>
506
+ {
507
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
508
+ {return __x % __y;}
509
+ };
510
+
511
+ template <class _Tp>
512
+ struct _LIBCPP_TYPE_VIS negate : unary_function<_Tp, _Tp>
513
+ {
514
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x) const
515
+ {return -__x;}
516
+ };
517
+
518
+ template <class _Tp>
519
+ struct _LIBCPP_TYPE_VIS equal_to : binary_function<_Tp, _Tp, bool>
520
+ {
521
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
522
+ {return __x == __y;}
523
+ };
524
+
525
+ template <class _Tp>
526
+ struct _LIBCPP_TYPE_VIS not_equal_to : binary_function<_Tp, _Tp, bool>
527
+ {
528
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
529
+ {return __x != __y;}
530
+ };
531
+
532
+ template <class _Tp>
533
+ struct _LIBCPP_TYPE_VIS greater : binary_function<_Tp, _Tp, bool>
534
+ {
535
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
536
+ {return __x > __y;}
537
+ };
538
+
539
+ // less in <__functional_base>
540
+
541
+ template <class _Tp>
542
+ struct _LIBCPP_TYPE_VIS greater_equal : binary_function<_Tp, _Tp, bool>
543
+ {
544
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
545
+ {return __x >= __y;}
546
+ };
547
+
548
+ template <class _Tp>
549
+ struct _LIBCPP_TYPE_VIS less_equal : binary_function<_Tp, _Tp, bool>
550
+ {
551
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
552
+ {return __x <= __y;}
553
+ };
554
+
555
+ template <class _Tp>
556
+ struct _LIBCPP_TYPE_VIS logical_and : binary_function<_Tp, _Tp, bool>
557
+ {
558
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
559
+ {return __x && __y;}
560
+ };
561
+
562
+ template <class _Tp>
563
+ struct _LIBCPP_TYPE_VIS logical_or : binary_function<_Tp, _Tp, bool>
564
+ {
565
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x, const _Tp& __y) const
566
+ {return __x || __y;}
567
+ };
568
+
569
+ template <class _Tp>
570
+ struct _LIBCPP_TYPE_VIS logical_not : unary_function<_Tp, bool>
571
+ {
572
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const _Tp& __x) const
573
+ {return !__x;}
574
+ };
575
+
576
+ template <class _Tp>
577
+ struct _LIBCPP_TYPE_VIS bit_and : binary_function<_Tp, _Tp, _Tp>
578
+ {
579
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
580
+ {return __x & __y;}
581
+ };
582
+
583
+ template <class _Tp>
584
+ struct _LIBCPP_TYPE_VIS bit_or : binary_function<_Tp, _Tp, _Tp>
585
+ {
586
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
587
+ {return __x | __y;}
588
+ };
589
+
590
+ template <class _Tp>
591
+ struct _LIBCPP_TYPE_VIS bit_xor : binary_function<_Tp, _Tp, _Tp>
592
+ {
593
+ _LIBCPP_INLINE_VISIBILITY _Tp operator()(const _Tp& __x, const _Tp& __y) const
594
+ {return __x ^ __y;}
595
+ };
596
+
597
+ template <class _Predicate>
598
+ class _LIBCPP_TYPE_VIS unary_negate
599
+ : public unary_function<typename _Predicate::argument_type, bool>
600
+ {
601
+ _Predicate __pred_;
602
+ public:
603
+ _LIBCPP_INLINE_VISIBILITY explicit unary_negate(const _Predicate& __pred)
604
+ : __pred_(__pred) {}
605
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const typename _Predicate::argument_type& __x) const
606
+ {return !__pred_(__x);}
607
+ };
608
+
609
+ template <class _Predicate>
610
+ inline _LIBCPP_INLINE_VISIBILITY
611
+ unary_negate<_Predicate>
612
+ not1(const _Predicate& __pred) {return unary_negate<_Predicate>(__pred);}
613
+
614
+ template <class _Predicate>
615
+ class _LIBCPP_TYPE_VIS binary_negate
616
+ : public binary_function<typename _Predicate::first_argument_type,
617
+ typename _Predicate::second_argument_type,
618
+ bool>
619
+ {
620
+ _Predicate __pred_;
621
+ public:
622
+ _LIBCPP_INLINE_VISIBILITY explicit binary_negate(const _Predicate& __pred)
623
+ : __pred_(__pred) {}
624
+ _LIBCPP_INLINE_VISIBILITY bool operator()(const typename _Predicate::first_argument_type& __x,
625
+ const typename _Predicate::second_argument_type& __y) const
626
+ {return !__pred_(__x, __y);}
627
+ };
628
+
629
+ template <class _Predicate>
630
+ inline _LIBCPP_INLINE_VISIBILITY
631
+ binary_negate<_Predicate>
632
+ not2(const _Predicate& __pred) {return binary_negate<_Predicate>(__pred);}
633
+
634
+ template <class __Operation>
635
+ class _LIBCPP_TYPE_VIS binder1st
636
+ : public unary_function<typename __Operation::second_argument_type,
637
+ typename __Operation::result_type>
638
+ {
639
+ protected:
640
+ __Operation op;
641
+ typename __Operation::first_argument_type value;
642
+ public:
643
+ _LIBCPP_INLINE_VISIBILITY binder1st(const __Operation& __x,
644
+ const typename __Operation::first_argument_type __y)
645
+ : op(__x), value(__y) {}
646
+ _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator()
647
+ (typename __Operation::second_argument_type& __x) const
648
+ {return op(value, __x);}
649
+ _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator()
650
+ (const typename __Operation::second_argument_type& __x) const
651
+ {return op(value, __x);}
652
+ };
653
+
654
+ template <class __Operation, class _Tp>
655
+ inline _LIBCPP_INLINE_VISIBILITY
656
+ binder1st<__Operation>
657
+ bind1st(const __Operation& __op, const _Tp& __x)
658
+ {return binder1st<__Operation>(__op, __x);}
659
+
660
+ template <class __Operation>
661
+ class _LIBCPP_TYPE_VIS binder2nd
662
+ : public unary_function<typename __Operation::first_argument_type,
663
+ typename __Operation::result_type>
664
+ {
665
+ protected:
666
+ __Operation op;
667
+ typename __Operation::second_argument_type value;
668
+ public:
669
+ _LIBCPP_INLINE_VISIBILITY
670
+ binder2nd(const __Operation& __x, const typename __Operation::second_argument_type __y)
671
+ : op(__x), value(__y) {}
672
+ _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator()
673
+ ( typename __Operation::first_argument_type& __x) const
674
+ {return op(__x, value);}
675
+ _LIBCPP_INLINE_VISIBILITY typename __Operation::result_type operator()
676
+ (const typename __Operation::first_argument_type& __x) const
677
+ {return op(__x, value);}
678
+ };
679
+
680
+ template <class __Operation, class _Tp>
681
+ inline _LIBCPP_INLINE_VISIBILITY
682
+ binder2nd<__Operation>
683
+ bind2nd(const __Operation& __op, const _Tp& __x)
684
+ {return binder2nd<__Operation>(__op, __x);}
685
+
686
+ template <class _Arg, class _Result>
687
+ class _LIBCPP_TYPE_VIS pointer_to_unary_function
688
+ : public unary_function<_Arg, _Result>
689
+ {
690
+ _Result (*__f_)(_Arg);
691
+ public:
692
+ _LIBCPP_INLINE_VISIBILITY explicit pointer_to_unary_function(_Result (*__f)(_Arg))
693
+ : __f_(__f) {}
694
+ _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg __x) const
695
+ {return __f_(__x);}
696
+ };
697
+
698
+ template <class _Arg, class _Result>
699
+ inline _LIBCPP_INLINE_VISIBILITY
700
+ pointer_to_unary_function<_Arg,_Result>
701
+ ptr_fun(_Result (*__f)(_Arg))
702
+ {return pointer_to_unary_function<_Arg,_Result>(__f);}
703
+
704
+ template <class _Arg1, class _Arg2, class _Result>
705
+ class _LIBCPP_TYPE_VIS pointer_to_binary_function
706
+ : public binary_function<_Arg1, _Arg2, _Result>
707
+ {
708
+ _Result (*__f_)(_Arg1, _Arg2);
709
+ public:
710
+ _LIBCPP_INLINE_VISIBILITY explicit pointer_to_binary_function(_Result (*__f)(_Arg1, _Arg2))
711
+ : __f_(__f) {}
712
+ _LIBCPP_INLINE_VISIBILITY _Result operator()(_Arg1 __x, _Arg2 __y) const
713
+ {return __f_(__x, __y);}
714
+ };
715
+
716
+ template <class _Arg1, class _Arg2, class _Result>
717
+ inline _LIBCPP_INLINE_VISIBILITY
718
+ pointer_to_binary_function<_Arg1,_Arg2,_Result>
719
+ ptr_fun(_Result (*__f)(_Arg1,_Arg2))
720
+ {return pointer_to_binary_function<_Arg1,_Arg2,_Result>(__f);}
721
+
722
+ template<class _Sp, class _Tp>
723
+ class _LIBCPP_TYPE_VIS mem_fun_t : public unary_function<_Tp*, _Sp>
724
+ {
725
+ _Sp (_Tp::*__p_)();
726
+ public:
727
+ _LIBCPP_INLINE_VISIBILITY explicit mem_fun_t(_Sp (_Tp::*__p)())
728
+ : __p_(__p) {}
729
+ _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p) const
730
+ {return (__p->*__p_)();}
731
+ };
732
+
733
+ template<class _Sp, class _Tp, class _Ap>
734
+ class _LIBCPP_TYPE_VIS mem_fun1_t : public binary_function<_Tp*, _Ap, _Sp>
735
+ {
736
+ _Sp (_Tp::*__p_)(_Ap);
737
+ public:
738
+ _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_t(_Sp (_Tp::*__p)(_Ap))
739
+ : __p_(__p) {}
740
+ _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp* __p, _Ap __x) const
741
+ {return (__p->*__p_)(__x);}
742
+ };
743
+
744
+ template<class _Sp, class _Tp>
745
+ inline _LIBCPP_INLINE_VISIBILITY
746
+ mem_fun_t<_Sp,_Tp>
747
+ mem_fun(_Sp (_Tp::*__f)())
748
+ {return mem_fun_t<_Sp,_Tp>(__f);}
749
+
750
+ template<class _Sp, class _Tp, class _Ap>
751
+ inline _LIBCPP_INLINE_VISIBILITY
752
+ mem_fun1_t<_Sp,_Tp,_Ap>
753
+ mem_fun(_Sp (_Tp::*__f)(_Ap))
754
+ {return mem_fun1_t<_Sp,_Tp,_Ap>(__f);}
755
+
756
+ template<class _Sp, class _Tp>
757
+ class _LIBCPP_TYPE_VIS mem_fun_ref_t : public unary_function<_Tp, _Sp>
758
+ {
759
+ _Sp (_Tp::*__p_)();
760
+ public:
761
+ _LIBCPP_INLINE_VISIBILITY explicit mem_fun_ref_t(_Sp (_Tp::*__p)())
762
+ : __p_(__p) {}
763
+ _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p) const
764
+ {return (__p.*__p_)();}
765
+ };
766
+
767
+ template<class _Sp, class _Tp, class _Ap>
768
+ class _LIBCPP_TYPE_VIS mem_fun1_ref_t : public binary_function<_Tp, _Ap, _Sp>
769
+ {
770
+ _Sp (_Tp::*__p_)(_Ap);
771
+ public:
772
+ _LIBCPP_INLINE_VISIBILITY explicit mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap))
773
+ : __p_(__p) {}
774
+ _LIBCPP_INLINE_VISIBILITY _Sp operator()(_Tp& __p, _Ap __x) const
775
+ {return (__p.*__p_)(__x);}
776
+ };
777
+
778
+ template<class _Sp, class _Tp>
779
+ inline _LIBCPP_INLINE_VISIBILITY
780
+ mem_fun_ref_t<_Sp,_Tp>
781
+ mem_fun_ref(_Sp (_Tp::*__f)())
782
+ {return mem_fun_ref_t<_Sp,_Tp>(__f);}
783
+
784
+ template<class _Sp, class _Tp, class _Ap>
785
+ inline _LIBCPP_INLINE_VISIBILITY
786
+ mem_fun1_ref_t<_Sp,_Tp,_Ap>
787
+ mem_fun_ref(_Sp (_Tp::*__f)(_Ap))
788
+ {return mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);}
789
+
790
+ template <class _Sp, class _Tp>
791
+ class _LIBCPP_TYPE_VIS const_mem_fun_t : public unary_function<const _Tp*, _Sp>
792
+ {
793
+ _Sp (_Tp::*__p_)() const;
794
+ public:
795
+ _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_t(_Sp (_Tp::*__p)() const)
796
+ : __p_(__p) {}
797
+ _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p) const
798
+ {return (__p->*__p_)();}
799
+ };
800
+
801
+ template <class _Sp, class _Tp, class _Ap>
802
+ class _LIBCPP_TYPE_VIS const_mem_fun1_t : public binary_function<const _Tp*, _Ap, _Sp>
803
+ {
804
+ _Sp (_Tp::*__p_)(_Ap) const;
805
+ public:
806
+ _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_t(_Sp (_Tp::*__p)(_Ap) const)
807
+ : __p_(__p) {}
808
+ _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp* __p, _Ap __x) const
809
+ {return (__p->*__p_)(__x);}
810
+ };
811
+
812
+ template <class _Sp, class _Tp>
813
+ inline _LIBCPP_INLINE_VISIBILITY
814
+ const_mem_fun_t<_Sp,_Tp>
815
+ mem_fun(_Sp (_Tp::*__f)() const)
816
+ {return const_mem_fun_t<_Sp,_Tp>(__f);}
817
+
818
+ template <class _Sp, class _Tp, class _Ap>
819
+ inline _LIBCPP_INLINE_VISIBILITY
820
+ const_mem_fun1_t<_Sp,_Tp,_Ap>
821
+ mem_fun(_Sp (_Tp::*__f)(_Ap) const)
822
+ {return const_mem_fun1_t<_Sp,_Tp,_Ap>(__f);}
823
+
824
+ template <class _Sp, class _Tp>
825
+ class _LIBCPP_TYPE_VIS const_mem_fun_ref_t : public unary_function<_Tp, _Sp>
826
+ {
827
+ _Sp (_Tp::*__p_)() const;
828
+ public:
829
+ _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun_ref_t(_Sp (_Tp::*__p)() const)
830
+ : __p_(__p) {}
831
+ _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p) const
832
+ {return (__p.*__p_)();}
833
+ };
834
+
835
+ template <class _Sp, class _Tp, class _Ap>
836
+ class _LIBCPP_TYPE_VIS const_mem_fun1_ref_t
837
+ : public binary_function<_Tp, _Ap, _Sp>
838
+ {
839
+ _Sp (_Tp::*__p_)(_Ap) const;
840
+ public:
841
+ _LIBCPP_INLINE_VISIBILITY explicit const_mem_fun1_ref_t(_Sp (_Tp::*__p)(_Ap) const)
842
+ : __p_(__p) {}
843
+ _LIBCPP_INLINE_VISIBILITY _Sp operator()(const _Tp& __p, _Ap __x) const
844
+ {return (__p.*__p_)(__x);}
845
+ };
846
+
847
+ template <class _Sp, class _Tp>
848
+ inline _LIBCPP_INLINE_VISIBILITY
849
+ const_mem_fun_ref_t<_Sp,_Tp>
850
+ mem_fun_ref(_Sp (_Tp::*__f)() const)
851
+ {return const_mem_fun_ref_t<_Sp,_Tp>(__f);}
852
+
853
+ template <class _Sp, class _Tp, class _Ap>
854
+ inline _LIBCPP_INLINE_VISIBILITY
855
+ const_mem_fun1_ref_t<_Sp,_Tp,_Ap>
856
+ mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const)
857
+ {return const_mem_fun1_ref_t<_Sp,_Tp,_Ap>(__f);}
858
+
859
+ #ifdef _LIBCPP_HAS_NO_VARIADICS
860
+
861
+ #include <__functional_03>
862
+
863
+ #else // _LIBCPP_HAS_NO_VARIADICS
864
+
865
+ template <class _Tp>
866
+ class __mem_fn
867
+ : public __weak_result_type<_Tp>
868
+ {
869
+ public:
870
+ // types
871
+ typedef _Tp type;
872
+ private:
873
+ type __f_;
874
+
875
+ public:
876
+ _LIBCPP_INLINE_VISIBILITY __mem_fn(type __f) : __f_(__f) {}
877
+
878
+ // invoke
879
+ template <class... _ArgTypes>
880
+ _LIBCPP_INLINE_VISIBILITY
881
+ typename __invoke_return<type, _ArgTypes...>::type
882
+ operator() (_ArgTypes&&... __args)
883
+ {
884
+ return __invoke(__f_, _VSTD::forward<_ArgTypes>(__args)...);
885
+ }
886
+ };
887
+
888
+ template<class _Rp, class _Tp>
889
+ inline _LIBCPP_INLINE_VISIBILITY
890
+ __mem_fn<_Rp _Tp::*>
891
+ mem_fn(_Rp _Tp::* __pm)
892
+ {
893
+ return __mem_fn<_Rp _Tp::*>(__pm);
894
+ }
895
+
896
+ template<class _Rp, class _Tp, class ..._Args>
897
+ inline _LIBCPP_INLINE_VISIBILITY
898
+ __mem_fn<_Rp (_Tp::*)(_Args...)>
899
+ mem_fn(_Rp (_Tp::* __pm)(_Args...))
900
+ {
901
+ return __mem_fn<_Rp (_Tp::*)(_Args...)>(__pm);
902
+ }
903
+
904
+ template<class _Rp, class _Tp, class ..._Args>
905
+ inline _LIBCPP_INLINE_VISIBILITY
906
+ __mem_fn<_Rp (_Tp::*)(_Args...) const>
907
+ mem_fn(_Rp (_Tp::* __pm)(_Args...) const)
908
+ {
909
+ return __mem_fn<_Rp (_Tp::*)(_Args...) const>(__pm);
910
+ }
911
+
912
+ template<class _Rp, class _Tp, class ..._Args>
913
+ inline _LIBCPP_INLINE_VISIBILITY
914
+ __mem_fn<_Rp (_Tp::*)(_Args...) volatile>
915
+ mem_fn(_Rp (_Tp::* __pm)(_Args...) volatile)
916
+ {
917
+ return __mem_fn<_Rp (_Tp::*)(_Args...) volatile>(__pm);
918
+ }
919
+
920
+ template<class _Rp, class _Tp, class ..._Args>
921
+ inline _LIBCPP_INLINE_VISIBILITY
922
+ __mem_fn<_Rp (_Tp::*)(_Args...) const volatile>
923
+ mem_fn(_Rp (_Tp::* __pm)(_Args...) const volatile)
924
+ {
925
+ return __mem_fn<_Rp (_Tp::*)(_Args...) const volatile>(__pm);
926
+ }
927
+
928
+ // bad_function_call
929
+
930
+ class _LIBCPP_EXCEPTION_ABI bad_function_call
931
+ : public exception
932
+ {
933
+ };
934
+
935
+ template<class _Fp> class _LIBCPP_TYPE_VIS function; // undefined
936
+
937
+ namespace __function
938
+ {
939
+
940
+ template<class _Rp, class ..._ArgTypes>
941
+ struct __maybe_derive_from_unary_function
942
+ {
943
+ };
944
+
945
+ template<class _Rp, class _A1>
946
+ struct __maybe_derive_from_unary_function<_Rp(_A1)>
947
+ : public unary_function<_A1, _Rp>
948
+ {
949
+ };
950
+
951
+ template<class _Rp, class ..._ArgTypes>
952
+ struct __maybe_derive_from_binary_function
953
+ {
954
+ };
955
+
956
+ template<class _Rp, class _A1, class _A2>
957
+ struct __maybe_derive_from_binary_function<_Rp(_A1, _A2)>
958
+ : public binary_function<_A1, _A2, _Rp>
959
+ {
960
+ };
961
+
962
+ template<class _Fp> class __base;
963
+
964
+ template<class _Rp, class ..._ArgTypes>
965
+ class __base<_Rp(_ArgTypes...)>
966
+ {
967
+ __base(const __base&);
968
+ __base& operator=(const __base&);
969
+ public:
970
+ _LIBCPP_INLINE_VISIBILITY __base() {}
971
+ _LIBCPP_INLINE_VISIBILITY virtual ~__base() {}
972
+ virtual __base* __clone() const = 0;
973
+ virtual void __clone(__base*) const = 0;
974
+ virtual void destroy() _NOEXCEPT = 0;
975
+ virtual void destroy_deallocate() _NOEXCEPT = 0;
976
+ virtual _Rp operator()(_ArgTypes&& ...) = 0;
977
+ #ifndef _LIBCPP_NO_RTTI
978
+ virtual const void* target(const type_info&) const _NOEXCEPT = 0;
979
+ virtual const std::type_info& target_type() const _NOEXCEPT = 0;
980
+ #endif // _LIBCPP_NO_RTTI
981
+ };
982
+
983
+ template<class _FD, class _Alloc, class _FB> class __func;
984
+
985
+ template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
986
+ class __func<_Fp, _Alloc, _Rp(_ArgTypes...)>
987
+ : public __base<_Rp(_ArgTypes...)>
988
+ {
989
+ __compressed_pair<_Fp, _Alloc> __f_;
990
+ public:
991
+ _LIBCPP_INLINE_VISIBILITY
992
+ explicit __func(_Fp&& __f)
993
+ : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)),
994
+ _VSTD::forward_as_tuple()) {}
995
+ _LIBCPP_INLINE_VISIBILITY
996
+ explicit __func(const _Fp& __f, const _Alloc& __a)
997
+ : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f),
998
+ _VSTD::forward_as_tuple(__a)) {}
999
+
1000
+ _LIBCPP_INLINE_VISIBILITY
1001
+ explicit __func(const _Fp& __f, _Alloc&& __a)
1002
+ : __f_(piecewise_construct, _VSTD::forward_as_tuple(__f),
1003
+ _VSTD::forward_as_tuple(_VSTD::move(__a))) {}
1004
+
1005
+ _LIBCPP_INLINE_VISIBILITY
1006
+ explicit __func(_Fp&& __f, _Alloc&& __a)
1007
+ : __f_(piecewise_construct, _VSTD::forward_as_tuple(_VSTD::move(__f)),
1008
+ _VSTD::forward_as_tuple(_VSTD::move(__a))) {}
1009
+ virtual __base<_Rp(_ArgTypes...)>* __clone() const;
1010
+ virtual void __clone(__base<_Rp(_ArgTypes...)>*) const;
1011
+ virtual void destroy() _NOEXCEPT;
1012
+ virtual void destroy_deallocate() _NOEXCEPT;
1013
+ virtual _Rp operator()(_ArgTypes&& ... __arg);
1014
+ #ifndef _LIBCPP_NO_RTTI
1015
+ virtual const void* target(const type_info&) const _NOEXCEPT;
1016
+ virtual const std::type_info& target_type() const _NOEXCEPT;
1017
+ #endif // _LIBCPP_NO_RTTI
1018
+ };
1019
+
1020
+ template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
1021
+ __base<_Rp(_ArgTypes...)>*
1022
+ __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone() const
1023
+ {
1024
+ typedef typename _Alloc::template rebind<__func>::other _Ap;
1025
+ _Ap __a(__f_.second());
1026
+ typedef __allocator_destructor<_Ap> _Dp;
1027
+ unique_ptr<__func, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
1028
+ ::new (__hold.get()) __func(__f_.first(), _Alloc(__a));
1029
+ return __hold.release();
1030
+ }
1031
+
1032
+ template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
1033
+ void
1034
+ __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::__clone(__base<_Rp(_ArgTypes...)>* __p) const
1035
+ {
1036
+ ::new (__p) __func(__f_.first(), __f_.second());
1037
+ }
1038
+
1039
+ template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
1040
+ void
1041
+ __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy() _NOEXCEPT
1042
+ {
1043
+ __f_.~__compressed_pair<_Fp, _Alloc>();
1044
+ }
1045
+
1046
+ template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
1047
+ void
1048
+ __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::destroy_deallocate() _NOEXCEPT
1049
+ {
1050
+ typedef typename _Alloc::template rebind<__func>::other _Ap;
1051
+ _Ap __a(__f_.second());
1052
+ __f_.~__compressed_pair<_Fp, _Alloc>();
1053
+ __a.deallocate(this, 1);
1054
+ }
1055
+
1056
+ template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
1057
+ _Rp
1058
+ __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::operator()(_ArgTypes&& ... __arg)
1059
+ {
1060
+ return __invoke(__f_.first(), _VSTD::forward<_ArgTypes>(__arg)...);
1061
+ }
1062
+
1063
+ #ifndef _LIBCPP_NO_RTTI
1064
+
1065
+ template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
1066
+ const void*
1067
+ __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target(const type_info& __ti) const _NOEXCEPT
1068
+ {
1069
+ if (__ti == typeid(_Fp))
1070
+ return &__f_.first();
1071
+ return (const void*)0;
1072
+ }
1073
+
1074
+ template<class _Fp, class _Alloc, class _Rp, class ..._ArgTypes>
1075
+ const std::type_info&
1076
+ __func<_Fp, _Alloc, _Rp(_ArgTypes...)>::target_type() const _NOEXCEPT
1077
+ {
1078
+ return typeid(_Fp);
1079
+ }
1080
+
1081
+ #endif // _LIBCPP_NO_RTTI
1082
+
1083
+ } // __function
1084
+
1085
+ template<class _Rp, class ..._ArgTypes>
1086
+ class _LIBCPP_TYPE_VIS function<_Rp(_ArgTypes...)>
1087
+ : public __function::__maybe_derive_from_unary_function<_Rp(_ArgTypes...)>,
1088
+ public __function::__maybe_derive_from_binary_function<_Rp(_ArgTypes...)>
1089
+ {
1090
+ typedef __function::__base<_Rp(_ArgTypes...)> __base;
1091
+ typename aligned_storage<3*sizeof(void*)>::type __buf_;
1092
+ __base* __f_;
1093
+
1094
+ template <class _Fp>
1095
+ _LIBCPP_INLINE_VISIBILITY
1096
+ static bool __not_null(const _Fp&) {return true;}
1097
+ template <class _R2, class ..._Ap>
1098
+ _LIBCPP_INLINE_VISIBILITY
1099
+ static bool __not_null(_R2 (*__p)(_Ap...)) {return __p;}
1100
+ template <class _R2, class _Cp, class ..._Ap>
1101
+ _LIBCPP_INLINE_VISIBILITY
1102
+ static bool __not_null(_R2 (_Cp::*__p)(_Ap...)) {return __p;}
1103
+ template <class _R2, class _Cp, class ..._Ap>
1104
+ _LIBCPP_INLINE_VISIBILITY
1105
+ static bool __not_null(_R2 (_Cp::*__p)(_Ap...) const) {return __p;}
1106
+ template <class _R2, class _Cp, class ..._Ap>
1107
+ _LIBCPP_INLINE_VISIBILITY
1108
+ static bool __not_null(_R2 (_Cp::*__p)(_Ap...) volatile) {return __p;}
1109
+ template <class _R2, class _Cp, class ..._Ap>
1110
+ _LIBCPP_INLINE_VISIBILITY
1111
+ static bool __not_null(_R2 (_Cp::*__p)(_Ap...) const volatile) {return __p;}
1112
+ template <class _R2, class ..._Ap>
1113
+ _LIBCPP_INLINE_VISIBILITY
1114
+ static bool __not_null(const function<_Rp(_Ap...)>& __p) {return __p;}
1115
+
1116
+ template <class _Fp, bool = !is_same<_Fp, function>::value &&
1117
+ __invokable<_Fp&, _ArgTypes...>::value>
1118
+ struct __callable;
1119
+ template <class _Fp>
1120
+ struct __callable<_Fp, true>
1121
+ {
1122
+ static const bool value =
1123
+ is_convertible<typename __invoke_of<_Fp&, _ArgTypes...>::type,
1124
+ _Rp>::value;
1125
+ };
1126
+ template <class _Fp>
1127
+ struct __callable<_Fp, false>
1128
+ {
1129
+ static const bool value = false;
1130
+ };
1131
+ public:
1132
+ typedef _Rp result_type;
1133
+
1134
+ // construct/copy/destroy:
1135
+ _LIBCPP_INLINE_VISIBILITY
1136
+ function() _NOEXCEPT : __f_(0) {}
1137
+ _LIBCPP_INLINE_VISIBILITY
1138
+ function(nullptr_t) _NOEXCEPT : __f_(0) {}
1139
+ function(const function&);
1140
+ function(function&&) _NOEXCEPT;
1141
+ template<class _Fp>
1142
+ function(_Fp,
1143
+ typename enable_if<__callable<_Fp>::value>::type* = 0);
1144
+
1145
+ template<class _Alloc>
1146
+ _LIBCPP_INLINE_VISIBILITY
1147
+ function(allocator_arg_t, const _Alloc&) _NOEXCEPT : __f_(0) {}
1148
+ template<class _Alloc>
1149
+ _LIBCPP_INLINE_VISIBILITY
1150
+ function(allocator_arg_t, const _Alloc&, nullptr_t) _NOEXCEPT : __f_(0) {}
1151
+ template<class _Alloc>
1152
+ function(allocator_arg_t, const _Alloc&, const function&);
1153
+ template<class _Alloc>
1154
+ function(allocator_arg_t, const _Alloc&, function&&);
1155
+ template<class _Fp, class _Alloc>
1156
+ function(allocator_arg_t, const _Alloc& __a, _Fp __f,
1157
+ typename enable_if<__callable<_Fp>::value>::type* = 0);
1158
+
1159
+ function& operator=(const function&);
1160
+ function& operator=(function&&) _NOEXCEPT;
1161
+ function& operator=(nullptr_t) _NOEXCEPT;
1162
+ template<class _Fp>
1163
+ typename enable_if
1164
+ <
1165
+ __callable<typename decay<_Fp>::type>::value,
1166
+ function&
1167
+ >::type
1168
+ operator=(_Fp&&);
1169
+
1170
+ ~function();
1171
+
1172
+ // function modifiers:
1173
+ void swap(function&) _NOEXCEPT;
1174
+ template<class _Fp, class _Alloc>
1175
+ _LIBCPP_INLINE_VISIBILITY
1176
+ void assign(_Fp&& __f, const _Alloc& __a)
1177
+ {function(allocator_arg, __a, _VSTD::forward<_Fp>(__f)).swap(*this);}
1178
+
1179
+ // function capacity:
1180
+ _LIBCPP_INLINE_VISIBILITY
1181
+ _LIBCPP_EXPLICIT operator bool() const _NOEXCEPT {return __f_;}
1182
+
1183
+ // deleted overloads close possible hole in the type system
1184
+ template<class _R2, class... _ArgTypes2>
1185
+ bool operator==(const function<_R2(_ArgTypes2...)>&) const = delete;
1186
+ template<class _R2, class... _ArgTypes2>
1187
+ bool operator!=(const function<_R2(_ArgTypes2...)>&) const = delete;
1188
+ public:
1189
+ // function invocation:
1190
+ _Rp operator()(_ArgTypes...) const;
1191
+
1192
+ #ifndef _LIBCPP_NO_RTTI
1193
+ // function target access:
1194
+ const std::type_info& target_type() const _NOEXCEPT;
1195
+ template <typename _Tp> _Tp* target() _NOEXCEPT;
1196
+ template <typename _Tp> const _Tp* target() const _NOEXCEPT;
1197
+ #endif // _LIBCPP_NO_RTTI
1198
+ };
1199
+
1200
+ template<class _Rp, class ..._ArgTypes>
1201
+ function<_Rp(_ArgTypes...)>::function(const function& __f)
1202
+ {
1203
+ if (__f.__f_ == 0)
1204
+ __f_ = 0;
1205
+ else if (__f.__f_ == (const __base*)&__f.__buf_)
1206
+ {
1207
+ __f_ = (__base*)&__buf_;
1208
+ __f.__f_->__clone(__f_);
1209
+ }
1210
+ else
1211
+ __f_ = __f.__f_->__clone();
1212
+ }
1213
+
1214
+ template<class _Rp, class ..._ArgTypes>
1215
+ template <class _Alloc>
1216
+ function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&,
1217
+ const function& __f)
1218
+ {
1219
+ if (__f.__f_ == 0)
1220
+ __f_ = 0;
1221
+ else if (__f.__f_ == (const __base*)&__f.__buf_)
1222
+ {
1223
+ __f_ = (__base*)&__buf_;
1224
+ __f.__f_->__clone(__f_);
1225
+ }
1226
+ else
1227
+ __f_ = __f.__f_->__clone();
1228
+ }
1229
+
1230
+ template<class _Rp, class ..._ArgTypes>
1231
+ function<_Rp(_ArgTypes...)>::function(function&& __f) _NOEXCEPT
1232
+ {
1233
+ if (__f.__f_ == 0)
1234
+ __f_ = 0;
1235
+ else if (__f.__f_ == (__base*)&__f.__buf_)
1236
+ {
1237
+ __f_ = (__base*)&__buf_;
1238
+ __f.__f_->__clone(__f_);
1239
+ }
1240
+ else
1241
+ {
1242
+ __f_ = __f.__f_;
1243
+ __f.__f_ = 0;
1244
+ }
1245
+ }
1246
+
1247
+ template<class _Rp, class ..._ArgTypes>
1248
+ template <class _Alloc>
1249
+ function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc&,
1250
+ function&& __f)
1251
+ {
1252
+ if (__f.__f_ == 0)
1253
+ __f_ = 0;
1254
+ else if (__f.__f_ == (__base*)&__f.__buf_)
1255
+ {
1256
+ __f_ = (__base*)&__buf_;
1257
+ __f.__f_->__clone(__f_);
1258
+ }
1259
+ else
1260
+ {
1261
+ __f_ = __f.__f_;
1262
+ __f.__f_ = 0;
1263
+ }
1264
+ }
1265
+
1266
+ template<class _Rp, class ..._ArgTypes>
1267
+ template <class _Fp>
1268
+ function<_Rp(_ArgTypes...)>::function(_Fp __f,
1269
+ typename enable_if<__callable<_Fp>::value>::type*)
1270
+ : __f_(0)
1271
+ {
1272
+ if (__not_null(__f))
1273
+ {
1274
+ typedef __function::__func<_Fp, allocator<_Fp>, _Rp(_ArgTypes...)> _FF;
1275
+ if (sizeof(_FF) <= sizeof(__buf_) && is_nothrow_copy_constructible<_Fp>::value)
1276
+ {
1277
+ __f_ = (__base*)&__buf_;
1278
+ ::new (__f_) _FF(_VSTD::move(__f));
1279
+ }
1280
+ else
1281
+ {
1282
+ typedef allocator<_FF> _Ap;
1283
+ _Ap __a;
1284
+ typedef __allocator_destructor<_Ap> _Dp;
1285
+ unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
1286
+ ::new (__hold.get()) _FF(_VSTD::move(__f), allocator<_Fp>(__a));
1287
+ __f_ = __hold.release();
1288
+ }
1289
+ }
1290
+ }
1291
+
1292
+ template<class _Rp, class ..._ArgTypes>
1293
+ template <class _Fp, class _Alloc>
1294
+ function<_Rp(_ArgTypes...)>::function(allocator_arg_t, const _Alloc& __a0, _Fp __f,
1295
+ typename enable_if<__callable<_Fp>::value>::type*)
1296
+ : __f_(0)
1297
+ {
1298
+ typedef allocator_traits<_Alloc> __alloc_traits;
1299
+ if (__not_null(__f))
1300
+ {
1301
+ typedef __function::__func<_Fp, _Alloc, _Rp(_ArgTypes...)> _FF;
1302
+ if (sizeof(_FF) <= sizeof(__buf_) && is_nothrow_copy_constructible<_Fp>::value)
1303
+ {
1304
+ __f_ = (__base*)&__buf_;
1305
+ ::new (__f_) _FF(_VSTD::move(__f));
1306
+ }
1307
+ else
1308
+ {
1309
+ typedef typename __alloc_traits::template
1310
+ #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
1311
+ rebind_alloc<_FF>
1312
+ #else
1313
+ rebind_alloc<_FF>::other
1314
+ #endif
1315
+ _Ap;
1316
+ _Ap __a(__a0);
1317
+ typedef __allocator_destructor<_Ap> _Dp;
1318
+ unique_ptr<__base, _Dp> __hold(__a.allocate(1), _Dp(__a, 1));
1319
+ ::new (__hold.get()) _FF(_VSTD::move(__f), _Alloc(__a));
1320
+ __f_ = __hold.release();
1321
+ }
1322
+ }
1323
+ }
1324
+
1325
+ template<class _Rp, class ..._ArgTypes>
1326
+ function<_Rp(_ArgTypes...)>&
1327
+ function<_Rp(_ArgTypes...)>::operator=(const function& __f)
1328
+ {
1329
+ function(__f).swap(*this);
1330
+ return *this;
1331
+ }
1332
+
1333
+ template<class _Rp, class ..._ArgTypes>
1334
+ function<_Rp(_ArgTypes...)>&
1335
+ function<_Rp(_ArgTypes...)>::operator=(function&& __f) _NOEXCEPT
1336
+ {
1337
+ if (__f_ == (__base*)&__buf_)
1338
+ __f_->destroy();
1339
+ else if (__f_)
1340
+ __f_->destroy_deallocate();
1341
+ __f_ = 0;
1342
+ if (__f.__f_ == 0)
1343
+ __f_ = 0;
1344
+ else if (__f.__f_ == (__base*)&__f.__buf_)
1345
+ {
1346
+ __f_ = (__base*)&__buf_;
1347
+ __f.__f_->__clone(__f_);
1348
+ }
1349
+ else
1350
+ {
1351
+ __f_ = __f.__f_;
1352
+ __f.__f_ = 0;
1353
+ }
1354
+ return *this;
1355
+ }
1356
+
1357
+ template<class _Rp, class ..._ArgTypes>
1358
+ function<_Rp(_ArgTypes...)>&
1359
+ function<_Rp(_ArgTypes...)>::operator=(nullptr_t) _NOEXCEPT
1360
+ {
1361
+ if (__f_ == (__base*)&__buf_)
1362
+ __f_->destroy();
1363
+ else if (__f_)
1364
+ __f_->destroy_deallocate();
1365
+ __f_ = 0;
1366
+ return *this;
1367
+ }
1368
+
1369
+ template<class _Rp, class ..._ArgTypes>
1370
+ template <class _Fp>
1371
+ typename enable_if
1372
+ <
1373
+ function<_Rp(_ArgTypes...)>::template __callable<typename decay<_Fp>::type>::value,
1374
+ function<_Rp(_ArgTypes...)>&
1375
+ >::type
1376
+ function<_Rp(_ArgTypes...)>::operator=(_Fp&& __f)
1377
+ {
1378
+ function(_VSTD::forward<_Fp>(__f)).swap(*this);
1379
+ return *this;
1380
+ }
1381
+
1382
+ template<class _Rp, class ..._ArgTypes>
1383
+ function<_Rp(_ArgTypes...)>::~function()
1384
+ {
1385
+ if (__f_ == (__base*)&__buf_)
1386
+ __f_->destroy();
1387
+ else if (__f_)
1388
+ __f_->destroy_deallocate();
1389
+ }
1390
+
1391
+ template<class _Rp, class ..._ArgTypes>
1392
+ void
1393
+ function<_Rp(_ArgTypes...)>::swap(function& __f) _NOEXCEPT
1394
+ {
1395
+ if (__f_ == (__base*)&__buf_ && __f.__f_ == (__base*)&__f.__buf_)
1396
+ {
1397
+ typename aligned_storage<sizeof(__buf_)>::type __tempbuf;
1398
+ __base* __t = (__base*)&__tempbuf;
1399
+ __f_->__clone(__t);
1400
+ __f_->destroy();
1401
+ __f_ = 0;
1402
+ __f.__f_->__clone((__base*)&__buf_);
1403
+ __f.__f_->destroy();
1404
+ __f.__f_ = 0;
1405
+ __f_ = (__base*)&__buf_;
1406
+ __t->__clone((__base*)&__f.__buf_);
1407
+ __t->destroy();
1408
+ __f.__f_ = (__base*)&__f.__buf_;
1409
+ }
1410
+ else if (__f_ == (__base*)&__buf_)
1411
+ {
1412
+ __f_->__clone((__base*)&__f.__buf_);
1413
+ __f_->destroy();
1414
+ __f_ = __f.__f_;
1415
+ __f.__f_ = (__base*)&__f.__buf_;
1416
+ }
1417
+ else if (__f.__f_ == (__base*)&__f.__buf_)
1418
+ {
1419
+ __f.__f_->__clone((__base*)&__buf_);
1420
+ __f.__f_->destroy();
1421
+ __f.__f_ = __f_;
1422
+ __f_ = (__base*)&__buf_;
1423
+ }
1424
+ else
1425
+ _VSTD::swap(__f_, __f.__f_);
1426
+ }
1427
+
1428
+ template<class _Rp, class ..._ArgTypes>
1429
+ _Rp
1430
+ function<_Rp(_ArgTypes...)>::operator()(_ArgTypes... __arg) const
1431
+ {
1432
+ #ifndef _LIBCPP_NO_EXCEPTIONS
1433
+ if (__f_ == 0)
1434
+ throw bad_function_call();
1435
+ #endif // _LIBCPP_NO_EXCEPTIONS
1436
+ return (*__f_)(_VSTD::forward<_ArgTypes>(__arg)...);
1437
+ }
1438
+
1439
+ #ifndef _LIBCPP_NO_RTTI
1440
+
1441
+ template<class _Rp, class ..._ArgTypes>
1442
+ const std::type_info&
1443
+ function<_Rp(_ArgTypes...)>::target_type() const _NOEXCEPT
1444
+ {
1445
+ if (__f_ == 0)
1446
+ return typeid(void);
1447
+ return __f_->target_type();
1448
+ }
1449
+
1450
+ template<class _Rp, class ..._ArgTypes>
1451
+ template <typename _Tp>
1452
+ _Tp*
1453
+ function<_Rp(_ArgTypes...)>::target() _NOEXCEPT
1454
+ {
1455
+ if (__f_ == 0)
1456
+ return (_Tp*)0;
1457
+ return (_Tp*)__f_->target(typeid(_Tp));
1458
+ }
1459
+
1460
+ template<class _Rp, class ..._ArgTypes>
1461
+ template <typename _Tp>
1462
+ const _Tp*
1463
+ function<_Rp(_ArgTypes...)>::target() const _NOEXCEPT
1464
+ {
1465
+ if (__f_ == 0)
1466
+ return (const _Tp*)0;
1467
+ return (const _Tp*)__f_->target(typeid(_Tp));
1468
+ }
1469
+
1470
+ #endif // _LIBCPP_NO_RTTI
1471
+
1472
+ template <class _Rp, class... _ArgTypes>
1473
+ inline _LIBCPP_INLINE_VISIBILITY
1474
+ bool
1475
+ operator==(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return !__f;}
1476
+
1477
+ template <class _Rp, class... _ArgTypes>
1478
+ inline _LIBCPP_INLINE_VISIBILITY
1479
+ bool
1480
+ operator==(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return !__f;}
1481
+
1482
+ template <class _Rp, class... _ArgTypes>
1483
+ inline _LIBCPP_INLINE_VISIBILITY
1484
+ bool
1485
+ operator!=(const function<_Rp(_ArgTypes...)>& __f, nullptr_t) _NOEXCEPT {return (bool)__f;}
1486
+
1487
+ template <class _Rp, class... _ArgTypes>
1488
+ inline _LIBCPP_INLINE_VISIBILITY
1489
+ bool
1490
+ operator!=(nullptr_t, const function<_Rp(_ArgTypes...)>& __f) _NOEXCEPT {return (bool)__f;}
1491
+
1492
+ template <class _Rp, class... _ArgTypes>
1493
+ inline _LIBCPP_INLINE_VISIBILITY
1494
+ void
1495
+ swap(function<_Rp(_ArgTypes...)>& __x, function<_Rp(_ArgTypes...)>& __y) _NOEXCEPT
1496
+ {return __x.swap(__y);}
1497
+
1498
+ template<class _Tp> struct __is_bind_expression : public false_type {};
1499
+ template<class _Tp> struct _LIBCPP_TYPE_VIS is_bind_expression
1500
+ : public __is_bind_expression<typename remove_cv<_Tp>::type> {};
1501
+
1502
+ template<class _Tp> struct __is_placeholder : public integral_constant<int, 0> {};
1503
+ template<class _Tp> struct _LIBCPP_TYPE_VIS is_placeholder
1504
+ : public __is_placeholder<typename remove_cv<_Tp>::type> {};
1505
+
1506
+ namespace placeholders
1507
+ {
1508
+
1509
+ template <int _Np> struct __ph {};
1510
+
1511
+ extern __ph<1> _1;
1512
+ extern __ph<2> _2;
1513
+ extern __ph<3> _3;
1514
+ extern __ph<4> _4;
1515
+ extern __ph<5> _5;
1516
+ extern __ph<6> _6;
1517
+ extern __ph<7> _7;
1518
+ extern __ph<8> _8;
1519
+ extern __ph<9> _9;
1520
+ extern __ph<10> _10;
1521
+
1522
+ } // placeholders
1523
+
1524
+ template<int _Np>
1525
+ struct __is_placeholder<placeholders::__ph<_Np> >
1526
+ : public integral_constant<int, _Np> {};
1527
+
1528
+ template <class _Tp, class _Uj>
1529
+ inline _LIBCPP_INLINE_VISIBILITY
1530
+ _Tp&
1531
+ __mu(reference_wrapper<_Tp> __t, _Uj&)
1532
+ {
1533
+ return __t.get();
1534
+ }
1535
+
1536
+ template <class _Ti, class ..._Uj, size_t ..._Indx>
1537
+ inline _LIBCPP_INLINE_VISIBILITY
1538
+ typename __invoke_of<_Ti&, _Uj...>::type
1539
+ __mu_expand(_Ti& __ti, tuple<_Uj...>& __uj, __tuple_indices<_Indx...>)
1540
+ {
1541
+ return __ti(_VSTD::forward<_Uj>(get<_Indx>(__uj))...);
1542
+ }
1543
+
1544
+ template <class _Ti, class ..._Uj>
1545
+ inline _LIBCPP_INLINE_VISIBILITY
1546
+ typename enable_if
1547
+ <
1548
+ is_bind_expression<_Ti>::value,
1549
+ typename __invoke_of<_Ti&, _Uj...>::type
1550
+ >::type
1551
+ __mu(_Ti& __ti, tuple<_Uj...>& __uj)
1552
+ {
1553
+ typedef typename __make_tuple_indices<sizeof...(_Uj)>::type __indices;
1554
+ return __mu_expand(__ti, __uj, __indices());
1555
+ }
1556
+
1557
+ template <bool IsPh, class _Ti, class _Uj>
1558
+ struct __mu_return2 {};
1559
+
1560
+ template <class _Ti, class _Uj>
1561
+ struct __mu_return2<true, _Ti, _Uj>
1562
+ {
1563
+ typedef typename tuple_element<is_placeholder<_Ti>::value - 1, _Uj>::type type;
1564
+ };
1565
+
1566
+ template <class _Ti, class _Uj>
1567
+ inline _LIBCPP_INLINE_VISIBILITY
1568
+ typename enable_if
1569
+ <
1570
+ 0 < is_placeholder<_Ti>::value,
1571
+ typename __mu_return2<0 < is_placeholder<_Ti>::value, _Ti, _Uj>::type
1572
+ >::type
1573
+ __mu(_Ti&, _Uj& __uj)
1574
+ {
1575
+ const size_t _Indx = is_placeholder<_Ti>::value - 1;
1576
+ return _VSTD::forward<typename tuple_element<_Indx, _Uj>::type>(get<_Indx>(__uj));
1577
+ }
1578
+
1579
+ template <class _Ti, class _Uj>
1580
+ inline _LIBCPP_INLINE_VISIBILITY
1581
+ typename enable_if
1582
+ <
1583
+ !is_bind_expression<_Ti>::value &&
1584
+ is_placeholder<_Ti>::value == 0 &&
1585
+ !__is_reference_wrapper<_Ti>::value,
1586
+ _Ti&
1587
+ >::type
1588
+ __mu(_Ti& __ti, _Uj&)
1589
+ {
1590
+ return __ti;
1591
+ }
1592
+
1593
+ template <class _Ti, bool IsReferenceWrapper, bool IsBindEx, bool IsPh,
1594
+ class _TupleUj>
1595
+ struct ____mu_return;
1596
+
1597
+ template <class _Ti, class ..._Uj>
1598
+ struct ____mu_return<_Ti, false, true, false, tuple<_Uj...> >
1599
+ {
1600
+ typedef typename __invoke_of<_Ti&, _Uj...>::type type;
1601
+ };
1602
+
1603
+ template <class _Ti, class _TupleUj>
1604
+ struct ____mu_return<_Ti, false, false, true, _TupleUj>
1605
+ {
1606
+ typedef typename tuple_element<is_placeholder<_Ti>::value - 1,
1607
+ _TupleUj>::type&& type;
1608
+ };
1609
+
1610
+ template <class _Ti, class _TupleUj>
1611
+ struct ____mu_return<_Ti, true, false, false, _TupleUj>
1612
+ {
1613
+ typedef typename _Ti::type& type;
1614
+ };
1615
+
1616
+ template <class _Ti, class _TupleUj>
1617
+ struct ____mu_return<_Ti, false, false, false, _TupleUj>
1618
+ {
1619
+ typedef _Ti& type;
1620
+ };
1621
+
1622
+ template <class _Ti, class _TupleUj>
1623
+ struct __mu_return
1624
+ : public ____mu_return<_Ti,
1625
+ __is_reference_wrapper<_Ti>::value,
1626
+ is_bind_expression<_Ti>::value,
1627
+ 0 < is_placeholder<_Ti>::value &&
1628
+ is_placeholder<_Ti>::value <= tuple_size<_TupleUj>::value,
1629
+ _TupleUj>
1630
+ {
1631
+ };
1632
+
1633
+ template <class _Fp, class _BoundArgs, class _TupleUj>
1634
+ struct _is_valid_bind_return
1635
+ {
1636
+ static const bool value = false;
1637
+ };
1638
+
1639
+ template <class _Fp, class ..._BoundArgs, class _TupleUj>
1640
+ struct _is_valid_bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj>
1641
+ {
1642
+ static const bool value = __invokable<_Fp,
1643
+ typename __mu_return<_BoundArgs, _TupleUj>::type...>::value;
1644
+ };
1645
+
1646
+ template <class _Fp, class ..._BoundArgs, class _TupleUj>
1647
+ struct _is_valid_bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj>
1648
+ {
1649
+ static const bool value = __invokable<_Fp,
1650
+ typename __mu_return<const _BoundArgs, _TupleUj>::type...>::value;
1651
+ };
1652
+
1653
+ template <class _Fp, class _BoundArgs, class _TupleUj,
1654
+ bool = _is_valid_bind_return<_Fp, _BoundArgs, _TupleUj>::value>
1655
+ struct __bind_return;
1656
+
1657
+ template <class _Fp, class ..._BoundArgs, class _TupleUj>
1658
+ struct __bind_return<_Fp, tuple<_BoundArgs...>, _TupleUj, true>
1659
+ {
1660
+ typedef typename __invoke_of
1661
+ <
1662
+ _Fp&,
1663
+ typename __mu_return
1664
+ <
1665
+ _BoundArgs,
1666
+ _TupleUj
1667
+ >::type...
1668
+ >::type type;
1669
+ };
1670
+
1671
+ template <class _Fp, class ..._BoundArgs, class _TupleUj>
1672
+ struct __bind_return<_Fp, const tuple<_BoundArgs...>, _TupleUj, true>
1673
+ {
1674
+ typedef typename __invoke_of
1675
+ <
1676
+ _Fp&,
1677
+ typename __mu_return
1678
+ <
1679
+ const _BoundArgs,
1680
+ _TupleUj
1681
+ >::type...
1682
+ >::type type;
1683
+ };
1684
+
1685
+ template <class _Fp, class _BoundArgs, size_t ..._Indx, class _Args>
1686
+ inline _LIBCPP_INLINE_VISIBILITY
1687
+ typename __bind_return<_Fp, _BoundArgs, _Args>::type
1688
+ __apply_functor(_Fp& __f, _BoundArgs& __bound_args, __tuple_indices<_Indx...>,
1689
+ _Args&& __args)
1690
+ {
1691
+ return __invoke(__f, __mu(get<_Indx>(__bound_args), __args)...);
1692
+ }
1693
+
1694
+ template<class _Fp, class ..._BoundArgs>
1695
+ class __bind
1696
+ : public __weak_result_type<typename decay<_Fp>::type>
1697
+ {
1698
+ protected:
1699
+ typedef typename decay<_Fp>::type _Fd;
1700
+ typedef tuple<typename decay<_BoundArgs>::type...> _Td;
1701
+ private:
1702
+ _Fd __f_;
1703
+ _Td __bound_args_;
1704
+
1705
+ typedef typename __make_tuple_indices<sizeof...(_BoundArgs)>::type __indices;
1706
+ public:
1707
+ #ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
1708
+
1709
+ _LIBCPP_INLINE_VISIBILITY
1710
+ __bind(const __bind& __b)
1711
+ : __f_(__b.__f_),
1712
+ __bound_args_(__b.__bound_args_) {}
1713
+
1714
+ _LIBCPP_INLINE_VISIBILITY
1715
+ __bind& operator=(const __bind& __b)
1716
+ {
1717
+ __f_ = __b.__f_;
1718
+ __bound_args_ = __b.__bound_args_;
1719
+ return *this;
1720
+ }
1721
+
1722
+ _LIBCPP_INLINE_VISIBILITY
1723
+ __bind(__bind&& __b)
1724
+ : __f_(_VSTD::move(__b.__f_)),
1725
+ __bound_args_(_VSTD::move(__b.__bound_args_)) {}
1726
+
1727
+ _LIBCPP_INLINE_VISIBILITY
1728
+ __bind& operator=(__bind&& __b)
1729
+ {
1730
+ __f_ = _VSTD::move(__b.__f_);
1731
+ __bound_args_ = _VSTD::move(__b.__bound_args_);
1732
+ return *this;
1733
+ }
1734
+
1735
+ #endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
1736
+
1737
+ template <class _Gp, class ..._BA,
1738
+ class = typename enable_if
1739
+ <
1740
+ is_constructible<_Fd, _Gp>::value
1741
+ >::type>
1742
+ _LIBCPP_INLINE_VISIBILITY
1743
+ explicit __bind(_Gp&& __f, _BA&& ...__bound_args)
1744
+ : __f_(_VSTD::forward<_Gp>(__f)),
1745
+ __bound_args_(_VSTD::forward<_BA>(__bound_args)...) {}
1746
+
1747
+ template <class ..._Args>
1748
+ _LIBCPP_INLINE_VISIBILITY
1749
+ typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type
1750
+ operator()(_Args&& ...__args)
1751
+ {
1752
+ return __apply_functor(__f_, __bound_args_, __indices(),
1753
+ tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...));
1754
+ }
1755
+
1756
+ template <class ..._Args>
1757
+ _LIBCPP_INLINE_VISIBILITY
1758
+ typename __bind_return<const _Fd, const _Td, tuple<_Args&&...> >::type
1759
+ operator()(_Args&& ...__args) const
1760
+ {
1761
+ return __apply_functor(__f_, __bound_args_, __indices(),
1762
+ tuple<_Args&&...>(_VSTD::forward<_Args>(__args)...));
1763
+ }
1764
+ };
1765
+
1766
+ template<class _Fp, class ..._BoundArgs>
1767
+ struct __is_bind_expression<__bind<_Fp, _BoundArgs...> > : public true_type {};
1768
+
1769
+ template<class _Rp, class _Fp, class ..._BoundArgs>
1770
+ class __bind_r
1771
+ : public __bind<_Fp, _BoundArgs...>
1772
+ {
1773
+ typedef __bind<_Fp, _BoundArgs...> base;
1774
+ typedef typename base::_Fd _Fd;
1775
+ typedef typename base::_Td _Td;
1776
+ public:
1777
+ typedef _Rp result_type;
1778
+
1779
+ #ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
1780
+
1781
+ _LIBCPP_INLINE_VISIBILITY
1782
+ __bind_r(const __bind_r& __b)
1783
+ : base(_VSTD::forward<const base&>(__b)) {}
1784
+
1785
+ _LIBCPP_INLINE_VISIBILITY
1786
+ __bind_r& operator=(const __bind_r& __b)
1787
+ {
1788
+ base::operator=(_VSTD::forward<const base&>(__b));
1789
+ return *this;
1790
+ }
1791
+
1792
+ _LIBCPP_INLINE_VISIBILITY
1793
+ __bind_r(__bind_r&& __b)
1794
+ : base(_VSTD::forward<base>(__b)) {}
1795
+
1796
+ _LIBCPP_INLINE_VISIBILITY
1797
+ __bind_r& operator=(__bind_r&& __b)
1798
+ {
1799
+ base::operator=(_VSTD::forward<base>(__b));
1800
+ return *this;
1801
+ }
1802
+
1803
+ #endif // _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
1804
+
1805
+ template <class _Gp, class ..._BA>
1806
+ _LIBCPP_INLINE_VISIBILITY
1807
+ explicit __bind_r(_Gp&& __f, _BA&& ...__bound_args)
1808
+ : base(_VSTD::forward<_Gp>(__f),
1809
+ _VSTD::forward<_BA>(__bound_args)...) {}
1810
+
1811
+ template <class ..._Args>
1812
+ _LIBCPP_INLINE_VISIBILITY
1813
+ typename enable_if
1814
+ <
1815
+ is_convertible<typename __bind_return<_Fd, _Td, tuple<_Args&&...> >::type,
1816
+ result_type>::value,
1817
+ result_type
1818
+ >::type
1819
+ operator()(_Args&& ...__args)
1820
+ {
1821
+ return base::operator()(_VSTD::forward<_Args>(__args)...);
1822
+ }
1823
+
1824
+ template <class ..._Args>
1825
+ _LIBCPP_INLINE_VISIBILITY
1826
+ typename enable_if
1827
+ <
1828
+ is_convertible<typename __bind_return<const _Fd, const _Td, tuple<_Args&&...> >::type,
1829
+ result_type>::value,
1830
+ result_type
1831
+ >::type
1832
+ operator()(_Args&& ...__args) const
1833
+ {
1834
+ return base::operator()(_VSTD::forward<_Args>(__args)...);
1835
+ }
1836
+ };
1837
+
1838
+ template<class _Rp, class _Fp, class ..._BoundArgs>
1839
+ struct __is_bind_expression<__bind_r<_Rp, _Fp, _BoundArgs...> > : public true_type {};
1840
+
1841
+ template<class _Fp, class ..._BoundArgs>
1842
+ inline _LIBCPP_INLINE_VISIBILITY
1843
+ __bind<_Fp, _BoundArgs...>
1844
+ bind(_Fp&& __f, _BoundArgs&&... __bound_args)
1845
+ {
1846
+ typedef __bind<_Fp, _BoundArgs...> type;
1847
+ return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...);
1848
+ }
1849
+
1850
+ template<class _Rp, class _Fp, class ..._BoundArgs>
1851
+ inline _LIBCPP_INLINE_VISIBILITY
1852
+ __bind_r<_Rp, _Fp, _BoundArgs...>
1853
+ bind(_Fp&& __f, _BoundArgs&&... __bound_args)
1854
+ {
1855
+ typedef __bind_r<_Rp, _Fp, _BoundArgs...> type;
1856
+ return type(_VSTD::forward<_Fp>(__f), _VSTD::forward<_BoundArgs>(__bound_args)...);
1857
+ }
1858
+
1859
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1860
+
1861
+ template <>
1862
+ struct _LIBCPP_TYPE_VIS hash<bool>
1863
+ : public unary_function<bool, size_t>
1864
+ {
1865
+ _LIBCPP_INLINE_VISIBILITY
1866
+ size_t operator()(bool __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1867
+ };
1868
+
1869
+ template <>
1870
+ struct _LIBCPP_TYPE_VIS hash<char>
1871
+ : public unary_function<char, size_t>
1872
+ {
1873
+ _LIBCPP_INLINE_VISIBILITY
1874
+ size_t operator()(char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1875
+ };
1876
+
1877
+ template <>
1878
+ struct _LIBCPP_TYPE_VIS hash<signed char>
1879
+ : public unary_function<signed char, size_t>
1880
+ {
1881
+ _LIBCPP_INLINE_VISIBILITY
1882
+ size_t operator()(signed char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1883
+ };
1884
+
1885
+ template <>
1886
+ struct _LIBCPP_TYPE_VIS hash<unsigned char>
1887
+ : public unary_function<unsigned char, size_t>
1888
+ {
1889
+ _LIBCPP_INLINE_VISIBILITY
1890
+ size_t operator()(unsigned char __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1891
+ };
1892
+
1893
+ #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
1894
+
1895
+ template <>
1896
+ struct _LIBCPP_TYPE_VIS hash<char16_t>
1897
+ : public unary_function<char16_t, size_t>
1898
+ {
1899
+ _LIBCPP_INLINE_VISIBILITY
1900
+ size_t operator()(char16_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1901
+ };
1902
+
1903
+ template <>
1904
+ struct _LIBCPP_TYPE_VIS hash<char32_t>
1905
+ : public unary_function<char32_t, size_t>
1906
+ {
1907
+ _LIBCPP_INLINE_VISIBILITY
1908
+ size_t operator()(char32_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1909
+ };
1910
+
1911
+ #endif // _LIBCPP_HAS_NO_UNICODE_CHARS
1912
+
1913
+ template <>
1914
+ struct _LIBCPP_TYPE_VIS hash<wchar_t>
1915
+ : public unary_function<wchar_t, size_t>
1916
+ {
1917
+ _LIBCPP_INLINE_VISIBILITY
1918
+ size_t operator()(wchar_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1919
+ };
1920
+
1921
+ template <>
1922
+ struct _LIBCPP_TYPE_VIS hash<short>
1923
+ : public unary_function<short, size_t>
1924
+ {
1925
+ _LIBCPP_INLINE_VISIBILITY
1926
+ size_t operator()(short __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1927
+ };
1928
+
1929
+ template <>
1930
+ struct _LIBCPP_TYPE_VIS hash<unsigned short>
1931
+ : public unary_function<unsigned short, size_t>
1932
+ {
1933
+ _LIBCPP_INLINE_VISIBILITY
1934
+ size_t operator()(unsigned short __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1935
+ };
1936
+
1937
+ template <>
1938
+ struct _LIBCPP_TYPE_VIS hash<int>
1939
+ : public unary_function<int, size_t>
1940
+ {
1941
+ _LIBCPP_INLINE_VISIBILITY
1942
+ size_t operator()(int __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1943
+ };
1944
+
1945
+ template <>
1946
+ struct _LIBCPP_TYPE_VIS hash<unsigned int>
1947
+ : public unary_function<unsigned int, size_t>
1948
+ {
1949
+ _LIBCPP_INLINE_VISIBILITY
1950
+ size_t operator()(unsigned int __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1951
+ };
1952
+
1953
+ template <>
1954
+ struct _LIBCPP_TYPE_VIS hash<long>
1955
+ : public unary_function<long, size_t>
1956
+ {
1957
+ _LIBCPP_INLINE_VISIBILITY
1958
+ size_t operator()(long __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1959
+ };
1960
+
1961
+ template <>
1962
+ struct _LIBCPP_TYPE_VIS hash<unsigned long>
1963
+ : public unary_function<unsigned long, size_t>
1964
+ {
1965
+ _LIBCPP_INLINE_VISIBILITY
1966
+ size_t operator()(unsigned long __v) const _NOEXCEPT {return static_cast<size_t>(__v);}
1967
+ };
1968
+
1969
+ template <>
1970
+ struct _LIBCPP_TYPE_VIS hash<long long>
1971
+ : public __scalar_hash<long long>
1972
+ {
1973
+ };
1974
+
1975
+ template <>
1976
+ struct _LIBCPP_TYPE_VIS hash<unsigned long long>
1977
+ : public __scalar_hash<unsigned long long>
1978
+ {
1979
+ };
1980
+
1981
+ template <>
1982
+ struct _LIBCPP_TYPE_VIS hash<float>
1983
+ : public __scalar_hash<float>
1984
+ {
1985
+ _LIBCPP_INLINE_VISIBILITY
1986
+ size_t operator()(float __v) const _NOEXCEPT
1987
+ {
1988
+ // -0.0 and 0.0 should return same hash
1989
+ if (__v == 0)
1990
+ return 0;
1991
+ return __scalar_hash<float>::operator()(__v);
1992
+ }
1993
+ };
1994
+
1995
+ template <>
1996
+ struct _LIBCPP_TYPE_VIS hash<double>
1997
+ : public __scalar_hash<double>
1998
+ {
1999
+ _LIBCPP_INLINE_VISIBILITY
2000
+ size_t operator()(double __v) const _NOEXCEPT
2001
+ {
2002
+ // -0.0 and 0.0 should return same hash
2003
+ if (__v == 0)
2004
+ return 0;
2005
+ return __scalar_hash<double>::operator()(__v);
2006
+ }
2007
+ };
2008
+
2009
+ template <>
2010
+ struct _LIBCPP_TYPE_VIS hash<long double>
2011
+ : public __scalar_hash<long double>
2012
+ {
2013
+ _LIBCPP_INLINE_VISIBILITY
2014
+ size_t operator()(long double __v) const _NOEXCEPT
2015
+ {
2016
+ // -0.0 and 0.0 should return same hash
2017
+ if (__v == 0)
2018
+ return 0;
2019
+ #if defined(__i386__)
2020
+ // Zero out padding bits
2021
+ union
2022
+ {
2023
+ long double __t;
2024
+ struct
2025
+ {
2026
+ size_t __a;
2027
+ size_t __b;
2028
+ size_t __c;
2029
+ size_t __d;
2030
+ };
2031
+ } __u;
2032
+ __u.__a = 0;
2033
+ __u.__b = 0;
2034
+ __u.__c = 0;
2035
+ __u.__d = 0;
2036
+ __u.__t = __v;
2037
+ return __u.__a ^ __u.__b ^ __u.__c ^ __u.__d;
2038
+ #elif defined(__x86_64__)
2039
+ // Zero out padding bits
2040
+ union
2041
+ {
2042
+ long double __t;
2043
+ struct
2044
+ {
2045
+ size_t __a;
2046
+ size_t __b;
2047
+ };
2048
+ } __u;
2049
+ __u.__a = 0;
2050
+ __u.__b = 0;
2051
+ __u.__t = __v;
2052
+ return __u.__a ^ __u.__b;
2053
+ #else
2054
+ return __scalar_hash<long double>::operator()(__v);
2055
+ #endif
2056
+ }
2057
+ };
2058
+
2059
+ // struct hash<T*> in <memory>
2060
+
2061
+ _LIBCPP_END_NAMESPACE_STD
2062
+
2063
+ #endif // _LIBCPP_FUNCTIONAL