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,3228 @@
1
+ // -*- C++ -*-
2
+ //===------------------------------ vector --------------------------------===//
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_VECTOR
12
+ #define _LIBCPP_VECTOR
13
+
14
+ /*
15
+ vector synopsis
16
+
17
+ namespace std
18
+ {
19
+
20
+ template <class T, class Allocator = allocator<T> >
21
+ class vector
22
+ {
23
+ public:
24
+ typedef T value_type;
25
+ typedef Allocator allocator_type;
26
+ typedef typename allocator_type::reference reference;
27
+ typedef typename allocator_type::const_reference const_reference;
28
+ typedef implementation-defined iterator;
29
+ typedef implementation-defined const_iterator;
30
+ typedef typename allocator_type::size_type size_type;
31
+ typedef typename allocator_type::difference_type difference_type;
32
+ typedef typename allocator_type::pointer pointer;
33
+ typedef typename allocator_type::const_pointer const_pointer;
34
+ typedef std::reverse_iterator<iterator> reverse_iterator;
35
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
36
+
37
+ vector()
38
+ noexcept(is_nothrow_default_constructible<allocator_type>::value);
39
+ explicit vector(const allocator_type&);
40
+ explicit vector(size_type n);
41
+ vector(size_type n, const value_type& value, const allocator_type& = allocator_type());
42
+ template <class InputIterator>
43
+ vector(InputIterator first, InputIterator last, const allocator_type& = allocator_type());
44
+ vector(const vector& x);
45
+ vector(vector&& x)
46
+ noexcept(is_nothrow_move_constructible<allocator_type>::value);
47
+ vector(initializer_list<value_type> il);
48
+ vector(initializer_list<value_type> il, const allocator_type& a);
49
+ ~vector();
50
+ vector& operator=(const vector& x);
51
+ vector& operator=(vector&& x)
52
+ noexcept(
53
+ allocator_type::propagate_on_container_move_assignment::value &&
54
+ is_nothrow_move_assignable<allocator_type>::value);
55
+ vector& operator=(initializer_list<value_type> il);
56
+ template <class InputIterator>
57
+ void assign(InputIterator first, InputIterator last);
58
+ void assign(size_type n, const value_type& u);
59
+ void assign(initializer_list<value_type> il);
60
+
61
+ allocator_type get_allocator() const noexcept;
62
+
63
+ iterator begin() noexcept;
64
+ const_iterator begin() const noexcept;
65
+ iterator end() noexcept;
66
+ const_iterator end() const noexcept;
67
+
68
+ reverse_iterator rbegin() noexcept;
69
+ const_reverse_iterator rbegin() const noexcept;
70
+ reverse_iterator rend() noexcept;
71
+ const_reverse_iterator rend() const noexcept;
72
+
73
+ const_iterator cbegin() const noexcept;
74
+ const_iterator cend() const noexcept;
75
+ const_reverse_iterator crbegin() const noexcept;
76
+ const_reverse_iterator crend() const noexcept;
77
+
78
+ size_type size() const noexcept;
79
+ size_type max_size() const noexcept;
80
+ size_type capacity() const noexcept;
81
+ bool empty() const noexcept;
82
+ void reserve(size_type n);
83
+ void shrink_to_fit() noexcept;
84
+
85
+ reference operator[](size_type n);
86
+ const_reference operator[](size_type n) const;
87
+ reference at(size_type n);
88
+ const_reference at(size_type n) const;
89
+
90
+ reference front();
91
+ const_reference front() const;
92
+ reference back();
93
+ const_reference back() const;
94
+
95
+ value_type* data() noexcept;
96
+ const value_type* data() const noexcept;
97
+
98
+ void push_back(const value_type& x);
99
+ void push_back(value_type&& x);
100
+ template <class... Args>
101
+ void emplace_back(Args&&... args);
102
+ void pop_back();
103
+
104
+ template <class... Args> iterator emplace(const_iterator position, Args&&... args);
105
+ iterator insert(const_iterator position, const value_type& x);
106
+ iterator insert(const_iterator position, value_type&& x);
107
+ iterator insert(const_iterator position, size_type n, const value_type& x);
108
+ template <class InputIterator>
109
+ iterator insert(const_iterator position, InputIterator first, InputIterator last);
110
+ iterator insert(const_iterator position, initializer_list<value_type> il);
111
+
112
+ iterator erase(const_iterator position);
113
+ iterator erase(const_iterator first, const_iterator last);
114
+
115
+ void clear() noexcept;
116
+
117
+ void resize(size_type sz);
118
+ void resize(size_type sz, const value_type& c);
119
+
120
+ void swap(vector&)
121
+ noexcept(!allocator_type::propagate_on_container_swap::value ||
122
+ __is_nothrow_swappable<allocator_type>::value);
123
+
124
+ bool __invariants() const;
125
+ };
126
+
127
+ template <class Allocator = allocator<T> >
128
+ class vector<bool, Allocator>
129
+ {
130
+ public:
131
+ typedef bool value_type;
132
+ typedef Allocator allocator_type;
133
+ typedef implementation-defined iterator;
134
+ typedef implementation-defined const_iterator;
135
+ typedef typename allocator_type::size_type size_type;
136
+ typedef typename allocator_type::difference_type difference_type;
137
+ typedef iterator pointer;
138
+ typedef const_iterator const_pointer;
139
+ typedef std::reverse_iterator<iterator> reverse_iterator;
140
+ typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
141
+
142
+ class reference
143
+ {
144
+ public:
145
+ reference(const reference&) noexcept;
146
+ operator bool() const noexcept;
147
+ reference& operator=(const bool x) noexcept;
148
+ reference& operator=(const reference& x) noexcept;
149
+ iterator operator&() const noexcept;
150
+ void flip() noexcept;
151
+ };
152
+
153
+ class const_reference
154
+ {
155
+ public:
156
+ const_reference(const reference&) noexcept;
157
+ operator bool() const noexcept;
158
+ const_iterator operator&() const noexcept;
159
+ };
160
+
161
+ vector()
162
+ noexcept(is_nothrow_default_constructible<allocator_type>::value);
163
+ explicit vector(const allocator_type&);
164
+ explicit vector(size_type n, const value_type& value = value_type(), const allocator_type& = allocator_type());
165
+ template <class InputIterator>
166
+ vector(InputIterator first, InputIterator last, const allocator_type& = allocator_type());
167
+ vector(const vector& x);
168
+ vector(vector&& x)
169
+ noexcept(is_nothrow_move_constructible<allocator_type>::value);
170
+ vector(initializer_list<value_type> il);
171
+ vector(initializer_list<value_type> il, const allocator_type& a);
172
+ ~vector();
173
+ vector& operator=(const vector& x);
174
+ vector& operator=(vector&& x)
175
+ noexcept(
176
+ allocator_type::propagate_on_container_move_assignment::value &&
177
+ is_nothrow_move_assignable<allocator_type>::value);
178
+ vector& operator=(initializer_list<value_type> il);
179
+ template <class InputIterator>
180
+ void assign(InputIterator first, InputIterator last);
181
+ void assign(size_type n, const value_type& u);
182
+ void assign(initializer_list<value_type> il);
183
+
184
+ allocator_type get_allocator() const noexcept;
185
+
186
+ iterator begin() noexcept;
187
+ const_iterator begin() const noexcept;
188
+ iterator end() noexcept;
189
+ const_iterator end() const noexcept;
190
+
191
+ reverse_iterator rbegin() noexcept;
192
+ const_reverse_iterator rbegin() const noexcept;
193
+ reverse_iterator rend() noexcept;
194
+ const_reverse_iterator rend() const noexcept;
195
+
196
+ const_iterator cbegin() const noexcept;
197
+ const_iterator cend() const noexcept;
198
+ const_reverse_iterator crbegin() const noexcept;
199
+ const_reverse_iterator crend() const noexcept;
200
+
201
+ size_type size() const noexcept;
202
+ size_type max_size() const noexcept;
203
+ size_type capacity() const noexcept;
204
+ bool empty() const noexcept;
205
+ void reserve(size_type n);
206
+ void shrink_to_fit() noexcept;
207
+
208
+ reference operator[](size_type n);
209
+ const_reference operator[](size_type n) const;
210
+ reference at(size_type n);
211
+ const_reference at(size_type n) const;
212
+
213
+ reference front();
214
+ const_reference front() const;
215
+ reference back();
216
+ const_reference back() const;
217
+
218
+ void push_back(const value_type& x);
219
+ void pop_back();
220
+
221
+ iterator insert(const_iterator position, const value_type& x);
222
+ iterator insert(const_iterator position, size_type n, const value_type& x);
223
+ template <class InputIterator>
224
+ iterator insert(const_iterator position, InputIterator first, InputIterator last);
225
+ iterator insert(const_iterator position, initializer_list<value_type> il);
226
+
227
+ iterator erase(const_iterator position);
228
+ iterator erase(const_iterator first, const_iterator last);
229
+
230
+ void clear() noexcept;
231
+
232
+ void resize(size_type sz);
233
+ void resize(size_type sz, value_type x);
234
+
235
+ void swap(vector&)
236
+ noexcept(!allocator_type::propagate_on_container_swap::value ||
237
+ __is_nothrow_swappable<allocator_type>::value);
238
+ void flip() noexcept;
239
+
240
+ bool __invariants() const;
241
+ };
242
+
243
+ template <class Allocator> struct hash<std::vector<bool, Allocator>>;
244
+
245
+ template <class T, class Allocator> bool operator==(const vector<T,Allocator>& x, const vector<T,Allocator>& y);
246
+ template <class T, class Allocator> bool operator< (const vector<T,Allocator>& x, const vector<T,Allocator>& y);
247
+ template <class T, class Allocator> bool operator!=(const vector<T,Allocator>& x, const vector<T,Allocator>& y);
248
+ template <class T, class Allocator> bool operator> (const vector<T,Allocator>& x, const vector<T,Allocator>& y);
249
+ template <class T, class Allocator> bool operator>=(const vector<T,Allocator>& x, const vector<T,Allocator>& y);
250
+ template <class T, class Allocator> bool operator<=(const vector<T,Allocator>& x, const vector<T,Allocator>& y);
251
+
252
+ template <class T, class Allocator>
253
+ void swap(vector<T,Allocator>& x, vector<T,Allocator>& y)
254
+ noexcept(noexcept(x.swap(y)));
255
+
256
+ } // std
257
+
258
+ */
259
+
260
+ #include <__config>
261
+ #include <__bit_reference>
262
+ #include <type_traits>
263
+ #include <climits>
264
+ #include <limits>
265
+ #include <initializer_list>
266
+ #include <memory>
267
+ #include <stdexcept>
268
+ #include <algorithm>
269
+ #include <cstring>
270
+ #include <__split_buffer>
271
+ #include <__functional_base>
272
+
273
+ #include <__undef_min_max>
274
+
275
+ #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
276
+ #pragma GCC system_header
277
+ #endif
278
+
279
+ _LIBCPP_BEGIN_NAMESPACE_STD
280
+
281
+ template <bool>
282
+ class __vector_base_common
283
+ {
284
+ protected:
285
+ _LIBCPP_ALWAYS_INLINE __vector_base_common() {}
286
+ void __throw_length_error() const;
287
+ void __throw_out_of_range() const;
288
+ };
289
+
290
+ template <bool __b>
291
+ void
292
+ __vector_base_common<__b>::__throw_length_error() const
293
+ {
294
+ #ifndef _LIBCPP_NO_EXCEPTIONS
295
+ throw length_error("vector");
296
+ #else
297
+ assert(!"vector length_error");
298
+ #endif
299
+ }
300
+
301
+ template <bool __b>
302
+ void
303
+ __vector_base_common<__b>::__throw_out_of_range() const
304
+ {
305
+ #ifndef _LIBCPP_NO_EXCEPTIONS
306
+ throw out_of_range("vector");
307
+ #else
308
+ assert(!"vector out_of_range");
309
+ #endif
310
+ }
311
+
312
+ #ifdef _MSC_VER
313
+ #pragma warning( push )
314
+ #pragma warning( disable: 4231 )
315
+ #endif // _MSC_VER
316
+ _LIBCPP_EXTERN_TEMPLATE(class __vector_base_common<true>)
317
+ #ifdef _MSC_VER
318
+ #pragma warning( pop )
319
+ #endif // _MSC_VER
320
+
321
+ template <class _Tp, class _Allocator>
322
+ class __vector_base
323
+ : protected __vector_base_common<true>
324
+ {
325
+ protected:
326
+ typedef _Tp value_type;
327
+ typedef _Allocator allocator_type;
328
+ typedef allocator_traits<allocator_type> __alloc_traits;
329
+ typedef value_type& reference;
330
+ typedef const value_type& const_reference;
331
+ typedef typename __alloc_traits::size_type size_type;
332
+ typedef typename __alloc_traits::difference_type difference_type;
333
+ typedef typename __alloc_traits::pointer pointer;
334
+ typedef typename __alloc_traits::const_pointer const_pointer;
335
+ typedef pointer iterator;
336
+ typedef const_pointer const_iterator;
337
+
338
+ pointer __begin_;
339
+ pointer __end_;
340
+ __compressed_pair<pointer, allocator_type> __end_cap_;
341
+
342
+ _LIBCPP_INLINE_VISIBILITY
343
+ allocator_type& __alloc() _NOEXCEPT
344
+ {return __end_cap_.second();}
345
+ _LIBCPP_INLINE_VISIBILITY
346
+ const allocator_type& __alloc() const _NOEXCEPT
347
+ {return __end_cap_.second();}
348
+ _LIBCPP_INLINE_VISIBILITY
349
+ pointer& __end_cap() _NOEXCEPT
350
+ {return __end_cap_.first();}
351
+ _LIBCPP_INLINE_VISIBILITY
352
+ const pointer& __end_cap() const _NOEXCEPT
353
+ {return __end_cap_.first();}
354
+
355
+ _LIBCPP_INLINE_VISIBILITY
356
+ __vector_base()
357
+ _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value);
358
+ _LIBCPP_INLINE_VISIBILITY __vector_base(const allocator_type& __a);
359
+ ~__vector_base();
360
+
361
+ _LIBCPP_INLINE_VISIBILITY
362
+ void clear() _NOEXCEPT {__destruct_at_end(__begin_);}
363
+ _LIBCPP_INLINE_VISIBILITY
364
+ size_type capacity() const _NOEXCEPT
365
+ {return static_cast<size_type>(__end_cap() - __begin_);}
366
+
367
+ _LIBCPP_INLINE_VISIBILITY
368
+ void __destruct_at_end(const_pointer __new_last) _NOEXCEPT
369
+ {__destruct_at_end(__new_last, false_type());}
370
+ _LIBCPP_INLINE_VISIBILITY
371
+ void __destruct_at_end(const_pointer __new_last, false_type) _NOEXCEPT;
372
+ _LIBCPP_INLINE_VISIBILITY
373
+ void __destruct_at_end(const_pointer __new_last, true_type) _NOEXCEPT;
374
+
375
+ _LIBCPP_INLINE_VISIBILITY
376
+ void __copy_assign_alloc(const __vector_base& __c)
377
+ {__copy_assign_alloc(__c, integral_constant<bool,
378
+ __alloc_traits::propagate_on_container_copy_assignment::value>());}
379
+
380
+ _LIBCPP_INLINE_VISIBILITY
381
+ void __move_assign_alloc(__vector_base& __c)
382
+ _NOEXCEPT_(
383
+ !__alloc_traits::propagate_on_container_move_assignment::value ||
384
+ is_nothrow_move_assignable<allocator_type>::value)
385
+ {__move_assign_alloc(__c, integral_constant<bool,
386
+ __alloc_traits::propagate_on_container_move_assignment::value>());}
387
+
388
+ _LIBCPP_INLINE_VISIBILITY
389
+ static void __swap_alloc(allocator_type& __x, allocator_type& __y)
390
+ _NOEXCEPT_(
391
+ !__alloc_traits::propagate_on_container_swap::value ||
392
+ __is_nothrow_swappable<allocator_type>::value)
393
+ {__swap_alloc(__x, __y, integral_constant<bool,
394
+ __alloc_traits::propagate_on_container_swap::value>());}
395
+ private:
396
+ _LIBCPP_INLINE_VISIBILITY
397
+ void __copy_assign_alloc(const __vector_base& __c, true_type)
398
+ {
399
+ if (__alloc() != __c.__alloc())
400
+ {
401
+ clear();
402
+ __alloc_traits::deallocate(__alloc(), __begin_, capacity());
403
+ __begin_ = __end_ = __end_cap() = nullptr;
404
+ }
405
+ __alloc() = __c.__alloc();
406
+ }
407
+
408
+ _LIBCPP_INLINE_VISIBILITY
409
+ void __copy_assign_alloc(const __vector_base&, false_type)
410
+ {}
411
+
412
+ _LIBCPP_INLINE_VISIBILITY
413
+ void __move_assign_alloc(__vector_base& __c, true_type)
414
+ _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
415
+ {
416
+ __alloc() = _VSTD::move(__c.__alloc());
417
+ }
418
+
419
+ _LIBCPP_INLINE_VISIBILITY
420
+ void __move_assign_alloc(__vector_base&, false_type)
421
+ _NOEXCEPT
422
+ {}
423
+
424
+ _LIBCPP_INLINE_VISIBILITY
425
+ static void __swap_alloc(allocator_type& __x, allocator_type& __y, true_type)
426
+ _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
427
+ {
428
+ using _VSTD::swap;
429
+ swap(__x, __y);
430
+ }
431
+ _LIBCPP_INLINE_VISIBILITY
432
+ static void __swap_alloc(allocator_type&, allocator_type&, false_type)
433
+ _NOEXCEPT
434
+ {}
435
+ };
436
+
437
+ template <class _Tp, class _Allocator>
438
+ _LIBCPP_INLINE_VISIBILITY inline
439
+ void
440
+ __vector_base<_Tp, _Allocator>::__destruct_at_end(const_pointer __new_last, false_type) _NOEXCEPT
441
+ {
442
+ while (__new_last != __end_)
443
+ __alloc_traits::destroy(__alloc(), const_cast<pointer>(--__end_));
444
+ }
445
+
446
+ template <class _Tp, class _Allocator>
447
+ _LIBCPP_INLINE_VISIBILITY inline
448
+ void
449
+ __vector_base<_Tp, _Allocator>::__destruct_at_end(const_pointer __new_last, true_type) _NOEXCEPT
450
+ {
451
+ __end_ = const_cast<pointer>(__new_last);
452
+ }
453
+
454
+ template <class _Tp, class _Allocator>
455
+ _LIBCPP_INLINE_VISIBILITY inline
456
+ __vector_base<_Tp, _Allocator>::__vector_base()
457
+ _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
458
+ : __begin_(0),
459
+ __end_(0),
460
+ __end_cap_(0)
461
+ {
462
+ }
463
+
464
+ template <class _Tp, class _Allocator>
465
+ _LIBCPP_INLINE_VISIBILITY inline
466
+ __vector_base<_Tp, _Allocator>::__vector_base(const allocator_type& __a)
467
+ : __begin_(0),
468
+ __end_(0),
469
+ __end_cap_(0, __a)
470
+ {
471
+ }
472
+
473
+ template <class _Tp, class _Allocator>
474
+ __vector_base<_Tp, _Allocator>::~__vector_base()
475
+ {
476
+ if (__begin_ != 0)
477
+ {
478
+ clear();
479
+ __alloc_traits::deallocate(__alloc(), __begin_, capacity());
480
+ }
481
+ }
482
+
483
+ template <class _Tp, class _Allocator = allocator<_Tp> >
484
+ class _LIBCPP_TYPE_VIS vector
485
+ : private __vector_base<_Tp, _Allocator>
486
+ {
487
+ private:
488
+ typedef __vector_base<_Tp, _Allocator> __base;
489
+ public:
490
+ typedef vector __self;
491
+ typedef _Tp value_type;
492
+ typedef _Allocator allocator_type;
493
+ typedef typename __base::__alloc_traits __alloc_traits;
494
+ typedef typename __base::reference reference;
495
+ typedef typename __base::const_reference const_reference;
496
+ typedef typename __base::size_type size_type;
497
+ typedef typename __base::difference_type difference_type;
498
+ typedef typename __base::pointer pointer;
499
+ typedef typename __base::const_pointer const_pointer;
500
+ typedef __wrap_iter<pointer> iterator;
501
+ typedef __wrap_iter<const_pointer> const_iterator;
502
+ typedef _VSTD::reverse_iterator<iterator> reverse_iterator;
503
+ typedef _VSTD::reverse_iterator<const_iterator> const_reverse_iterator;
504
+
505
+ static_assert((is_same<typename allocator_type::value_type, value_type>::value),
506
+ "Allocator::value_type must be same type as value_type");
507
+
508
+ _LIBCPP_INLINE_VISIBILITY
509
+ vector()
510
+ _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
511
+ {
512
+ #if _LIBCPP_DEBUG_LEVEL >= 2
513
+ __get_db()->__insert_c(this);
514
+ #endif
515
+ }
516
+ _LIBCPP_INLINE_VISIBILITY explicit vector(const allocator_type& __a)
517
+ : __base(__a)
518
+ {
519
+ #if _LIBCPP_DEBUG_LEVEL >= 2
520
+ __get_db()->__insert_c(this);
521
+ #endif
522
+ }
523
+ explicit vector(size_type __n);
524
+ vector(size_type __n, const_reference __x);
525
+ vector(size_type __n, const_reference __x, const allocator_type& __a);
526
+ template <class _InputIterator>
527
+ vector(_InputIterator __first, _InputIterator __last,
528
+ typename enable_if<__is_input_iterator <_InputIterator>::value &&
529
+ !__is_forward_iterator<_InputIterator>::value &&
530
+ is_constructible<
531
+ value_type,
532
+ typename iterator_traits<_InputIterator>::reference>::value>::type* = 0);
533
+ template <class _InputIterator>
534
+ vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
535
+ typename enable_if<__is_input_iterator <_InputIterator>::value &&
536
+ !__is_forward_iterator<_InputIterator>::value &&
537
+ is_constructible<
538
+ value_type,
539
+ typename iterator_traits<_InputIterator>::reference>::value>::type* = 0);
540
+ template <class _ForwardIterator>
541
+ vector(_ForwardIterator __first, _ForwardIterator __last,
542
+ typename enable_if<__is_forward_iterator<_ForwardIterator>::value &&
543
+ is_constructible<
544
+ value_type,
545
+ typename iterator_traits<_ForwardIterator>::reference>::value>::type* = 0);
546
+ template <class _ForwardIterator>
547
+ vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
548
+ typename enable_if<__is_forward_iterator<_ForwardIterator>::value &&
549
+ is_constructible<
550
+ value_type,
551
+ typename iterator_traits<_ForwardIterator>::reference>::value>::type* = 0);
552
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
553
+ _LIBCPP_INLINE_VISIBILITY
554
+ vector(initializer_list<value_type> __il);
555
+ _LIBCPP_INLINE_VISIBILITY
556
+ vector(initializer_list<value_type> __il, const allocator_type& __a);
557
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
558
+ #if _LIBCPP_DEBUG_LEVEL >= 2
559
+ _LIBCPP_INLINE_VISIBILITY
560
+ ~vector()
561
+ {
562
+ __get_db()->__erase_c(this);
563
+ }
564
+ #endif
565
+
566
+ vector(const vector& __x);
567
+ vector(const vector& __x, const allocator_type& __a);
568
+ _LIBCPP_INLINE_VISIBILITY
569
+ vector& operator=(const vector& __x);
570
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
571
+ _LIBCPP_INLINE_VISIBILITY
572
+ vector(vector&& __x)
573
+ _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
574
+ _LIBCPP_INLINE_VISIBILITY
575
+ vector(vector&& __x, const allocator_type& __a);
576
+ _LIBCPP_INLINE_VISIBILITY
577
+ vector& operator=(vector&& __x)
578
+ _NOEXCEPT_(
579
+ __alloc_traits::propagate_on_container_move_assignment::value &&
580
+ is_nothrow_move_assignable<allocator_type>::value);
581
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
582
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
583
+ _LIBCPP_INLINE_VISIBILITY
584
+ vector& operator=(initializer_list<value_type> __il)
585
+ {assign(__il.begin(), __il.end()); return *this;}
586
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
587
+
588
+ template <class _InputIterator>
589
+ typename enable_if
590
+ <
591
+ __is_input_iterator <_InputIterator>::value &&
592
+ !__is_forward_iterator<_InputIterator>::value &&
593
+ is_constructible<
594
+ value_type,
595
+ typename iterator_traits<_InputIterator>::reference>::value,
596
+ void
597
+ >::type
598
+ assign(_InputIterator __first, _InputIterator __last);
599
+ template <class _ForwardIterator>
600
+ typename enable_if
601
+ <
602
+ __is_forward_iterator<_ForwardIterator>::value &&
603
+ is_constructible<
604
+ value_type,
605
+ typename iterator_traits<_ForwardIterator>::reference>::value,
606
+ void
607
+ >::type
608
+ assign(_ForwardIterator __first, _ForwardIterator __last);
609
+
610
+ void assign(size_type __n, const_reference __u);
611
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
612
+ _LIBCPP_INLINE_VISIBILITY
613
+ void assign(initializer_list<value_type> __il)
614
+ {assign(__il.begin(), __il.end());}
615
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
616
+
617
+ _LIBCPP_INLINE_VISIBILITY
618
+ allocator_type get_allocator() const _NOEXCEPT
619
+ {return this->__alloc();}
620
+
621
+ _LIBCPP_INLINE_VISIBILITY iterator begin() _NOEXCEPT;
622
+ _LIBCPP_INLINE_VISIBILITY const_iterator begin() const _NOEXCEPT;
623
+ _LIBCPP_INLINE_VISIBILITY iterator end() _NOEXCEPT;
624
+ _LIBCPP_INLINE_VISIBILITY const_iterator end() const _NOEXCEPT;
625
+
626
+ _LIBCPP_INLINE_VISIBILITY
627
+ reverse_iterator rbegin() _NOEXCEPT
628
+ {return reverse_iterator(end());}
629
+ _LIBCPP_INLINE_VISIBILITY
630
+ const_reverse_iterator rbegin() const _NOEXCEPT
631
+ {return const_reverse_iterator(end());}
632
+ _LIBCPP_INLINE_VISIBILITY
633
+ reverse_iterator rend() _NOEXCEPT
634
+ {return reverse_iterator(begin());}
635
+ _LIBCPP_INLINE_VISIBILITY
636
+ const_reverse_iterator rend() const _NOEXCEPT
637
+ {return const_reverse_iterator(begin());}
638
+
639
+ _LIBCPP_INLINE_VISIBILITY
640
+ const_iterator cbegin() const _NOEXCEPT
641
+ {return begin();}
642
+ _LIBCPP_INLINE_VISIBILITY
643
+ const_iterator cend() const _NOEXCEPT
644
+ {return end();}
645
+ _LIBCPP_INLINE_VISIBILITY
646
+ const_reverse_iterator crbegin() const _NOEXCEPT
647
+ {return rbegin();}
648
+ _LIBCPP_INLINE_VISIBILITY
649
+ const_reverse_iterator crend() const _NOEXCEPT
650
+ {return rend();}
651
+
652
+ _LIBCPP_INLINE_VISIBILITY
653
+ size_type size() const _NOEXCEPT
654
+ {return static_cast<size_type>(this->__end_ - this->__begin_);}
655
+ _LIBCPP_INLINE_VISIBILITY
656
+ size_type capacity() const _NOEXCEPT
657
+ {return __base::capacity();}
658
+ _LIBCPP_INLINE_VISIBILITY
659
+ bool empty() const _NOEXCEPT
660
+ {return this->__begin_ == this->__end_;}
661
+ size_type max_size() const _NOEXCEPT;
662
+ void reserve(size_type __n);
663
+ void shrink_to_fit() _NOEXCEPT;
664
+
665
+ _LIBCPP_INLINE_VISIBILITY reference operator[](size_type __n);
666
+ _LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __n) const;
667
+ reference at(size_type __n);
668
+ const_reference at(size_type __n) const;
669
+
670
+ _LIBCPP_INLINE_VISIBILITY reference front()
671
+ {
672
+ _LIBCPP_ASSERT(!empty(), "front() called for empty vector");
673
+ return *this->__begin_;
674
+ }
675
+ _LIBCPP_INLINE_VISIBILITY const_reference front() const
676
+ {
677
+ _LIBCPP_ASSERT(!empty(), "front() called for empty vector");
678
+ return *this->__begin_;
679
+ }
680
+ _LIBCPP_INLINE_VISIBILITY reference back()
681
+ {
682
+ _LIBCPP_ASSERT(!empty(), "back() called for empty vector");
683
+ return *(this->__end_ - 1);
684
+ }
685
+ _LIBCPP_INLINE_VISIBILITY const_reference back() const
686
+ {
687
+ _LIBCPP_ASSERT(!empty(), "back() called for empty vector");
688
+ return *(this->__end_ - 1);
689
+ }
690
+
691
+ _LIBCPP_INLINE_VISIBILITY
692
+ value_type* data() _NOEXCEPT
693
+ {return _VSTD::__to_raw_pointer(this->__begin_);}
694
+ _LIBCPP_INLINE_VISIBILITY
695
+ const value_type* data() const _NOEXCEPT
696
+ {return _VSTD::__to_raw_pointer(this->__begin_);}
697
+
698
+ _LIBCPP_INLINE_VISIBILITY void push_back(const_reference __x);
699
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
700
+ _LIBCPP_INLINE_VISIBILITY void push_back(value_type&& __x);
701
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
702
+ template <class... _Args>
703
+ void emplace_back(_Args&&... __args);
704
+ #endif // _LIBCPP_HAS_NO_VARIADICS
705
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
706
+ void pop_back();
707
+
708
+ iterator insert(const_iterator __position, const_reference __x);
709
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
710
+ iterator insert(const_iterator __position, value_type&& __x);
711
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
712
+ template <class... _Args>
713
+ iterator emplace(const_iterator __position, _Args&&... __args);
714
+ #endif // _LIBCPP_HAS_NO_VARIADICS
715
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
716
+ iterator insert(const_iterator __position, size_type __n, const_reference __x);
717
+ template <class _InputIterator>
718
+ typename enable_if
719
+ <
720
+ __is_input_iterator <_InputIterator>::value &&
721
+ !__is_forward_iterator<_InputIterator>::value &&
722
+ is_constructible<
723
+ value_type,
724
+ typename iterator_traits<_InputIterator>::reference>::value,
725
+ iterator
726
+ >::type
727
+ insert(const_iterator __position, _InputIterator __first, _InputIterator __last);
728
+ template <class _ForwardIterator>
729
+ typename enable_if
730
+ <
731
+ __is_forward_iterator<_ForwardIterator>::value &&
732
+ is_constructible<
733
+ value_type,
734
+ typename iterator_traits<_ForwardIterator>::reference>::value,
735
+ iterator
736
+ >::type
737
+ insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last);
738
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
739
+ _LIBCPP_INLINE_VISIBILITY
740
+ iterator insert(const_iterator __position, initializer_list<value_type> __il)
741
+ {return insert(__position, __il.begin(), __il.end());}
742
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
743
+
744
+ _LIBCPP_INLINE_VISIBILITY iterator erase(const_iterator __position);
745
+ iterator erase(const_iterator __first, const_iterator __last);
746
+
747
+ _LIBCPP_INLINE_VISIBILITY
748
+ void clear() _NOEXCEPT
749
+ {
750
+ __base::clear();
751
+ __invalidate_all_iterators();
752
+ }
753
+
754
+ void resize(size_type __sz);
755
+ void resize(size_type __sz, const_reference __x);
756
+
757
+ void swap(vector&)
758
+ _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
759
+ __is_nothrow_swappable<allocator_type>::value);
760
+
761
+ bool __invariants() const;
762
+
763
+ #if _LIBCPP_DEBUG_LEVEL >= 2
764
+
765
+ bool __dereferenceable(const const_iterator* __i) const;
766
+ bool __decrementable(const const_iterator* __i) const;
767
+ bool __addable(const const_iterator* __i, ptrdiff_t __n) const;
768
+ bool __subscriptable(const const_iterator* __i, ptrdiff_t __n) const;
769
+
770
+ #endif // _LIBCPP_DEBUG_LEVEL >= 2
771
+
772
+ private:
773
+ _LIBCPP_INLINE_VISIBILITY void __invalidate_all_iterators();
774
+ void allocate(size_type __n);
775
+ void deallocate() _NOEXCEPT;
776
+ _LIBCPP_INLINE_VISIBILITY size_type __recommend(size_type __new_size) const;
777
+ void __construct_at_end(size_type __n);
778
+ void __construct_at_end(size_type __n, const_reference __x);
779
+ template <class _ForwardIterator>
780
+ typename enable_if
781
+ <
782
+ __is_forward_iterator<_ForwardIterator>::value,
783
+ void
784
+ >::type
785
+ __construct_at_end(_ForwardIterator __first, _ForwardIterator __last);
786
+ void __move_construct_at_end(pointer __first, pointer __last);
787
+ void __append(size_type __n);
788
+ void __append(size_type __n, const_reference __x);
789
+ _LIBCPP_INLINE_VISIBILITY
790
+ iterator __make_iter(pointer __p) _NOEXCEPT;
791
+ _LIBCPP_INLINE_VISIBILITY
792
+ const_iterator __make_iter(const_pointer __p) const _NOEXCEPT;
793
+ void __swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v);
794
+ pointer __swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v, pointer __p);
795
+ void __move_range(pointer __from_s, pointer __from_e, pointer __to);
796
+ void __move_assign(vector& __c, true_type)
797
+ _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value);
798
+ void __move_assign(vector& __c, false_type);
799
+ _LIBCPP_INLINE_VISIBILITY
800
+ void __destruct_at_end(const_pointer __new_last) _NOEXCEPT
801
+ {
802
+ #if _LIBCPP_DEBUG_LEVEL >= 2
803
+ __c_node* __c = __get_db()->__find_c_and_lock(this);
804
+ for (__i_node** __p = __c->end_; __p != __c->beg_; )
805
+ {
806
+ --__p;
807
+ const_iterator* __i = static_cast<const_iterator*>((*__p)->__i_);
808
+ if (__i->base() > __new_last)
809
+ {
810
+ (*__p)->__c_ = nullptr;
811
+ if (--__c->end_ != __p)
812
+ memmove(__p, __p+1, (__c->end_ - __p)*sizeof(__i_node*));
813
+ }
814
+ }
815
+ __get_db()->unlock();
816
+ #endif
817
+ __base::__destruct_at_end(__new_last);
818
+ }
819
+ template <class _Up>
820
+ void
821
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
822
+ __push_back_slow_path(_Up&& __x);
823
+ #else
824
+ __push_back_slow_path(_Up& __x);
825
+ #endif
826
+ #if !defined(_LIBCPP_HAS_NO_VARIADICS) && !defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES)
827
+ template <class... _Args>
828
+ void
829
+ __emplace_back_slow_path(_Args&&... __args);
830
+ #endif
831
+ };
832
+
833
+ template <class _Tp, class _Allocator>
834
+ void
835
+ vector<_Tp, _Allocator>::__swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v)
836
+ {
837
+ __alloc_traits::__construct_backward(this->__alloc(), this->__begin_, this->__end_, __v.__begin_);
838
+ _VSTD::swap(this->__begin_, __v.__begin_);
839
+ _VSTD::swap(this->__end_, __v.__end_);
840
+ _VSTD::swap(this->__end_cap(), __v.__end_cap());
841
+ __v.__first_ = __v.__begin_;
842
+ __invalidate_all_iterators();
843
+ }
844
+
845
+ template <class _Tp, class _Allocator>
846
+ typename vector<_Tp, _Allocator>::pointer
847
+ vector<_Tp, _Allocator>::__swap_out_circular_buffer(__split_buffer<value_type, allocator_type&>& __v, pointer __p)
848
+ {
849
+ pointer __r = __v.__begin_;
850
+ __alloc_traits::__construct_backward(this->__alloc(), this->__begin_, __p, __v.__begin_);
851
+ __alloc_traits::__construct_forward(this->__alloc(), __p, this->__end_, __v.__end_);
852
+ _VSTD::swap(this->__begin_, __v.__begin_);
853
+ _VSTD::swap(this->__end_, __v.__end_);
854
+ _VSTD::swap(this->__end_cap(), __v.__end_cap());
855
+ __v.__first_ = __v.__begin_;
856
+ __invalidate_all_iterators();
857
+ return __r;
858
+ }
859
+
860
+ // Allocate space for __n objects
861
+ // throws length_error if __n > max_size()
862
+ // throws (probably bad_alloc) if memory run out
863
+ // Precondition: __begin_ == __end_ == __end_cap() == 0
864
+ // Precondition: __n > 0
865
+ // Postcondition: capacity() == __n
866
+ // Postcondition: size() == 0
867
+ template <class _Tp, class _Allocator>
868
+ void
869
+ vector<_Tp, _Allocator>::allocate(size_type __n)
870
+ {
871
+ if (__n > max_size())
872
+ this->__throw_length_error();
873
+ this->__begin_ = this->__end_ = __alloc_traits::allocate(this->__alloc(), __n);
874
+ this->__end_cap() = this->__begin_ + __n;
875
+ }
876
+
877
+ template <class _Tp, class _Allocator>
878
+ void
879
+ vector<_Tp, _Allocator>::deallocate() _NOEXCEPT
880
+ {
881
+ if (this->__begin_ != 0)
882
+ {
883
+ clear();
884
+ __alloc_traits::deallocate(this->__alloc(), this->__begin_, capacity());
885
+ this->__begin_ = this->__end_ = this->__end_cap() = 0;
886
+ }
887
+ }
888
+
889
+ template <class _Tp, class _Allocator>
890
+ typename vector<_Tp, _Allocator>::size_type
891
+ vector<_Tp, _Allocator>::max_size() const _NOEXCEPT
892
+ {
893
+ return _VSTD::min<size_type>(__alloc_traits::max_size(this->__alloc()), numeric_limits<size_type>::max() / 2); // end() >= begin(), always
894
+ }
895
+
896
+ // Precondition: __new_size > capacity()
897
+ template <class _Tp, class _Allocator>
898
+ _LIBCPP_INLINE_VISIBILITY inline
899
+ typename vector<_Tp, _Allocator>::size_type
900
+ vector<_Tp, _Allocator>::__recommend(size_type __new_size) const
901
+ {
902
+ const size_type __ms = max_size();
903
+ if (__new_size > __ms)
904
+ this->__throw_length_error();
905
+ const size_type __cap = capacity();
906
+ if (__cap >= __ms / 2)
907
+ return __ms;
908
+ return _VSTD::max<size_type>(2*__cap, __new_size);
909
+ }
910
+
911
+ // Default constructs __n objects starting at __end_
912
+ // throws if construction throws
913
+ // Precondition: __n > 0
914
+ // Precondition: size() + __n <= capacity()
915
+ // Postcondition: size() == size() + __n
916
+ template <class _Tp, class _Allocator>
917
+ void
918
+ vector<_Tp, _Allocator>::__construct_at_end(size_type __n)
919
+ {
920
+ allocator_type& __a = this->__alloc();
921
+ do
922
+ {
923
+ __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_));
924
+ ++this->__end_;
925
+ --__n;
926
+ } while (__n > 0);
927
+ }
928
+
929
+ // Copy constructs __n objects starting at __end_ from __x
930
+ // throws if construction throws
931
+ // Precondition: __n > 0
932
+ // Precondition: size() + __n <= capacity()
933
+ // Postcondition: size() == old size() + __n
934
+ // Postcondition: [i] == __x for all i in [size() - __n, __n)
935
+ template <class _Tp, class _Allocator>
936
+ _LIBCPP_INLINE_VISIBILITY inline
937
+ void
938
+ vector<_Tp, _Allocator>::__construct_at_end(size_type __n, const_reference __x)
939
+ {
940
+ allocator_type& __a = this->__alloc();
941
+ do
942
+ {
943
+ __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_), __x);
944
+ ++this->__end_;
945
+ --__n;
946
+ } while (__n > 0);
947
+ }
948
+
949
+ template <class _Tp, class _Allocator>
950
+ template <class _ForwardIterator>
951
+ typename enable_if
952
+ <
953
+ __is_forward_iterator<_ForwardIterator>::value,
954
+ void
955
+ >::type
956
+ vector<_Tp, _Allocator>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last)
957
+ {
958
+ allocator_type& __a = this->__alloc();
959
+ for (; __first != __last; ++__first)
960
+ {
961
+ __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_), *__first);
962
+ ++this->__end_;
963
+ }
964
+ }
965
+
966
+ template <class _Tp, class _Allocator>
967
+ void
968
+ vector<_Tp, _Allocator>::__move_construct_at_end(pointer __first, pointer __last)
969
+ {
970
+ allocator_type& __a = this->__alloc();
971
+ for (; __first != __last; ++__first)
972
+ {
973
+ __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_),
974
+ _VSTD::move(*__first));
975
+ ++this->__end_;
976
+ }
977
+ }
978
+
979
+ // Default constructs __n objects starting at __end_
980
+ // throws if construction throws
981
+ // Postcondition: size() == size() + __n
982
+ // Exception safety: strong.
983
+ template <class _Tp, class _Allocator>
984
+ void
985
+ vector<_Tp, _Allocator>::__append(size_type __n)
986
+ {
987
+ if (static_cast<size_type>(this->__end_cap() - this->__end_) >= __n)
988
+ this->__construct_at_end(__n);
989
+ else
990
+ {
991
+ allocator_type& __a = this->__alloc();
992
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + __n), size(), __a);
993
+ __v.__construct_at_end(__n);
994
+ __swap_out_circular_buffer(__v);
995
+ }
996
+ }
997
+
998
+ // Default constructs __n objects starting at __end_
999
+ // throws if construction throws
1000
+ // Postcondition: size() == size() + __n
1001
+ // Exception safety: strong.
1002
+ template <class _Tp, class _Allocator>
1003
+ void
1004
+ vector<_Tp, _Allocator>::__append(size_type __n, const_reference __x)
1005
+ {
1006
+ if (static_cast<size_type>(this->__end_cap() - this->__end_) >= __n)
1007
+ this->__construct_at_end(__n, __x);
1008
+ else
1009
+ {
1010
+ allocator_type& __a = this->__alloc();
1011
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + __n), size(), __a);
1012
+ __v.__construct_at_end(__n, __x);
1013
+ __swap_out_circular_buffer(__v);
1014
+ }
1015
+ }
1016
+
1017
+ template <class _Tp, class _Allocator>
1018
+ vector<_Tp, _Allocator>::vector(size_type __n)
1019
+ {
1020
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1021
+ __get_db()->__insert_c(this);
1022
+ #endif
1023
+ if (__n > 0)
1024
+ {
1025
+ allocate(__n);
1026
+ __construct_at_end(__n);
1027
+ }
1028
+ }
1029
+
1030
+ template <class _Tp, class _Allocator>
1031
+ vector<_Tp, _Allocator>::vector(size_type __n, const_reference __x)
1032
+ {
1033
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1034
+ __get_db()->__insert_c(this);
1035
+ #endif
1036
+ if (__n > 0)
1037
+ {
1038
+ allocate(__n);
1039
+ __construct_at_end(__n, __x);
1040
+ }
1041
+ }
1042
+
1043
+ template <class _Tp, class _Allocator>
1044
+ vector<_Tp, _Allocator>::vector(size_type __n, const_reference __x, const allocator_type& __a)
1045
+ : __base(__a)
1046
+ {
1047
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1048
+ __get_db()->__insert_c(this);
1049
+ #endif
1050
+ if (__n > 0)
1051
+ {
1052
+ allocate(__n);
1053
+ __construct_at_end(__n, __x);
1054
+ }
1055
+ }
1056
+
1057
+ template <class _Tp, class _Allocator>
1058
+ template <class _InputIterator>
1059
+ vector<_Tp, _Allocator>::vector(_InputIterator __first, _InputIterator __last,
1060
+ typename enable_if<__is_input_iterator <_InputIterator>::value &&
1061
+ !__is_forward_iterator<_InputIterator>::value &&
1062
+ is_constructible<
1063
+ value_type,
1064
+ typename iterator_traits<_InputIterator>::reference>::value>::type*)
1065
+ {
1066
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1067
+ __get_db()->__insert_c(this);
1068
+ #endif
1069
+ for (; __first != __last; ++__first)
1070
+ push_back(*__first);
1071
+ }
1072
+
1073
+ template <class _Tp, class _Allocator>
1074
+ template <class _InputIterator>
1075
+ vector<_Tp, _Allocator>::vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
1076
+ typename enable_if<__is_input_iterator <_InputIterator>::value &&
1077
+ !__is_forward_iterator<_InputIterator>::value &&
1078
+ is_constructible<
1079
+ value_type,
1080
+ typename iterator_traits<_InputIterator>::reference>::value>::type*)
1081
+ : __base(__a)
1082
+ {
1083
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1084
+ __get_db()->__insert_c(this);
1085
+ #endif
1086
+ for (; __first != __last; ++__first)
1087
+ push_back(*__first);
1088
+ }
1089
+
1090
+ template <class _Tp, class _Allocator>
1091
+ template <class _ForwardIterator>
1092
+ vector<_Tp, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last,
1093
+ typename enable_if<__is_forward_iterator<_ForwardIterator>::value &&
1094
+ is_constructible<
1095
+ value_type,
1096
+ typename iterator_traits<_ForwardIterator>::reference>::value>::type*)
1097
+ {
1098
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1099
+ __get_db()->__insert_c(this);
1100
+ #endif
1101
+ size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
1102
+ if (__n > 0)
1103
+ {
1104
+ allocate(__n);
1105
+ __construct_at_end(__first, __last);
1106
+ }
1107
+ }
1108
+
1109
+ template <class _Tp, class _Allocator>
1110
+ template <class _ForwardIterator>
1111
+ vector<_Tp, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
1112
+ typename enable_if<__is_forward_iterator<_ForwardIterator>::value &&
1113
+ is_constructible<
1114
+ value_type,
1115
+ typename iterator_traits<_ForwardIterator>::reference>::value>::type*)
1116
+ : __base(__a)
1117
+ {
1118
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1119
+ __get_db()->__insert_c(this);
1120
+ #endif
1121
+ size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
1122
+ if (__n > 0)
1123
+ {
1124
+ allocate(__n);
1125
+ __construct_at_end(__first, __last);
1126
+ }
1127
+ }
1128
+
1129
+ template <class _Tp, class _Allocator>
1130
+ vector<_Tp, _Allocator>::vector(const vector& __x)
1131
+ : __base(__alloc_traits::select_on_container_copy_construction(__x.__alloc()))
1132
+ {
1133
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1134
+ __get_db()->__insert_c(this);
1135
+ #endif
1136
+ size_type __n = __x.size();
1137
+ if (__n > 0)
1138
+ {
1139
+ allocate(__n);
1140
+ __construct_at_end(__x.__begin_, __x.__end_);
1141
+ }
1142
+ }
1143
+
1144
+ template <class _Tp, class _Allocator>
1145
+ vector<_Tp, _Allocator>::vector(const vector& __x, const allocator_type& __a)
1146
+ : __base(__a)
1147
+ {
1148
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1149
+ __get_db()->__insert_c(this);
1150
+ #endif
1151
+ size_type __n = __x.size();
1152
+ if (__n > 0)
1153
+ {
1154
+ allocate(__n);
1155
+ __construct_at_end(__x.__begin_, __x.__end_);
1156
+ }
1157
+ }
1158
+
1159
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1160
+
1161
+ template <class _Tp, class _Allocator>
1162
+ _LIBCPP_INLINE_VISIBILITY inline
1163
+ vector<_Tp, _Allocator>::vector(vector&& __x)
1164
+ _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
1165
+ : __base(_VSTD::move(__x.__alloc()))
1166
+ {
1167
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1168
+ __get_db()->__insert_c(this);
1169
+ __get_db()->swap(this, &__x);
1170
+ #endif
1171
+ this->__begin_ = __x.__begin_;
1172
+ this->__end_ = __x.__end_;
1173
+ this->__end_cap() = __x.__end_cap();
1174
+ __x.__begin_ = __x.__end_ = __x.__end_cap() = 0;
1175
+ }
1176
+
1177
+ template <class _Tp, class _Allocator>
1178
+ _LIBCPP_INLINE_VISIBILITY inline
1179
+ vector<_Tp, _Allocator>::vector(vector&& __x, const allocator_type& __a)
1180
+ : __base(__a)
1181
+ {
1182
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1183
+ __get_db()->__insert_c(this);
1184
+ #endif
1185
+ if (__a == __x.__alloc())
1186
+ {
1187
+ this->__begin_ = __x.__begin_;
1188
+ this->__end_ = __x.__end_;
1189
+ this->__end_cap() = __x.__end_cap();
1190
+ __x.__begin_ = __x.__end_ = __x.__end_cap() = nullptr;
1191
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1192
+ __get_db()->swap(this, &__x);
1193
+ #endif
1194
+ }
1195
+ else
1196
+ {
1197
+ typedef move_iterator<iterator> _Ip;
1198
+ assign(_Ip(__x.begin()), _Ip(__x.end()));
1199
+ }
1200
+ }
1201
+
1202
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1203
+
1204
+ template <class _Tp, class _Allocator>
1205
+ _LIBCPP_INLINE_VISIBILITY inline
1206
+ vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il)
1207
+ {
1208
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1209
+ __get_db()->__insert_c(this);
1210
+ #endif
1211
+ if (__il.size() > 0)
1212
+ {
1213
+ allocate(__il.size());
1214
+ __construct_at_end(__il.begin(), __il.end());
1215
+ }
1216
+ }
1217
+
1218
+ template <class _Tp, class _Allocator>
1219
+ _LIBCPP_INLINE_VISIBILITY inline
1220
+ vector<_Tp, _Allocator>::vector(initializer_list<value_type> __il, const allocator_type& __a)
1221
+ : __base(__a)
1222
+ {
1223
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1224
+ __get_db()->__insert_c(this);
1225
+ #endif
1226
+ if (__il.size() > 0)
1227
+ {
1228
+ allocate(__il.size());
1229
+ __construct_at_end(__il.begin(), __il.end());
1230
+ }
1231
+ }
1232
+
1233
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
1234
+
1235
+ template <class _Tp, class _Allocator>
1236
+ _LIBCPP_INLINE_VISIBILITY inline
1237
+ vector<_Tp, _Allocator>&
1238
+ vector<_Tp, _Allocator>::operator=(vector&& __x)
1239
+ _NOEXCEPT_(
1240
+ __alloc_traits::propagate_on_container_move_assignment::value &&
1241
+ is_nothrow_move_assignable<allocator_type>::value)
1242
+ {
1243
+ __move_assign(__x, integral_constant<bool,
1244
+ __alloc_traits::propagate_on_container_move_assignment::value>());
1245
+ return *this;
1246
+ }
1247
+
1248
+ template <class _Tp, class _Allocator>
1249
+ void
1250
+ vector<_Tp, _Allocator>::__move_assign(vector& __c, false_type)
1251
+ {
1252
+ if (__base::__alloc() != __c.__alloc())
1253
+ {
1254
+ typedef move_iterator<iterator> _Ip;
1255
+ assign(_Ip(__c.begin()), _Ip(__c.end()));
1256
+ }
1257
+ else
1258
+ __move_assign(__c, true_type());
1259
+ }
1260
+
1261
+ template <class _Tp, class _Allocator>
1262
+ void
1263
+ vector<_Tp, _Allocator>::__move_assign(vector& __c, true_type)
1264
+ _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
1265
+ {
1266
+ deallocate();
1267
+ this->__begin_ = __c.__begin_;
1268
+ this->__end_ = __c.__end_;
1269
+ this->__end_cap() = __c.__end_cap();
1270
+ __base::__move_assign_alloc(__c);
1271
+ __c.__begin_ = __c.__end_ = __c.__end_cap() = nullptr;
1272
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1273
+ __get_db()->swap(this, &__c);
1274
+ #endif
1275
+ }
1276
+
1277
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1278
+
1279
+ template <class _Tp, class _Allocator>
1280
+ _LIBCPP_INLINE_VISIBILITY inline
1281
+ vector<_Tp, _Allocator>&
1282
+ vector<_Tp, _Allocator>::operator=(const vector& __x)
1283
+ {
1284
+ if (this != &__x)
1285
+ {
1286
+ __base::__copy_assign_alloc(__x);
1287
+ assign(__x.__begin_, __x.__end_);
1288
+ }
1289
+ return *this;
1290
+ }
1291
+
1292
+ template <class _Tp, class _Allocator>
1293
+ template <class _InputIterator>
1294
+ typename enable_if
1295
+ <
1296
+ __is_input_iterator <_InputIterator>::value &&
1297
+ !__is_forward_iterator<_InputIterator>::value &&
1298
+ is_constructible<
1299
+ _Tp,
1300
+ typename iterator_traits<_InputIterator>::reference>::value,
1301
+ void
1302
+ >::type
1303
+ vector<_Tp, _Allocator>::assign(_InputIterator __first, _InputIterator __last)
1304
+ {
1305
+ clear();
1306
+ for (; __first != __last; ++__first)
1307
+ push_back(*__first);
1308
+ }
1309
+
1310
+ template <class _Tp, class _Allocator>
1311
+ template <class _ForwardIterator>
1312
+ typename enable_if
1313
+ <
1314
+ __is_forward_iterator<_ForwardIterator>::value &&
1315
+ is_constructible<
1316
+ _Tp,
1317
+ typename iterator_traits<_ForwardIterator>::reference>::value,
1318
+ void
1319
+ >::type
1320
+ vector<_Tp, _Allocator>::assign(_ForwardIterator __first, _ForwardIterator __last)
1321
+ {
1322
+ typename iterator_traits<_ForwardIterator>::difference_type __new_size = _VSTD::distance(__first, __last);
1323
+ if (static_cast<size_type>(__new_size) <= capacity())
1324
+ {
1325
+ _ForwardIterator __mid = __last;
1326
+ bool __growing = false;
1327
+ if (static_cast<size_type>(__new_size) > size())
1328
+ {
1329
+ __growing = true;
1330
+ __mid = __first;
1331
+ _VSTD::advance(__mid, size());
1332
+ }
1333
+ pointer __m = _VSTD::copy(__first, __mid, this->__begin_);
1334
+ if (__growing)
1335
+ __construct_at_end(__mid, __last);
1336
+ else
1337
+ this->__destruct_at_end(__m);
1338
+ }
1339
+ else
1340
+ {
1341
+ deallocate();
1342
+ allocate(__recommend(static_cast<size_type>(__new_size)));
1343
+ __construct_at_end(__first, __last);
1344
+ }
1345
+ }
1346
+
1347
+ template <class _Tp, class _Allocator>
1348
+ void
1349
+ vector<_Tp, _Allocator>::assign(size_type __n, const_reference __u)
1350
+ {
1351
+ if (__n <= capacity())
1352
+ {
1353
+ size_type __s = size();
1354
+ _VSTD::fill_n(this->__begin_, _VSTD::min(__n, __s), __u);
1355
+ if (__n > __s)
1356
+ __construct_at_end(__n - __s, __u);
1357
+ else
1358
+ this->__destruct_at_end(this->__begin_ + __n);
1359
+ }
1360
+ else
1361
+ {
1362
+ deallocate();
1363
+ allocate(__recommend(static_cast<size_type>(__n)));
1364
+ __construct_at_end(__n, __u);
1365
+ }
1366
+ }
1367
+
1368
+ template <class _Tp, class _Allocator>
1369
+ _LIBCPP_INLINE_VISIBILITY inline
1370
+ typename vector<_Tp, _Allocator>::iterator
1371
+ vector<_Tp, _Allocator>::__make_iter(pointer __p) _NOEXCEPT
1372
+ {
1373
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1374
+ return iterator(this, __p);
1375
+ #else
1376
+ return iterator(__p);
1377
+ #endif
1378
+ }
1379
+
1380
+ template <class _Tp, class _Allocator>
1381
+ _LIBCPP_INLINE_VISIBILITY inline
1382
+ typename vector<_Tp, _Allocator>::const_iterator
1383
+ vector<_Tp, _Allocator>::__make_iter(const_pointer __p) const _NOEXCEPT
1384
+ {
1385
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1386
+ return const_iterator(this, __p);
1387
+ #else
1388
+ return const_iterator(__p);
1389
+ #endif
1390
+ }
1391
+
1392
+ template <class _Tp, class _Allocator>
1393
+ _LIBCPP_INLINE_VISIBILITY inline
1394
+ typename vector<_Tp, _Allocator>::iterator
1395
+ vector<_Tp, _Allocator>::begin() _NOEXCEPT
1396
+ {
1397
+ return __make_iter(this->__begin_);
1398
+ }
1399
+
1400
+ template <class _Tp, class _Allocator>
1401
+ _LIBCPP_INLINE_VISIBILITY inline
1402
+ typename vector<_Tp, _Allocator>::const_iterator
1403
+ vector<_Tp, _Allocator>::begin() const _NOEXCEPT
1404
+ {
1405
+ return __make_iter(this->__begin_);
1406
+ }
1407
+
1408
+ template <class _Tp, class _Allocator>
1409
+ _LIBCPP_INLINE_VISIBILITY inline
1410
+ typename vector<_Tp, _Allocator>::iterator
1411
+ vector<_Tp, _Allocator>::end() _NOEXCEPT
1412
+ {
1413
+ return __make_iter(this->__end_);
1414
+ }
1415
+
1416
+ template <class _Tp, class _Allocator>
1417
+ _LIBCPP_INLINE_VISIBILITY inline
1418
+ typename vector<_Tp, _Allocator>::const_iterator
1419
+ vector<_Tp, _Allocator>::end() const _NOEXCEPT
1420
+ {
1421
+ return __make_iter(this->__end_);
1422
+ }
1423
+
1424
+ template <class _Tp, class _Allocator>
1425
+ _LIBCPP_INLINE_VISIBILITY inline
1426
+ typename vector<_Tp, _Allocator>::reference
1427
+ vector<_Tp, _Allocator>::operator[](size_type __n)
1428
+ {
1429
+ _LIBCPP_ASSERT(__n < size(), "vector[] index out of bounds");
1430
+ return this->__begin_[__n];
1431
+ }
1432
+
1433
+ template <class _Tp, class _Allocator>
1434
+ _LIBCPP_INLINE_VISIBILITY inline
1435
+ typename vector<_Tp, _Allocator>::const_reference
1436
+ vector<_Tp, _Allocator>::operator[](size_type __n) const
1437
+ {
1438
+ _LIBCPP_ASSERT(__n < size(), "vector[] index out of bounds");
1439
+ return this->__begin_[__n];
1440
+ }
1441
+
1442
+ template <class _Tp, class _Allocator>
1443
+ typename vector<_Tp, _Allocator>::reference
1444
+ vector<_Tp, _Allocator>::at(size_type __n)
1445
+ {
1446
+ if (__n >= size())
1447
+ this->__throw_out_of_range();
1448
+ return this->__begin_[__n];
1449
+ }
1450
+
1451
+ template <class _Tp, class _Allocator>
1452
+ typename vector<_Tp, _Allocator>::const_reference
1453
+ vector<_Tp, _Allocator>::at(size_type __n) const
1454
+ {
1455
+ if (__n >= size())
1456
+ this->__throw_out_of_range();
1457
+ return this->__begin_[__n];
1458
+ }
1459
+
1460
+ template <class _Tp, class _Allocator>
1461
+ void
1462
+ vector<_Tp, _Allocator>::reserve(size_type __n)
1463
+ {
1464
+ if (__n > capacity())
1465
+ {
1466
+ allocator_type& __a = this->__alloc();
1467
+ __split_buffer<value_type, allocator_type&> __v(__n, size(), __a);
1468
+ __swap_out_circular_buffer(__v);
1469
+ }
1470
+ }
1471
+
1472
+ template <class _Tp, class _Allocator>
1473
+ void
1474
+ vector<_Tp, _Allocator>::shrink_to_fit() _NOEXCEPT
1475
+ {
1476
+ if (capacity() > size())
1477
+ {
1478
+ #ifndef _LIBCPP_NO_EXCEPTIONS
1479
+ try
1480
+ {
1481
+ #endif // _LIBCPP_NO_EXCEPTIONS
1482
+ allocator_type& __a = this->__alloc();
1483
+ __split_buffer<value_type, allocator_type&> __v(size(), size(), __a);
1484
+ __swap_out_circular_buffer(__v);
1485
+ #ifndef _LIBCPP_NO_EXCEPTIONS
1486
+ }
1487
+ catch (...)
1488
+ {
1489
+ }
1490
+ #endif // _LIBCPP_NO_EXCEPTIONS
1491
+ }
1492
+ }
1493
+
1494
+ template <class _Tp, class _Allocator>
1495
+ template <class _Up>
1496
+ void
1497
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1498
+ vector<_Tp, _Allocator>::__push_back_slow_path(_Up&& __x)
1499
+ #else
1500
+ vector<_Tp, _Allocator>::__push_back_slow_path(_Up& __x)
1501
+ #endif
1502
+ {
1503
+ allocator_type& __a = this->__alloc();
1504
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), size(), __a);
1505
+ // __v.push_back(_VSTD::forward<_Up>(__x));
1506
+ __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(__v.__end_), _VSTD::forward<_Up>(__x));
1507
+ __v.__end_++;
1508
+ __swap_out_circular_buffer(__v);
1509
+ }
1510
+
1511
+ template <class _Tp, class _Allocator>
1512
+ _LIBCPP_INLINE_VISIBILITY inline
1513
+ void
1514
+ vector<_Tp, _Allocator>::push_back(const_reference __x)
1515
+ {
1516
+ if (this->__end_ != this->__end_cap())
1517
+ {
1518
+ __alloc_traits::construct(this->__alloc(),
1519
+ _VSTD::__to_raw_pointer(this->__end_), __x);
1520
+ ++this->__end_;
1521
+ }
1522
+ else
1523
+ __push_back_slow_path(__x);
1524
+ }
1525
+
1526
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1527
+
1528
+ template <class _Tp, class _Allocator>
1529
+ _LIBCPP_INLINE_VISIBILITY inline
1530
+ void
1531
+ vector<_Tp, _Allocator>::push_back(value_type&& __x)
1532
+ {
1533
+ if (this->__end_ < this->__end_cap())
1534
+ {
1535
+ __alloc_traits::construct(this->__alloc(),
1536
+ _VSTD::__to_raw_pointer(this->__end_),
1537
+ _VSTD::move(__x));
1538
+ ++this->__end_;
1539
+ }
1540
+ else
1541
+ __push_back_slow_path(_VSTD::move(__x));
1542
+ }
1543
+
1544
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
1545
+
1546
+ template <class _Tp, class _Allocator>
1547
+ template <class... _Args>
1548
+ void
1549
+ vector<_Tp, _Allocator>::__emplace_back_slow_path(_Args&&... __args)
1550
+ {
1551
+ allocator_type& __a = this->__alloc();
1552
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), size(), __a);
1553
+ // __v.emplace_back(_VSTD::forward<_Args>(__args)...);
1554
+ __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(__v.__end_), _VSTD::forward<_Args>(__args)...);
1555
+ __v.__end_++;
1556
+ __swap_out_circular_buffer(__v);
1557
+ }
1558
+
1559
+ template <class _Tp, class _Allocator>
1560
+ template <class... _Args>
1561
+ _LIBCPP_INLINE_VISIBILITY inline
1562
+ void
1563
+ vector<_Tp, _Allocator>::emplace_back(_Args&&... __args)
1564
+ {
1565
+ if (this->__end_ < this->__end_cap())
1566
+ {
1567
+ __alloc_traits::construct(this->__alloc(),
1568
+ _VSTD::__to_raw_pointer(this->__end_),
1569
+ _VSTD::forward<_Args>(__args)...);
1570
+ ++this->__end_;
1571
+ }
1572
+ else
1573
+ __emplace_back_slow_path(_VSTD::forward<_Args>(__args)...);
1574
+ }
1575
+
1576
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1577
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1578
+
1579
+ template <class _Tp, class _Allocator>
1580
+ _LIBCPP_INLINE_VISIBILITY inline
1581
+ void
1582
+ vector<_Tp, _Allocator>::pop_back()
1583
+ {
1584
+ _LIBCPP_ASSERT(!empty(), "vector::pop_back called for empty vector");
1585
+ this->__destruct_at_end(this->__end_ - 1);
1586
+ }
1587
+
1588
+ template <class _Tp, class _Allocator>
1589
+ _LIBCPP_INLINE_VISIBILITY inline
1590
+ typename vector<_Tp, _Allocator>::iterator
1591
+ vector<_Tp, _Allocator>::erase(const_iterator __position)
1592
+ {
1593
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1594
+ _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
1595
+ "vector::erase(iterator) called with an iterator not"
1596
+ " referring to this vector");
1597
+ #endif
1598
+ _LIBCPP_ASSERT(__position != end(),
1599
+ "vector::erase(iterator) called with a non-dereferenceable iterator");
1600
+ pointer __p = const_cast<pointer>(&*__position);
1601
+ iterator __r = __make_iter(__p);
1602
+ this->__destruct_at_end(_VSTD::move(__p + 1, this->__end_, __p));
1603
+ return __r;
1604
+ }
1605
+
1606
+ template <class _Tp, class _Allocator>
1607
+ typename vector<_Tp, _Allocator>::iterator
1608
+ vector<_Tp, _Allocator>::erase(const_iterator __first, const_iterator __last)
1609
+ {
1610
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1611
+ _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__first) == this,
1612
+ "vector::erase(iterator, iterator) called with an iterator not"
1613
+ " referring to this vector");
1614
+ #endif
1615
+ _LIBCPP_ASSERT(__first <= __last, "vector::erase(first, last) called with invalid range");
1616
+ pointer __p = this->__begin_ + (__first - begin());
1617
+ iterator __r = __make_iter(__p);
1618
+ this->__destruct_at_end(_VSTD::move(__p + (__last - __first), this->__end_, __p));
1619
+ return __r;
1620
+ }
1621
+
1622
+ template <class _Tp, class _Allocator>
1623
+ void
1624
+ vector<_Tp, _Allocator>::__move_range(pointer __from_s, pointer __from_e, pointer __to)
1625
+ {
1626
+ pointer __old_last = this->__end_;
1627
+ difference_type __n = __old_last - __to;
1628
+ for (pointer __i = __from_s + __n; __i < __from_e; ++__i, ++this->__end_)
1629
+ __alloc_traits::construct(this->__alloc(),
1630
+ _VSTD::__to_raw_pointer(this->__end_),
1631
+ _VSTD::move(*__i));
1632
+ _VSTD::move_backward(__from_s, __from_s + __n, __old_last);
1633
+ }
1634
+
1635
+ template <class _Tp, class _Allocator>
1636
+ typename vector<_Tp, _Allocator>::iterator
1637
+ vector<_Tp, _Allocator>::insert(const_iterator __position, const_reference __x)
1638
+ {
1639
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1640
+ _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
1641
+ "vector::insert(iterator, x) called with an iterator not"
1642
+ " referring to this vector");
1643
+ #endif
1644
+ pointer __p = this->__begin_ + (__position - begin());
1645
+ if (this->__end_ < this->__end_cap())
1646
+ {
1647
+ if (__p == this->__end_)
1648
+ {
1649
+ __alloc_traits::construct(this->__alloc(),
1650
+ _VSTD::__to_raw_pointer(this->__end_), __x);
1651
+ ++this->__end_;
1652
+ }
1653
+ else
1654
+ {
1655
+ __move_range(__p, this->__end_, __p + 1);
1656
+ const_pointer __xr = pointer_traits<const_pointer>::pointer_to(__x);
1657
+ if (__p <= __xr && __xr < this->__end_)
1658
+ ++__xr;
1659
+ *__p = *__xr;
1660
+ }
1661
+ }
1662
+ else
1663
+ {
1664
+ allocator_type& __a = this->__alloc();
1665
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), __p - this->__begin_, __a);
1666
+ __v.push_back(__x);
1667
+ __p = __swap_out_circular_buffer(__v, __p);
1668
+ }
1669
+ return __make_iter(__p);
1670
+ }
1671
+
1672
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
1673
+
1674
+ template <class _Tp, class _Allocator>
1675
+ typename vector<_Tp, _Allocator>::iterator
1676
+ vector<_Tp, _Allocator>::insert(const_iterator __position, value_type&& __x)
1677
+ {
1678
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1679
+ _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
1680
+ "vector::insert(iterator, x) called with an iterator not"
1681
+ " referring to this vector");
1682
+ #endif
1683
+ pointer __p = this->__begin_ + (__position - begin());
1684
+ if (this->__end_ < this->__end_cap())
1685
+ {
1686
+ if (__p == this->__end_)
1687
+ {
1688
+ __alloc_traits::construct(this->__alloc(),
1689
+ _VSTD::__to_raw_pointer(this->__end_),
1690
+ _VSTD::move(__x));
1691
+ ++this->__end_;
1692
+ }
1693
+ else
1694
+ {
1695
+ __move_range(__p, this->__end_, __p + 1);
1696
+ *__p = _VSTD::move(__x);
1697
+ }
1698
+ }
1699
+ else
1700
+ {
1701
+ allocator_type& __a = this->__alloc();
1702
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), __p - this->__begin_, __a);
1703
+ __v.push_back(_VSTD::move(__x));
1704
+ __p = __swap_out_circular_buffer(__v, __p);
1705
+ }
1706
+ return __make_iter(__p);
1707
+ }
1708
+
1709
+ #ifndef _LIBCPP_HAS_NO_VARIADICS
1710
+
1711
+ template <class _Tp, class _Allocator>
1712
+ template <class... _Args>
1713
+ typename vector<_Tp, _Allocator>::iterator
1714
+ vector<_Tp, _Allocator>::emplace(const_iterator __position, _Args&&... __args)
1715
+ {
1716
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1717
+ _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
1718
+ "vector::emplace(iterator, x) called with an iterator not"
1719
+ " referring to this vector");
1720
+ #endif
1721
+ pointer __p = this->__begin_ + (__position - begin());
1722
+ if (this->__end_ < this->__end_cap())
1723
+ {
1724
+ if (__p == this->__end_)
1725
+ {
1726
+ __alloc_traits::construct(this->__alloc(),
1727
+ _VSTD::__to_raw_pointer(this->__end_),
1728
+ _VSTD::forward<_Args>(__args)...);
1729
+ ++this->__end_;
1730
+ }
1731
+ else
1732
+ {
1733
+ value_type __tmp(_VSTD::forward<_Args>(__args)...);
1734
+ __move_range(__p, this->__end_, __p + 1);
1735
+ *__p = _VSTD::move(__tmp);
1736
+ }
1737
+ }
1738
+ else
1739
+ {
1740
+ allocator_type& __a = this->__alloc();
1741
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + 1), __p - this->__begin_, __a);
1742
+ __v.emplace_back(_VSTD::forward<_Args>(__args)...);
1743
+ __p = __swap_out_circular_buffer(__v, __p);
1744
+ }
1745
+ return __make_iter(__p);
1746
+ }
1747
+
1748
+ #endif // _LIBCPP_HAS_NO_VARIADICS
1749
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
1750
+
1751
+ template <class _Tp, class _Allocator>
1752
+ typename vector<_Tp, _Allocator>::iterator
1753
+ vector<_Tp, _Allocator>::insert(const_iterator __position, size_type __n, const_reference __x)
1754
+ {
1755
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1756
+ _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
1757
+ "vector::insert(iterator, n, x) called with an iterator not"
1758
+ " referring to this vector");
1759
+ #endif
1760
+ pointer __p = this->__begin_ + (__position - begin());
1761
+ if (__n > 0)
1762
+ {
1763
+ if (__n <= static_cast<size_type>(this->__end_cap() - this->__end_))
1764
+ {
1765
+ size_type __old_n = __n;
1766
+ pointer __old_last = this->__end_;
1767
+ if (__n > static_cast<size_type>(this->__end_ - __p))
1768
+ {
1769
+ size_type __cx = __n - (this->__end_ - __p);
1770
+ __construct_at_end(__cx, __x);
1771
+ __n -= __cx;
1772
+ }
1773
+ if (__n > 0)
1774
+ {
1775
+ __move_range(__p, __old_last, __p + __old_n);
1776
+ const_pointer __xr = pointer_traits<const_pointer>::pointer_to(__x);
1777
+ if (__p <= __xr && __xr < this->__end_)
1778
+ __xr += __old_n;
1779
+ _VSTD::fill_n(__p, __n, *__xr);
1780
+ }
1781
+ }
1782
+ else
1783
+ {
1784
+ allocator_type& __a = this->__alloc();
1785
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + __n), __p - this->__begin_, __a);
1786
+ __v.__construct_at_end(__n, __x);
1787
+ __p = __swap_out_circular_buffer(__v, __p);
1788
+ }
1789
+ }
1790
+ return __make_iter(__p);
1791
+ }
1792
+
1793
+ template <class _Tp, class _Allocator>
1794
+ template <class _InputIterator>
1795
+ typename enable_if
1796
+ <
1797
+ __is_input_iterator <_InputIterator>::value &&
1798
+ !__is_forward_iterator<_InputIterator>::value &&
1799
+ is_constructible<
1800
+ _Tp,
1801
+ typename iterator_traits<_InputIterator>::reference>::value,
1802
+ typename vector<_Tp, _Allocator>::iterator
1803
+ >::type
1804
+ vector<_Tp, _Allocator>::insert(const_iterator __position, _InputIterator __first, _InputIterator __last)
1805
+ {
1806
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1807
+ _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
1808
+ "vector::insert(iterator, range) called with an iterator not"
1809
+ " referring to this vector");
1810
+ #endif
1811
+ difference_type __off = __position - begin();
1812
+ pointer __p = this->__begin_ + __off;
1813
+ allocator_type& __a = this->__alloc();
1814
+ pointer __old_last = this->__end_;
1815
+ for (; this->__end_ != this->__end_cap() && __first != __last; ++__first)
1816
+ {
1817
+ __alloc_traits::construct(__a, _VSTD::__to_raw_pointer(this->__end_),
1818
+ *__first);
1819
+ ++this->__end_;
1820
+ }
1821
+ __split_buffer<value_type, allocator_type&> __v(__a);
1822
+ if (__first != __last)
1823
+ {
1824
+ #ifndef _LIBCPP_NO_EXCEPTIONS
1825
+ try
1826
+ {
1827
+ #endif // _LIBCPP_NO_EXCEPTIONS
1828
+ __v.__construct_at_end(__first, __last);
1829
+ difference_type __old_size = __old_last - this->__begin_;
1830
+ difference_type __old_p = __p - this->__begin_;
1831
+ reserve(__recommend(size() + __v.size()));
1832
+ __p = this->__begin_ + __old_p;
1833
+ __old_last = this->__begin_ + __old_size;
1834
+ #ifndef _LIBCPP_NO_EXCEPTIONS
1835
+ }
1836
+ catch (...)
1837
+ {
1838
+ erase(__make_iter(__old_last), end());
1839
+ throw;
1840
+ }
1841
+ #endif // _LIBCPP_NO_EXCEPTIONS
1842
+ }
1843
+ __p = _VSTD::rotate(__p, __old_last, this->__end_);
1844
+ insert(__make_iter(__p), make_move_iterator(__v.begin()),
1845
+ make_move_iterator(__v.end()));
1846
+ return begin() + __off;
1847
+ }
1848
+
1849
+ template <class _Tp, class _Allocator>
1850
+ template <class _ForwardIterator>
1851
+ typename enable_if
1852
+ <
1853
+ __is_forward_iterator<_ForwardIterator>::value &&
1854
+ is_constructible<
1855
+ _Tp,
1856
+ typename iterator_traits<_ForwardIterator>::reference>::value,
1857
+ typename vector<_Tp, _Allocator>::iterator
1858
+ >::type
1859
+ vector<_Tp, _Allocator>::insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last)
1860
+ {
1861
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1862
+ _LIBCPP_ASSERT(__get_const_db()->__find_c_from_i(&__position) == this,
1863
+ "vector::insert(iterator, range) called with an iterator not"
1864
+ " referring to this vector");
1865
+ #endif
1866
+ pointer __p = this->__begin_ + (__position - begin());
1867
+ difference_type __n = _VSTD::distance(__first, __last);
1868
+ if (__n > 0)
1869
+ {
1870
+ if (__n <= this->__end_cap() - this->__end_)
1871
+ {
1872
+ size_type __old_n = __n;
1873
+ pointer __old_last = this->__end_;
1874
+ _ForwardIterator __m = __last;
1875
+ difference_type __dx = this->__end_ - __p;
1876
+ if (__n > __dx)
1877
+ {
1878
+ __m = __first;
1879
+ _VSTD::advance(__m, this->__end_ - __p);
1880
+ __construct_at_end(__m, __last);
1881
+ __n = __dx;
1882
+ }
1883
+ if (__n > 0)
1884
+ {
1885
+ __move_range(__p, __old_last, __p + __old_n);
1886
+ _VSTD::copy(__first, __m, __p);
1887
+ }
1888
+ }
1889
+ else
1890
+ {
1891
+ allocator_type& __a = this->__alloc();
1892
+ __split_buffer<value_type, allocator_type&> __v(__recommend(size() + __n), __p - this->__begin_, __a);
1893
+ __v.__construct_at_end(__first, __last);
1894
+ __p = __swap_out_circular_buffer(__v, __p);
1895
+ }
1896
+ }
1897
+ return __make_iter(__p);
1898
+ }
1899
+
1900
+ template <class _Tp, class _Allocator>
1901
+ void
1902
+ vector<_Tp, _Allocator>::resize(size_type __sz)
1903
+ {
1904
+ size_type __cs = size();
1905
+ if (__cs < __sz)
1906
+ this->__append(__sz - __cs);
1907
+ else if (__cs > __sz)
1908
+ this->__destruct_at_end(this->__begin_ + __sz);
1909
+ }
1910
+
1911
+ template <class _Tp, class _Allocator>
1912
+ void
1913
+ vector<_Tp, _Allocator>::resize(size_type __sz, const_reference __x)
1914
+ {
1915
+ size_type __cs = size();
1916
+ if (__cs < __sz)
1917
+ this->__append(__sz - __cs, __x);
1918
+ else if (__cs > __sz)
1919
+ this->__destruct_at_end(this->__begin_ + __sz);
1920
+ }
1921
+
1922
+ template <class _Tp, class _Allocator>
1923
+ void
1924
+ vector<_Tp, _Allocator>::swap(vector& __x)
1925
+ _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
1926
+ __is_nothrow_swappable<allocator_type>::value)
1927
+ {
1928
+ _LIBCPP_ASSERT(__alloc_traits::propagate_on_container_swap::value ||
1929
+ this->__alloc() == __x.__alloc(),
1930
+ "vector::swap: Either propagate_on_container_swap must be true"
1931
+ " or the allocators must compare equal");
1932
+ _VSTD::swap(this->__begin_, __x.__begin_);
1933
+ _VSTD::swap(this->__end_, __x.__end_);
1934
+ _VSTD::swap(this->__end_cap(), __x.__end_cap());
1935
+ __base::__swap_alloc(this->__alloc(), __x.__alloc());
1936
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1937
+ __get_db()->swap(this, &__x);
1938
+ #endif // _LIBCPP_DEBUG_LEVEL >= 2
1939
+ }
1940
+
1941
+ template <class _Tp, class _Allocator>
1942
+ bool
1943
+ vector<_Tp, _Allocator>::__invariants() const
1944
+ {
1945
+ if (this->__begin_ == 0)
1946
+ {
1947
+ if (this->__end_ != 0 || this->__end_cap() != 0)
1948
+ return false;
1949
+ }
1950
+ else
1951
+ {
1952
+ if (this->__begin_ > this->__end_)
1953
+ return false;
1954
+ if (this->__begin_ == this->__end_cap())
1955
+ return false;
1956
+ if (this->__end_ > this->__end_cap())
1957
+ return false;
1958
+ }
1959
+ return true;
1960
+ }
1961
+
1962
+ #if _LIBCPP_DEBUG_LEVEL >= 2
1963
+
1964
+ template <class _Tp, class _Allocator>
1965
+ bool
1966
+ vector<_Tp, _Allocator>::__dereferenceable(const const_iterator* __i) const
1967
+ {
1968
+ return this->__begin_ <= __i->base() && __i->base() < this->__end_;
1969
+ }
1970
+
1971
+ template <class _Tp, class _Allocator>
1972
+ bool
1973
+ vector<_Tp, _Allocator>::__decrementable(const const_iterator* __i) const
1974
+ {
1975
+ return this->__begin_ < __i->base() && __i->base() <= this->__end_;
1976
+ }
1977
+
1978
+ template <class _Tp, class _Allocator>
1979
+ bool
1980
+ vector<_Tp, _Allocator>::__addable(const const_iterator* __i, ptrdiff_t __n) const
1981
+ {
1982
+ const_pointer __p = __i->base() + __n;
1983
+ return this->__begin_ <= __p && __p <= this->__end_;
1984
+ }
1985
+
1986
+ template <class _Tp, class _Allocator>
1987
+ bool
1988
+ vector<_Tp, _Allocator>::__subscriptable(const const_iterator* __i, ptrdiff_t __n) const
1989
+ {
1990
+ const_pointer __p = __i->base() + __n;
1991
+ return this->__begin_ <= __p && __p < this->__end_;
1992
+ }
1993
+
1994
+ #endif // _LIBCPP_DEBUG_LEVEL >= 2
1995
+
1996
+ template <class _Tp, class _Allocator>
1997
+ _LIBCPP_INLINE_VISIBILITY inline
1998
+ void
1999
+ vector<_Tp, _Allocator>::__invalidate_all_iterators()
2000
+ {
2001
+ #if _LIBCPP_DEBUG_LEVEL >= 2
2002
+ __get_db()->__invalidate_all(this);
2003
+ #endif // _LIBCPP_DEBUG_LEVEL >= 2
2004
+ }
2005
+
2006
+ // vector<bool>
2007
+
2008
+ template <class _Allocator> class vector<bool, _Allocator>;
2009
+
2010
+ template <class _Allocator> struct hash<vector<bool, _Allocator> >;
2011
+
2012
+ template <class _Allocator>
2013
+ struct __has_storage_type<vector<bool, _Allocator> >
2014
+ {
2015
+ static const bool value = true;
2016
+ };
2017
+
2018
+ template <class _Allocator>
2019
+ class _LIBCPP_TYPE_VIS vector<bool, _Allocator>
2020
+ : private __vector_base_common<true>
2021
+ {
2022
+ public:
2023
+ typedef vector __self;
2024
+ typedef bool value_type;
2025
+ typedef _Allocator allocator_type;
2026
+ typedef allocator_traits<allocator_type> __alloc_traits;
2027
+ typedef typename __alloc_traits::size_type size_type;
2028
+ typedef typename __alloc_traits::difference_type difference_type;
2029
+ typedef size_type __storage_type;
2030
+ typedef __bit_iterator<vector, false> pointer;
2031
+ typedef __bit_iterator<vector, true> const_pointer;
2032
+ #ifdef _LIBCPP_DEBUG
2033
+ typedef __debug_iter<vector, pointer> iterator;
2034
+ typedef __debug_iter<vector, const_pointer> const_iterator;
2035
+
2036
+ friend class __debug_iter<vector, pointer>;
2037
+ friend class __debug_iter<vector, const_pointer>;
2038
+
2039
+ pair<iterator*, const_iterator*> __iterator_list_;
2040
+
2041
+ _LIBCPP_INLINE_VISIBILITY iterator*& __get_iterator_list(iterator*) {return __iterator_list_.first;}
2042
+ _LIBCPP_INLINE_VISIBILITY const_iterator*& __get_iterator_list(const_iterator*) {return __iterator_list_.second;}
2043
+ #else // _LIBCPP_DEBUG
2044
+ typedef pointer iterator;
2045
+ typedef const_pointer const_iterator;
2046
+ #endif // _LIBCPP_DEBUG
2047
+ typedef _VSTD::reverse_iterator<iterator> reverse_iterator;
2048
+ typedef _VSTD::reverse_iterator<const_iterator> const_reverse_iterator;
2049
+
2050
+ private:
2051
+ typedef typename __alloc_traits::template
2052
+ #ifndef _LIBCPP_HAS_NO_TEMPLATE_ALIASES
2053
+ rebind_alloc<__storage_type>
2054
+ #else
2055
+ rebind_alloc<__storage_type>::other
2056
+ #endif
2057
+ __storage_allocator;
2058
+ typedef allocator_traits<__storage_allocator> __storage_traits;
2059
+ typedef typename __storage_traits::pointer __storage_pointer;
2060
+ typedef typename __storage_traits::const_pointer __const_storage_pointer;
2061
+
2062
+ __storage_pointer __begin_;
2063
+ size_type __size_;
2064
+ __compressed_pair<size_type, __storage_allocator> __cap_alloc_;
2065
+ public:
2066
+ typedef __bit_reference<vector> reference;
2067
+ typedef __bit_const_reference<vector> const_reference;
2068
+ private:
2069
+ _LIBCPP_INLINE_VISIBILITY
2070
+ size_type& __cap() _NOEXCEPT
2071
+ {return __cap_alloc_.first();}
2072
+ _LIBCPP_INLINE_VISIBILITY
2073
+ const size_type& __cap() const _NOEXCEPT
2074
+ {return __cap_alloc_.first();}
2075
+ _LIBCPP_INLINE_VISIBILITY
2076
+ __storage_allocator& __alloc() _NOEXCEPT
2077
+ {return __cap_alloc_.second();}
2078
+ _LIBCPP_INLINE_VISIBILITY
2079
+ const __storage_allocator& __alloc() const _NOEXCEPT
2080
+ {return __cap_alloc_.second();}
2081
+
2082
+ static const unsigned __bits_per_word = static_cast<unsigned>(sizeof(__storage_type) * CHAR_BIT);
2083
+
2084
+ _LIBCPP_INLINE_VISIBILITY
2085
+ static size_type __internal_cap_to_external(size_type __n) _NOEXCEPT
2086
+ {return __n * __bits_per_word;}
2087
+ _LIBCPP_INLINE_VISIBILITY
2088
+ static size_type __external_cap_to_internal(size_type __n) _NOEXCEPT
2089
+ {return (__n - 1) / __bits_per_word + 1;}
2090
+
2091
+ public:
2092
+ _LIBCPP_INLINE_VISIBILITY
2093
+ vector()
2094
+ _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value);
2095
+ _LIBCPP_INLINE_VISIBILITY explicit vector(const allocator_type& __a);
2096
+ ~vector();
2097
+ explicit vector(size_type __n);
2098
+ vector(size_type __n, const value_type& __v);
2099
+ vector(size_type __n, const value_type& __v, const allocator_type& __a);
2100
+ template <class _InputIterator>
2101
+ vector(_InputIterator __first, _InputIterator __last,
2102
+ typename enable_if<__is_input_iterator <_InputIterator>::value &&
2103
+ !__is_forward_iterator<_InputIterator>::value>::type* = 0);
2104
+ template <class _InputIterator>
2105
+ vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
2106
+ typename enable_if<__is_input_iterator <_InputIterator>::value &&
2107
+ !__is_forward_iterator<_InputIterator>::value>::type* = 0);
2108
+ template <class _ForwardIterator>
2109
+ vector(_ForwardIterator __first, _ForwardIterator __last,
2110
+ typename enable_if<__is_forward_iterator<_ForwardIterator>::value>::type* = 0);
2111
+ template <class _ForwardIterator>
2112
+ vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
2113
+ typename enable_if<__is_forward_iterator<_ForwardIterator>::value>::type* = 0);
2114
+
2115
+ vector(const vector& __v);
2116
+ vector(const vector& __v, const allocator_type& __a);
2117
+ vector& operator=(const vector& __v);
2118
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2119
+ vector(initializer_list<value_type> __il);
2120
+ vector(initializer_list<value_type> __il, const allocator_type& __a);
2121
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2122
+
2123
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2124
+ _LIBCPP_INLINE_VISIBILITY
2125
+ vector(vector&& __v)
2126
+ _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value);
2127
+ vector(vector&& __v, const allocator_type& __a);
2128
+ _LIBCPP_INLINE_VISIBILITY
2129
+ vector& operator=(vector&& __v)
2130
+ _NOEXCEPT_(
2131
+ __alloc_traits::propagate_on_container_move_assignment::value &&
2132
+ is_nothrow_move_assignable<allocator_type>::value);
2133
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
2134
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2135
+ _LIBCPP_INLINE_VISIBILITY
2136
+ vector& operator=(initializer_list<value_type> __il)
2137
+ {assign(__il.begin(), __il.end()); return *this;}
2138
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2139
+
2140
+ template <class _InputIterator>
2141
+ typename enable_if
2142
+ <
2143
+ __is_input_iterator<_InputIterator>::value &&
2144
+ !__is_forward_iterator<_InputIterator>::value,
2145
+ void
2146
+ >::type
2147
+ assign(_InputIterator __first, _InputIterator __last);
2148
+ template <class _ForwardIterator>
2149
+ typename enable_if
2150
+ <
2151
+ __is_forward_iterator<_ForwardIterator>::value,
2152
+ void
2153
+ >::type
2154
+ assign(_ForwardIterator __first, _ForwardIterator __last);
2155
+
2156
+ void assign(size_type __n, const value_type& __x);
2157
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2158
+ _LIBCPP_INLINE_VISIBILITY
2159
+ void assign(initializer_list<value_type> __il)
2160
+ {assign(__il.begin(), __il.end());}
2161
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2162
+
2163
+ _LIBCPP_INLINE_VISIBILITY allocator_type get_allocator() const _NOEXCEPT
2164
+ {return allocator_type(this->__alloc());}
2165
+
2166
+ size_type max_size() const _NOEXCEPT;
2167
+ _LIBCPP_INLINE_VISIBILITY
2168
+ size_type capacity() const _NOEXCEPT
2169
+ {return __internal_cap_to_external(__cap());}
2170
+ _LIBCPP_INLINE_VISIBILITY
2171
+ size_type size() const _NOEXCEPT
2172
+ {return __size_;}
2173
+ _LIBCPP_INLINE_VISIBILITY
2174
+ bool empty() const _NOEXCEPT
2175
+ {return __size_ == 0;}
2176
+ void reserve(size_type __n);
2177
+ void shrink_to_fit() _NOEXCEPT;
2178
+
2179
+ _LIBCPP_INLINE_VISIBILITY
2180
+ iterator begin() _NOEXCEPT
2181
+ {return __make_iter(0);}
2182
+ _LIBCPP_INLINE_VISIBILITY
2183
+ const_iterator begin() const _NOEXCEPT
2184
+ {return __make_iter(0);}
2185
+ _LIBCPP_INLINE_VISIBILITY
2186
+ iterator end() _NOEXCEPT
2187
+ {return __make_iter(__size_);}
2188
+ _LIBCPP_INLINE_VISIBILITY
2189
+ const_iterator end() const _NOEXCEPT
2190
+ {return __make_iter(__size_);}
2191
+
2192
+ _LIBCPP_INLINE_VISIBILITY
2193
+ reverse_iterator rbegin() _NOEXCEPT
2194
+ {return reverse_iterator(end());}
2195
+ _LIBCPP_INLINE_VISIBILITY
2196
+ const_reverse_iterator rbegin() const _NOEXCEPT
2197
+ {return const_reverse_iterator(end());}
2198
+ _LIBCPP_INLINE_VISIBILITY
2199
+ reverse_iterator rend() _NOEXCEPT
2200
+ {return reverse_iterator(begin());}
2201
+ _LIBCPP_INLINE_VISIBILITY
2202
+ const_reverse_iterator rend() const _NOEXCEPT
2203
+ {return const_reverse_iterator(begin());}
2204
+
2205
+ _LIBCPP_INLINE_VISIBILITY
2206
+ const_iterator cbegin() const _NOEXCEPT
2207
+ {return __make_iter(0);}
2208
+ _LIBCPP_INLINE_VISIBILITY
2209
+ const_iterator cend() const _NOEXCEPT
2210
+ {return __make_iter(__size_);}
2211
+ _LIBCPP_INLINE_VISIBILITY
2212
+ const_reverse_iterator crbegin() const _NOEXCEPT
2213
+ {return rbegin();}
2214
+ _LIBCPP_INLINE_VISIBILITY
2215
+ const_reverse_iterator crend() const _NOEXCEPT
2216
+ {return rend();}
2217
+
2218
+ _LIBCPP_INLINE_VISIBILITY reference operator[](size_type __n) {return __make_ref(__n);}
2219
+ _LIBCPP_INLINE_VISIBILITY const_reference operator[](size_type __n) const {return __make_ref(__n);}
2220
+ reference at(size_type __n);
2221
+ const_reference at(size_type __n) const;
2222
+
2223
+ _LIBCPP_INLINE_VISIBILITY reference front() {return __make_ref(0);}
2224
+ _LIBCPP_INLINE_VISIBILITY const_reference front() const {return __make_ref(0);}
2225
+ _LIBCPP_INLINE_VISIBILITY reference back() {return __make_ref(__size_ - 1);}
2226
+ _LIBCPP_INLINE_VISIBILITY const_reference back() const {return __make_ref(__size_ - 1);}
2227
+
2228
+ void push_back(const value_type& __x);
2229
+ _LIBCPP_INLINE_VISIBILITY void pop_back() {--__size_;}
2230
+
2231
+ iterator insert(const_iterator __position, const value_type& __x);
2232
+ iterator insert(const_iterator __position, size_type __n, const value_type& __x);
2233
+ iterator insert(const_iterator __position, size_type __n, const_reference __x);
2234
+ template <class _InputIterator>
2235
+ typename enable_if
2236
+ <
2237
+ __is_input_iterator <_InputIterator>::value &&
2238
+ !__is_forward_iterator<_InputIterator>::value,
2239
+ iterator
2240
+ >::type
2241
+ insert(const_iterator __position, _InputIterator __first, _InputIterator __last);
2242
+ template <class _ForwardIterator>
2243
+ typename enable_if
2244
+ <
2245
+ __is_forward_iterator<_ForwardIterator>::value,
2246
+ iterator
2247
+ >::type
2248
+ insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last);
2249
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2250
+ _LIBCPP_INLINE_VISIBILITY
2251
+ iterator insert(const_iterator __position, initializer_list<value_type> __il)
2252
+ {return insert(__position, __il.begin(), __il.end());}
2253
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2254
+
2255
+ _LIBCPP_INLINE_VISIBILITY iterator erase(const_iterator __position);
2256
+ iterator erase(const_iterator __first, const_iterator __last);
2257
+
2258
+ _LIBCPP_INLINE_VISIBILITY
2259
+ void clear() _NOEXCEPT {__size_ = 0;}
2260
+
2261
+ void swap(vector&)
2262
+ _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
2263
+ __is_nothrow_swappable<allocator_type>::value);
2264
+
2265
+ void resize(size_type __sz, value_type __x = false);
2266
+ void flip() _NOEXCEPT;
2267
+
2268
+ bool __invariants() const;
2269
+
2270
+ private:
2271
+ _LIBCPP_INLINE_VISIBILITY void __invalidate_all_iterators();
2272
+ void allocate(size_type __n);
2273
+ void deallocate() _NOEXCEPT;
2274
+ _LIBCPP_INLINE_VISIBILITY
2275
+ static size_type __align(size_type __new_size) _NOEXCEPT
2276
+ {return __new_size + (__bits_per_word-1) & ~(__bits_per_word-1);};
2277
+ _LIBCPP_INLINE_VISIBILITY size_type __recommend(size_type __new_size) const;
2278
+ _LIBCPP_INLINE_VISIBILITY void __construct_at_end(size_type __n, bool __x);
2279
+ template <class _ForwardIterator>
2280
+ typename enable_if
2281
+ <
2282
+ __is_forward_iterator<_ForwardIterator>::value,
2283
+ void
2284
+ >::type
2285
+ __construct_at_end(_ForwardIterator __first, _ForwardIterator __last);
2286
+ void __append(size_type __n, const_reference __x);
2287
+ _LIBCPP_INLINE_VISIBILITY
2288
+ reference __make_ref(size_type __pos) _NOEXCEPT
2289
+ {return reference(__begin_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);}
2290
+ _LIBCPP_INLINE_VISIBILITY
2291
+ const_reference __make_ref(size_type __pos) const _NOEXCEPT
2292
+ {return const_reference(__begin_ + __pos / __bits_per_word, __storage_type(1) << __pos % __bits_per_word);}
2293
+ #ifdef _LIBCPP_DEBUG
2294
+ _LIBCPP_INLINE_VISIBILITY iterator __make_iter(size_type __pos)
2295
+ {return iterator(this, pointer(__begin_ + __pos / __bits_per_word, static_cast<unsigned>(__pos % __bits_per_word)));}
2296
+ _LIBCPP_INLINE_VISIBILITY const_iterator __make_iter(size_type __pos) const
2297
+ {return const_iterator(this, const_pointer(__begin_ + __pos / __bits_per_word, static_cast<unsigned>(__pos % __bits_per_word)));}
2298
+ _LIBCPP_INLINE_VISIBILITY iterator __const_iterator_cast(const_iterator __p)
2299
+ {return iterator(this, pointer(const_cast<__storage_pointer>(__p.base().__seg_), __p.base().__ctz_));}
2300
+ #else // _LIBCPP_DEBUG
2301
+ _LIBCPP_INLINE_VISIBILITY
2302
+ iterator __make_iter(size_type __pos) _NOEXCEPT
2303
+ {return iterator(__begin_ + __pos / __bits_per_word, static_cast<unsigned>(__pos % __bits_per_word));}
2304
+ _LIBCPP_INLINE_VISIBILITY
2305
+ const_iterator __make_iter(size_type __pos) const _NOEXCEPT
2306
+ {return const_iterator(__begin_ + __pos / __bits_per_word, static_cast<unsigned>(__pos % __bits_per_word));}
2307
+ _LIBCPP_INLINE_VISIBILITY
2308
+ iterator __const_iterator_cast(const_iterator __p) _NOEXCEPT
2309
+ {return iterator(const_cast<__storage_pointer>(__p.__seg_), __p.__ctz_);}
2310
+ #endif // _LIBCPP_DEBUG
2311
+
2312
+ _LIBCPP_INLINE_VISIBILITY
2313
+ void __copy_assign_alloc(const vector& __v)
2314
+ {__copy_assign_alloc(__v, integral_constant<bool,
2315
+ __storage_traits::propagate_on_container_copy_assignment::value>());}
2316
+ _LIBCPP_INLINE_VISIBILITY
2317
+ void __copy_assign_alloc(const vector& __c, true_type)
2318
+ {
2319
+ if (__alloc() != __c.__alloc())
2320
+ deallocate();
2321
+ __alloc() = __c.__alloc();
2322
+ }
2323
+
2324
+ _LIBCPP_INLINE_VISIBILITY
2325
+ void __copy_assign_alloc(const vector&, false_type)
2326
+ {}
2327
+
2328
+ void __move_assign(vector& __c, false_type);
2329
+ void __move_assign(vector& __c, true_type)
2330
+ _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value);
2331
+ _LIBCPP_INLINE_VISIBILITY
2332
+ void __move_assign_alloc(vector& __c)
2333
+ _NOEXCEPT_(
2334
+ !__storage_traits::propagate_on_container_move_assignment::value ||
2335
+ is_nothrow_move_assignable<allocator_type>::value)
2336
+ {__move_assign_alloc(__c, integral_constant<bool,
2337
+ __storage_traits::propagate_on_container_move_assignment::value>());}
2338
+ _LIBCPP_INLINE_VISIBILITY
2339
+ void __move_assign_alloc(vector& __c, true_type)
2340
+ _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
2341
+ {
2342
+ __alloc() = _VSTD::move(__c.__alloc());
2343
+ }
2344
+
2345
+ _LIBCPP_INLINE_VISIBILITY
2346
+ void __move_assign_alloc(vector&, false_type)
2347
+ _NOEXCEPT
2348
+ {}
2349
+
2350
+ _LIBCPP_INLINE_VISIBILITY
2351
+ static void __swap_alloc(__storage_allocator& __x, __storage_allocator& __y)
2352
+ _NOEXCEPT_(
2353
+ !__storage_traits::propagate_on_container_swap::value ||
2354
+ __is_nothrow_swappable<allocator_type>::value)
2355
+ {__swap_alloc(__x, __y, integral_constant<bool,
2356
+ __storage_traits::propagate_on_container_swap::value>());}
2357
+
2358
+ _LIBCPP_INLINE_VISIBILITY
2359
+ static void __swap_alloc(__storage_allocator& __x, __storage_allocator& __y, true_type)
2360
+ _NOEXCEPT_(__is_nothrow_swappable<allocator_type>::value)
2361
+ {
2362
+ using _VSTD::swap;
2363
+ swap(__x, __y);
2364
+ }
2365
+ _LIBCPP_INLINE_VISIBILITY
2366
+ static void __swap_alloc(__storage_allocator&, __storage_allocator&, false_type)
2367
+ _NOEXCEPT
2368
+ {}
2369
+
2370
+ size_t __hash_code() const _NOEXCEPT;
2371
+
2372
+ friend class __bit_reference<vector>;
2373
+ friend class __bit_const_reference<vector>;
2374
+ friend class __bit_iterator<vector, false>;
2375
+ friend class __bit_iterator<vector, true>;
2376
+ friend struct __bit_array<vector>;
2377
+ friend struct _LIBCPP_TYPE_VIS hash<vector>;
2378
+ };
2379
+
2380
+ template <class _Allocator>
2381
+ #ifndef _LIBCPP_DEBUG
2382
+ _LIBCPP_INLINE_VISIBILITY inline
2383
+ #endif
2384
+ void
2385
+ vector<bool, _Allocator>::__invalidate_all_iterators()
2386
+ {
2387
+ #ifdef _LIBCPP_DEBUG
2388
+ iterator::__remove_all(this);
2389
+ const_iterator::__remove_all(this);
2390
+ #endif // _LIBCPP_DEBUG
2391
+ }
2392
+
2393
+ // Allocate space for __n objects
2394
+ // throws length_error if __n > max_size()
2395
+ // throws (probably bad_alloc) if memory run out
2396
+ // Precondition: __begin_ == __end_ == __cap() == 0
2397
+ // Precondition: __n > 0
2398
+ // Postcondition: capacity() == __n
2399
+ // Postcondition: size() == 0
2400
+ template <class _Allocator>
2401
+ void
2402
+ vector<bool, _Allocator>::allocate(size_type __n)
2403
+ {
2404
+ if (__n > max_size())
2405
+ this->__throw_length_error();
2406
+ __n = __external_cap_to_internal(__n);
2407
+ this->__begin_ = __storage_traits::allocate(this->__alloc(), __n);
2408
+ this->__size_ = 0;
2409
+ this->__cap() = __n;
2410
+ }
2411
+
2412
+ template <class _Allocator>
2413
+ void
2414
+ vector<bool, _Allocator>::deallocate() _NOEXCEPT
2415
+ {
2416
+ if (this->__begin_ != 0)
2417
+ {
2418
+ __storage_traits::deallocate(this->__alloc(), this->__begin_, __cap());
2419
+ __invalidate_all_iterators();
2420
+ this->__begin_ = 0;
2421
+ this->__size_ = this->__cap() = 0;
2422
+ }
2423
+ }
2424
+
2425
+ template <class _Allocator>
2426
+ typename vector<bool, _Allocator>::size_type
2427
+ vector<bool, _Allocator>::max_size() const _NOEXCEPT
2428
+ {
2429
+ size_type __amax = __storage_traits::max_size(__alloc());
2430
+ size_type __nmax = numeric_limits<size_type>::max() / 2; // end() >= begin(), always
2431
+ if (__nmax / __bits_per_word <= __amax)
2432
+ return __nmax;
2433
+ return __internal_cap_to_external(__amax);
2434
+ }
2435
+
2436
+ // Precondition: __new_size > capacity()
2437
+ template <class _Allocator>
2438
+ _LIBCPP_INLINE_VISIBILITY inline
2439
+ typename vector<bool, _Allocator>::size_type
2440
+ vector<bool, _Allocator>::__recommend(size_type __new_size) const
2441
+ {
2442
+ const size_type __ms = max_size();
2443
+ if (__new_size > __ms)
2444
+ this->__throw_length_error();
2445
+ const size_type __cap = capacity();
2446
+ if (__cap >= __ms / 2)
2447
+ return __ms;
2448
+ return _VSTD::max(2*__cap, __align(__new_size));
2449
+ }
2450
+
2451
+ // Default constructs __n objects starting at __end_
2452
+ // Precondition: __n > 0
2453
+ // Precondition: size() + __n <= capacity()
2454
+ // Postcondition: size() == size() + __n
2455
+ template <class _Allocator>
2456
+ _LIBCPP_INLINE_VISIBILITY inline
2457
+ void
2458
+ vector<bool, _Allocator>::__construct_at_end(size_type __n, bool __x)
2459
+ {
2460
+ size_type __old_size = this->__size_;
2461
+ this->__size_ += __n;
2462
+ _VSTD::fill_n(__make_iter(__old_size), __n, __x);
2463
+ }
2464
+
2465
+ template <class _Allocator>
2466
+ template <class _ForwardIterator>
2467
+ typename enable_if
2468
+ <
2469
+ __is_forward_iterator<_ForwardIterator>::value,
2470
+ void
2471
+ >::type
2472
+ vector<bool, _Allocator>::__construct_at_end(_ForwardIterator __first, _ForwardIterator __last)
2473
+ {
2474
+ size_type __old_size = this->__size_;
2475
+ this->__size_ += _VSTD::distance(__first, __last);
2476
+ _VSTD::copy(__first, __last, __make_iter(__old_size));
2477
+ }
2478
+
2479
+ template <class _Allocator>
2480
+ _LIBCPP_INLINE_VISIBILITY inline
2481
+ vector<bool, _Allocator>::vector()
2482
+ _NOEXCEPT_(is_nothrow_default_constructible<allocator_type>::value)
2483
+ : __begin_(0),
2484
+ __size_(0),
2485
+ __cap_alloc_(0)
2486
+ {
2487
+ }
2488
+
2489
+ template <class _Allocator>
2490
+ _LIBCPP_INLINE_VISIBILITY inline
2491
+ vector<bool, _Allocator>::vector(const allocator_type& __a)
2492
+ : __begin_(0),
2493
+ __size_(0),
2494
+ __cap_alloc_(0, static_cast<__storage_allocator>(__a))
2495
+ {
2496
+ }
2497
+
2498
+ template <class _Allocator>
2499
+ vector<bool, _Allocator>::vector(size_type __n)
2500
+ : __begin_(0),
2501
+ __size_(0),
2502
+ __cap_alloc_(0)
2503
+ {
2504
+ if (__n > 0)
2505
+ {
2506
+ allocate(__n);
2507
+ __construct_at_end(__n, false);
2508
+ }
2509
+ }
2510
+
2511
+ template <class _Allocator>
2512
+ vector<bool, _Allocator>::vector(size_type __n, const value_type& __x)
2513
+ : __begin_(0),
2514
+ __size_(0),
2515
+ __cap_alloc_(0)
2516
+ {
2517
+ if (__n > 0)
2518
+ {
2519
+ allocate(__n);
2520
+ __construct_at_end(__n, __x);
2521
+ }
2522
+ }
2523
+
2524
+ template <class _Allocator>
2525
+ vector<bool, _Allocator>::vector(size_type __n, const value_type& __x, const allocator_type& __a)
2526
+ : __begin_(0),
2527
+ __size_(0),
2528
+ __cap_alloc_(0, static_cast<__storage_allocator>(__a))
2529
+ {
2530
+ if (__n > 0)
2531
+ {
2532
+ allocate(__n);
2533
+ __construct_at_end(__n, __x);
2534
+ }
2535
+ }
2536
+
2537
+ template <class _Allocator>
2538
+ template <class _InputIterator>
2539
+ vector<bool, _Allocator>::vector(_InputIterator __first, _InputIterator __last,
2540
+ typename enable_if<__is_input_iterator <_InputIterator>::value &&
2541
+ !__is_forward_iterator<_InputIterator>::value>::type*)
2542
+ : __begin_(0),
2543
+ __size_(0),
2544
+ __cap_alloc_(0)
2545
+ {
2546
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2547
+ try
2548
+ {
2549
+ #endif // _LIBCPP_NO_EXCEPTIONS
2550
+ for (; __first != __last; ++__first)
2551
+ push_back(*__first);
2552
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2553
+ }
2554
+ catch (...)
2555
+ {
2556
+ if (__begin_ != 0)
2557
+ __storage_traits::deallocate(__alloc(), __begin_, __cap());
2558
+ __invalidate_all_iterators();
2559
+ throw;
2560
+ }
2561
+ #endif // _LIBCPP_NO_EXCEPTIONS
2562
+ }
2563
+
2564
+ template <class _Allocator>
2565
+ template <class _InputIterator>
2566
+ vector<bool, _Allocator>::vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a,
2567
+ typename enable_if<__is_input_iterator <_InputIterator>::value &&
2568
+ !__is_forward_iterator<_InputIterator>::value>::type*)
2569
+ : __begin_(0),
2570
+ __size_(0),
2571
+ __cap_alloc_(0, static_cast<__storage_allocator>(__a))
2572
+ {
2573
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2574
+ try
2575
+ {
2576
+ #endif // _LIBCPP_NO_EXCEPTIONS
2577
+ for (; __first != __last; ++__first)
2578
+ push_back(*__first);
2579
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2580
+ }
2581
+ catch (...)
2582
+ {
2583
+ if (__begin_ != 0)
2584
+ __storage_traits::deallocate(__alloc(), __begin_, __cap());
2585
+ __invalidate_all_iterators();
2586
+ throw;
2587
+ }
2588
+ #endif // _LIBCPP_NO_EXCEPTIONS
2589
+ }
2590
+
2591
+ template <class _Allocator>
2592
+ template <class _ForwardIterator>
2593
+ vector<bool, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last,
2594
+ typename enable_if<__is_forward_iterator<_ForwardIterator>::value>::type*)
2595
+ : __begin_(0),
2596
+ __size_(0),
2597
+ __cap_alloc_(0)
2598
+ {
2599
+ size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
2600
+ if (__n > 0)
2601
+ {
2602
+ allocate(__n);
2603
+ __construct_at_end(__first, __last);
2604
+ }
2605
+ }
2606
+
2607
+ template <class _Allocator>
2608
+ template <class _ForwardIterator>
2609
+ vector<bool, _Allocator>::vector(_ForwardIterator __first, _ForwardIterator __last, const allocator_type& __a,
2610
+ typename enable_if<__is_forward_iterator<_ForwardIterator>::value>::type*)
2611
+ : __begin_(0),
2612
+ __size_(0),
2613
+ __cap_alloc_(0, static_cast<__storage_allocator>(__a))
2614
+ {
2615
+ size_type __n = static_cast<size_type>(_VSTD::distance(__first, __last));
2616
+ if (__n > 0)
2617
+ {
2618
+ allocate(__n);
2619
+ __construct_at_end(__first, __last);
2620
+ }
2621
+ }
2622
+
2623
+ #ifndef _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2624
+
2625
+ template <class _Allocator>
2626
+ vector<bool, _Allocator>::vector(initializer_list<value_type> __il)
2627
+ : __begin_(0),
2628
+ __size_(0),
2629
+ __cap_alloc_(0)
2630
+ {
2631
+ size_type __n = static_cast<size_type>(__il.size());
2632
+ if (__n > 0)
2633
+ {
2634
+ allocate(__n);
2635
+ __construct_at_end(__il.begin(), __il.end());
2636
+ }
2637
+ }
2638
+
2639
+ template <class _Allocator>
2640
+ vector<bool, _Allocator>::vector(initializer_list<value_type> __il, const allocator_type& __a)
2641
+ : __begin_(0),
2642
+ __size_(0),
2643
+ __cap_alloc_(0, static_cast<__storage_allocator>(__a))
2644
+ {
2645
+ size_type __n = static_cast<size_type>(__il.size());
2646
+ if (__n > 0)
2647
+ {
2648
+ allocate(__n);
2649
+ __construct_at_end(__il.begin(), __il.end());
2650
+ }
2651
+ }
2652
+
2653
+ #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
2654
+
2655
+ template <class _Allocator>
2656
+ vector<bool, _Allocator>::~vector()
2657
+ {
2658
+ if (__begin_ != 0)
2659
+ __storage_traits::deallocate(__alloc(), __begin_, __cap());
2660
+ #ifdef _LIBCPP_DEBUG
2661
+ __invalidate_all_iterators();
2662
+ #endif
2663
+ }
2664
+
2665
+ template <class _Allocator>
2666
+ vector<bool, _Allocator>::vector(const vector& __v)
2667
+ : __begin_(0),
2668
+ __size_(0),
2669
+ __cap_alloc_(0, __storage_traits::select_on_container_copy_construction(__v.__alloc()))
2670
+ {
2671
+ if (__v.size() > 0)
2672
+ {
2673
+ allocate(__v.size());
2674
+ __construct_at_end(__v.begin(), __v.end());
2675
+ }
2676
+ }
2677
+
2678
+ template <class _Allocator>
2679
+ vector<bool, _Allocator>::vector(const vector& __v, const allocator_type& __a)
2680
+ : __begin_(0),
2681
+ __size_(0),
2682
+ __cap_alloc_(0, __a)
2683
+ {
2684
+ if (__v.size() > 0)
2685
+ {
2686
+ allocate(__v.size());
2687
+ __construct_at_end(__v.begin(), __v.end());
2688
+ }
2689
+ }
2690
+
2691
+ template <class _Allocator>
2692
+ vector<bool, _Allocator>&
2693
+ vector<bool, _Allocator>::operator=(const vector& __v)
2694
+ {
2695
+ if (this != &__v)
2696
+ {
2697
+ __copy_assign_alloc(__v);
2698
+ if (__v.__size_)
2699
+ {
2700
+ if (__v.__size_ > capacity())
2701
+ {
2702
+ deallocate();
2703
+ allocate(__v.__size_);
2704
+ }
2705
+ _VSTD::copy(__v.__begin_, __v.__begin_ + __external_cap_to_internal(__v.__size_), __begin_);
2706
+ }
2707
+ __size_ = __v.__size_;
2708
+ }
2709
+ return *this;
2710
+ }
2711
+
2712
+ #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES
2713
+
2714
+ template <class _Allocator>
2715
+ _LIBCPP_INLINE_VISIBILITY inline
2716
+ vector<bool, _Allocator>::vector(vector&& __v)
2717
+ _NOEXCEPT_(is_nothrow_move_constructible<allocator_type>::value)
2718
+ : __begin_(__v.__begin_),
2719
+ __size_(__v.__size_),
2720
+ __cap_alloc_(__v.__cap_alloc_)
2721
+ {
2722
+ __v.__begin_ = 0;
2723
+ __v.__size_ = 0;
2724
+ __v.__cap() = 0;
2725
+ }
2726
+
2727
+ template <class _Allocator>
2728
+ vector<bool, _Allocator>::vector(vector&& __v, const allocator_type& __a)
2729
+ : __begin_(0),
2730
+ __size_(0),
2731
+ __cap_alloc_(0, __a)
2732
+ {
2733
+ if (__a == allocator_type(__v.__alloc()))
2734
+ {
2735
+ this->__begin_ = __v.__begin_;
2736
+ this->__size_ = __v.__size_;
2737
+ this->__cap() = __v.__cap();
2738
+ __v.__begin_ = nullptr;
2739
+ __v.__cap() = __v.__size_ = 0;
2740
+ }
2741
+ else if (__v.size() > 0)
2742
+ {
2743
+ allocate(__v.size());
2744
+ __construct_at_end(__v.begin(), __v.end());
2745
+ }
2746
+ }
2747
+
2748
+ template <class _Allocator>
2749
+ _LIBCPP_INLINE_VISIBILITY inline
2750
+ vector<bool, _Allocator>&
2751
+ vector<bool, _Allocator>::operator=(vector&& __v)
2752
+ _NOEXCEPT_(
2753
+ __alloc_traits::propagate_on_container_move_assignment::value &&
2754
+ is_nothrow_move_assignable<allocator_type>::value)
2755
+ {
2756
+ __move_assign(__v, integral_constant<bool,
2757
+ __storage_traits::propagate_on_container_move_assignment::value>());
2758
+ return *this;
2759
+ }
2760
+
2761
+ template <class _Allocator>
2762
+ void
2763
+ vector<bool, _Allocator>::__move_assign(vector& __c, false_type)
2764
+ {
2765
+ if (__alloc() != __c.__alloc())
2766
+ assign(__c.begin(), __c.end());
2767
+ else
2768
+ __move_assign(__c, true_type());
2769
+ }
2770
+
2771
+ template <class _Allocator>
2772
+ void
2773
+ vector<bool, _Allocator>::__move_assign(vector& __c, true_type)
2774
+ _NOEXCEPT_(is_nothrow_move_assignable<allocator_type>::value)
2775
+ {
2776
+ deallocate();
2777
+ this->__begin_ = __c.__begin_;
2778
+ this->__size_ = __c.__size_;
2779
+ this->__cap() = __c.__cap();
2780
+ __move_assign_alloc(__c);
2781
+ __c.__begin_ = nullptr;
2782
+ __c.__cap() = __c.__size_ = 0;
2783
+ }
2784
+
2785
+ #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES
2786
+
2787
+ template <class _Allocator>
2788
+ void
2789
+ vector<bool, _Allocator>::assign(size_type __n, const value_type& __x)
2790
+ {
2791
+ __size_ = 0;
2792
+ if (__n > 0)
2793
+ {
2794
+ size_type __c = capacity();
2795
+ if (__n <= __c)
2796
+ __size_ = __n;
2797
+ else
2798
+ {
2799
+ vector __v(__alloc());
2800
+ __v.reserve(__recommend(__n));
2801
+ __v.__size_ = __n;
2802
+ swap(__v);
2803
+ }
2804
+ _VSTD::fill_n(begin(), __n, __x);
2805
+ }
2806
+ }
2807
+
2808
+ template <class _Allocator>
2809
+ template <class _InputIterator>
2810
+ typename enable_if
2811
+ <
2812
+ __is_input_iterator<_InputIterator>::value &&
2813
+ !__is_forward_iterator<_InputIterator>::value,
2814
+ void
2815
+ >::type
2816
+ vector<bool, _Allocator>::assign(_InputIterator __first, _InputIterator __last)
2817
+ {
2818
+ clear();
2819
+ for (; __first != __last; ++__first)
2820
+ push_back(*__first);
2821
+ }
2822
+
2823
+ template <class _Allocator>
2824
+ template <class _ForwardIterator>
2825
+ typename enable_if
2826
+ <
2827
+ __is_forward_iterator<_ForwardIterator>::value,
2828
+ void
2829
+ >::type
2830
+ vector<bool, _Allocator>::assign(_ForwardIterator __first, _ForwardIterator __last)
2831
+ {
2832
+ clear();
2833
+ difference_type __n = _VSTD::distance(__first, __last);
2834
+ if (__n)
2835
+ {
2836
+ if (__n > capacity())
2837
+ {
2838
+ deallocate();
2839
+ allocate(__n);
2840
+ }
2841
+ __construct_at_end(__first, __last);
2842
+ }
2843
+ }
2844
+
2845
+ template <class _Allocator>
2846
+ void
2847
+ vector<bool, _Allocator>::reserve(size_type __n)
2848
+ {
2849
+ if (__n > capacity())
2850
+ {
2851
+ vector __v(this->__alloc());
2852
+ __v.allocate(__n);
2853
+ __v.__construct_at_end(this->begin(), this->end());
2854
+ swap(__v);
2855
+ __invalidate_all_iterators();
2856
+ }
2857
+ }
2858
+
2859
+ template <class _Allocator>
2860
+ void
2861
+ vector<bool, _Allocator>::shrink_to_fit() _NOEXCEPT
2862
+ {
2863
+ if (__external_cap_to_internal(size()) > __cap())
2864
+ {
2865
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2866
+ try
2867
+ {
2868
+ #endif // _LIBCPP_NO_EXCEPTIONS
2869
+ vector(*this, allocator_type(__alloc())).swap(*this);
2870
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2871
+ }
2872
+ catch (...)
2873
+ {
2874
+ }
2875
+ #endif // _LIBCPP_NO_EXCEPTIONS
2876
+ }
2877
+ }
2878
+
2879
+ template <class _Allocator>
2880
+ typename vector<bool, _Allocator>::reference
2881
+ vector<bool, _Allocator>::at(size_type __n)
2882
+ {
2883
+ if (__n >= size())
2884
+ this->__throw_out_of_range();
2885
+ return (*this)[__n];
2886
+ }
2887
+
2888
+ template <class _Allocator>
2889
+ typename vector<bool, _Allocator>::const_reference
2890
+ vector<bool, _Allocator>::at(size_type __n) const
2891
+ {
2892
+ if (__n >= size())
2893
+ this->__throw_out_of_range();
2894
+ return (*this)[__n];
2895
+ }
2896
+
2897
+ template <class _Allocator>
2898
+ void
2899
+ vector<bool, _Allocator>::push_back(const value_type& __x)
2900
+ {
2901
+ if (this->__size_ == this->capacity())
2902
+ reserve(__recommend(this->__size_ + 1));
2903
+ ++this->__size_;
2904
+ back() = __x;
2905
+ }
2906
+
2907
+ template <class _Allocator>
2908
+ typename vector<bool, _Allocator>::iterator
2909
+ vector<bool, _Allocator>::insert(const_iterator __position, const value_type& __x)
2910
+ {
2911
+ iterator __r;
2912
+ if (size() < capacity())
2913
+ {
2914
+ const_iterator __old_end = end();
2915
+ ++__size_;
2916
+ _VSTD::copy_backward(__position, __old_end, end());
2917
+ __r = __const_iterator_cast(__position);
2918
+ }
2919
+ else
2920
+ {
2921
+ vector __v(__alloc());
2922
+ __v.reserve(__recommend(__size_ + 1));
2923
+ __v.__size_ = __size_ + 1;
2924
+ __r = _VSTD::copy(cbegin(), __position, __v.begin());
2925
+ _VSTD::copy_backward(__position, cend(), __v.end());
2926
+ swap(__v);
2927
+ }
2928
+ *__r = __x;
2929
+ return __r;
2930
+ }
2931
+
2932
+ template <class _Allocator>
2933
+ typename vector<bool, _Allocator>::iterator
2934
+ vector<bool, _Allocator>::insert(const_iterator __position, size_type __n, const value_type& __x)
2935
+ {
2936
+ iterator __r;
2937
+ size_type __c = capacity();
2938
+ if (__n <= __c && size() <= __c - __n)
2939
+ {
2940
+ const_iterator __old_end = end();
2941
+ __size_ += __n;
2942
+ _VSTD::copy_backward(__position, __old_end, end());
2943
+ __r = __const_iterator_cast(__position);
2944
+ }
2945
+ else
2946
+ {
2947
+ vector __v(__alloc());
2948
+ __v.reserve(__recommend(__size_ + __n));
2949
+ __v.__size_ = __size_ + __n;
2950
+ __r = _VSTD::copy(cbegin(), __position, __v.begin());
2951
+ _VSTD::copy_backward(__position, cend(), __v.end());
2952
+ swap(__v);
2953
+ }
2954
+ _VSTD::fill_n(__r, __n, __x);
2955
+ return __r;
2956
+ }
2957
+
2958
+ template <class _Allocator>
2959
+ template <class _InputIterator>
2960
+ typename enable_if
2961
+ <
2962
+ __is_input_iterator <_InputIterator>::value &&
2963
+ !__is_forward_iterator<_InputIterator>::value,
2964
+ typename vector<bool, _Allocator>::iterator
2965
+ >::type
2966
+ vector<bool, _Allocator>::insert(const_iterator __position, _InputIterator __first, _InputIterator __last)
2967
+ {
2968
+ difference_type __off = __position - begin();
2969
+ iterator __p = __const_iterator_cast(__position);
2970
+ iterator __old_end = end();
2971
+ for (; size() != capacity() && __first != __last; ++__first)
2972
+ {
2973
+ ++this->__size_;
2974
+ back() = *__first;
2975
+ }
2976
+ vector __v(__alloc());
2977
+ if (__first != __last)
2978
+ {
2979
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2980
+ try
2981
+ {
2982
+ #endif // _LIBCPP_NO_EXCEPTIONS
2983
+ __v.assign(__first, __last);
2984
+ difference_type __old_size = static_cast<difference_type>(__old_end - begin());
2985
+ difference_type __old_p = __p - begin();
2986
+ reserve(__recommend(size() + __v.size()));
2987
+ __p = begin() + __old_p;
2988
+ __old_end = begin() + __old_size;
2989
+ #ifndef _LIBCPP_NO_EXCEPTIONS
2990
+ }
2991
+ catch (...)
2992
+ {
2993
+ erase(__old_end, end());
2994
+ throw;
2995
+ }
2996
+ #endif // _LIBCPP_NO_EXCEPTIONS
2997
+ }
2998
+ __p = _VSTD::rotate(__p, __old_end, end());
2999
+ insert(__p, __v.begin(), __v.end());
3000
+ return begin() + __off;
3001
+ }
3002
+
3003
+ template <class _Allocator>
3004
+ template <class _ForwardIterator>
3005
+ typename enable_if
3006
+ <
3007
+ __is_forward_iterator<_ForwardIterator>::value,
3008
+ typename vector<bool, _Allocator>::iterator
3009
+ >::type
3010
+ vector<bool, _Allocator>::insert(const_iterator __position, _ForwardIterator __first, _ForwardIterator __last)
3011
+ {
3012
+ difference_type __n = _VSTD::distance(__first, __last);
3013
+ iterator __r;
3014
+ size_type __c = capacity();
3015
+ if (__n <= __c && size() <= __c - __n)
3016
+ {
3017
+ const_iterator __old_end = end();
3018
+ __size_ += __n;
3019
+ _VSTD::copy_backward(__position, __old_end, end());
3020
+ __r = __const_iterator_cast(__position);
3021
+ }
3022
+ else
3023
+ {
3024
+ vector __v(__alloc());
3025
+ __v.reserve(__recommend(__size_ + __n));
3026
+ __v.__size_ = __size_ + __n;
3027
+ __r = _VSTD::copy(cbegin(), __position, __v.begin());
3028
+ _VSTD::copy_backward(__position, cend(), __v.end());
3029
+ swap(__v);
3030
+ }
3031
+ _VSTD::copy(__first, __last, __r);
3032
+ return __r;
3033
+ }
3034
+
3035
+ template <class _Allocator>
3036
+ _LIBCPP_INLINE_VISIBILITY inline
3037
+ typename vector<bool, _Allocator>::iterator
3038
+ vector<bool, _Allocator>::erase(const_iterator __position)
3039
+ {
3040
+ iterator __r = __const_iterator_cast(__position);
3041
+ _VSTD::copy(__position + 1, this->cend(), __r);
3042
+ --__size_;
3043
+ return __r;
3044
+ }
3045
+
3046
+ template <class _Allocator>
3047
+ typename vector<bool, _Allocator>::iterator
3048
+ vector<bool, _Allocator>::erase(const_iterator __first, const_iterator __last)
3049
+ {
3050
+ iterator __r = __const_iterator_cast(__first);
3051
+ difference_type __d = __last - __first;
3052
+ _VSTD::copy(__last, this->cend(), __r);
3053
+ __size_ -= __d;
3054
+ return __r;
3055
+ }
3056
+
3057
+ template <class _Allocator>
3058
+ void
3059
+ vector<bool, _Allocator>::swap(vector& __x)
3060
+ _NOEXCEPT_(!__alloc_traits::propagate_on_container_swap::value ||
3061
+ __is_nothrow_swappable<allocator_type>::value)
3062
+ {
3063
+ _VSTD::swap(this->__begin_, __x.__begin_);
3064
+ _VSTD::swap(this->__size_, __x.__size_);
3065
+ _VSTD::swap(this->__cap(), __x.__cap());
3066
+ __swap_alloc(this->__alloc(), __x.__alloc());
3067
+ #ifdef _LIBCPP_DEBUG
3068
+ iterator::swap(this, &__x);
3069
+ const_iterator::swap(this, &__x);
3070
+ #endif // _LIBCPP_DEBUG
3071
+ }
3072
+
3073
+ template <class _Allocator>
3074
+ void
3075
+ vector<bool, _Allocator>::resize(size_type __sz, value_type __x)
3076
+ {
3077
+ size_type __cs = size();
3078
+ if (__cs < __sz)
3079
+ {
3080
+ iterator __r;
3081
+ size_type __c = capacity();
3082
+ size_type __n = __sz - __cs;
3083
+ if (__n <= __c && __cs <= __c - __n)
3084
+ {
3085
+ __r = end();
3086
+ __size_ += __n;
3087
+ }
3088
+ else
3089
+ {
3090
+ vector __v(__alloc());
3091
+ __v.reserve(__recommend(__size_ + __n));
3092
+ __v.__size_ = __size_ + __n;
3093
+ __r = _VSTD::copy(cbegin(), cend(), __v.begin());
3094
+ swap(__v);
3095
+ }
3096
+ _VSTD::fill_n(__r, __n, __x);
3097
+ }
3098
+ else
3099
+ __size_ = __sz;
3100
+ }
3101
+
3102
+ template <class _Allocator>
3103
+ void
3104
+ vector<bool, _Allocator>::flip() _NOEXCEPT
3105
+ {
3106
+ // do middle whole words
3107
+ size_type __n = __size_;
3108
+ __storage_pointer __p = __begin_;
3109
+ for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word)
3110
+ *__p = ~*__p;
3111
+ // do last partial word
3112
+ if (__n > 0)
3113
+ {
3114
+ __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
3115
+ __storage_type __b = *__p & __m;
3116
+ *__p &= ~__m;
3117
+ *__p |= ~__b & __m;
3118
+ }
3119
+ }
3120
+
3121
+ template <class _Allocator>
3122
+ bool
3123
+ vector<bool, _Allocator>::__invariants() const
3124
+ {
3125
+ if (this->__begin_ == 0)
3126
+ {
3127
+ if (this->__size_ != 0 || this->__cap() != 0)
3128
+ return false;
3129
+ }
3130
+ else
3131
+ {
3132
+ if (this->__cap() == 0)
3133
+ return false;
3134
+ if (this->__size_ > this->capacity())
3135
+ return false;
3136
+ }
3137
+ return true;
3138
+ }
3139
+
3140
+ template <class _Allocator>
3141
+ size_t
3142
+ vector<bool, _Allocator>::__hash_code() const _NOEXCEPT
3143
+ {
3144
+ size_t __h = 0;
3145
+ // do middle whole words
3146
+ size_type __n = __size_;
3147
+ __storage_pointer __p = __begin_;
3148
+ for (; __n >= __bits_per_word; ++__p, __n -= __bits_per_word)
3149
+ __h ^= *__p;
3150
+ // do last partial word
3151
+ if (__n > 0)
3152
+ {
3153
+ const __storage_type __m = ~__storage_type(0) >> (__bits_per_word - __n);
3154
+ __h ^= *__p & __m;
3155
+ }
3156
+ return __h;
3157
+ }
3158
+
3159
+ template <class _Allocator>
3160
+ struct _LIBCPP_TYPE_VIS hash<vector<bool, _Allocator> >
3161
+ : public unary_function<vector<bool, _Allocator>, size_t>
3162
+ {
3163
+ _LIBCPP_INLINE_VISIBILITY
3164
+ size_t operator()(const vector<bool, _Allocator>& __vec) const _NOEXCEPT
3165
+ {return __vec.__hash_code();}
3166
+ };
3167
+
3168
+ template <class _Tp, class _Allocator>
3169
+ _LIBCPP_INLINE_VISIBILITY inline
3170
+ bool
3171
+ operator==(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
3172
+ {
3173
+ const typename vector<_Tp, _Allocator>::size_type __sz = __x.size();
3174
+ return __sz == __y.size() && _VSTD::equal(__x.begin(), __x.end(), __y.begin());
3175
+ }
3176
+
3177
+ template <class _Tp, class _Allocator>
3178
+ _LIBCPP_INLINE_VISIBILITY inline
3179
+ bool
3180
+ operator!=(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
3181
+ {
3182
+ return !(__x == __y);
3183
+ }
3184
+
3185
+ template <class _Tp, class _Allocator>
3186
+ _LIBCPP_INLINE_VISIBILITY inline
3187
+ bool
3188
+ operator< (const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
3189
+ {
3190
+ return _VSTD::lexicographical_compare(__x.begin(), __x.end(), __y.begin(), __y.end());
3191
+ }
3192
+
3193
+ template <class _Tp, class _Allocator>
3194
+ _LIBCPP_INLINE_VISIBILITY inline
3195
+ bool
3196
+ operator> (const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
3197
+ {
3198
+ return __y < __x;
3199
+ }
3200
+
3201
+ template <class _Tp, class _Allocator>
3202
+ _LIBCPP_INLINE_VISIBILITY inline
3203
+ bool
3204
+ operator>=(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
3205
+ {
3206
+ return !(__x < __y);
3207
+ }
3208
+
3209
+ template <class _Tp, class _Allocator>
3210
+ _LIBCPP_INLINE_VISIBILITY inline
3211
+ bool
3212
+ operator<=(const vector<_Tp, _Allocator>& __x, const vector<_Tp, _Allocator>& __y)
3213
+ {
3214
+ return !(__y < __x);
3215
+ }
3216
+
3217
+ template <class _Tp, class _Allocator>
3218
+ _LIBCPP_INLINE_VISIBILITY inline
3219
+ void
3220
+ swap(vector<_Tp, _Allocator>& __x, vector<_Tp, _Allocator>& __y)
3221
+ _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y)))
3222
+ {
3223
+ __x.swap(__y);
3224
+ }
3225
+
3226
+ _LIBCPP_END_NAMESPACE_STD
3227
+
3228
+ #endif // _LIBCPP_VECTOR