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