webruby 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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