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