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,1864 @@
1
+ // -*- C++ -*-
2
+ //===-------------------------- unordered_map -----------------------------===//
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_UNORDERED_MAP
12
+ #define _LIBCPP_UNORDERED_MAP
13
+
14
+ /*
15
+
16
+ unordered_map synopsis
17
+
18
+ #include <initializer_list>
19
+
20
+ namespace std
21
+ {
22
+
23
+ template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
24
+ class Alloc = allocator<pair<const Key, T>>>
25
+ class unordered_map
26
+ {
27
+ public:
28
+ // types
29
+ typedef Key key_type;
30
+ typedef T mapped_type;
31
+ typedef Hash hasher;
32
+ typedef Pred key_equal;
33
+ typedef Alloc allocator_type;
34
+ typedef pair<const key_type, mapped_type> value_type;
35
+ typedef value_type& reference;
36
+ typedef const value_type& const_reference;
37
+ typedef typename allocator_traits<allocator_type>::pointer pointer;
38
+ typedef typename allocator_traits<allocator_type>::const_pointer const_pointer;
39
+ typedef typename allocator_traits<allocator_type>::size_type size_type;
40
+ typedef typename allocator_traits<allocator_type>::difference_type difference_type;
41
+
42
+ typedef /unspecified/ iterator;
43
+ typedef /unspecified/ const_iterator;
44
+ typedef /unspecified/ local_iterator;
45
+ typedef /unspecified/ const_local_iterator;
46
+
47
+ unordered_map()
48
+ noexcept(
49
+ is_nothrow_default_constructible<hasher>::value &&
50
+ is_nothrow_default_constructible<key_equal>::value &&
51
+ is_nothrow_default_constructible<allocator_type>::value);
52
+ explicit unordered_map(size_type n, const hasher& hf = hasher(),
53
+ const key_equal& eql = key_equal(),
54
+ const allocator_type& a = allocator_type());
55
+ template <class InputIterator>
56
+ unordered_map(InputIterator f, InputIterator l,
57
+ size_type n = 0, const hasher& hf = hasher(),
58
+ const key_equal& eql = key_equal(),
59
+ const allocator_type& a = allocator_type());
60
+ explicit unordered_map(const allocator_type&);
61
+ unordered_map(const unordered_map&);
62
+ unordered_map(const unordered_map&, const Allocator&);
63
+ unordered_map(unordered_map&&)
64
+ noexcept(
65
+ is_nothrow_move_constructible<hasher>::value &&
66
+ is_nothrow_move_constructible<key_equal>::value &&
67
+ is_nothrow_move_constructible<allocator_type>::value);
68
+ unordered_map(unordered_map&&, const Allocator&);
69
+ unordered_map(initializer_list<value_type>, size_type n = 0,
70
+ const hasher& hf = hasher(), const key_equal& eql = key_equal(),
71
+ const allocator_type& a = allocator_type());
72
+ ~unordered_map();
73
+ unordered_map& operator=(const unordered_map&);
74
+ unordered_map& operator=(unordered_map&&)
75
+ noexcept(
76
+ allocator_type::propagate_on_container_move_assignment::value &&
77
+ is_nothrow_move_assignable<allocator_type>::value &&
78
+ is_nothrow_move_assignable<hasher>::value &&
79
+ is_nothrow_move_assignable<key_equal>::value);
80
+ unordered_map& operator=(initializer_list<value_type>);
81
+
82
+ allocator_type get_allocator() const noexcept;
83
+
84
+ bool empty() const noexcept;
85
+ size_type size() const noexcept;
86
+ size_type max_size() const noexcept;
87
+
88
+ iterator begin() noexcept;
89
+ iterator end() noexcept;
90
+ const_iterator begin() const noexcept;
91
+ const_iterator end() const noexcept;
92
+ const_iterator cbegin() const noexcept;
93
+ const_iterator cend() const noexcept;
94
+
95
+ template <class... Args>
96
+ pair<iterator, bool> emplace(Args&&... args);
97
+ template <class... Args>
98
+ iterator emplace_hint(const_iterator position, Args&&... args);
99
+ pair<iterator, bool> insert(const value_type& obj);
100
+ template <class P>
101
+ pair<iterator, bool> insert(P&& obj);
102
+ iterator insert(const_iterator hint, const value_type& obj);
103
+ template <class P>
104
+ iterator insert(const_iterator hint, P&& obj);
105
+ template <class InputIterator>
106
+ void insert(InputIterator first, InputIterator last);
107
+ void insert(initializer_list<value_type>);
108
+
109
+ iterator erase(const_iterator position);
110
+ size_type erase(const key_type& k);
111
+ iterator erase(const_iterator first, const_iterator last);
112
+ void clear() noexcept;
113
+
114
+ void swap(unordered_map&)
115
+ noexcept(
116
+ (!allocator_type::propagate_on_container_swap::value ||
117
+ __is_nothrow_swappable<allocator_type>::value) &&
118
+ __is_nothrow_swappable<hasher>::value &&
119
+ __is_nothrow_swappable<key_equal>::value);
120
+
121
+ hasher hash_function() const;
122
+ key_equal key_eq() const;
123
+
124
+ iterator find(const key_type& k);
125
+ const_iterator find(const key_type& k) const;
126
+ size_type count(const key_type& k) const;
127
+ pair<iterator, iterator> equal_range(const key_type& k);
128
+ pair<const_iterator, const_iterator> equal_range(const key_type& k) const;
129
+
130
+ mapped_type& operator[](const key_type& k);
131
+ mapped_type& operator[](key_type&& k);
132
+
133
+ mapped_type& at(const key_type& k);
134
+ const mapped_type& at(const key_type& k) const;
135
+
136
+ size_type bucket_count() const noexcept;
137
+ size_type max_bucket_count() const noexcept;
138
+
139
+ size_type bucket_size(size_type n) const;
140
+ size_type bucket(const key_type& k) const;
141
+
142
+ local_iterator begin(size_type n);
143
+ local_iterator end(size_type n);
144
+ const_local_iterator begin(size_type n) const;
145
+ const_local_iterator end(size_type n) const;
146
+ const_local_iterator cbegin(size_type n) const;
147
+ const_local_iterator cend(size_type n) const;
148
+
149
+ float load_factor() const noexcept;
150
+ float max_load_factor() const noexcept;
151
+ void max_load_factor(float z);
152
+ void rehash(size_type n);
153
+ void reserve(size_type n);
154
+ };
155
+
156
+ template <class Key, class T, class Hash, class Pred, class Alloc>
157
+ void swap(unordered_map<Key, T, Hash, Pred, Alloc>& x,
158
+ unordered_map<Key, T, Hash, Pred, Alloc>& y)
159
+ noexcept(noexcept(x.swap(y)));
160
+
161
+ template <class Key, class T, class Hash, class Pred, class Alloc>
162
+ bool
163
+ operator==(const unordered_map<Key, T, Hash, Pred, Alloc>& x,
164
+ const unordered_map<Key, T, Hash, Pred, Alloc>& y);
165
+
166
+ template <class Key, class T, class Hash, class Pred, class Alloc>
167
+ bool
168
+ operator!=(const unordered_map<Key, T, Hash, Pred, Alloc>& x,
169
+ const unordered_map<Key, T, Hash, Pred, Alloc>& y);
170
+
171
+ template <class Key, class T, class Hash = hash<Key>, class Pred = equal_to<Key>,
172
+ class Alloc = allocator<pair<const Key, T>>>
173
+ class unordered_multimap
174
+ {
175
+ public:
176
+ // types
177
+ typedef Key key_type;
178
+ typedef T mapped_type;
179
+ typedef Hash hasher;
180
+ typedef Pred key_equal;
181
+ typedef Alloc allocator_type;
182
+ typedef pair<const key_type, mapped_type> value_type;
183
+ typedef value_type& reference;
184
+ typedef const value_type& const_reference;
185
+ typedef typename allocator_traits<allocator_type>::pointer pointer;
186
+ typedef typename allocator_traits<allocator_type>::const_pointer const_pointer;
187
+ typedef typename allocator_traits<allocator_type>::size_type size_type;
188
+ typedef typename allocator_traits<allocator_type>::difference_type difference_type;
189
+
190
+ typedef /unspecified/ iterator;
191
+ typedef /unspecified/ const_iterator;
192
+ typedef /unspecified/ local_iterator;
193
+ typedef /unspecified/ const_local_iterator;
194
+
195
+ unordered_multimap()
196
+ noexcept(
197
+ is_nothrow_default_constructible<hasher>::value &&
198
+ is_nothrow_default_constructible<key_equal>::value &&
199
+ is_nothrow_default_constructible<allocator_type>::value);
200
+ explicit unordered_multimap(size_type n, const hasher& hf = hasher(),
201
+ const key_equal& eql = key_equal(),
202
+ const allocator_type& a = allocator_type());
203
+ template <class InputIterator>
204
+ unordered_multimap(InputIterator f, InputIterator l,
205
+ size_type n = 0, const hasher& hf = hasher(),
206
+ const key_equal& eql = key_equal(),
207
+ const allocator_type& a = allocator_type());
208
+ explicit unordered_multimap(const allocator_type&);
209
+ unordered_multimap(const unordered_multimap&);
210
+ unordered_multimap(const unordered_multimap&, const Allocator&);
211
+ unordered_multimap(unordered_multimap&&)
212
+ noexcept(
213
+ is_nothrow_move_constructible<hasher>::value &&
214
+ is_nothrow_move_constructible<key_equal>::value &&
215
+ is_nothrow_move_constructible<allocator_type>::value);
216
+ unordered_multimap(unordered_multimap&&, const Allocator&);
217
+ unordered_multimap(initializer_list<value_type>, size_type n = 0,
218
+ const hasher& hf = hasher(), const key_equal& eql = key_equal(),
219
+ const allocator_type& a = allocator_type());
220
+ ~unordered_multimap();
221
+ unordered_multimap& operator=(const unordered_multimap&);
222
+ unordered_multimap& operator=(unordered_multimap&&)
223
+ noexcept(
224
+ allocator_type::propagate_on_container_move_assignment::value &&
225
+ is_nothrow_move_assignable<allocator_type>::value &&
226
+ is_nothrow_move_assignable<hasher>::value &&
227
+ is_nothrow_move_assignable<key_equal>::value);
228
+ unordered_multimap& operator=(initializer_list<value_type>);
229
+
230
+ allocator_type get_allocator() const noexcept;
231
+
232
+ bool empty() const noexcept;
233
+ size_type size() const noexcept;
234
+ size_type max_size() const noexcept;
235
+
236
+ iterator begin() noexcept;
237
+ iterator end() noexcept;
238
+ const_iterator begin() const noexcept;
239
+ const_iterator end() const noexcept;
240
+ const_iterator cbegin() const noexcept;
241
+ const_iterator cend() const noexcept;
242
+
243
+ template <class... Args>
244
+ iterator emplace(Args&&... args);
245
+ template <class... Args>
246
+ iterator emplace_hint(const_iterator position, Args&&... args);
247
+ iterator insert(const value_type& obj);
248
+ template <class P>
249
+ iterator insert(P&& obj);
250
+ iterator insert(const_iterator hint, const value_type& obj);
251
+ template <class P>
252
+ iterator insert(const_iterator hint, P&& obj);
253
+ template <class InputIterator>
254
+ void insert(InputIterator first, InputIterator last);
255
+ void insert(initializer_list<value_type>);
256
+
257
+ iterator erase(const_iterator position);
258
+ size_type erase(const key_type& k);
259
+ iterator erase(const_iterator first, const_iterator last);
260
+ void clear() noexcept;
261
+
262
+ void swap(unordered_multimap&)
263
+ noexcept(
264
+ (!allocator_type::propagate_on_container_swap::value ||
265
+ __is_nothrow_swappable<allocator_type>::value) &&
266
+ __is_nothrow_swappable<hasher>::value &&
267
+ __is_nothrow_swappable<key_equal>::value);
268
+
269
+ hasher hash_function() const;
270
+ key_equal key_eq() const;
271
+
272
+ iterator find(const key_type& k);
273
+ const_iterator find(const key_type& k) const;
274
+ size_type count(const key_type& k) const;
275
+ pair<iterator, iterator> equal_range(const key_type& k);
276
+ pair<const_iterator, const_iterator> equal_range(const key_type& k) const;
277
+
278
+ size_type bucket_count() const noexcept;
279
+ size_type max_bucket_count() const noexcept;
280
+
281
+ size_type bucket_size(size_type n) const;
282
+ size_type bucket(const key_type& k) const;
283
+
284
+ local_iterator begin(size_type n);
285
+ local_iterator end(size_type n);
286
+ const_local_iterator begin(size_type n) const;
287
+ const_local_iterator end(size_type n) const;
288
+ const_local_iterator cbegin(size_type n) const;
289
+ const_local_iterator cend(size_type n) const;
290
+
291
+ float load_factor() const noexcept;
292
+ float max_load_factor() const noexcept;
293
+ void max_load_factor(float z);
294
+ void rehash(size_type n);
295
+ void reserve(size_type n);
296
+ };
297
+
298
+ template <class Key, class T, class Hash, class Pred, class Alloc>
299
+ void swap(unordered_multimap<Key, T, Hash, Pred, Alloc>& x,
300
+ unordered_multimap<Key, T, Hash, Pred, Alloc>& y)
301
+ noexcept(noexcept(x.swap(y)));
302
+
303
+ template <class Key, class T, class Hash, class Pred, class Alloc>
304
+ bool
305
+ operator==(const unordered_multimap<Key, T, Hash, Pred, Alloc>& x,
306
+ const unordered_multimap<Key, T, Hash, Pred, Alloc>& y);
307
+
308
+ template <class Key, class T, class Hash, class Pred, class Alloc>
309
+ bool
310
+ operator!=(const unordered_multimap<Key, T, Hash, Pred, Alloc>& x,
311
+ const unordered_multimap<Key, T, Hash, Pred, Alloc>& y);
312
+
313
+ } // std
314
+
315
+ */
316
+
317
+ #include <__config>
318
+ #include <__hash_table>
319
+ #include <functional>
320
+ #include <stdexcept>
321
+
322
+ #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
323
+ #pragma GCC system_header
324
+ #endif
325
+
326
+ _LIBCPP_BEGIN_NAMESPACE_STD
327
+
328
+ template <class _Key, class _Tp, class _Hash, bool = is_empty<_Hash>::value
329
+ #if __has_feature(is_final)
330
+ && !__is_final(_Hash)
331
+ #endif
332
+ >
333
+ class __unordered_map_hasher
334
+ : private _Hash
335
+ {
336
+ typedef pair<typename remove_const<_Key>::type, _Tp> _Pp;
337
+ typedef pair<const _Key, _Tp> _Cp;
338
+ public:
339
+ _LIBCPP_INLINE_VISIBILITY
340
+ __unordered_map_hasher()
341
+ _NOEXCEPT_(is_nothrow_default_constructible<_Hash>::value)
342
+ : _Hash() {}
343
+ _LIBCPP_INLINE_VISIBILITY
344
+ __unordered_map_hasher(const _Hash& __h)
345
+ _NOEXCEPT_(is_nothrow_copy_constructible<_Hash>::value)
346
+ : _Hash(__h) {}
347
+ _LIBCPP_INLINE_VISIBILITY
348
+ const _Hash& hash_function() const _NOEXCEPT {return *this;}
349
+ _LIBCPP_INLINE_VISIBILITY
350
+ size_t operator()(const _Pp& __x) const
351
+ {return static_cast<const _Hash&>(*this)(__x.first);}
352
+ _LIBCPP_INLINE_VISIBILITY
353
+ size_t operator()(const _Cp& __x) const
354
+ {return static_cast<const _Hash&>(*this)(__x.first);}
355
+ _LIBCPP_INLINE_VISIBILITY
356
+ size_t operator()(const _Key& __x) const
357
+ {return static_cast<const _Hash&>(*this)(__x);}
358
+ };
359
+
360
+ template <class _Key, class _Tp, class _Hash>
361
+ class __unordered_map_hasher<_Key, _Tp, _Hash, false>
362
+ {
363
+ _Hash __hash_;
364
+
365
+ typedef pair<typename remove_const<_Key>::type, _Tp> _Pp;
366
+ typedef pair<const _Key, _Tp> _Cp;
367
+ public:
368
+ _LIBCPP_INLINE_VISIBILITY
369
+ __unordered_map_hasher()
370
+ _NOEXCEPT_(is_nothrow_default_constructible<_Hash>::value)
371
+ : __hash_() {}
372
+ _LIBCPP_INLINE_VISIBILITY
373
+ __unordered_map_hasher(const _Hash& __h)
374
+ _NOEXCEPT_(is_nothrow_copy_constructible<_Hash>::value)
375
+ : __hash_(__h) {}
376
+ _LIBCPP_INLINE_VISIBILITY
377
+ const _Hash& hash_function() const _NOEXCEPT {return __hash_;}
378
+ _LIBCPP_INLINE_VISIBILITY
379
+ size_t operator()(const _Pp& __x) const
380
+ {return __hash_(__x.first);}
381
+ _LIBCPP_INLINE_VISIBILITY
382
+ size_t operator()(const _Cp& __x) const
383
+ {return __hash_(__x.first);}
384
+ _LIBCPP_INLINE_VISIBILITY
385
+ size_t operator()(const _Key& __x) const
386
+ {return __hash_(__x);}
387
+ };
388
+
389
+ template <class _Key, class _Tp, class _Pred, bool = is_empty<_Pred>::value
390
+ #if __has_feature(is_final)
391
+ && !__is_final(_Pred)
392
+ #endif
393
+ >
394
+ class __unordered_map_equal
395
+ : private _Pred
396
+ {
397
+ typedef pair<typename remove_const<_Key>::type, _Tp> _Pp;
398
+ typedef pair<const _Key, _Tp> _Cp;
399
+ public:
400
+ _LIBCPP_INLINE_VISIBILITY
401
+ __unordered_map_equal()
402
+ _NOEXCEPT_(is_nothrow_default_constructible<_Pred>::value)
403
+ : _Pred() {}
404
+ _LIBCPP_INLINE_VISIBILITY
405
+ __unordered_map_equal(const _Pred& __p)
406
+ _NOEXCEPT_(is_nothrow_copy_constructible<_Pred>::value)
407
+ : _Pred(__p) {}
408
+ _LIBCPP_INLINE_VISIBILITY
409
+ const _Pred& key_eq() const _NOEXCEPT {return *this;}
410
+ _LIBCPP_INLINE_VISIBILITY
411
+ bool operator()(const _Pp& __x, const _Pp& __y) const
412
+ {return static_cast<const _Pred&>(*this)(__x.first, __y.first);}
413
+ _LIBCPP_INLINE_VISIBILITY
414
+ bool operator()(const _Pp& __x, const _Cp& __y) const
415
+ {return static_cast<const _Pred&>(*this)(__x.first, __y.first);}
416
+ _LIBCPP_INLINE_VISIBILITY
417
+ bool operator()(const _Pp& __x, const _Key& __y) const
418
+ {return static_cast<const _Pred&>(*this)(__x.first, __y);}
419
+ _LIBCPP_INLINE_VISIBILITY
420
+ bool operator()(const _Cp& __x, const _Pp& __y) const
421
+ {return static_cast<const _Pred&>(*this)(__x.first, __y.first);}
422
+ _LIBCPP_INLINE_VISIBILITY
423
+ bool operator()(const _Cp& __x, const _Cp& __y) const
424
+ {return static_cast<const _Pred&>(*this)(__x.first, __y.first);}
425
+ _LIBCPP_INLINE_VISIBILITY
426
+ bool operator()(const _Cp& __x, const _Key& __y) const
427
+ {return static_cast<const _Pred&>(*this)(__x.first, __y);}
428
+ _LIBCPP_INLINE_VISIBILITY
429
+ bool operator()(const _Key& __x, const _Pp& __y) const
430
+ {return static_cast<const _Pred&>(*this)(__x, __y.first);}
431
+ _LIBCPP_INLINE_VISIBILITY
432
+ bool operator()(const _Key& __x, const _Cp& __y) const
433
+ {return static_cast<const _Pred&>(*this)(__x, __y.first);}
434
+ _LIBCPP_INLINE_VISIBILITY
435
+ bool operator()(const _Key& __x, const _Key& __y) const
436
+ {return static_cast<const _Pred&>(*this)(__x, __y);}
437
+ };
438
+
439
+ template <class _Key, class _Tp, class _Pred>
440
+ class __unordered_map_equal<_Key, _Tp, _Pred, false>
441
+ {
442
+ _Pred __pred_;
443
+
444
+ typedef pair<typename remove_const<_Key>::type, _Tp> _Pp;
445
+ typedef pair<const _Key, _Tp> _Cp;
446
+ public:
447
+ _LIBCPP_INLINE_VISIBILITY
448
+ __unordered_map_equal()
449
+ _NOEXCEPT_(is_nothrow_default_constructible<_Pred>::value)
450
+ : __pred_() {}
451
+ _LIBCPP_INLINE_VISIBILITY
452
+ __unordered_map_equal(const _Pred& __p)
453
+ _NOEXCEPT_(is_nothrow_copy_constructible<_Pred>::value)
454
+ : __pred_(__p) {}
455
+ _LIBCPP_INLINE_VISIBILITY
456
+ const _Pred& key_eq() const _NOEXCEPT {return __pred_;}
457
+ _LIBCPP_INLINE_VISIBILITY
458
+ bool operator()(const _Pp& __x, const _Pp& __y) const
459
+ {return __pred_(__x.first, __y.first);}
460
+ _LIBCPP_INLINE_VISIBILITY
461
+ bool operator()(const _Pp& __x, const _Cp& __y) const
462
+ {return __pred_(__x.first, __y.first);}
463
+ _LIBCPP_INLINE_VISIBILITY
464
+ bool operator()(const _Pp& __x, const _Key& __y) const
465
+ {return __pred_(__x.first, __y);}
466
+ _LIBCPP_INLINE_VISIBILITY
467
+ bool operator()(const _Cp& __x, const _Pp& __y) const
468
+ {return __pred_(__x.first, __y.first);}
469
+ _LIBCPP_INLINE_VISIBILITY
470
+ bool operator()(const _Cp& __x, const _Cp& __y) const
471
+ {return __pred_(__x.first, __y.first);}
472
+ _LIBCPP_INLINE_VISIBILITY
473
+ bool operator()(const _Cp& __x, const _Key& __y) const
474
+ {return __pred_(__x.first, __y);}
475
+ _LIBCPP_INLINE_VISIBILITY
476
+ bool operator()(const _Key& __x, const _Pp& __y) const
477
+ {return __pred_(__x, __y.first);}
478
+ _LIBCPP_INLINE_VISIBILITY
479
+ bool operator()(const _Key& __x, const _Cp& __y) const
480
+ {return __pred_(__x, __y.first);}
481
+ _LIBCPP_INLINE_VISIBILITY
482
+ bool operator()(const _Key& __x, const _Key& __y) const
483
+ {return __pred_(__x, __y);}
484
+ };
485
+
486
+ template <class _Alloc>
487
+ class __hash_map_node_destructor
488
+ {
489
+ typedef _Alloc allocator_type;
490
+ typedef allocator_traits<allocator_type> __alloc_traits;
491
+ typedef typename __alloc_traits::value_type::value_type value_type;
492
+ public:
493
+ typedef typename __alloc_traits::pointer pointer;
494
+ private:
495
+ typedef typename value_type::first_type first_type;
496
+ typedef typename value_type::second_type second_type;
497
+
498
+ allocator_type& __na_;
499
+
500
+ __hash_map_node_destructor& operator=(const __hash_map_node_destructor&);
501
+
502
+ public:
503
+ bool __first_constructed;
504
+ bool __second_constructed;
505
+
506
+ _LIBCPP_INLINE_VISIBILITY
507
+ explicit __hash_map_node_destructor(allocator_type& __na) _NOEXCEPT
508
+ : __na_(__na),
509
+ __first_constructed(false),
510
+ __second_constructed(false)
511
+ {}
512
+
513
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
514
+ _LIBCPP_INLINE_VISIBILITY
515
+ __hash_map_node_destructor(__hash_node_destructor<allocator_type>&& __x)
516
+ _NOEXCEPT
517
+ : __na_(__x.__na_),
518
+ __first_constructed(__x.__value_constructed),
519
+ __second_constructed(__x.__value_constructed)
520
+ {
521
+ __x.__value_constructed = false;
522
+ }
523
+ #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
524
+ _LIBCPP_INLINE_VISIBILITY
525
+ __hash_map_node_destructor(const __hash_node_destructor<allocator_type>& __x)
526
+ : __na_(__x.__na_),
527
+ __first_constructed(__x.__value_constructed),
528
+ __second_constructed(__x.__value_constructed)
529
+ {
530
+ const_cast<bool&>(__x.__value_constructed) = false;
531
+ }
532
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
533
+
534
+ _LIBCPP_INLINE_VISIBILITY
535
+ void operator()(pointer __p) _NOEXCEPT
536
+ {
537
+ if (__second_constructed)
538
+ __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_.second));
539
+ if (__first_constructed)
540
+ __alloc_traits::destroy(__na_, _VSTD::addressof(__p->__value_.first));
541
+ if (__p)
542
+ __alloc_traits::deallocate(__na_, __p, 1);
543
+ }
544
+ };
545
+
546
+ template <class _HashIterator>
547
+ class _LIBCPP_TYPE_VIS __hash_map_iterator
548
+ {
549
+ _HashIterator __i_;
550
+
551
+ typedef pointer_traits<typename _HashIterator::pointer> __pointer_traits;
552
+ typedef const typename _HashIterator::value_type::first_type key_type;
553
+ typedef typename _HashIterator::value_type::second_type mapped_type;
554
+ public:
555
+ typedef forward_iterator_tag iterator_category;
556
+ typedef pair<key_type, mapped_type> value_type;
557
+ typedef typename _HashIterator::difference_type difference_type;
558
+ typedef value_type& reference;
559
+ typedef typename __pointer_traits::template
560
+ #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
561
+ rebind<value_type>
562
+ #else
563
+ rebind<value_type>::other
564
+ #endif
565
+ pointer;
566
+
567
+ _LIBCPP_INLINE_VISIBILITY
568
+ __hash_map_iterator() _NOEXCEPT {}
569
+
570
+ _LIBCPP_INLINE_VISIBILITY
571
+ __hash_map_iterator(_HashIterator __i) _NOEXCEPT : __i_(__i) {}
572
+
573
+ _LIBCPP_INLINE_VISIBILITY
574
+ reference operator*() const {return *operator->();}
575
+ _LIBCPP_INLINE_VISIBILITY
576
+ pointer operator->() const {return (pointer)__i_.operator->();}
577
+
578
+ _LIBCPP_INLINE_VISIBILITY
579
+ __hash_map_iterator& operator++() {++__i_; return *this;}
580
+ _LIBCPP_INLINE_VISIBILITY
581
+ __hash_map_iterator operator++(int)
582
+ {
583
+ __hash_map_iterator __t(*this);
584
+ ++(*this);
585
+ return __t;
586
+ }
587
+
588
+ friend _LIBCPP_INLINE_VISIBILITY
589
+ bool operator==(const __hash_map_iterator& __x, const __hash_map_iterator& __y)
590
+ {return __x.__i_ == __y.__i_;}
591
+ friend _LIBCPP_INLINE_VISIBILITY
592
+ bool operator!=(const __hash_map_iterator& __x, const __hash_map_iterator& __y)
593
+ {return __x.__i_ != __y.__i_;}
594
+
595
+ template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS unordered_map;
596
+ template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS unordered_multimap;
597
+ template <class> friend class _LIBCPP_TYPE_VIS __hash_const_iterator;
598
+ template <class> friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator;
599
+ template <class> friend class _LIBCPP_TYPE_VIS __hash_map_const_iterator;
600
+ };
601
+
602
+ template <class _HashIterator>
603
+ class _LIBCPP_TYPE_VIS __hash_map_const_iterator
604
+ {
605
+ _HashIterator __i_;
606
+
607
+ typedef pointer_traits<typename _HashIterator::pointer> __pointer_traits;
608
+ typedef const typename _HashIterator::value_type::first_type key_type;
609
+ typedef typename _HashIterator::value_type::second_type mapped_type;
610
+ public:
611
+ typedef forward_iterator_tag iterator_category;
612
+ typedef pair<key_type, mapped_type> value_type;
613
+ typedef typename _HashIterator::difference_type difference_type;
614
+ typedef const value_type& reference;
615
+ typedef typename __pointer_traits::template
616
+ #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
617
+ rebind<const value_type>
618
+ #else
619
+ rebind<const value_type>::other
620
+ #endif
621
+ pointer;
622
+
623
+ _LIBCPP_INLINE_VISIBILITY
624
+ __hash_map_const_iterator() _NOEXCEPT {}
625
+
626
+ _LIBCPP_INLINE_VISIBILITY
627
+ __hash_map_const_iterator(_HashIterator __i) _NOEXCEPT : __i_(__i) {}
628
+ _LIBCPP_INLINE_VISIBILITY
629
+ __hash_map_const_iterator(
630
+ __hash_map_iterator<typename _HashIterator::__non_const_iterator> __i)
631
+ _NOEXCEPT
632
+ : __i_(__i.__i_) {}
633
+
634
+ _LIBCPP_INLINE_VISIBILITY
635
+ reference operator*() const {return *operator->();}
636
+ _LIBCPP_INLINE_VISIBILITY
637
+ pointer operator->() const {return (pointer)__i_.operator->();}
638
+
639
+ _LIBCPP_INLINE_VISIBILITY
640
+ __hash_map_const_iterator& operator++() {++__i_; return *this;}
641
+ _LIBCPP_INLINE_VISIBILITY
642
+ __hash_map_const_iterator operator++(int)
643
+ {
644
+ __hash_map_const_iterator __t(*this);
645
+ ++(*this);
646
+ return __t;
647
+ }
648
+
649
+ friend _LIBCPP_INLINE_VISIBILITY
650
+ bool operator==(const __hash_map_const_iterator& __x, const __hash_map_const_iterator& __y)
651
+ {return __x.__i_ == __y.__i_;}
652
+ friend _LIBCPP_INLINE_VISIBILITY
653
+ bool operator!=(const __hash_map_const_iterator& __x, const __hash_map_const_iterator& __y)
654
+ {return __x.__i_ != __y.__i_;}
655
+
656
+ template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS unordered_map;
657
+ template <class, class, class, class, class> friend class _LIBCPP_TYPE_VIS unordered_multimap;
658
+ template <class> friend class _LIBCPP_TYPE_VIS __hash_const_iterator;
659
+ template <class> friend class _LIBCPP_TYPE_VIS __hash_const_local_iterator;
660
+ };
661
+
662
+ template <class _Key, class _Tp, class _Hash = hash<_Key>, class _Pred = equal_to<_Key>,
663
+ class _Alloc = allocator<pair<const _Key, _Tp> > >
664
+ class _LIBCPP_TYPE_VIS unordered_map
665
+ {
666
+ public:
667
+ // types
668
+ typedef _Key key_type;
669
+ typedef _Tp mapped_type;
670
+ typedef _Hash hasher;
671
+ typedef _Pred key_equal;
672
+ typedef _Alloc allocator_type;
673
+ typedef pair<const key_type, mapped_type> value_type;
674
+ typedef value_type& reference;
675
+ typedef const value_type& const_reference;
676
+
677
+ private:
678
+ typedef pair<key_type, mapped_type> __value_type;
679
+ typedef __unordered_map_hasher<key_type, mapped_type, hasher> __hasher;
680
+ typedef __unordered_map_equal<key_type, mapped_type, key_equal> __key_equal;
681
+ typedef typename allocator_traits<allocator_type>::template
682
+ #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
683
+ rebind_alloc<__value_type>
684
+ #else
685
+ rebind_alloc<__value_type>::other
686
+ #endif
687
+ __allocator_type;
688
+
689
+ typedef __hash_table<__value_type, __hasher,
690
+ __key_equal, __allocator_type> __table;
691
+
692
+ __table __table_;
693
+
694
+ typedef typename __table::__node_pointer __node_pointer;
695
+ typedef typename __table::__node_const_pointer __node_const_pointer;
696
+ typedef typename __table::__node_traits __node_traits;
697
+ typedef typename __table::__node_allocator __node_allocator;
698
+ typedef typename __table::__node __node;
699
+ typedef __hash_map_node_destructor<__node_allocator> _Dp;
700
+ typedef unique_ptr<__node, _Dp> __node_holder;
701
+ typedef allocator_traits<allocator_type> __alloc_traits;
702
+ public:
703
+ typedef typename __alloc_traits::pointer pointer;
704
+ typedef typename __alloc_traits::const_pointer const_pointer;
705
+ typedef typename __alloc_traits::size_type size_type;
706
+ typedef typename __alloc_traits::difference_type difference_type;
707
+
708
+ typedef __hash_map_iterator<typename __table::iterator> iterator;
709
+ typedef __hash_map_const_iterator<typename __table::const_iterator> const_iterator;
710
+ typedef __hash_map_iterator<typename __table::local_iterator> local_iterator;
711
+ typedef __hash_map_const_iterator<typename __table::const_local_iterator> const_local_iterator;
712
+
713
+ _LIBCPP_INLINE_VISIBILITY
714
+ unordered_map()
715
+ _NOEXCEPT_(is_nothrow_default_constructible<__table>::value)
716
+ {} // = default;
717
+ explicit unordered_map(size_type __n, const hasher& __hf = hasher(),
718
+ const key_equal& __eql = key_equal());
719
+ unordered_map(size_type __n, const hasher& __hf,
720
+ const key_equal& __eql,
721
+ const allocator_type& __a);
722
+ template <class _InputIterator>
723
+ unordered_map(_InputIterator __first, _InputIterator __last);
724
+ template <class _InputIterator>
725
+ unordered_map(_InputIterator __first, _InputIterator __last,
726
+ size_type __n, const hasher& __hf = hasher(),
727
+ const key_equal& __eql = key_equal());
728
+ template <class _InputIterator>
729
+ unordered_map(_InputIterator __first, _InputIterator __last,
730
+ size_type __n, const hasher& __hf,
731
+ const key_equal& __eql,
732
+ const allocator_type& __a);
733
+ explicit unordered_map(const allocator_type& __a);
734
+ unordered_map(const unordered_map& __u);
735
+ unordered_map(const unordered_map& __u, const allocator_type& __a);
736
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
737
+ unordered_map(unordered_map&& __u)
738
+ _NOEXCEPT_(is_nothrow_move_constructible<__table>::value);
739
+ unordered_map(unordered_map&& __u, const allocator_type& __a);
740
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
741
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
742
+ unordered_map(initializer_list<value_type> __il);
743
+ unordered_map(initializer_list<value_type> __il, size_type __n,
744
+ const hasher& __hf = hasher(), const key_equal& __eql = key_equal());
745
+ unordered_map(initializer_list<value_type> __il, size_type __n,
746
+ const hasher& __hf, const key_equal& __eql,
747
+ const allocator_type& __a);
748
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
749
+ // ~unordered_map() = default;
750
+ _LIBCPP_INLINE_VISIBILITY
751
+ unordered_map& operator=(const unordered_map& __u)
752
+ {
753
+ __table_ = __u.__table_;
754
+ return *this;
755
+ }
756
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
757
+ unordered_map& operator=(unordered_map&& __u)
758
+ _NOEXCEPT_(is_nothrow_move_assignable<__table>::value);
759
+ #endif
760
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
761
+ unordered_map& operator=(initializer_list<value_type> __il);
762
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
763
+
764
+ _LIBCPP_INLINE_VISIBILITY
765
+ allocator_type get_allocator() const _NOEXCEPT
766
+ {return allocator_type(__table_.__node_alloc());}
767
+
768
+ _LIBCPP_INLINE_VISIBILITY
769
+ bool empty() const _NOEXCEPT {return __table_.size() == 0;}
770
+ _LIBCPP_INLINE_VISIBILITY
771
+ size_type size() const _NOEXCEPT {return __table_.size();}
772
+ _LIBCPP_INLINE_VISIBILITY
773
+ size_type max_size() const _NOEXCEPT {return __table_.max_size();}
774
+
775
+ _LIBCPP_INLINE_VISIBILITY
776
+ iterator begin() _NOEXCEPT {return __table_.begin();}
777
+ _LIBCPP_INLINE_VISIBILITY
778
+ iterator end() _NOEXCEPT {return __table_.end();}
779
+ _LIBCPP_INLINE_VISIBILITY
780
+ const_iterator begin() const _NOEXCEPT {return __table_.begin();}
781
+ _LIBCPP_INLINE_VISIBILITY
782
+ const_iterator end() const _NOEXCEPT {return __table_.end();}
783
+ _LIBCPP_INLINE_VISIBILITY
784
+ const_iterator cbegin() const _NOEXCEPT {return __table_.begin();}
785
+ _LIBCPP_INLINE_VISIBILITY
786
+ const_iterator cend() const _NOEXCEPT {return __table_.end();}
787
+
788
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
789
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
790
+
791
+ template <class... _Args>
792
+ pair<iterator, bool> emplace(_Args&&... __args);
793
+
794
+ template <class... _Args>
795
+ _LIBCPP_INLINE_VISIBILITY
796
+ iterator emplace_hint(const_iterator, _Args&&... __args)
797
+ {return emplace(_VSTD::forward<_Args>(__args)...).first;}
798
+ #endif // _LIBCPP_HAS_NO_VARIADICS
799
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
800
+ _LIBCPP_INLINE_VISIBILITY
801
+ pair<iterator, bool> insert(const value_type& __x)
802
+ {return __table_.__insert_unique(__x);}
803
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
804
+ template <class _Pp,
805
+ class = typename enable_if<is_constructible<value_type, _Pp>::value>::type>
806
+ _LIBCPP_INLINE_VISIBILITY
807
+ pair<iterator, bool> insert(_Pp&& __x)
808
+ {return __table_.__insert_unique(_VSTD::forward<_Pp>(__x));}
809
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
810
+ _LIBCPP_INLINE_VISIBILITY
811
+ iterator insert(const_iterator, const value_type& __x)
812
+ {return insert(__x).first;}
813
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
814
+ template <class _Pp,
815
+ class = typename enable_if<is_constructible<value_type, _Pp>::value>::type>
816
+ _LIBCPP_INLINE_VISIBILITY
817
+ iterator insert(const_iterator, _Pp&& __x)
818
+ {return insert(_VSTD::forward<_Pp>(__x)).first;}
819
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
820
+ template <class _InputIterator>
821
+ void insert(_InputIterator __first, _InputIterator __last);
822
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
823
+ _LIBCPP_INLINE_VISIBILITY
824
+ void insert(initializer_list<value_type> __il)
825
+ {insert(__il.begin(), __il.end());}
826
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
827
+
828
+ _LIBCPP_INLINE_VISIBILITY
829
+ iterator erase(const_iterator __p) {return __table_.erase(__p.__i_);}
830
+ _LIBCPP_INLINE_VISIBILITY
831
+ size_type erase(const key_type& __k) {return __table_.__erase_unique(__k);}
832
+ _LIBCPP_INLINE_VISIBILITY
833
+ iterator erase(const_iterator __first, const_iterator __last)
834
+ {return __table_.erase(__first.__i_, __last.__i_);}
835
+ _LIBCPP_INLINE_VISIBILITY
836
+ void clear() _NOEXCEPT {__table_.clear();}
837
+
838
+ _LIBCPP_INLINE_VISIBILITY
839
+ void swap(unordered_map& __u)
840
+ _NOEXCEPT_(__is_nothrow_swappable<__table>::value)
841
+ {__table_.swap(__u.__table_);}
842
+
843
+ _LIBCPP_INLINE_VISIBILITY
844
+ hasher hash_function() const
845
+ {return __table_.hash_function().hash_function();}
846
+ _LIBCPP_INLINE_VISIBILITY
847
+ key_equal key_eq() const
848
+ {return __table_.key_eq().key_eq();}
849
+
850
+ _LIBCPP_INLINE_VISIBILITY
851
+ iterator find(const key_type& __k) {return __table_.find(__k);}
852
+ _LIBCPP_INLINE_VISIBILITY
853
+ const_iterator find(const key_type& __k) const {return __table_.find(__k);}
854
+ _LIBCPP_INLINE_VISIBILITY
855
+ size_type count(const key_type& __k) const {return __table_.__count_unique(__k);}
856
+ _LIBCPP_INLINE_VISIBILITY
857
+ pair<iterator, iterator> equal_range(const key_type& __k)
858
+ {return __table_.__equal_range_unique(__k);}
859
+ _LIBCPP_INLINE_VISIBILITY
860
+ pair<const_iterator, const_iterator> equal_range(const key_type& __k) const
861
+ {return __table_.__equal_range_unique(__k);}
862
+
863
+ mapped_type& operator[](const key_type& __k);
864
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
865
+ mapped_type& operator[](key_type&& __k);
866
+ #endif
867
+
868
+ mapped_type& at(const key_type& __k);
869
+ const mapped_type& at(const key_type& __k) const;
870
+
871
+ _LIBCPP_INLINE_VISIBILITY
872
+ size_type bucket_count() const _NOEXCEPT {return __table_.bucket_count();}
873
+ _LIBCPP_INLINE_VISIBILITY
874
+ size_type max_bucket_count() const _NOEXCEPT {return __table_.max_bucket_count();}
875
+
876
+ _LIBCPP_INLINE_VISIBILITY
877
+ size_type bucket_size(size_type __n) const
878
+ {return __table_.bucket_size(__n);}
879
+ _LIBCPP_INLINE_VISIBILITY
880
+ size_type bucket(const key_type& __k) const {return __table_.bucket(__k);}
881
+
882
+ _LIBCPP_INLINE_VISIBILITY
883
+ local_iterator begin(size_type __n) {return __table_.begin(__n);}
884
+ _LIBCPP_INLINE_VISIBILITY
885
+ local_iterator end(size_type __n) {return __table_.end(__n);}
886
+ _LIBCPP_INLINE_VISIBILITY
887
+ const_local_iterator begin(size_type __n) const {return __table_.cbegin(__n);}
888
+ _LIBCPP_INLINE_VISIBILITY
889
+ const_local_iterator end(size_type __n) const {return __table_.cend(__n);}
890
+ _LIBCPP_INLINE_VISIBILITY
891
+ const_local_iterator cbegin(size_type __n) const {return __table_.cbegin(__n);}
892
+ _LIBCPP_INLINE_VISIBILITY
893
+ const_local_iterator cend(size_type __n) const {return __table_.cend(__n);}
894
+
895
+ _LIBCPP_INLINE_VISIBILITY
896
+ float load_factor() const _NOEXCEPT {return __table_.load_factor();}
897
+ _LIBCPP_INLINE_VISIBILITY
898
+ float max_load_factor() const _NOEXCEPT {return __table_.max_load_factor();}
899
+ _LIBCPP_INLINE_VISIBILITY
900
+ void max_load_factor(float __mlf) {__table_.max_load_factor(__mlf);}
901
+ _LIBCPP_INLINE_VISIBILITY
902
+ void rehash(size_type __n) {__table_.rehash(__n);}
903
+ _LIBCPP_INLINE_VISIBILITY
904
+ void reserve(size_type __n) {__table_.reserve(__n);}
905
+
906
+ private:
907
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
908
+ __node_holder __construct_node();
909
+ template <class _A0>
910
+ typename enable_if
911
+ <
912
+ is_constructible<value_type, _A0>::value,
913
+ __node_holder
914
+ >::type
915
+ __construct_node(_A0&& __a0);
916
+ template <class _A0>
917
+ typename enable_if
918
+ <
919
+ is_constructible<key_type, _A0>::value,
920
+ __node_holder
921
+ >::type
922
+ __construct_node(_A0&& __a0);
923
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
924
+ template <class _A0, class _A1, class ..._Args>
925
+ __node_holder __construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args);
926
+ #endif // _LIBCPP_HAS_NO_VARIADICS
927
+ #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
928
+ __node_holder __construct_node(const key_type& __k);
929
+ #endif
930
+ };
931
+
932
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
933
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
934
+ size_type __n, const hasher& __hf, const key_equal& __eql)
935
+ : __table_(__hf, __eql)
936
+ {
937
+ __table_.rehash(__n);
938
+ }
939
+
940
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
941
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
942
+ size_type __n, const hasher& __hf, const key_equal& __eql,
943
+ const allocator_type& __a)
944
+ : __table_(__hf, __eql, __a)
945
+ {
946
+ __table_.rehash(__n);
947
+ }
948
+
949
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
950
+ inline _LIBCPP_INLINE_VISIBILITY
951
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
952
+ const allocator_type& __a)
953
+ : __table_(__a)
954
+ {
955
+ }
956
+
957
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
958
+ template <class _InputIterator>
959
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
960
+ _InputIterator __first, _InputIterator __last)
961
+ {
962
+ insert(__first, __last);
963
+ }
964
+
965
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
966
+ template <class _InputIterator>
967
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
968
+ _InputIterator __first, _InputIterator __last, size_type __n,
969
+ const hasher& __hf, const key_equal& __eql)
970
+ : __table_(__hf, __eql)
971
+ {
972
+ __table_.rehash(__n);
973
+ insert(__first, __last);
974
+ }
975
+
976
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
977
+ template <class _InputIterator>
978
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
979
+ _InputIterator __first, _InputIterator __last, size_type __n,
980
+ const hasher& __hf, const key_equal& __eql, const allocator_type& __a)
981
+ : __table_(__hf, __eql, __a)
982
+ {
983
+ __table_.rehash(__n);
984
+ insert(__first, __last);
985
+ }
986
+
987
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
988
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
989
+ const unordered_map& __u)
990
+ : __table_(__u.__table_)
991
+ {
992
+ __table_.rehash(__u.bucket_count());
993
+ insert(__u.begin(), __u.end());
994
+ }
995
+
996
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
997
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
998
+ const unordered_map& __u, const allocator_type& __a)
999
+ : __table_(__u.__table_, __a)
1000
+ {
1001
+ __table_.rehash(__u.bucket_count());
1002
+ insert(__u.begin(), __u.end());
1003
+ }
1004
+
1005
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1006
+
1007
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1008
+ inline _LIBCPP_INLINE_VISIBILITY
1009
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
1010
+ unordered_map&& __u)
1011
+ _NOEXCEPT_(is_nothrow_move_constructible<__table>::value)
1012
+ : __table_(_VSTD::move(__u.__table_))
1013
+ {
1014
+ }
1015
+
1016
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1017
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
1018
+ unordered_map&& __u, const allocator_type& __a)
1019
+ : __table_(_VSTD::move(__u.__table_), __a)
1020
+ {
1021
+ if (__a != __u.get_allocator())
1022
+ {
1023
+ iterator __i = __u.begin();
1024
+ while (__u.size() != 0)
1025
+ __table_.__insert_unique(
1026
+ _VSTD::move(__u.__table_.remove((__i++).__i_)->__value_)
1027
+ );
1028
+ }
1029
+ }
1030
+
1031
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1032
+
1033
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1034
+
1035
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1036
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
1037
+ initializer_list<value_type> __il)
1038
+ {
1039
+ insert(__il.begin(), __il.end());
1040
+ }
1041
+
1042
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1043
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
1044
+ initializer_list<value_type> __il, size_type __n, const hasher& __hf,
1045
+ const key_equal& __eql)
1046
+ : __table_(__hf, __eql)
1047
+ {
1048
+ __table_.rehash(__n);
1049
+ insert(__il.begin(), __il.end());
1050
+ }
1051
+
1052
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1053
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map(
1054
+ initializer_list<value_type> __il, size_type __n, const hasher& __hf,
1055
+ const key_equal& __eql, const allocator_type& __a)
1056
+ : __table_(__hf, __eql, __a)
1057
+ {
1058
+ __table_.rehash(__n);
1059
+ insert(__il.begin(), __il.end());
1060
+ }
1061
+
1062
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1063
+
1064
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1065
+
1066
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1067
+ inline _LIBCPP_INLINE_VISIBILITY
1068
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>&
1069
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator=(unordered_map&& __u)
1070
+ _NOEXCEPT_(is_nothrow_move_assignable<__table>::value)
1071
+ {
1072
+ __table_ = _VSTD::move(__u.__table_);
1073
+ return *this;
1074
+ }
1075
+
1076
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1077
+
1078
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1079
+
1080
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1081
+ inline _LIBCPP_INLINE_VISIBILITY
1082
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>&
1083
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator=(
1084
+ initializer_list<value_type> __il)
1085
+ {
1086
+ __table_.__assign_unique(__il.begin(), __il.end());
1087
+ return *this;
1088
+ }
1089
+
1090
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1091
+
1092
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1093
+
1094
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1095
+ typename unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1096
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node()
1097
+ {
1098
+ __node_allocator& __na = __table_.__node_alloc();
1099
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1100
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_));
1101
+ __h.get_deleter().__first_constructed = true;
1102
+ __h.get_deleter().__second_constructed = true;
1103
+ return __h;
1104
+ }
1105
+
1106
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1107
+ template <class _A0>
1108
+ typename enable_if
1109
+ <
1110
+ is_constructible<pair<const _Key, _Tp>, _A0>::value,
1111
+ typename unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1112
+ >::type
1113
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(_A0&& __a0)
1114
+ {
1115
+ __node_allocator& __na = __table_.__node_alloc();
1116
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1117
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_),
1118
+ _VSTD::forward<_A0>(__a0));
1119
+ __h.get_deleter().__first_constructed = true;
1120
+ __h.get_deleter().__second_constructed = true;
1121
+ return __h;
1122
+ }
1123
+
1124
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1125
+ template <class _A0>
1126
+ typename enable_if
1127
+ <
1128
+ is_constructible<_Key, _A0>::value,
1129
+ typename unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1130
+ >::type
1131
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(_A0&& __a0)
1132
+ {
1133
+ __node_allocator& __na = __table_.__node_alloc();
1134
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1135
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_.first),
1136
+ _VSTD::forward<_A0>(__a0));
1137
+ __h.get_deleter().__first_constructed = true;
1138
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_.second));
1139
+ __h.get_deleter().__second_constructed = true;
1140
+ return __h;
1141
+ }
1142
+
1143
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
1144
+
1145
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1146
+ template <class _A0, class _A1, class ..._Args>
1147
+ typename unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1148
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(_A0&& __a0,
1149
+ _A1&& __a1,
1150
+ _Args&&... __args)
1151
+ {
1152
+ __node_allocator& __na = __table_.__node_alloc();
1153
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1154
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_),
1155
+ _VSTD::forward<_A0>(__a0), _VSTD::forward<_A1>(__a1),
1156
+ _VSTD::forward<_Args>(__args)...);
1157
+ __h.get_deleter().__first_constructed = true;
1158
+ __h.get_deleter().__second_constructed = true;
1159
+ return __h;
1160
+ }
1161
+
1162
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1163
+ template <class... _Args>
1164
+ pair<typename unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator, bool>
1165
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::emplace(_Args&&... __args)
1166
+ {
1167
+ __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
1168
+ pair<iterator, bool> __r = __table_.__node_insert_unique(__h.get());
1169
+ if (__r.second)
1170
+ __h.release();
1171
+ return __r;
1172
+ }
1173
+
1174
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1175
+ #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1176
+
1177
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1178
+ typename unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1179
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(const key_type& __k)
1180
+ {
1181
+ __node_allocator& __na = __table_.__node_alloc();
1182
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1183
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_.first), __k);
1184
+ __h.get_deleter().__first_constructed = true;
1185
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_.second));
1186
+ __h.get_deleter().__second_constructed = true;
1187
+ return _VSTD::move(__h);
1188
+ }
1189
+
1190
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1191
+
1192
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1193
+ template <class _InputIterator>
1194
+ inline _LIBCPP_INLINE_VISIBILITY
1195
+ void
1196
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator __first,
1197
+ _InputIterator __last)
1198
+ {
1199
+ for (; __first != __last; ++__first)
1200
+ __table_.__insert_unique(*__first);
1201
+ }
1202
+
1203
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1204
+ _Tp&
1205
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator[](const key_type& __k)
1206
+ {
1207
+ iterator __i = find(__k);
1208
+ if (__i != end())
1209
+ return __i->second;
1210
+ __node_holder __h = __construct_node(__k);
1211
+ pair<iterator, bool> __r = __table_.__node_insert_unique(__h.get());
1212
+ __h.release();
1213
+ return __r.first->second;
1214
+ }
1215
+
1216
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1217
+
1218
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1219
+ _Tp&
1220
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::operator[](key_type&& __k)
1221
+ {
1222
+ iterator __i = find(__k);
1223
+ if (__i != end())
1224
+ return __i->second;
1225
+ __node_holder __h = __construct_node(_VSTD::move(__k));
1226
+ pair<iterator, bool> __r = __table_.__node_insert_unique(__h.get());
1227
+ __h.release();
1228
+ return __r.first->second;
1229
+ }
1230
+
1231
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1232
+
1233
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1234
+ _Tp&
1235
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::at(const key_type& __k)
1236
+ {
1237
+ iterator __i = find(__k);
1238
+ #ifndef _LIBCPP_NO_EXCEPTIONS
1239
+ if (__i == end())
1240
+ throw out_of_range("unordered_map::at: key not found");
1241
+ #endif // _LIBCPP_NO_EXCEPTIONS
1242
+ return __i->second;
1243
+ }
1244
+
1245
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1246
+ const _Tp&
1247
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::at(const key_type& __k) const
1248
+ {
1249
+ const_iterator __i = find(__k);
1250
+ #ifndef _LIBCPP_NO_EXCEPTIONS
1251
+ if (__i == end())
1252
+ throw out_of_range("unordered_map::at: key not found");
1253
+ #endif // _LIBCPP_NO_EXCEPTIONS
1254
+ return __i->second;
1255
+ }
1256
+
1257
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1258
+ inline _LIBCPP_INLINE_VISIBILITY
1259
+ void
1260
+ swap(unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
1261
+ unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
1262
+ _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
1263
+ {
1264
+ __x.swap(__y);
1265
+ }
1266
+
1267
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1268
+ bool
1269
+ operator==(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
1270
+ const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
1271
+ {
1272
+ if (__x.size() != __y.size())
1273
+ return false;
1274
+ typedef typename unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator
1275
+ const_iterator;
1276
+ for (const_iterator __i = __x.begin(), __ex = __x.end(), __ey = __y.end();
1277
+ __i != __ex; ++__i)
1278
+ {
1279
+ const_iterator __j = __y.find(__i->first);
1280
+ if (__j == __ey || !(*__i == *__j))
1281
+ return false;
1282
+ }
1283
+ return true;
1284
+ }
1285
+
1286
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1287
+ inline _LIBCPP_INLINE_VISIBILITY
1288
+ bool
1289
+ operator!=(const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
1290
+ const unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
1291
+ {
1292
+ return !(__x == __y);
1293
+ }
1294
+
1295
+ template <class _Key, class _Tp, class _Hash = hash<_Key>, class _Pred = equal_to<_Key>,
1296
+ class _Alloc = allocator<pair<const _Key, _Tp> > >
1297
+ class _LIBCPP_TYPE_VIS unordered_multimap
1298
+ {
1299
+ public:
1300
+ // types
1301
+ typedef _Key key_type;
1302
+ typedef _Tp mapped_type;
1303
+ typedef _Hash hasher;
1304
+ typedef _Pred key_equal;
1305
+ typedef _Alloc allocator_type;
1306
+ typedef pair<const key_type, mapped_type> value_type;
1307
+ typedef value_type& reference;
1308
+ typedef const value_type& const_reference;
1309
+
1310
+ private:
1311
+ typedef pair<key_type, mapped_type> __value_type;
1312
+ typedef __unordered_map_hasher<key_type, mapped_type, hasher> __hasher;
1313
+ typedef __unordered_map_equal<key_type, mapped_type, key_equal> __key_equal;
1314
+ typedef typename allocator_traits<allocator_type>::template
1315
+ #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
1316
+ rebind_alloc<__value_type>
1317
+ #else
1318
+ rebind_alloc<__value_type>::other
1319
+ #endif
1320
+ __allocator_type;
1321
+
1322
+ typedef __hash_table<__value_type, __hasher,
1323
+ __key_equal, __allocator_type> __table;
1324
+
1325
+ __table __table_;
1326
+
1327
+ typedef typename __table::__node_traits __node_traits;
1328
+ typedef typename __table::__node_allocator __node_allocator;
1329
+ typedef typename __table::__node __node;
1330
+ typedef __hash_map_node_destructor<__node_allocator> _Dp;
1331
+ typedef unique_ptr<__node, _Dp> __node_holder;
1332
+ typedef allocator_traits<allocator_type> __alloc_traits;
1333
+ public:
1334
+ typedef typename __alloc_traits::pointer pointer;
1335
+ typedef typename __alloc_traits::const_pointer const_pointer;
1336
+ typedef typename __alloc_traits::size_type size_type;
1337
+ typedef typename __alloc_traits::difference_type difference_type;
1338
+
1339
+ typedef __hash_map_iterator<typename __table::iterator> iterator;
1340
+ typedef __hash_map_const_iterator<typename __table::const_iterator> const_iterator;
1341
+ typedef __hash_map_iterator<typename __table::local_iterator> local_iterator;
1342
+ typedef __hash_map_const_iterator<typename __table::const_local_iterator> const_local_iterator;
1343
+
1344
+ _LIBCPP_INLINE_VISIBILITY
1345
+ unordered_multimap()
1346
+ _NOEXCEPT_(is_nothrow_default_constructible<__table>::value)
1347
+ {} // = default;
1348
+ explicit unordered_multimap(size_type __n, const hasher& __hf = hasher(),
1349
+ const key_equal& __eql = key_equal());
1350
+ unordered_multimap(size_type __n, const hasher& __hf,
1351
+ const key_equal& __eql,
1352
+ const allocator_type& __a);
1353
+ template <class _InputIterator>
1354
+ unordered_multimap(_InputIterator __first, _InputIterator __last);
1355
+ template <class _InputIterator>
1356
+ unordered_multimap(_InputIterator __first, _InputIterator __last,
1357
+ size_type __n, const hasher& __hf = hasher(),
1358
+ const key_equal& __eql = key_equal());
1359
+ template <class _InputIterator>
1360
+ unordered_multimap(_InputIterator __first, _InputIterator __last,
1361
+ size_type __n, const hasher& __hf,
1362
+ const key_equal& __eql,
1363
+ const allocator_type& __a);
1364
+ explicit unordered_multimap(const allocator_type& __a);
1365
+ unordered_multimap(const unordered_multimap& __u);
1366
+ unordered_multimap(const unordered_multimap& __u, const allocator_type& __a);
1367
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1368
+ unordered_multimap(unordered_multimap&& __u)
1369
+ _NOEXCEPT_(is_nothrow_move_constructible<__table>::value);
1370
+ unordered_multimap(unordered_multimap&& __u, const allocator_type& __a);
1371
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1372
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1373
+ unordered_multimap(initializer_list<value_type> __il);
1374
+ unordered_multimap(initializer_list<value_type> __il, size_type __n,
1375
+ const hasher& __hf = hasher(),
1376
+ const key_equal& __eql = key_equal());
1377
+ unordered_multimap(initializer_list<value_type> __il, size_type __n,
1378
+ const hasher& __hf, const key_equal& __eql,
1379
+ const allocator_type& __a);
1380
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1381
+ // ~unordered_multimap() = default;
1382
+ _LIBCPP_INLINE_VISIBILITY
1383
+ unordered_multimap& operator=(const unordered_multimap& __u)
1384
+ {
1385
+ __table_ = __u.__table_;
1386
+ return *this;
1387
+ }
1388
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1389
+ unordered_multimap& operator=(unordered_multimap&& __u)
1390
+ _NOEXCEPT_(is_nothrow_move_assignable<__table>::value);
1391
+ #endif
1392
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1393
+ unordered_multimap& operator=(initializer_list<value_type> __il);
1394
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1395
+
1396
+ _LIBCPP_INLINE_VISIBILITY
1397
+ allocator_type get_allocator() const _NOEXCEPT
1398
+ {return allocator_type(__table_.__node_alloc());}
1399
+
1400
+ _LIBCPP_INLINE_VISIBILITY
1401
+ bool empty() const _NOEXCEPT {return __table_.size() == 0;}
1402
+ _LIBCPP_INLINE_VISIBILITY
1403
+ size_type size() const _NOEXCEPT {return __table_.size();}
1404
+ _LIBCPP_INLINE_VISIBILITY
1405
+ size_type max_size() const _NOEXCEPT {return __table_.max_size();}
1406
+
1407
+ _LIBCPP_INLINE_VISIBILITY
1408
+ iterator begin() _NOEXCEPT {return __table_.begin();}
1409
+ _LIBCPP_INLINE_VISIBILITY
1410
+ iterator end() _NOEXCEPT {return __table_.end();}
1411
+ _LIBCPP_INLINE_VISIBILITY
1412
+ const_iterator begin() const _NOEXCEPT {return __table_.begin();}
1413
+ _LIBCPP_INLINE_VISIBILITY
1414
+ const_iterator end() const _NOEXCEPT {return __table_.end();}
1415
+ _LIBCPP_INLINE_VISIBILITY
1416
+ const_iterator cbegin() const _NOEXCEPT {return __table_.begin();}
1417
+ _LIBCPP_INLINE_VISIBILITY
1418
+ const_iterator cend() const _NOEXCEPT {return __table_.end();}
1419
+
1420
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1421
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
1422
+
1423
+ template <class... _Args>
1424
+ iterator emplace(_Args&&... __args);
1425
+
1426
+ template <class... _Args>
1427
+ iterator emplace_hint(const_iterator __p, _Args&&... __args);
1428
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1429
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1430
+ _LIBCPP_INLINE_VISIBILITY
1431
+ iterator insert(const value_type& __x) {return __table_.__insert_multi(__x);}
1432
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1433
+ template <class _Pp,
1434
+ class = typename enable_if<is_constructible<value_type, _Pp>::value>::type>
1435
+ _LIBCPP_INLINE_VISIBILITY
1436
+ iterator insert(_Pp&& __x)
1437
+ {return __table_.__insert_multi(_VSTD::forward<_Pp>(__x));}
1438
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1439
+ _LIBCPP_INLINE_VISIBILITY
1440
+ iterator insert(const_iterator __p, const value_type& __x)
1441
+ {return __table_.__insert_multi(__p.__i_, __x);}
1442
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1443
+ template <class _Pp,
1444
+ class = typename enable_if<is_constructible<value_type, _Pp>::value>::type>
1445
+ _LIBCPP_INLINE_VISIBILITY
1446
+ iterator insert(const_iterator __p, _Pp&& __x)
1447
+ {return __table_.__insert_multi(__p.__i_, _VSTD::forward<_Pp>(__x));}
1448
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1449
+ template <class _InputIterator>
1450
+ void insert(_InputIterator __first, _InputIterator __last);
1451
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1452
+ _LIBCPP_INLINE_VISIBILITY
1453
+ void insert(initializer_list<value_type> __il)
1454
+ {insert(__il.begin(), __il.end());}
1455
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1456
+
1457
+ _LIBCPP_INLINE_VISIBILITY
1458
+ iterator erase(const_iterator __p) {return __table_.erase(__p.__i_);}
1459
+ _LIBCPP_INLINE_VISIBILITY
1460
+ size_type erase(const key_type& __k) {return __table_.__erase_multi(__k);}
1461
+ _LIBCPP_INLINE_VISIBILITY
1462
+ iterator erase(const_iterator __first, const_iterator __last)
1463
+ {return __table_.erase(__first.__i_, __last.__i_);}
1464
+ _LIBCPP_INLINE_VISIBILITY
1465
+ void clear() _NOEXCEPT {__table_.clear();}
1466
+
1467
+ _LIBCPP_INLINE_VISIBILITY
1468
+ void swap(unordered_multimap& __u)
1469
+ _NOEXCEPT_(__is_nothrow_swappable<__table>::value)
1470
+ {__table_.swap(__u.__table_);}
1471
+
1472
+ _LIBCPP_INLINE_VISIBILITY
1473
+ hasher hash_function() const
1474
+ {return __table_.hash_function().hash_function();}
1475
+ _LIBCPP_INLINE_VISIBILITY
1476
+ key_equal key_eq() const
1477
+ {return __table_.key_eq().key_eq();}
1478
+
1479
+ _LIBCPP_INLINE_VISIBILITY
1480
+ iterator find(const key_type& __k) {return __table_.find(__k);}
1481
+ _LIBCPP_INLINE_VISIBILITY
1482
+ const_iterator find(const key_type& __k) const {return __table_.find(__k);}
1483
+ _LIBCPP_INLINE_VISIBILITY
1484
+ size_type count(const key_type& __k) const {return __table_.__count_multi(__k);}
1485
+ _LIBCPP_INLINE_VISIBILITY
1486
+ pair<iterator, iterator> equal_range(const key_type& __k)
1487
+ {return __table_.__equal_range_multi(__k);}
1488
+ _LIBCPP_INLINE_VISIBILITY
1489
+ pair<const_iterator, const_iterator> equal_range(const key_type& __k) const
1490
+ {return __table_.__equal_range_multi(__k);}
1491
+
1492
+ _LIBCPP_INLINE_VISIBILITY
1493
+ size_type bucket_count() const _NOEXCEPT {return __table_.bucket_count();}
1494
+ _LIBCPP_INLINE_VISIBILITY
1495
+ size_type max_bucket_count() const _NOEXCEPT
1496
+ {return __table_.max_bucket_count();}
1497
+
1498
+ _LIBCPP_INLINE_VISIBILITY
1499
+ size_type bucket_size(size_type __n) const
1500
+ {return __table_.bucket_size(__n);}
1501
+ _LIBCPP_INLINE_VISIBILITY
1502
+ size_type bucket(const key_type& __k) const {return __table_.bucket(__k);}
1503
+
1504
+ _LIBCPP_INLINE_VISIBILITY
1505
+ local_iterator begin(size_type __n) {return __table_.begin(__n);}
1506
+ _LIBCPP_INLINE_VISIBILITY
1507
+ local_iterator end(size_type __n) {return __table_.end(__n);}
1508
+ _LIBCPP_INLINE_VISIBILITY
1509
+ const_local_iterator begin(size_type __n) const {return __table_.cbegin(__n);}
1510
+ _LIBCPP_INLINE_VISIBILITY
1511
+ const_local_iterator end(size_type __n) const {return __table_.cend(__n);}
1512
+ _LIBCPP_INLINE_VISIBILITY
1513
+ const_local_iterator cbegin(size_type __n) const {return __table_.cbegin(__n);}
1514
+ _LIBCPP_INLINE_VISIBILITY
1515
+ const_local_iterator cend(size_type __n) const {return __table_.cend(__n);}
1516
+
1517
+ _LIBCPP_INLINE_VISIBILITY
1518
+ float load_factor() const _NOEXCEPT {return __table_.load_factor();}
1519
+ _LIBCPP_INLINE_VISIBILITY
1520
+ float max_load_factor() const _NOEXCEPT {return __table_.max_load_factor();}
1521
+ _LIBCPP_INLINE_VISIBILITY
1522
+ void max_load_factor(float __mlf) {__table_.max_load_factor(__mlf);}
1523
+ _LIBCPP_INLINE_VISIBILITY
1524
+ void rehash(size_type __n) {__table_.rehash(__n);}
1525
+ _LIBCPP_INLINE_VISIBILITY
1526
+ void reserve(size_type __n) {__table_.reserve(__n);}
1527
+
1528
+ private:
1529
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1530
+ __node_holder __construct_node();
1531
+ template <class _A0>
1532
+ typename enable_if
1533
+ <
1534
+ is_constructible<value_type, _A0>::value,
1535
+ __node_holder
1536
+ >::type
1537
+ __construct_node(_A0&& __a0);
1538
+ template <class _A0>
1539
+ typename enable_if
1540
+ <
1541
+ is_constructible<key_type, _A0>::value,
1542
+ __node_holder
1543
+ >::type
1544
+ __construct_node(_A0&& __a0);
1545
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
1546
+ template <class _A0, class _A1, class ..._Args>
1547
+ __node_holder __construct_node(_A0&& __a0, _A1&& __a1, _Args&& ...__args);
1548
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1549
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1550
+ };
1551
+
1552
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1553
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1554
+ size_type __n, const hasher& __hf, const key_equal& __eql)
1555
+ : __table_(__hf, __eql)
1556
+ {
1557
+ __table_.rehash(__n);
1558
+ }
1559
+
1560
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1561
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1562
+ size_type __n, const hasher& __hf, const key_equal& __eql,
1563
+ const allocator_type& __a)
1564
+ : __table_(__hf, __eql, __a)
1565
+ {
1566
+ __table_.rehash(__n);
1567
+ }
1568
+
1569
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1570
+ template <class _InputIterator>
1571
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1572
+ _InputIterator __first, _InputIterator __last)
1573
+ {
1574
+ insert(__first, __last);
1575
+ }
1576
+
1577
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1578
+ template <class _InputIterator>
1579
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1580
+ _InputIterator __first, _InputIterator __last, size_type __n,
1581
+ const hasher& __hf, const key_equal& __eql)
1582
+ : __table_(__hf, __eql)
1583
+ {
1584
+ __table_.rehash(__n);
1585
+ insert(__first, __last);
1586
+ }
1587
+
1588
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1589
+ template <class _InputIterator>
1590
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1591
+ _InputIterator __first, _InputIterator __last, size_type __n,
1592
+ const hasher& __hf, const key_equal& __eql, const allocator_type& __a)
1593
+ : __table_(__hf, __eql, __a)
1594
+ {
1595
+ __table_.rehash(__n);
1596
+ insert(__first, __last);
1597
+ }
1598
+
1599
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1600
+ inline _LIBCPP_INLINE_VISIBILITY
1601
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1602
+ const allocator_type& __a)
1603
+ : __table_(__a)
1604
+ {
1605
+ }
1606
+
1607
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1608
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1609
+ const unordered_multimap& __u)
1610
+ : __table_(__u.__table_)
1611
+ {
1612
+ __table_.rehash(__u.bucket_count());
1613
+ insert(__u.begin(), __u.end());
1614
+ }
1615
+
1616
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1617
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1618
+ const unordered_multimap& __u, const allocator_type& __a)
1619
+ : __table_(__u.__table_, __a)
1620
+ {
1621
+ __table_.rehash(__u.bucket_count());
1622
+ insert(__u.begin(), __u.end());
1623
+ }
1624
+
1625
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1626
+
1627
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1628
+ inline _LIBCPP_INLINE_VISIBILITY
1629
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1630
+ unordered_multimap&& __u)
1631
+ _NOEXCEPT_(is_nothrow_move_constructible<__table>::value)
1632
+ : __table_(_VSTD::move(__u.__table_))
1633
+ {
1634
+ }
1635
+
1636
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1637
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1638
+ unordered_multimap&& __u, const allocator_type& __a)
1639
+ : __table_(_VSTD::move(__u.__table_), __a)
1640
+ {
1641
+ if (__a != __u.get_allocator())
1642
+ {
1643
+ iterator __i = __u.begin();
1644
+ while (__u.size() != 0)
1645
+ {
1646
+ __table_.__insert_multi(
1647
+ _VSTD::move(__u.__table_.remove((__i++).__i_)->__value_)
1648
+ );
1649
+ }
1650
+ }
1651
+ }
1652
+
1653
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1654
+
1655
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1656
+
1657
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1658
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1659
+ initializer_list<value_type> __il)
1660
+ {
1661
+ insert(__il.begin(), __il.end());
1662
+ }
1663
+
1664
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1665
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1666
+ initializer_list<value_type> __il, size_type __n, const hasher& __hf,
1667
+ const key_equal& __eql)
1668
+ : __table_(__hf, __eql)
1669
+ {
1670
+ __table_.rehash(__n);
1671
+ insert(__il.begin(), __il.end());
1672
+ }
1673
+
1674
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1675
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap(
1676
+ initializer_list<value_type> __il, size_type __n, const hasher& __hf,
1677
+ const key_equal& __eql, const allocator_type& __a)
1678
+ : __table_(__hf, __eql, __a)
1679
+ {
1680
+ __table_.rehash(__n);
1681
+ insert(__il.begin(), __il.end());
1682
+ }
1683
+
1684
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1685
+
1686
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1687
+
1688
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1689
+ inline _LIBCPP_INLINE_VISIBILITY
1690
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>&
1691
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::operator=(unordered_multimap&& __u)
1692
+ _NOEXCEPT_(is_nothrow_move_assignable<__table>::value)
1693
+ {
1694
+ __table_ = _VSTD::move(__u.__table_);
1695
+ return *this;
1696
+ }
1697
+
1698
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1699
+
1700
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1701
+
1702
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1703
+ inline _LIBCPP_INLINE_VISIBILITY
1704
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>&
1705
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::operator=(
1706
+ initializer_list<value_type> __il)
1707
+ {
1708
+ __table_.__assign_multi(__il.begin(), __il.end());
1709
+ return *this;
1710
+ }
1711
+
1712
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1713
+
1714
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1715
+
1716
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1717
+ typename unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1718
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node()
1719
+ {
1720
+ __node_allocator& __na = __table_.__node_alloc();
1721
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1722
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_));
1723
+ __h.get_deleter().__first_constructed = true;
1724
+ __h.get_deleter().__second_constructed = true;
1725
+ return __h;
1726
+ }
1727
+
1728
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1729
+ template <class _A0>
1730
+ typename enable_if
1731
+ <
1732
+ is_constructible<pair<const _Key, _Tp>, _A0>::value,
1733
+ typename unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1734
+ >::type
1735
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(_A0&& __a0)
1736
+ {
1737
+ __node_allocator& __na = __table_.__node_alloc();
1738
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1739
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_),
1740
+ _VSTD::forward<_A0>(__a0));
1741
+ __h.get_deleter().__first_constructed = true;
1742
+ __h.get_deleter().__second_constructed = true;
1743
+ return __h;
1744
+ }
1745
+
1746
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1747
+ template <class _A0>
1748
+ typename enable_if
1749
+ <
1750
+ is_constructible<_Key, _A0>::value,
1751
+ typename unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1752
+ >::type
1753
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(_A0&& __a0)
1754
+ {
1755
+ __node_allocator& __na = __table_.__node_alloc();
1756
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1757
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_.first),
1758
+ _VSTD::forward<_A0>(__a0));
1759
+ __h.get_deleter().__first_constructed = true;
1760
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_.second));
1761
+ __h.get_deleter().__second_constructed = true;
1762
+ return __h;
1763
+ }
1764
+
1765
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
1766
+
1767
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1768
+ template <class _A0, class _A1, class ..._Args>
1769
+ typename unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::__node_holder
1770
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::__construct_node(
1771
+ _A0&& __a0, _A1&& __a1, _Args&&... __args)
1772
+ {
1773
+ __node_allocator& __na = __table_.__node_alloc();
1774
+ __node_holder __h(__node_traits::allocate(__na, 1), _Dp(__na));
1775
+ __node_traits::construct(__na, _VSTD::addressof(__h->__value_),
1776
+ _VSTD::forward<_A0>(__a0), _VSTD::forward<_A1>(__a1),
1777
+ _VSTD::forward<_Args>(__args)...);
1778
+ __h.get_deleter().__first_constructed = true;
1779
+ __h.get_deleter().__second_constructed = true;
1780
+ return __h;
1781
+ }
1782
+
1783
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1784
+ template <class... _Args>
1785
+ typename unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator
1786
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::emplace(_Args&&... __args)
1787
+ {
1788
+ __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
1789
+ iterator __r = __table_.__node_insert_multi(__h.get());
1790
+ __h.release();
1791
+ return __r;
1792
+ }
1793
+
1794
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1795
+ template <class... _Args>
1796
+ typename unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::iterator
1797
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::emplace_hint(
1798
+ const_iterator __p, _Args&&... __args)
1799
+ {
1800
+ __node_holder __h = __construct_node(_VSTD::forward<_Args>(__args)...);
1801
+ iterator __r = __table_.__node_insert_multi(__p.__i_, __h.get());
1802
+ __h.release();
1803
+ return __r;
1804
+ }
1805
+
1806
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1807
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1808
+
1809
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1810
+ template <class _InputIterator>
1811
+ inline _LIBCPP_INLINE_VISIBILITY
1812
+ void
1813
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::insert(_InputIterator __first,
1814
+ _InputIterator __last)
1815
+ {
1816
+ for (; __first != __last; ++__first)
1817
+ __table_.__insert_multi(*__first);
1818
+ }
1819
+
1820
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1821
+ inline _LIBCPP_INLINE_VISIBILITY
1822
+ void
1823
+ swap(unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
1824
+ unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
1825
+ _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
1826
+ {
1827
+ __x.swap(__y);
1828
+ }
1829
+
1830
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1831
+ bool
1832
+ operator==(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
1833
+ const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
1834
+ {
1835
+ if (__x.size() != __y.size())
1836
+ return false;
1837
+ typedef typename unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::const_iterator
1838
+ const_iterator;
1839
+ typedef pair<const_iterator, const_iterator> _EqRng;
1840
+ for (const_iterator __i = __x.begin(), __ex = __x.end(); __i != __ex;)
1841
+ {
1842
+ _EqRng __xeq = __x.equal_range(__i->first);
1843
+ _EqRng __yeq = __y.equal_range(__i->first);
1844
+ if (_VSTD::distance(__xeq.first, __xeq.second) !=
1845
+ _VSTD::distance(__yeq.first, __yeq.second) ||
1846
+ !_VSTD::is_permutation(__xeq.first, __xeq.second, __yeq.first))
1847
+ return false;
1848
+ __i = __xeq.second;
1849
+ }
1850
+ return true;
1851
+ }
1852
+
1853
+ template <class _Key, class _Tp, class _Hash, class _Pred, class _Alloc>
1854
+ inline _LIBCPP_INLINE_VISIBILITY
1855
+ bool
1856
+ operator!=(const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __x,
1857
+ const unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>& __y)
1858
+ {
1859
+ return !(__x == __y);
1860
+ }
1861
+
1862
+ _LIBCPP_END_NAMESPACE_STD
1863
+
1864
+ #endif // _LIBCPP_UNORDERED_MAP