webruby 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1364) hide show
  1. checksums.yaml +7 -0
  2. data/bin/webruby +36 -0
  3. data/driver/driver.c +50 -0
  4. data/driver/main.c +40 -0
  5. data/lib/webruby/app.rb +13 -0
  6. data/lib/webruby/config.rb +61 -0
  7. data/lib/webruby/environment.rb +32 -0
  8. data/lib/webruby/rake/files.rake +66 -0
  9. data/lib/webruby/rake/general.rake +22 -0
  10. data/lib/webruby/rake/mruby.rake +44 -0
  11. data/lib/webruby/utility.rb +132 -0
  12. data/lib/webruby.rb +10 -0
  13. data/modules/emscripten/AUTHORS +89 -0
  14. data/modules/emscripten/LICENSE +68 -0
  15. data/modules/emscripten/README.markdown +14 -0
  16. data/modules/emscripten/cmake/Platform/Emscripten.cmake +61 -0
  17. data/modules/emscripten/cmake/Platform/Emscripten_unix.cmake +24 -0
  18. data/modules/emscripten/em++ +12 -0
  19. data/modules/emscripten/em++.bat +2 -0
  20. data/modules/emscripten/em-config +24 -0
  21. data/modules/emscripten/em-config.bat +2 -0
  22. data/modules/emscripten/emar +24 -0
  23. data/modules/emscripten/emar.bat +2 -0
  24. data/modules/emscripten/emcc +1744 -0
  25. data/modules/emscripten/emcc.bat +2 -0
  26. data/modules/emscripten/emcc.py +5 -0
  27. data/modules/emscripten/emconfigure +27 -0
  28. data/modules/emscripten/emconfigure.bat +2 -0
  29. data/modules/emscripten/emlibtool +11 -0
  30. data/modules/emscripten/emlibtool.bat +2 -0
  31. data/modules/emscripten/emlink.py +293 -0
  32. data/modules/emscripten/emmake +29 -0
  33. data/modules/emscripten/emmake.bat +2 -0
  34. data/modules/emscripten/emranlib +9 -0
  35. data/modules/emscripten/emranlib.bat +2 -0
  36. data/modules/emscripten/emscons +20 -0
  37. data/modules/emscripten/emscripten.py +835 -0
  38. data/modules/emscripten/patches/README +4 -0
  39. data/modules/emscripten/patches/series +2 -0
  40. data/modules/emscripten/scons-tools/closure.py +28 -0
  41. data/modules/emscripten/scons-tools/emscripten.py +359 -0
  42. data/modules/emscripten/scons-tools/llvm.py +33 -0
  43. data/modules/emscripten/src/analyzer.js +1695 -0
  44. data/modules/emscripten/src/compiler.html +48 -0
  45. data/modules/emscripten/src/compiler.js +298 -0
  46. data/modules/emscripten/src/corruptionCheck.js +98 -0
  47. data/modules/emscripten/src/determinstic.js +20 -0
  48. data/modules/emscripten/src/embind/embind.js +1677 -0
  49. data/modules/emscripten/src/embind/emval.js +283 -0
  50. data/modules/emscripten/src/experimental/allow_loopvars_from_memsetcpy_inasm.diff +97 -0
  51. data/modules/emscripten/src/experimental/batching.diff +44 -0
  52. data/modules/emscripten/src/experimental/functypeopt.diff +113 -0
  53. data/modules/emscripten/src/experimental/multiple_heaps.diff +175 -0
  54. data/modules/emscripten/src/experimental/noncallgraphprofiling.diff +197 -0
  55. data/modules/emscripten/src/experimental/optimize_memcpy_for_ta1.diff +124 -0
  56. data/modules/emscripten/src/experimental/remove__label__s.diff +140 -0
  57. data/modules/emscripten/src/experimental/renderer_cache_hash.diff +99 -0
  58. data/modules/emscripten/src/experimental/sdl_key_forwarding.diff +57 -0
  59. data/modules/emscripten/src/experimental/simplifyGeneratedFunctionsDetection.diff +336 -0
  60. data/modules/emscripten/src/experimental/stringCache.diff +147 -0
  61. data/modules/emscripten/src/fastLong.js +299 -0
  62. data/modules/emscripten/src/framework.js +257 -0
  63. data/modules/emscripten/src/gl-matrix.js +1952 -0
  64. data/modules/emscripten/src/headless.js +904 -0
  65. data/modules/emscripten/src/intertyper.js +1050 -0
  66. data/modules/emscripten/src/jsifier.js +1827 -0
  67. data/modules/emscripten/src/library.js +8270 -0
  68. data/modules/emscripten/src/library_browser.js +911 -0
  69. data/modules/emscripten/src/library_egl.js +491 -0
  70. data/modules/emscripten/src/library_gc.js +236 -0
  71. data/modules/emscripten/src/library_gl.js +4452 -0
  72. data/modules/emscripten/src/library_glfw.js +576 -0
  73. data/modules/emscripten/src/library_glut.js +449 -0
  74. data/modules/emscripten/src/library_jansson.js +320 -0
  75. data/modules/emscripten/src/library_openal.js +602 -0
  76. data/modules/emscripten/src/library_sdl.js +2024 -0
  77. data/modules/emscripten/src/library_strtok_r.c +97 -0
  78. data/modules/emscripten/src/library_xlib.js +23 -0
  79. data/modules/emscripten/src/long.js +1609 -0
  80. data/modules/emscripten/src/modules.js +491 -0
  81. data/modules/emscripten/src/parseTools.js +2474 -0
  82. data/modules/emscripten/src/postamble.js +170 -0
  83. data/modules/emscripten/src/postamble_sharedlib.js +16 -0
  84. data/modules/emscripten/src/preamble.js +914 -0
  85. data/modules/emscripten/src/preamble_sharedlib.js +25 -0
  86. data/modules/emscripten/src/relooper/README.markdown +14 -0
  87. data/modules/emscripten/src/relooper/Relooper.cpp +1236 -0
  88. data/modules/emscripten/src/relooper/Relooper.h +250 -0
  89. data/modules/emscripten/src/relooper/doit.sh +70 -0
  90. data/modules/emscripten/src/relooper/emscripten/glue.js +57 -0
  91. data/modules/emscripten/src/relooper/emscripten/test.js +44 -0
  92. data/modules/emscripten/src/relooper/fuzzer.py +116 -0
  93. data/modules/emscripten/src/relooper/ministring.h +35 -0
  94. data/modules/emscripten/src/relooper/paper.pdf +0 -0
  95. data/modules/emscripten/src/relooper/test.cpp +262 -0
  96. data/modules/emscripten/src/relooper/test.txt +155 -0
  97. data/modules/emscripten/src/relooper/test2.c +44 -0
  98. data/modules/emscripten/src/relooper/test2.txt +12 -0
  99. data/modules/emscripten/src/relooper/test3.c +42 -0
  100. data/modules/emscripten/src/relooper/test3.txt +27 -0
  101. data/modules/emscripten/src/relooper/test4.cpp +40 -0
  102. data/modules/emscripten/src/relooper/test4.txt +23 -0
  103. data/modules/emscripten/src/relooper/test5.cpp +40 -0
  104. data/modules/emscripten/src/relooper/test5.txt +32 -0
  105. data/modules/emscripten/src/relooper/test6.cpp +31 -0
  106. data/modules/emscripten/src/relooper/test6.txt +12 -0
  107. data/modules/emscripten/src/relooper/test_dead.cpp +28 -0
  108. data/modules/emscripten/src/relooper/test_dead.txt +9 -0
  109. data/modules/emscripten/src/relooper/test_debug.cpp +30 -0
  110. data/modules/emscripten/src/relooper/test_debug.txt +128 -0
  111. data/modules/emscripten/src/relooper/test_fuzz1.cpp +52 -0
  112. data/modules/emscripten/src/relooper/test_fuzz1.txt +32 -0
  113. data/modules/emscripten/src/relooper/test_fuzz2.cpp +34 -0
  114. data/modules/emscripten/src/relooper/test_fuzz2.txt +13 -0
  115. data/modules/emscripten/src/relooper/test_fuzz3.cpp +36 -0
  116. data/modules/emscripten/src/relooper/test_fuzz3.txt +9 -0
  117. data/modules/emscripten/src/relooper/test_fuzz4.cpp +38 -0
  118. data/modules/emscripten/src/relooper/test_fuzz4.txt +19 -0
  119. data/modules/emscripten/src/relooper/test_fuzz5.cpp +57 -0
  120. data/modules/emscripten/src/relooper/test_fuzz5.txt +52 -0
  121. data/modules/emscripten/src/relooper/test_fuzz6.cpp +322 -0
  122. data/modules/emscripten/src/relooper/test_fuzz6.txt +108 -0
  123. data/modules/emscripten/src/relooper/test_inf.cpp +813 -0
  124. data/modules/emscripten/src/relooper/test_inf.txt +385 -0
  125. data/modules/emscripten/src/relooper/testit.sh +62 -0
  126. data/modules/emscripten/src/relooper/updateit.sh +17 -0
  127. data/modules/emscripten/src/relooper.js +11516 -0
  128. data/modules/emscripten/src/relooper.js.raw.js +11511 -0
  129. data/modules/emscripten/src/runtime.js +546 -0
  130. data/modules/emscripten/src/settings.js +1284 -0
  131. data/modules/emscripten/src/shell.html +92 -0
  132. data/modules/emscripten/src/shell.js +153 -0
  133. data/modules/emscripten/src/shell_sharedlib.js +12 -0
  134. data/modules/emscripten/src/socket.io.js +3870 -0
  135. data/modules/emscripten/src/utility.js +379 -0
  136. data/modules/emscripten/src/wrtcp.js +821 -0
  137. data/modules/emscripten/system/include/AL/al.h +172 -0
  138. data/modules/emscripten/system/include/AL/alc.h +84 -0
  139. data/modules/emscripten/system/include/EGL/egl.h +329 -0
  140. data/modules/emscripten/system/include/EGL/eglext.h +398 -0
  141. data/modules/emscripten/system/include/EGL/eglplatform.h +141 -0
  142. data/modules/emscripten/system/include/GL/freeglut_std.h +628 -0
  143. data/modules/emscripten/system/include/GL/gl.h +2241 -0
  144. data/modules/emscripten/system/include/GL/glew.h +6 -0
  145. data/modules/emscripten/system/include/GL/glext.h +11127 -0
  146. data/modules/emscripten/system/include/GL/glfw.h +518 -0
  147. data/modules/emscripten/system/include/GL/glu.h +353 -0
  148. data/modules/emscripten/system/include/GL/glut.h +21 -0
  149. data/modules/emscripten/system/include/GLES/gl.h +770 -0
  150. data/modules/emscripten/system/include/GLES/glext.h +1278 -0
  151. data/modules/emscripten/system/include/GLES/glplatform.h +30 -0
  152. data/modules/emscripten/system/include/GLES2/gl2.h +621 -0
  153. data/modules/emscripten/system/include/GLES2/gl2ext.h +803 -0
  154. data/modules/emscripten/system/include/GLES2/gl2platform.h +30 -0
  155. data/modules/emscripten/system/include/KHR/khrplatform.h +277 -0
  156. data/modules/emscripten/system/include/SDL/COPYING +19 -0
  157. data/modules/emscripten/system/include/SDL/SDL.h +162 -0
  158. data/modules/emscripten/system/include/SDL/SDL_assert.h +241 -0
  159. data/modules/emscripten/system/include/SDL/SDL_atomic.h +318 -0
  160. data/modules/emscripten/system/include/SDL/SDL_audio.h +509 -0
  161. data/modules/emscripten/system/include/SDL/SDL_blendmode.h +60 -0
  162. data/modules/emscripten/system/include/SDL/SDL_clipboard.h +75 -0
  163. data/modules/emscripten/system/include/SDL/SDL_compat.h +365 -0
  164. data/modules/emscripten/system/include/SDL/SDL_config.h +48 -0
  165. data/modules/emscripten/system/include/SDL/SDL_config.h.in +297 -0
  166. data/modules/emscripten/system/include/SDL/SDL_config_android.h +133 -0
  167. data/modules/emscripten/system/include/SDL/SDL_config_iphoneos.h +148 -0
  168. data/modules/emscripten/system/include/SDL/SDL_config_macosx.h +172 -0
  169. data/modules/emscripten/system/include/SDL/SDL_config_minimal.h +74 -0
  170. data/modules/emscripten/system/include/SDL/SDL_config_nintendods.h +129 -0
  171. data/modules/emscripten/system/include/SDL/SDL_config_pandora.h +125 -0
  172. data/modules/emscripten/system/include/SDL/SDL_config_windows.h +207 -0
  173. data/modules/emscripten/system/include/SDL/SDL_config_wiz.h +119 -0
  174. data/modules/emscripten/system/include/SDL/SDL_copying.h +20 -0
  175. data/modules/emscripten/system/include/SDL/SDL_cpuinfo.h +150 -0
  176. data/modules/emscripten/system/include/SDL/SDL_endian.h +248 -0
  177. data/modules/emscripten/system/include/SDL/SDL_error.h +77 -0
  178. data/modules/emscripten/system/include/SDL/SDL_events.h +639 -0
  179. data/modules/emscripten/system/include/SDL/SDL_gesture.h +91 -0
  180. data/modules/emscripten/system/include/SDL/SDL_gfxPrimitives.h +246 -0
  181. data/modules/emscripten/system/include/SDL/SDL_haptic.h +1200 -0
  182. data/modules/emscripten/system/include/SDL/SDL_hints.h +206 -0
  183. data/modules/emscripten/system/include/SDL/SDL_image.h +138 -0
  184. data/modules/emscripten/system/include/SDL/SDL_input.h +87 -0
  185. data/modules/emscripten/system/include/SDL/SDL_joystick.h +208 -0
  186. data/modules/emscripten/system/include/SDL/SDL_keyboard.h +169 -0
  187. data/modules/emscripten/system/include/SDL/SDL_keycode.h +344 -0
  188. data/modules/emscripten/system/include/SDL/SDL_loadso.h +85 -0
  189. data/modules/emscripten/system/include/SDL/SDL_log.h +211 -0
  190. data/modules/emscripten/system/include/SDL/SDL_main.h +98 -0
  191. data/modules/emscripten/system/include/SDL/SDL_mixer.h +634 -0
  192. data/modules/emscripten/system/include/SDL/SDL_mouse.h +213 -0
  193. data/modules/emscripten/system/include/SDL/SDL_mutex.h +248 -0
  194. data/modules/emscripten/system/include/SDL/SDL_name.h +11 -0
  195. data/modules/emscripten/system/include/SDL/SDL_opengl.h +11116 -0
  196. data/modules/emscripten/system/include/SDL/SDL_opengles.h +38 -0
  197. data/modules/emscripten/system/include/SDL/SDL_opengles2.h +38 -0
  198. data/modules/emscripten/system/include/SDL/SDL_pixels.h +423 -0
  199. data/modules/emscripten/system/include/SDL/SDL_platform.h +160 -0
  200. data/modules/emscripten/system/include/SDL/SDL_power.h +79 -0
  201. data/modules/emscripten/system/include/SDL/SDL_quit.h +58 -0
  202. data/modules/emscripten/system/include/SDL/SDL_rect.h +136 -0
  203. data/modules/emscripten/system/include/SDL/SDL_render.h +615 -0
  204. data/modules/emscripten/system/include/SDL/SDL_revision.h +2 -0
  205. data/modules/emscripten/system/include/SDL/SDL_revision.h.orig +2 -0
  206. data/modules/emscripten/system/include/SDL/SDL_rotozoom.h +123 -0
  207. data/modules/emscripten/system/include/SDL/SDL_rwops.h +220 -0
  208. data/modules/emscripten/system/include/SDL/SDL_scancode.h +398 -0
  209. data/modules/emscripten/system/include/SDL/SDL_shape.h +147 -0
  210. data/modules/emscripten/system/include/SDL/SDL_stdinc.h +764 -0
  211. data/modules/emscripten/system/include/SDL/SDL_surface.h +499 -0
  212. data/modules/emscripten/system/include/SDL/SDL_syswm.h +241 -0
  213. data/modules/emscripten/system/include/SDL/SDL_thread.h +182 -0
  214. data/modules/emscripten/system/include/SDL/SDL_timer.h +108 -0
  215. data/modules/emscripten/system/include/SDL/SDL_touch.h +124 -0
  216. data/modules/emscripten/system/include/SDL/SDL_ttf.h +249 -0
  217. data/modules/emscripten/system/include/SDL/SDL_types.h +29 -0
  218. data/modules/emscripten/system/include/SDL/SDL_version.h +166 -0
  219. data/modules/emscripten/system/include/SDL/SDL_video.h +820 -0
  220. data/modules/emscripten/system/include/SDL/begin_code.h +135 -0
  221. data/modules/emscripten/system/include/SDL/close_code.h +37 -0
  222. data/modules/emscripten/system/include/X11/X.h +717 -0
  223. data/modules/emscripten/system/include/X11/Xatom.h +79 -0
  224. data/modules/emscripten/system/include/X11/Xfuncproto.h +127 -0
  225. data/modules/emscripten/system/include/X11/Xlib.h +4023 -0
  226. data/modules/emscripten/system/include/X11/Xosdefs.h +116 -0
  227. data/modules/emscripten/system/include/X11/Xutil.h +826 -0
  228. data/modules/emscripten/system/include/X11/keysym.h +73 -0
  229. data/modules/emscripten/system/include/X11/keysymdef.h +2389 -0
  230. data/modules/emscripten/system/include/bsd/float.h +91 -0
  231. data/modules/emscripten/system/include/bsd/readme.txt +2 -0
  232. data/modules/emscripten/system/include/bsd/sys/mman.h +180 -0
  233. data/modules/emscripten/system/include/bsd/sys/utsname.h +70 -0
  234. data/modules/emscripten/system/include/dlfcn.h +31 -0
  235. data/modules/emscripten/system/include/emscripten/bind.h +1210 -0
  236. data/modules/emscripten/system/include/emscripten/emscripten.h +388 -0
  237. data/modules/emscripten/system/include/emscripten/val.h +311 -0
  238. data/modules/emscripten/system/include/emscripten/wire.h +393 -0
  239. data/modules/emscripten/system/include/err.h +95 -0
  240. data/modules/emscripten/system/include/execinfo.h +44 -0
  241. data/modules/emscripten/system/include/features.h +3 -0
  242. data/modules/emscripten/system/include/gc.h +70 -0
  243. data/modules/emscripten/system/include/gfx/png.h +3798 -0
  244. data/modules/emscripten/system/include/gfx/pngconf.h +1665 -0
  245. data/modules/emscripten/system/include/gfx/tiff.h +654 -0
  246. data/modules/emscripten/system/include/gfx/tiffconf.h +104 -0
  247. data/modules/emscripten/system/include/gfx/tiffio.h +526 -0
  248. data/modules/emscripten/system/include/gfx/tiffvers.h +9 -0
  249. data/modules/emscripten/system/include/jansson.h +323 -0
  250. data/modules/emscripten/system/include/jansson_config.h +54 -0
  251. data/modules/emscripten/system/include/libc/_ansi.h +135 -0
  252. data/modules/emscripten/system/include/libc/_syslist.h +40 -0
  253. data/modules/emscripten/system/include/libc/alloca.h +21 -0
  254. data/modules/emscripten/system/include/libc/ar.h +69 -0
  255. data/modules/emscripten/system/include/libc/argz.h +33 -0
  256. data/modules/emscripten/system/include/libc/assert.h +46 -0
  257. data/modules/emscripten/system/include/libc/complex.h +124 -0
  258. data/modules/emscripten/system/include/libc/ctype.h +196 -0
  259. data/modules/emscripten/system/include/libc/dirent.h +16 -0
  260. data/modules/emscripten/system/include/libc/endian.h +3 -0
  261. data/modules/emscripten/system/include/libc/envlock.h +15 -0
  262. data/modules/emscripten/system/include/libc/envz.h +16 -0
  263. data/modules/emscripten/system/include/libc/errno.h +11 -0
  264. data/modules/emscripten/system/include/libc/fastmath.h +13 -0
  265. data/modules/emscripten/system/include/libc/fcntl.h +1 -0
  266. data/modules/emscripten/system/include/libc/fnmatch.h +55 -0
  267. data/modules/emscripten/system/include/libc/getopt.h +196 -0
  268. data/modules/emscripten/system/include/libc/glob.h +89 -0
  269. data/modules/emscripten/system/include/libc/grp.h +94 -0
  270. data/modules/emscripten/system/include/libc/iconv.h +62 -0
  271. data/modules/emscripten/system/include/libc/ieeefp.h +256 -0
  272. data/modules/emscripten/system/include/libc/ifaddrs.h +64 -0
  273. data/modules/emscripten/system/include/libc/inttypes.h +290 -0
  274. data/modules/emscripten/system/include/libc/iso646.h +43 -0
  275. data/modules/emscripten/system/include/libc/langinfo.h +316 -0
  276. data/modules/emscripten/system/include/libc/libgen.h +23 -0
  277. data/modules/emscripten/system/include/libc/limits.h +155 -0
  278. data/modules/emscripten/system/include/libc/locale.h +80 -0
  279. data/modules/emscripten/system/include/libc/machine/_default_types.h +121 -0
  280. data/modules/emscripten/system/include/libc/machine/_types.h +8 -0
  281. data/modules/emscripten/system/include/libc/machine/ansi.h +1 -0
  282. data/modules/emscripten/system/include/libc/machine/endian.h +31 -0
  283. data/modules/emscripten/system/include/libc/machine/fastmath.h +100 -0
  284. data/modules/emscripten/system/include/libc/machine/ieeefp.h +376 -0
  285. data/modules/emscripten/system/include/libc/machine/malloc.h +8 -0
  286. data/modules/emscripten/system/include/libc/machine/param.h +1 -0
  287. data/modules/emscripten/system/include/libc/machine/setjmp-dj.h +43 -0
  288. data/modules/emscripten/system/include/libc/machine/setjmp.h +361 -0
  289. data/modules/emscripten/system/include/libc/machine/stdlib.h +8 -0
  290. data/modules/emscripten/system/include/libc/machine/termios.h +1 -0
  291. data/modules/emscripten/system/include/libc/machine/time.h +19 -0
  292. data/modules/emscripten/system/include/libc/machine/types.h +30 -0
  293. data/modules/emscripten/system/include/libc/malloc.h +169 -0
  294. data/modules/emscripten/system/include/libc/math.h +594 -0
  295. data/modules/emscripten/system/include/libc/newlib.h +2 -0
  296. data/modules/emscripten/system/include/libc/paths.h +7 -0
  297. data/modules/emscripten/system/include/libc/process.h +44 -0
  298. data/modules/emscripten/system/include/libc/pthread.h +362 -0
  299. data/modules/emscripten/system/include/libc/pwd.h +78 -0
  300. data/modules/emscripten/system/include/libc/readme.txt +3 -0
  301. data/modules/emscripten/system/include/libc/reent.h +183 -0
  302. data/modules/emscripten/system/include/libc/regdef.h +7 -0
  303. data/modules/emscripten/system/include/libc/regex.h +102 -0
  304. data/modules/emscripten/system/include/libc/sched.h +97 -0
  305. data/modules/emscripten/system/include/libc/search.h +59 -0
  306. data/modules/emscripten/system/include/libc/setjmp.h +20 -0
  307. data/modules/emscripten/system/include/libc/signal.h +30 -0
  308. data/modules/emscripten/system/include/libc/stdarg.h +50 -0
  309. data/modules/emscripten/system/include/libc/stddef.h +64 -0
  310. data/modules/emscripten/system/include/libc/stdint.h +493 -0
  311. data/modules/emscripten/system/include/libc/stdio.h +694 -0
  312. data/modules/emscripten/system/include/libc/stdlib.h +230 -0
  313. data/modules/emscripten/system/include/libc/string.h +105 -0
  314. data/modules/emscripten/system/include/libc/strings.h +35 -0
  315. data/modules/emscripten/system/include/libc/sys/_default_fcntl.h +223 -0
  316. data/modules/emscripten/system/include/libc/sys/_types.h +93 -0
  317. data/modules/emscripten/system/include/libc/sys/cdefs.h +123 -0
  318. data/modules/emscripten/system/include/libc/sys/config.h +255 -0
  319. data/modules/emscripten/system/include/libc/sys/custom_file.h +2 -0
  320. data/modules/emscripten/system/include/libc/sys/dir.h +10 -0
  321. data/modules/emscripten/system/include/libc/sys/dirent.h +58 -0
  322. data/modules/emscripten/system/include/libc/sys/errno.h +190 -0
  323. data/modules/emscripten/system/include/libc/sys/fcntl.h +4 -0
  324. data/modules/emscripten/system/include/libc/sys/features.h +212 -0
  325. data/modules/emscripten/system/include/libc/sys/file.h +2 -0
  326. data/modules/emscripten/system/include/libc/sys/iconvnls.h +77 -0
  327. data/modules/emscripten/system/include/libc/sys/lock.h +24 -0
  328. data/modules/emscripten/system/include/libc/sys/param.h +25 -0
  329. data/modules/emscripten/system/include/libc/sys/queue.h +471 -0
  330. data/modules/emscripten/system/include/libc/sys/reent.h +843 -0
  331. data/modules/emscripten/system/include/libc/sys/resource.h +59 -0
  332. data/modules/emscripten/system/include/libc/sys/sched.h +67 -0
  333. data/modules/emscripten/system/include/libc/sys/signal.h +314 -0
  334. data/modules/emscripten/system/include/libc/sys/stat.h +222 -0
  335. data/modules/emscripten/system/include/libc/sys/stdio.h +27 -0
  336. data/modules/emscripten/system/include/libc/sys/string.h +2 -0
  337. data/modules/emscripten/system/include/libc/sys/syslimits.h +65 -0
  338. data/modules/emscripten/system/include/libc/sys/termios.h +280 -0
  339. data/modules/emscripten/system/include/libc/sys/time.h +85 -0
  340. data/modules/emscripten/system/include/libc/sys/timeb.h +39 -0
  341. data/modules/emscripten/system/include/libc/sys/times.h +28 -0
  342. data/modules/emscripten/system/include/libc/sys/ttydefaults.h +97 -0
  343. data/modules/emscripten/system/include/libc/sys/types.h +481 -0
  344. data/modules/emscripten/system/include/libc/sys/unistd.h +514 -0
  345. data/modules/emscripten/system/include/libc/sys/utime.h +26 -0
  346. data/modules/emscripten/system/include/libc/sys/wait.h +40 -0
  347. data/modules/emscripten/system/include/libc/tar.h +39 -0
  348. data/modules/emscripten/system/include/libc/termios.h +7 -0
  349. data/modules/emscripten/system/include/libc/time.h +273 -0
  350. data/modules/emscripten/system/include/libc/unctrl.h +46 -0
  351. data/modules/emscripten/system/include/libc/unistd.h +6 -0
  352. data/modules/emscripten/system/include/libc/utime.h +12 -0
  353. data/modules/emscripten/system/include/libc/utmp.h +8 -0
  354. data/modules/emscripten/system/include/libc/wchar.h +194 -0
  355. data/modules/emscripten/system/include/libc/wctype.h +47 -0
  356. data/modules/emscripten/system/include/libc/wordexp.h +53 -0
  357. data/modules/emscripten/system/include/libcxx/CREDITS.TXT +91 -0
  358. data/modules/emscripten/system/include/libcxx/LICENSE.txt +76 -0
  359. data/modules/emscripten/system/include/libcxx/__bit_reference +1268 -0
  360. data/modules/emscripten/system/include/libcxx/__config +485 -0
  361. data/modules/emscripten/system/include/libcxx/__debug +193 -0
  362. data/modules/emscripten/system/include/libcxx/__functional_03 +2130 -0
  363. data/modules/emscripten/system/include/libcxx/__functional_base +437 -0
  364. data/modules/emscripten/system/include/libcxx/__functional_base_03 +1087 -0
  365. data/modules/emscripten/system/include/libcxx/__hash_table +1945 -0
  366. data/modules/emscripten/system/include/libcxx/__locale +1435 -0
  367. data/modules/emscripten/system/include/libcxx/__mutex_base +438 -0
  368. data/modules/emscripten/system/include/libcxx/__split_buffer +654 -0
  369. data/modules/emscripten/system/include/libcxx/__sso_allocator +77 -0
  370. data/modules/emscripten/system/include/libcxx/__std_stream +317 -0
  371. data/modules/emscripten/system/include/libcxx/__tree +2293 -0
  372. data/modules/emscripten/system/include/libcxx/__tuple +305 -0
  373. data/modules/emscripten/system/include/libcxx/__tuple_03 +27 -0
  374. data/modules/emscripten/system/include/libcxx/__undef_min_max +19 -0
  375. data/modules/emscripten/system/include/libcxx/algorithm +5458 -0
  376. data/modules/emscripten/system/include/libcxx/array +341 -0
  377. data/modules/emscripten/system/include/libcxx/atomic +1521 -0
  378. data/modules/emscripten/system/include/libcxx/bitset +1081 -0
  379. data/modules/emscripten/system/include/libcxx/cassert +25 -0
  380. data/modules/emscripten/system/include/libcxx/ccomplex +29 -0
  381. data/modules/emscripten/system/include/libcxx/cctype +164 -0
  382. data/modules/emscripten/system/include/libcxx/cerrno +393 -0
  383. data/modules/emscripten/system/include/libcxx/cfenv +82 -0
  384. data/modules/emscripten/system/include/libcxx/cfloat +78 -0
  385. data/modules/emscripten/system/include/libcxx/chrono +898 -0
  386. data/modules/emscripten/system/include/libcxx/cinttypes +259 -0
  387. data/modules/emscripten/system/include/libcxx/ciso646 +25 -0
  388. data/modules/emscripten/system/include/libcxx/climits +48 -0
  389. data/modules/emscripten/system/include/libcxx/clocale +53 -0
  390. data/modules/emscripten/system/include/libcxx/cmath +1683 -0
  391. data/modules/emscripten/system/include/libcxx/codecvt +547 -0
  392. data/modules/emscripten/system/include/libcxx/complex +1526 -0
  393. data/modules/emscripten/system/include/libcxx/complex.h +35 -0
  394. data/modules/emscripten/system/include/libcxx/condition_variable +256 -0
  395. data/modules/emscripten/system/include/libcxx/csetjmp +52 -0
  396. data/modules/emscripten/system/include/libcxx/csignal +58 -0
  397. data/modules/emscripten/system/include/libcxx/cstdarg +48 -0
  398. data/modules/emscripten/system/include/libcxx/cstdbool +32 -0
  399. data/modules/emscripten/system/include/libcxx/cstddef +103 -0
  400. data/modules/emscripten/system/include/libcxx/cstdint +191 -0
  401. data/modules/emscripten/system/include/libcxx/cstdio +175 -0
  402. data/modules/emscripten/system/include/libcxx/cstdlib +172 -0
  403. data/modules/emscripten/system/include/libcxx/cstring +112 -0
  404. data/modules/emscripten/system/include/libcxx/ctgmath +29 -0
  405. data/modules/emscripten/system/include/libcxx/ctime +72 -0
  406. data/modules/emscripten/system/include/libcxx/cwchar +208 -0
  407. data/modules/emscripten/system/include/libcxx/cwctype +213 -0
  408. data/modules/emscripten/system/include/libcxx/deque +2846 -0
  409. data/modules/emscripten/system/include/libcxx/exception +250 -0
  410. data/modules/emscripten/system/include/libcxx/ext/__hash +46 -0
  411. data/modules/emscripten/system/include/libcxx/ext/hash_map +1003 -0
  412. data/modules/emscripten/system/include/libcxx/ext/hash_set +657 -0
  413. data/modules/emscripten/system/include/libcxx/forward_list +1636 -0
  414. data/modules/emscripten/system/include/libcxx/fstream +1415 -0
  415. data/modules/emscripten/system/include/libcxx/functional +2063 -0
  416. data/modules/emscripten/system/include/libcxx/future +2505 -0
  417. data/modules/emscripten/system/include/libcxx/initializer_list +105 -0
  418. data/modules/emscripten/system/include/libcxx/iomanip +504 -0
  419. data/modules/emscripten/system/include/libcxx/ios +988 -0
  420. data/modules/emscripten/system/include/libcxx/iosfwd +194 -0
  421. data/modules/emscripten/system/include/libcxx/iostream +60 -0
  422. data/modules/emscripten/system/include/libcxx/istream +1713 -0
  423. data/modules/emscripten/system/include/libcxx/iterator +1869 -0
  424. data/modules/emscripten/system/include/libcxx/limits +809 -0
  425. data/modules/emscripten/system/include/libcxx/list +2275 -0
  426. data/modules/emscripten/system/include/libcxx/locale +4591 -0
  427. data/modules/emscripten/system/include/libcxx/map +1924 -0
  428. data/modules/emscripten/system/include/libcxx/memory +5437 -0
  429. data/modules/emscripten/system/include/libcxx/mutex +566 -0
  430. data/modules/emscripten/system/include/libcxx/new +117 -0
  431. data/modules/emscripten/system/include/libcxx/numeric +197 -0
  432. data/modules/emscripten/system/include/libcxx/ostream +1286 -0
  433. data/modules/emscripten/system/include/libcxx/queue +717 -0
  434. data/modules/emscripten/system/include/libcxx/random +6750 -0
  435. data/modules/emscripten/system/include/libcxx/ratio +487 -0
  436. data/modules/emscripten/system/include/libcxx/readme.txt +1 -0
  437. data/modules/emscripten/system/include/libcxx/regex +6439 -0
  438. data/modules/emscripten/system/include/libcxx/scoped_allocator +578 -0
  439. data/modules/emscripten/system/include/libcxx/set +1025 -0
  440. data/modules/emscripten/system/include/libcxx/sstream +888 -0
  441. data/modules/emscripten/system/include/libcxx/stack +292 -0
  442. data/modules/emscripten/system/include/libcxx/stdexcept +162 -0
  443. data/modules/emscripten/system/include/libcxx/streambuf +564 -0
  444. data/modules/emscripten/system/include/libcxx/string +3987 -0
  445. data/modules/emscripten/system/include/libcxx/strstream +400 -0
  446. data/modules/emscripten/system/include/libcxx/support/solaris/floatingpoint.h +5 -0
  447. data/modules/emscripten/system/include/libcxx/support/solaris/wchar.h +38 -0
  448. data/modules/emscripten/system/include/libcxx/support/solaris/xlocale.h +146 -0
  449. data/modules/emscripten/system/include/libcxx/support/win32/limits_win32.h +79 -0
  450. data/modules/emscripten/system/include/libcxx/support/win32/locale_win32.h +116 -0
  451. data/modules/emscripten/system/include/libcxx/support/win32/math_win32.h +113 -0
  452. data/modules/emscripten/system/include/libcxx/support/win32/support.h +115 -0
  453. data/modules/emscripten/system/include/libcxx/system_error +636 -0
  454. data/modules/emscripten/system/include/libcxx/tgmath.h +29 -0
  455. data/modules/emscripten/system/include/libcxx/thread +459 -0
  456. data/modules/emscripten/system/include/libcxx/tuple +1092 -0
  457. data/modules/emscripten/system/include/libcxx/type_traits +3040 -0
  458. data/modules/emscripten/system/include/libcxx/typeindex +103 -0
  459. data/modules/emscripten/system/include/libcxx/typeinfo +124 -0
  460. data/modules/emscripten/system/include/libcxx/unordered_map +1864 -0
  461. data/modules/emscripten/system/include/libcxx/unordered_set +1144 -0
  462. data/modules/emscripten/system/include/libcxx/utility +583 -0
  463. data/modules/emscripten/system/include/libcxx/valarray +4779 -0
  464. data/modules/emscripten/system/include/libcxx/vector +3228 -0
  465. data/modules/emscripten/system/include/memory.h +10 -0
  466. data/modules/emscripten/system/include/mntent.h +23 -0
  467. data/modules/emscripten/system/include/net/arpa/inet.h +32 -0
  468. data/modules/emscripten/system/include/net/arpa/nameser.h +535 -0
  469. data/modules/emscripten/system/include/net/arpa/nameser_compat.h +187 -0
  470. data/modules/emscripten/system/include/net/if.h +87 -0
  471. data/modules/emscripten/system/include/net/netinet/in.h +166 -0
  472. data/modules/emscripten/system/include/net/netinet/tcp.h +246 -0
  473. data/modules/emscripten/system/include/net/resolv.h +389 -0
  474. data/modules/emscripten/system/include/netdb.h +94 -0
  475. data/modules/emscripten/system/include/nl_types.h +19 -0
  476. data/modules/emscripten/system/include/poll.h +3 -0
  477. data/modules/emscripten/system/include/pty.h +6 -0
  478. data/modules/emscripten/system/include/semaphore.h +31 -0
  479. data/modules/emscripten/system/include/spawn.h +105 -0
  480. data/modules/emscripten/system/include/stdbool.h +16 -0
  481. data/modules/emscripten/system/include/sys/bitypes.h +3 -0
  482. data/modules/emscripten/system/include/sys/io.h +14 -0
  483. data/modules/emscripten/system/include/sys/ioctl.h +26 -0
  484. data/modules/emscripten/system/include/sys/poll.h +31 -0
  485. data/modules/emscripten/system/include/sys/select.h +14 -0
  486. data/modules/emscripten/system/include/sys/socket.h +101 -0
  487. data/modules/emscripten/system/include/sys/socketvar.h +3 -0
  488. data/modules/emscripten/system/include/sys/statvfs.h +32 -0
  489. data/modules/emscripten/system/include/sys/sysctl.h +14 -0
  490. data/modules/emscripten/system/include/sys/uio.h +22 -0
  491. data/modules/emscripten/system/include/sys/un.h +66 -0
  492. data/modules/emscripten/system/include/sysexits.h +108 -0
  493. data/modules/emscripten/system/include/unwind.h +154 -0
  494. data/modules/emscripten/system/include/xlocale.h +47 -0
  495. data/modules/emscripten/system/include/zconf.h +428 -0
  496. data/modules/emscripten/system/include/zlib.h +1613 -0
  497. data/modules/emscripten/system/lib/compiler-rt/LICENSE.TXT +97 -0
  498. data/modules/emscripten/system/lib/compiler-rt/divdi3.c +47 -0
  499. data/modules/emscripten/system/lib/compiler-rt/int_endianness.h +116 -0
  500. data/modules/emscripten/system/lib/compiler-rt/int_lib.h +46 -0
  501. data/modules/emscripten/system/lib/compiler-rt/int_math.h +67 -0
  502. data/modules/emscripten/system/lib/compiler-rt/int_types.h +140 -0
  503. data/modules/emscripten/system/lib/compiler-rt/int_util.h +29 -0
  504. data/modules/emscripten/system/lib/compiler-rt/muldi3.c +56 -0
  505. data/modules/emscripten/system/lib/compiler-rt/readme.txt +20 -0
  506. data/modules/emscripten/system/lib/compiler-rt/udivdi3.c +36 -0
  507. data/modules/emscripten/system/lib/compiler-rt/udivmoddi4.c +251 -0
  508. data/modules/emscripten/system/lib/debugging.cpp +24 -0
  509. data/modules/emscripten/system/lib/dlmalloc.c +6299 -0
  510. data/modules/emscripten/system/lib/embind/bind.cpp +63 -0
  511. data/modules/emscripten/system/lib/libc/gen/err.c +49 -0
  512. data/modules/emscripten/system/lib/libc/gen/errx.c +49 -0
  513. data/modules/emscripten/system/lib/libc/gen/verr.c +58 -0
  514. data/modules/emscripten/system/lib/libc/gen/verrx.c +51 -0
  515. data/modules/emscripten/system/lib/libc/gen/vwarn.c +55 -0
  516. data/modules/emscripten/system/lib/libc/gen/vwarnx.c +48 -0
  517. data/modules/emscripten/system/lib/libc/gen/warn.c +49 -0
  518. data/modules/emscripten/system/lib/libc/gen/warnx.c +49 -0
  519. data/modules/emscripten/system/lib/libc/musl/COPYRIGHT +92 -0
  520. data/modules/emscripten/system/lib/libc/musl/readme.txt +1 -0
  521. data/modules/emscripten/system/lib/libc/musl/src/ctype/alpha.h +125 -0
  522. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswalnum.c +7 -0
  523. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswalpha.c +14 -0
  524. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswblank.c +8 -0
  525. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswcntrl.c +10 -0
  526. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswctype.c +63 -0
  527. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswdigit.c +9 -0
  528. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswgraph.c +7 -0
  529. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswlower.c +6 -0
  530. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswprint.c +19 -0
  531. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswpunct.c +12 -0
  532. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswspace.c +19 -0
  533. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswupper.c +6 -0
  534. data/modules/emscripten/system/lib/libc/musl/src/ctype/iswxdigit.c +7 -0
  535. data/modules/emscripten/system/lib/libc/musl/src/ctype/nonspacing.h +62 -0
  536. data/modules/emscripten/system/lib/libc/musl/src/ctype/punct.h +109 -0
  537. data/modules/emscripten/system/lib/libc/musl/src/ctype/towctrans.c +268 -0
  538. data/modules/emscripten/system/lib/libc/musl/src/ctype/wcswidth.c +8 -0
  539. data/modules/emscripten/system/lib/libc/musl/src/ctype/wctrans.c +16 -0
  540. data/modules/emscripten/system/lib/libc/musl/src/ctype/wcwidth.c +29 -0
  541. data/modules/emscripten/system/lib/libc/musl/src/ctype/wide.h +42 -0
  542. data/modules/emscripten/system/lib/libc/musl/src/internal/libc.c +22 -0
  543. data/modules/emscripten/system/lib/libc/musl/src/internal/libc.h +71 -0
  544. data/modules/emscripten/system/lib/libc/musl/src/multibyte/btowc.c +7 -0
  545. data/modules/emscripten/system/lib/libc/musl/src/multibyte/internal.c +38 -0
  546. data/modules/emscripten/system/lib/libc/musl/src/multibyte/internal.h +22 -0
  547. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mblen.c +17 -0
  548. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbrlen.c +18 -0
  549. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbrtowc.c +57 -0
  550. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsinit.c +17 -0
  551. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsnrtowcs.c +65 -0
  552. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbsrtowcs.c +100 -0
  553. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbstowcs.c +7 -0
  554. data/modules/emscripten/system/lib/libc/musl/src/multibyte/mbtowc.c +53 -0
  555. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcrtomb.c +38 -0
  556. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcsnrtombs.c +52 -0
  557. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcsrtombs.c +58 -0
  558. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wcstombs.c +7 -0
  559. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wctob.c +8 -0
  560. data/modules/emscripten/system/lib/libc/musl/src/multibyte/wctomb.c +18 -0
  561. data/modules/emscripten/system/lib/libc/musl/src/string/wcpcpy.c +6 -0
  562. data/modules/emscripten/system/lib/libc/musl/src/string/wcpncpy.c +6 -0
  563. data/modules/emscripten/system/lib/libc/musl/src/string/wcscasecmp.c +7 -0
  564. data/modules/emscripten/system/lib/libc/musl/src/string/wcscasecmp_l.c +6 -0
  565. data/modules/emscripten/system/lib/libc/musl/src/string/wcscat.c +7 -0
  566. data/modules/emscripten/system/lib/libc/musl/src/string/wcschr.c +8 -0
  567. data/modules/emscripten/system/lib/libc/musl/src/string/wcscmp.c +7 -0
  568. data/modules/emscripten/system/lib/libc/musl/src/string/wcscpy.c +8 -0
  569. data/modules/emscripten/system/lib/libc/musl/src/string/wcscspn.c +10 -0
  570. data/modules/emscripten/system/lib/libc/musl/src/string/wcsdup.c +11 -0
  571. data/modules/emscripten/system/lib/libc/musl/src/string/wcslen.c +8 -0
  572. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncasecmp.c +9 -0
  573. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncasecmp_l.c +6 -0
  574. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncat.c +10 -0
  575. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncmp.c +7 -0
  576. data/modules/emscripten/system/lib/libc/musl/src/string/wcsncpy.c +9 -0
  577. data/modules/emscripten/system/lib/libc/musl/src/string/wcsnlen.c +8 -0
  578. data/modules/emscripten/system/lib/libc/musl/src/string/wcspbrk.c +7 -0
  579. data/modules/emscripten/system/lib/libc/musl/src/string/wcsrchr.c +8 -0
  580. data/modules/emscripten/system/lib/libc/musl/src/string/wcsspn.c +8 -0
  581. data/modules/emscripten/system/lib/libc/musl/src/string/wcsstr.c +108 -0
  582. data/modules/emscripten/system/lib/libc/musl/src/string/wcstok.c +12 -0
  583. data/modules/emscripten/system/lib/libc/musl/src/string/wcswcs.c +6 -0
  584. data/modules/emscripten/system/lib/libc/musl/src/string/wmemchr.c +8 -0
  585. data/modules/emscripten/system/lib/libc/musl/src/string/wmemcmp.c +8 -0
  586. data/modules/emscripten/system/lib/libc/musl/src/string/wmemcpy.c +9 -0
  587. data/modules/emscripten/system/lib/libc/musl/src/string/wmemmove.c +12 -0
  588. data/modules/emscripten/system/lib/libc/musl/src/string/wmemset.c +9 -0
  589. data/modules/emscripten/system/lib/libc/stdlib/getopt_long.c +511 -0
  590. data/modules/emscripten/system/lib/libc/stdlib/strtod.c +305 -0
  591. data/modules/emscripten/system/lib/libc.symbols +81 -0
  592. data/modules/emscripten/system/lib/libcextra.symbols +61 -0
  593. data/modules/emscripten/system/lib/libcxx/CREDITS.TXT +91 -0
  594. data/modules/emscripten/system/lib/libcxx/LICENSE.txt +76 -0
  595. data/modules/emscripten/system/lib/libcxx/algorithm.cpp +83 -0
  596. data/modules/emscripten/system/lib/libcxx/bind.cpp +30 -0
  597. data/modules/emscripten/system/lib/libcxx/chrono.cpp +132 -0
  598. data/modules/emscripten/system/lib/libcxx/condition_variable.cpp +81 -0
  599. data/modules/emscripten/system/lib/libcxx/debug.cpp +504 -0
  600. data/modules/emscripten/system/lib/libcxx/exception.cpp +226 -0
  601. data/modules/emscripten/system/lib/libcxx/future.cpp +285 -0
  602. data/modules/emscripten/system/lib/libcxx/hash.cpp +564 -0
  603. data/modules/emscripten/system/lib/libcxx/ios.cpp +455 -0
  604. data/modules/emscripten/system/lib/libcxx/iostream.cpp +68 -0
  605. data/modules/emscripten/system/lib/libcxx/locale.cpp +6093 -0
  606. data/modules/emscripten/system/lib/libcxx/memory.cpp +223 -0
  607. data/modules/emscripten/system/lib/libcxx/mutex.cpp +250 -0
  608. data/modules/emscripten/system/lib/libcxx/new.cpp +205 -0
  609. data/modules/emscripten/system/lib/libcxx/random.cpp +48 -0
  610. data/modules/emscripten/system/lib/libcxx/readme.txt +1 -0
  611. data/modules/emscripten/system/lib/libcxx/regex.cpp +325 -0
  612. data/modules/emscripten/system/lib/libcxx/stdexcept.cpp +196 -0
  613. data/modules/emscripten/system/lib/libcxx/string.cpp +687 -0
  614. data/modules/emscripten/system/lib/libcxx/strstream.cpp +329 -0
  615. data/modules/emscripten/system/lib/libcxx/support/solaris/README +4 -0
  616. data/modules/emscripten/system/lib/libcxx/support/solaris/mbsnrtowcs.inc +76 -0
  617. data/modules/emscripten/system/lib/libcxx/support/solaris/wcsnrtombs.inc +93 -0
  618. data/modules/emscripten/system/lib/libcxx/support/solaris/xlocale.c +245 -0
  619. data/modules/emscripten/system/lib/libcxx/support/win32/locale_win32.cpp +94 -0
  620. data/modules/emscripten/system/lib/libcxx/support/win32/support.cpp +70 -0
  621. data/modules/emscripten/system/lib/libcxx/symbols +2927 -0
  622. data/modules/emscripten/system/lib/libcxx/system_error.cpp +201 -0
  623. data/modules/emscripten/system/lib/libcxx/thread.cpp +208 -0
  624. data/modules/emscripten/system/lib/libcxx/typeinfo.cpp +60 -0
  625. data/modules/emscripten/system/lib/libcxx/utility.cpp +17 -0
  626. data/modules/emscripten/system/lib/libcxx/valarray.cpp +54 -0
  627. data/modules/emscripten/system/lib/libcxxabi/CREDITS.TXT +38 -0
  628. data/modules/emscripten/system/lib/libcxxabi/LICENSE.TXT +76 -0
  629. data/modules/emscripten/system/lib/libcxxabi/include/cxa_demangle.h +167 -0
  630. data/modules/emscripten/system/lib/libcxxabi/include/cxxabi.h +175 -0
  631. data/modules/emscripten/system/lib/libcxxabi/lib/buildit +99 -0
  632. data/modules/emscripten/system/lib/libcxxabi/readme.txt +1 -0
  633. data/modules/emscripten/system/lib/libcxxabi/src/abort_message.cpp +50 -0
  634. data/modules/emscripten/system/lib/libcxxabi/src/abort_message.h +33 -0
  635. data/modules/emscripten/system/lib/libcxxabi/src/cxa_aux_runtime.cpp +34 -0
  636. data/modules/emscripten/system/lib/libcxxabi/src/cxa_demangle.cpp +11036 -0
  637. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception.cpp +622 -0
  638. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception.hpp +123 -0
  639. data/modules/emscripten/system/lib/libcxxabi/src/cxa_exception_storage.cpp +91 -0
  640. data/modules/emscripten/system/lib/libcxxabi/src/cxa_guard.cpp +231 -0
  641. data/modules/emscripten/system/lib/libcxxabi/src/cxa_handlers.cpp +125 -0
  642. data/modules/emscripten/system/lib/libcxxabi/src/cxa_handlers.hpp +54 -0
  643. data/modules/emscripten/system/lib/libcxxabi/src/cxa_new_delete.cpp +242 -0
  644. data/modules/emscripten/system/lib/libcxxabi/src/cxa_personality.cpp +1055 -0
  645. data/modules/emscripten/system/lib/libcxxabi/src/cxa_unexpected.cpp +27 -0
  646. data/modules/emscripten/system/lib/libcxxabi/src/cxa_vector.cpp +367 -0
  647. data/modules/emscripten/system/lib/libcxxabi/src/cxa_virtual.cpp +31 -0
  648. data/modules/emscripten/system/lib/libcxxabi/src/exception.cpp +41 -0
  649. data/modules/emscripten/system/lib/libcxxabi/src/fallback_malloc.ipp +174 -0
  650. data/modules/emscripten/system/lib/libcxxabi/src/private_typeinfo.cpp +1146 -0
  651. data/modules/emscripten/system/lib/libcxxabi/src/private_typeinfo.h +248 -0
  652. data/modules/emscripten/system/lib/libcxxabi/src/stdexcept.cpp +169 -0
  653. data/modules/emscripten/system/lib/libcxxabi/src/typeinfo.cpp +53 -0
  654. data/modules/emscripten/system/lib/libcxxabi/symbols +236 -0
  655. data/modules/emscripten/system/lib/sdl.cpp +13 -0
  656. data/modules/emscripten/system/lib/sdl.symbols +1 -0
  657. data/modules/emscripten/tests/hello_world.js +92 -0
  658. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/CppHeaderParser.py +2347 -0
  659. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/__init__.py +4 -0
  660. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/doc/CppHeaderParser.html +657 -0
  661. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/examples/SampleClass.h +147 -0
  662. data/modules/emscripten/third_party/CppHeaderParser/CppHeaderParser/examples/readSampleClass.py +74 -0
  663. data/modules/emscripten/third_party/CppHeaderParser/PKG-INFO +249 -0
  664. data/modules/emscripten/third_party/CppHeaderParser/README.html +544 -0
  665. data/modules/emscripten/third_party/CppHeaderParser/README.txt +226 -0
  666. data/modules/emscripten/third_party/CppHeaderParser/setup.py +43 -0
  667. data/modules/emscripten/third_party/ansidecl.h +371 -0
  668. data/modules/emscripten/third_party/closure-compiler/COPYING +202 -0
  669. data/modules/emscripten/third_party/closure-compiler/README +292 -0
  670. data/modules/emscripten/third_party/closure-compiler/compiler.jar +0 -0
  671. data/modules/emscripten/third_party/closure-compiler/readme.txt +3 -0
  672. data/modules/emscripten/third_party/cp-demangle.h +161 -0
  673. data/modules/emscripten/third_party/demangle.h +549 -0
  674. data/modules/emscripten/third_party/demangler.py +49 -0
  675. data/modules/emscripten/third_party/gcc_demangler.c +4226 -0
  676. data/modules/emscripten/third_party/gcc_demangler.js +21282 -0
  677. data/modules/emscripten/third_party/jni/emjvm.cpp +133 -0
  678. data/modules/emscripten/third_party/jni/emjvm.h +8 -0
  679. data/modules/emscripten/third_party/jni/emjvm.js +185 -0
  680. data/modules/emscripten/third_party/jni/jni.h +1154 -0
  681. data/modules/emscripten/third_party/libiberty.h +634 -0
  682. data/modules/emscripten/third_party/lzma.js/README.markdown +37 -0
  683. data/modules/emscripten/third_party/lzma.js/doit.sh +37 -0
  684. data/modules/emscripten/third_party/lzma.js/lzip/AUTHORS +7 -0
  685. data/modules/emscripten/third_party/lzma.js/lzip/COPYING +676 -0
  686. data/modules/emscripten/third_party/lzma.js/lzip/ChangeLog +201 -0
  687. data/modules/emscripten/third_party/lzma.js/lzip/INSTALL +56 -0
  688. data/modules/emscripten/third_party/lzma.js/lzip/Makefile +160 -0
  689. data/modules/emscripten/third_party/lzma.js/lzip/Makefile.in +138 -0
  690. data/modules/emscripten/third_party/lzma.js/lzip/NEWS +22 -0
  691. data/modules/emscripten/third_party/lzma.js/lzip/README +77 -0
  692. data/modules/emscripten/third_party/lzma.js/lzip/arg_parser.cc +204 -0
  693. data/modules/emscripten/third_party/lzma.js/lzip/arg_parser.h +106 -0
  694. data/modules/emscripten/third_party/lzma.js/lzip/configure +192 -0
  695. data/modules/emscripten/third_party/lzma.js/lzip/decoder.cc +252 -0
  696. data/modules/emscripten/third_party/lzma.js/lzip/decoder.h +268 -0
  697. data/modules/emscripten/third_party/lzma.js/lzip/encoder.cc +643 -0
  698. data/modules/emscripten/third_party/lzma.js/lzip/encoder.h +582 -0
  699. data/modules/emscripten/third_party/lzma.js/lzip/fast_encoder.cc +378 -0
  700. data/modules/emscripten/third_party/lzma.js/lzip/fast_encoder.h +171 -0
  701. data/modules/emscripten/third_party/lzma.js/lzip/lzip.h +264 -0
  702. data/modules/emscripten/third_party/lzma.js/lzip/main.cc +545 -0
  703. data/modules/emscripten/third_party/lzma.js/lzma-decoder.js +27 -0
  704. data/modules/emscripten/third_party/lzma.js/lzma-full.js +27 -0
  705. data/modules/emscripten/third_party/lzma.js/native_test.sh +5 -0
  706. data/modules/emscripten/third_party/lzma.js/post.js +13 -0
  707. data/modules/emscripten/third_party/lzma.js/pre.js +13 -0
  708. data/modules/emscripten/third_party/lzma.js/test-decoder.js +39 -0
  709. data/modules/emscripten/third_party/lzma.js/test-full.html +9 -0
  710. data/modules/emscripten/third_party/lzma.js/test-full.js +78 -0
  711. data/modules/emscripten/third_party/ply/ANNOUNCE +40 -0
  712. data/modules/emscripten/third_party/ply/CHANGES +1093 -0
  713. data/modules/emscripten/third_party/ply/PKG-INFO +22 -0
  714. data/modules/emscripten/third_party/ply/README +271 -0
  715. data/modules/emscripten/third_party/ply/TODO +16 -0
  716. data/modules/emscripten/third_party/ply/doc/internal.html +874 -0
  717. data/modules/emscripten/third_party/ply/doc/makedoc.py +194 -0
  718. data/modules/emscripten/third_party/ply/doc/ply.html +3262 -0
  719. data/modules/emscripten/third_party/ply/example/BASIC/README +79 -0
  720. data/modules/emscripten/third_party/ply/example/BASIC/basic.py +71 -0
  721. data/modules/emscripten/third_party/ply/example/BASIC/basiclex.py +74 -0
  722. data/modules/emscripten/third_party/ply/example/BASIC/basiclog.py +79 -0
  723. data/modules/emscripten/third_party/ply/example/BASIC/basinterp.py +441 -0
  724. data/modules/emscripten/third_party/ply/example/BASIC/basparse.py +424 -0
  725. data/modules/emscripten/third_party/ply/example/BASIC/dim.bas +14 -0
  726. data/modules/emscripten/third_party/ply/example/BASIC/func.bas +5 -0
  727. data/modules/emscripten/third_party/ply/example/BASIC/gcd.bas +22 -0
  728. data/modules/emscripten/third_party/ply/example/BASIC/gosub.bas +13 -0
  729. data/modules/emscripten/third_party/ply/example/BASIC/hello.bas +4 -0
  730. data/modules/emscripten/third_party/ply/example/BASIC/linear.bas +17 -0
  731. data/modules/emscripten/third_party/ply/example/BASIC/maxsin.bas +12 -0
  732. data/modules/emscripten/third_party/ply/example/BASIC/powers.bas +13 -0
  733. data/modules/emscripten/third_party/ply/example/BASIC/rand.bas +4 -0
  734. data/modules/emscripten/third_party/ply/example/BASIC/sales.bas +20 -0
  735. data/modules/emscripten/third_party/ply/example/BASIC/sears.bas +18 -0
  736. data/modules/emscripten/third_party/ply/example/BASIC/sqrt1.bas +5 -0
  737. data/modules/emscripten/third_party/ply/example/BASIC/sqrt2.bas +4 -0
  738. data/modules/emscripten/third_party/ply/example/GardenSnake/GardenSnake.py +709 -0
  739. data/modules/emscripten/third_party/ply/example/GardenSnake/README +5 -0
  740. data/modules/emscripten/third_party/ply/example/README +10 -0
  741. data/modules/emscripten/third_party/ply/example/ansic/README +2 -0
  742. data/modules/emscripten/third_party/ply/example/ansic/clex.py +164 -0
  743. data/modules/emscripten/third_party/ply/example/ansic/cparse.py +863 -0
  744. data/modules/emscripten/third_party/ply/example/calc/calc.py +107 -0
  745. data/modules/emscripten/third_party/ply/example/calcdebug/calc.py +113 -0
  746. data/modules/emscripten/third_party/ply/example/classcalc/calc.py +157 -0
  747. data/modules/emscripten/third_party/ply/example/cleanup.sh +2 -0
  748. data/modules/emscripten/third_party/ply/example/closurecalc/calc.py +130 -0
  749. data/modules/emscripten/third_party/ply/example/hedit/hedit.py +48 -0
  750. data/modules/emscripten/third_party/ply/example/newclasscalc/calc.py +160 -0
  751. data/modules/emscripten/third_party/ply/example/optcalc/README +9 -0
  752. data/modules/emscripten/third_party/ply/example/optcalc/calc.py +119 -0
  753. data/modules/emscripten/third_party/ply/example/unicalc/calc.py +117 -0
  754. data/modules/emscripten/third_party/ply/example/yply/README +41 -0
  755. data/modules/emscripten/third_party/ply/example/yply/ylex.py +112 -0
  756. data/modules/emscripten/third_party/ply/example/yply/yparse.py +217 -0
  757. data/modules/emscripten/third_party/ply/example/yply/yply.py +53 -0
  758. data/modules/emscripten/third_party/ply/ply/__init__.py +4 -0
  759. data/modules/emscripten/third_party/ply/ply/cpp.py +898 -0
  760. data/modules/emscripten/third_party/ply/ply/ctokens.py +133 -0
  761. data/modules/emscripten/third_party/ply/ply/lex.py +1058 -0
  762. data/modules/emscripten/third_party/ply/ply/yacc.py +3276 -0
  763. data/modules/emscripten/third_party/ply/setup.py +31 -0
  764. data/modules/emscripten/third_party/ply/test/README +7 -0
  765. data/modules/emscripten/third_party/ply/test/calclex.py +49 -0
  766. data/modules/emscripten/third_party/ply/test/cleanup.sh +4 -0
  767. data/modules/emscripten/third_party/ply/test/lex_closure.py +54 -0
  768. data/modules/emscripten/third_party/ply/test/lex_doc1.py +26 -0
  769. data/modules/emscripten/third_party/ply/test/lex_dup1.py +29 -0
  770. data/modules/emscripten/third_party/ply/test/lex_dup2.py +33 -0
  771. data/modules/emscripten/third_party/ply/test/lex_dup3.py +31 -0
  772. data/modules/emscripten/third_party/ply/test/lex_empty.py +20 -0
  773. data/modules/emscripten/third_party/ply/test/lex_error1.py +24 -0
  774. data/modules/emscripten/third_party/ply/test/lex_error2.py +26 -0
  775. data/modules/emscripten/third_party/ply/test/lex_error3.py +27 -0
  776. data/modules/emscripten/third_party/ply/test/lex_error4.py +27 -0
  777. data/modules/emscripten/third_party/ply/test/lex_hedit.py +47 -0
  778. data/modules/emscripten/third_party/ply/test/lex_ignore.py +31 -0
  779. data/modules/emscripten/third_party/ply/test/lex_ignore2.py +29 -0
  780. data/modules/emscripten/third_party/ply/test/lex_literal1.py +25 -0
  781. data/modules/emscripten/third_party/ply/test/lex_literal2.py +25 -0
  782. data/modules/emscripten/third_party/ply/test/lex_many_tokens.py +27 -0
  783. data/modules/emscripten/third_party/ply/test/lex_module.py +10 -0
  784. data/modules/emscripten/third_party/ply/test/lex_module_import.py +42 -0
  785. data/modules/emscripten/third_party/ply/test/lex_object.py +55 -0
  786. data/modules/emscripten/third_party/ply/test/lex_opt_alias.py +54 -0
  787. data/modules/emscripten/third_party/ply/test/lex_optimize.py +50 -0
  788. data/modules/emscripten/third_party/ply/test/lex_optimize2.py +50 -0
  789. data/modules/emscripten/third_party/ply/test/lex_optimize3.py +52 -0
  790. data/modules/emscripten/third_party/ply/test/lex_re1.py +27 -0
  791. data/modules/emscripten/third_party/ply/test/lex_re2.py +27 -0
  792. data/modules/emscripten/third_party/ply/test/lex_re3.py +29 -0
  793. data/modules/emscripten/third_party/ply/test/lex_rule1.py +27 -0
  794. data/modules/emscripten/third_party/ply/test/lex_rule2.py +29 -0
  795. data/modules/emscripten/third_party/ply/test/lex_rule3.py +27 -0
  796. data/modules/emscripten/third_party/ply/test/lex_state1.py +40 -0
  797. data/modules/emscripten/third_party/ply/test/lex_state2.py +40 -0
  798. data/modules/emscripten/third_party/ply/test/lex_state3.py +42 -0
  799. data/modules/emscripten/third_party/ply/test/lex_state4.py +41 -0
  800. data/modules/emscripten/third_party/ply/test/lex_state5.py +40 -0
  801. data/modules/emscripten/third_party/ply/test/lex_state_noerror.py +39 -0
  802. data/modules/emscripten/third_party/ply/test/lex_state_norule.py +40 -0
  803. data/modules/emscripten/third_party/ply/test/lex_state_try.py +45 -0
  804. data/modules/emscripten/third_party/ply/test/lex_token1.py +19 -0
  805. data/modules/emscripten/third_party/ply/test/lex_token2.py +22 -0
  806. data/modules/emscripten/third_party/ply/test/lex_token3.py +24 -0
  807. data/modules/emscripten/third_party/ply/test/lex_token4.py +26 -0
  808. data/modules/emscripten/third_party/ply/test/lex_token5.py +31 -0
  809. data/modules/emscripten/third_party/ply/test/lex_token_dup.py +29 -0
  810. data/modules/emscripten/third_party/ply/test/testlex.py +606 -0
  811. data/modules/emscripten/third_party/ply/test/testyacc.py +347 -0
  812. data/modules/emscripten/third_party/ply/test/yacc_badargs.py +68 -0
  813. data/modules/emscripten/third_party/ply/test/yacc_badid.py +77 -0
  814. data/modules/emscripten/third_party/ply/test/yacc_badprec.py +64 -0
  815. data/modules/emscripten/third_party/ply/test/yacc_badprec2.py +68 -0
  816. data/modules/emscripten/third_party/ply/test/yacc_badprec3.py +68 -0
  817. data/modules/emscripten/third_party/ply/test/yacc_badrule.py +68 -0
  818. data/modules/emscripten/third_party/ply/test/yacc_badtok.py +68 -0
  819. data/modules/emscripten/third_party/ply/test/yacc_dup.py +68 -0
  820. data/modules/emscripten/third_party/ply/test/yacc_error1.py +68 -0
  821. data/modules/emscripten/third_party/ply/test/yacc_error2.py +68 -0
  822. data/modules/emscripten/third_party/ply/test/yacc_error3.py +67 -0
  823. data/modules/emscripten/third_party/ply/test/yacc_error4.py +72 -0
  824. data/modules/emscripten/third_party/ply/test/yacc_inf.py +56 -0
  825. data/modules/emscripten/third_party/ply/test/yacc_literal.py +69 -0
  826. data/modules/emscripten/third_party/ply/test/yacc_misplaced.py +68 -0
  827. data/modules/emscripten/third_party/ply/test/yacc_missing1.py +68 -0
  828. data/modules/emscripten/third_party/ply/test/yacc_nested.py +33 -0
  829. data/modules/emscripten/third_party/ply/test/yacc_nodoc.py +67 -0
  830. data/modules/emscripten/third_party/ply/test/yacc_noerror.py +66 -0
  831. data/modules/emscripten/third_party/ply/test/yacc_nop.py +68 -0
  832. data/modules/emscripten/third_party/ply/test/yacc_notfunc.py +66 -0
  833. data/modules/emscripten/third_party/ply/test/yacc_notok.py +67 -0
  834. data/modules/emscripten/third_party/ply/test/yacc_prec1.py +68 -0
  835. data/modules/emscripten/third_party/ply/test/yacc_rr.py +72 -0
  836. data/modules/emscripten/third_party/ply/test/yacc_rr_unused.py +30 -0
  837. data/modules/emscripten/third_party/ply/test/yacc_simple.py +68 -0
  838. data/modules/emscripten/third_party/ply/test/yacc_sr.py +63 -0
  839. data/modules/emscripten/third_party/ply/test/yacc_term1.py +68 -0
  840. data/modules/emscripten/third_party/ply/test/yacc_unused.py +77 -0
  841. data/modules/emscripten/third_party/ply/test/yacc_unused_rule.py +72 -0
  842. data/modules/emscripten/third_party/ply/test/yacc_uprec.py +63 -0
  843. data/modules/emscripten/third_party/ply/test/yacc_uprec2.py +63 -0
  844. data/modules/emscripten/third_party/readme.txt +7 -0
  845. data/modules/emscripten/third_party/websockify/CHANGES.txt +23 -0
  846. data/modules/emscripten/third_party/websockify/LICENSE.txt +16 -0
  847. data/modules/emscripten/third_party/websockify/MANIFEST.in +1 -0
  848. data/modules/emscripten/third_party/websockify/Makefile +11 -0
  849. data/modules/emscripten/third_party/websockify/README.md +168 -0
  850. data/modules/emscripten/third_party/websockify/Windows/Windows Service Readme.txt +39 -0
  851. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Program.cs +24 -0
  852. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.Designer.cs +61 -0
  853. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.cs +19 -0
  854. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/ProjectInstaller.resx +129 -0
  855. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Properties/AssemblyInfo.cs +36 -0
  856. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Service1.Designer.cs +37 -0
  857. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/Service1.cs +41 -0
  858. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/noVNC Websocket.csproj +75 -0
  859. data/modules/emscripten/third_party/websockify/Windows/noVNC Websocket Service Project/noVNC Websocket.sln +20 -0
  860. data/modules/emscripten/third_party/websockify/docs/LICENSE.GPL-3 +621 -0
  861. data/modules/emscripten/third_party/websockify/docs/LICENSE.LGPL-3 +165 -0
  862. data/modules/emscripten/third_party/websockify/docs/LICENSE.MPL-2.0 +373 -0
  863. data/modules/emscripten/third_party/websockify/docs/TODO +9 -0
  864. data/modules/emscripten/third_party/websockify/docs/flash_policy.txt +4 -0
  865. data/modules/emscripten/third_party/websockify/docs/latency_results.txt +114 -0
  866. data/modules/emscripten/third_party/websockify/docs/notes +17 -0
  867. data/modules/emscripten/third_party/websockify/docs/release.txt +9 -0
  868. data/modules/emscripten/third_party/websockify/docs/websockify.1 +110 -0
  869. data/modules/emscripten/third_party/websockify/include/VT100.js +919 -0
  870. data/modules/emscripten/third_party/websockify/include/base64.js +114 -0
  871. data/modules/emscripten/third_party/websockify/include/keysym.js +99 -0
  872. data/modules/emscripten/third_party/websockify/include/util.js +359 -0
  873. data/modules/emscripten/third_party/websockify/include/web-socket-js/README.txt +109 -0
  874. data/modules/emscripten/third_party/websockify/include/web-socket-js/WebSocketMain.swf +0 -0
  875. data/modules/emscripten/third_party/websockify/include/web-socket-js/swfobject.js +4 -0
  876. data/modules/emscripten/third_party/websockify/include/web-socket-js/web_socket.js +391 -0
  877. data/modules/emscripten/third_party/websockify/include/websock.js +422 -0
  878. data/modules/emscripten/third_party/websockify/include/webutil.js +216 -0
  879. data/modules/emscripten/third_party/websockify/include/wsirc.js +235 -0
  880. data/modules/emscripten/third_party/websockify/include/wstelnet.js +335 -0
  881. data/modules/emscripten/third_party/websockify/other/Makefile +14 -0
  882. data/modules/emscripten/third_party/websockify/other/README.md +51 -0
  883. data/modules/emscripten/third_party/websockify/other/launch.sh +108 -0
  884. data/modules/emscripten/third_party/websockify/other/project.clj +13 -0
  885. data/modules/emscripten/third_party/websockify/other/websocket.c +802 -0
  886. data/modules/emscripten/third_party/websockify/other/websocket.h +84 -0
  887. data/modules/emscripten/third_party/websockify/other/websocket.rb +456 -0
  888. data/modules/emscripten/third_party/websockify/other/websockify.c +385 -0
  889. data/modules/emscripten/third_party/websockify/other/websockify.clj +233 -0
  890. data/modules/emscripten/third_party/websockify/other/websockify.js +196 -0
  891. data/modules/emscripten/third_party/websockify/other/websockify.rb +171 -0
  892. data/modules/emscripten/third_party/websockify/other/wswrap +22 -0
  893. data/modules/emscripten/third_party/websockify/rebind +18 -0
  894. data/modules/emscripten/third_party/websockify/rebind.c +94 -0
  895. data/modules/emscripten/third_party/websockify/run +5 -0
  896. data/modules/emscripten/third_party/websockify/setup.py +30 -0
  897. data/modules/emscripten/third_party/websockify/tests/b64_vs_utf8.py +29 -0
  898. data/modules/emscripten/third_party/websockify/tests/base64.html +91 -0
  899. data/modules/emscripten/third_party/websockify/tests/base64.js +12 -0
  900. data/modules/emscripten/third_party/websockify/tests/echo.html +148 -0
  901. data/modules/emscripten/third_party/websockify/tests/echo.py +75 -0
  902. data/modules/emscripten/third_party/websockify/tests/echo.rb +62 -0
  903. data/modules/emscripten/third_party/websockify/tests/latency.html +290 -0
  904. data/modules/emscripten/third_party/websockify/tests/latency.py +75 -0
  905. data/modules/emscripten/third_party/websockify/tests/load.html +250 -0
  906. data/modules/emscripten/third_party/websockify/tests/load.py +167 -0
  907. data/modules/emscripten/third_party/websockify/tests/plain_echo.html +168 -0
  908. data/modules/emscripten/third_party/websockify/tests/simple.html +68 -0
  909. data/modules/emscripten/third_party/websockify/tests/utf8-list.py +22 -0
  910. data/modules/emscripten/third_party/websockify/websockify/__init__.py +2 -0
  911. data/modules/emscripten/third_party/websockify/websockify/websocket.py +982 -0
  912. data/modules/emscripten/third_party/websockify/websockify/websocketproxy.py +393 -0
  913. data/modules/emscripten/third_party/websockify/websockify.py +5 -0
  914. data/modules/emscripten/third_party/websockify/wsirc.html +99 -0
  915. data/modules/emscripten/third_party/websockify/wstelnet.html +74 -0
  916. data/modules/emscripten/tools/__init__.py +0 -0
  917. data/modules/emscripten/tools/__init__.pyc +0 -0
  918. data/modules/emscripten/tools/autodebugger.py +289 -0
  919. data/modules/emscripten/tools/autodebugger_c.py +37 -0
  920. data/modules/emscripten/tools/autodebugger_indenter.py +18 -0
  921. data/modules/emscripten/tools/autodebugger_js.py +47 -0
  922. data/modules/emscripten/tools/autodediffer.py +60 -0
  923. data/modules/emscripten/tools/bindings_generator.py +832 -0
  924. data/modules/emscripten/tools/bisect_pair.py +88 -0
  925. data/modules/emscripten/tools/cache.py +198 -0
  926. data/modules/emscripten/tools/cache.pyc +0 -0
  927. data/modules/emscripten/tools/clean_webconsole.py +34 -0
  928. data/modules/emscripten/tools/crunch-worker.js +124 -0
  929. data/modules/emscripten/tools/diff_autodebugger.py +15 -0
  930. data/modules/emscripten/tools/eliminator/asm-eliminator-test-output.js +5129 -0
  931. data/modules/emscripten/tools/eliminator/asm-eliminator-test.js +6861 -0
  932. data/modules/emscripten/tools/eliminator/eliminator-test-output.js +6122 -0
  933. data/modules/emscripten/tools/eliminator/eliminator-test.js +8856 -0
  934. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/README.html +888 -0
  935. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/README.org +463 -0
  936. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/bin/uglifyjs +317 -0
  937. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/docstyle.css +75 -0
  938. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/object-ast.js +75 -0
  939. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js +1363 -0
  940. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/process.js +2005 -0
  941. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/lib/squeeze-more.js +51 -0
  942. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/package.json +22 -0
  943. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/beautify.js +28 -0
  944. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/testparser.js +402 -0
  945. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array1.js +1 -0
  946. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array2.js +1 -0
  947. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array3.js +1 -0
  948. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/array4.js +1 -0
  949. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/assignment.js +1 -0
  950. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/concatstring.js +1 -0
  951. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/const.js +1 -0
  952. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/empty-blocks.js +1 -0
  953. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/forstatement.js +1 -0
  954. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/if.js +1 -0
  955. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/ifreturn.js +1 -0
  956. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/ifreturn2.js +1 -0
  957. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue10.js +1 -0
  958. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue11.js +1 -0
  959. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue13.js +1 -0
  960. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue14.js +1 -0
  961. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue16.js +1 -0
  962. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue17.js +1 -0
  963. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue20.js +1 -0
  964. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue21.js +1 -0
  965. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue25.js +1 -0
  966. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue27.js +1 -0
  967. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue28.js +1 -0
  968. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue29.js +1 -0
  969. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue30.js +1 -0
  970. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue34.js +1 -0
  971. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue4.js +1 -0
  972. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue48.js +1 -0
  973. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue50.js +1 -0
  974. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue53.js +1 -0
  975. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue54.1.js +1 -0
  976. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue68.js +1 -0
  977. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue69.js +1 -0
  978. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/issue9.js +1 -0
  979. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/mangle.js +1 -0
  980. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/strict-equals.js +1 -0
  981. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/var.js +1 -0
  982. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/expected/with.js +1 -0
  983. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array1.js +3 -0
  984. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array2.js +4 -0
  985. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array3.js +4 -0
  986. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/array4.js +6 -0
  987. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/assignment.js +20 -0
  988. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/concatstring.js +3 -0
  989. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/const.js +5 -0
  990. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/empty-blocks.js +4 -0
  991. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/forstatement.js +10 -0
  992. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/if.js +6 -0
  993. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/ifreturn.js +9 -0
  994. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/ifreturn2.js +16 -0
  995. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue10.js +1 -0
  996. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue11.js +3 -0
  997. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue13.js +1 -0
  998. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue14.js +1 -0
  999. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue16.js +1 -0
  1000. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue17.js +4 -0
  1001. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue20.js +1 -0
  1002. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue21.js +6 -0
  1003. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue25.js +7 -0
  1004. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue27.js +1 -0
  1005. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue28.js +3 -0
  1006. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue29.js +1 -0
  1007. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue30.js +3 -0
  1008. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue34.js +3 -0
  1009. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue4.js +3 -0
  1010. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue48.js +1 -0
  1011. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue50.js +9 -0
  1012. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue53.js +1 -0
  1013. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue54.1.js +3 -0
  1014. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue68.js +5 -0
  1015. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue69.js +1 -0
  1016. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/issue9.js +4 -0
  1017. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/mangle.js +5 -0
  1018. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/strict-equals.js +3 -0
  1019. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/var.js +3 -0
  1020. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/compress/test/with.js +2 -0
  1021. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/test/unit/scripts.js +55 -0
  1022. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/hoist.js +33 -0
  1023. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/instrument.js +97 -0
  1024. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/instrument2.js +138 -0
  1025. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/tmp/test.js +16 -0
  1026. data/modules/emscripten/tools/eliminator/node_modules/uglify-js/uglify-js.js +17 -0
  1027. data/modules/emscripten/tools/eliminator/safe-eliminator-test-output.js +85 -0
  1028. data/modules/emscripten/tools/eliminator/safe-eliminator-test.js +103 -0
  1029. data/modules/emscripten/tools/emconfiguren.py +19 -0
  1030. data/modules/emscripten/tools/emmaken.py +230 -0
  1031. data/modules/emscripten/tools/emmakenxx.py +18 -0
  1032. data/modules/emscripten/tools/exec_llvm.py +50 -0
  1033. data/modules/emscripten/tools/file2json.py +49 -0
  1034. data/modules/emscripten/tools/file_packager.py +649 -0
  1035. data/modules/emscripten/tools/find_bigfuncs.py +23 -0
  1036. data/modules/emscripten/tools/find_bigis.py +18 -0
  1037. data/modules/emscripten/tools/fix_closure.py +88 -0
  1038. data/modules/emscripten/tools/ie7_fix.py +14 -0
  1039. data/modules/emscripten/tools/js-optimizer.js +3440 -0
  1040. data/modules/emscripten/tools/js_optimizer.py +341 -0
  1041. data/modules/emscripten/tools/js_optimizer.pyc +0 -0
  1042. data/modules/emscripten/tools/jsrun.py +27 -0
  1043. data/modules/emscripten/tools/jsrun.pyc +0 -0
  1044. data/modules/emscripten/tools/ll-strip.py +56 -0
  1045. data/modules/emscripten/tools/make_file.py +19 -0
  1046. data/modules/emscripten/tools/make_minigzip.py +13 -0
  1047. data/modules/emscripten/tools/namespacer.py +95 -0
  1048. data/modules/emscripten/tools/nativize_llvm.py +34 -0
  1049. data/modules/emscripten/tools/node_modules/source-map/CHANGELOG.md +58 -0
  1050. data/modules/emscripten/tools/node_modules/source-map/LICENSE +28 -0
  1051. data/modules/emscripten/tools/node_modules/source-map/Makefile.dryice.js +166 -0
  1052. data/modules/emscripten/tools/node_modules/source-map/README.md +347 -0
  1053. data/modules/emscripten/tools/node_modules/source-map/build/assert-shim.js +56 -0
  1054. data/modules/emscripten/tools/node_modules/source-map/build/mini-require.js +152 -0
  1055. data/modules/emscripten/tools/node_modules/source-map/build/prefix-source-map.jsm +20 -0
  1056. data/modules/emscripten/tools/node_modules/source-map/build/prefix-utils.jsm +18 -0
  1057. data/modules/emscripten/tools/node_modules/source-map/build/suffix-browser.js +8 -0
  1058. data/modules/emscripten/tools/node_modules/source-map/build/suffix-source-map.jsm +6 -0
  1059. data/modules/emscripten/tools/node_modules/source-map/build/suffix-utils.jsm +21 -0
  1060. data/modules/emscripten/tools/node_modules/source-map/build/test-prefix.js +8 -0
  1061. data/modules/emscripten/tools/node_modules/source-map/build/test-suffix.js +3 -0
  1062. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/array-set.js +96 -0
  1063. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/base64-vlq.js +144 -0
  1064. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/base64.js +42 -0
  1065. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/binary-search.js +81 -0
  1066. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-map-consumer.js +430 -0
  1067. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-map-generator.js +381 -0
  1068. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/source-node.js +353 -0
  1069. data/modules/emscripten/tools/node_modules/source-map/lib/source-map/util.js +117 -0
  1070. data/modules/emscripten/tools/node_modules/source-map/lib/source-map.js +8 -0
  1071. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/LICENSE +58 -0
  1072. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/README.md +119 -0
  1073. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/amdefine.js +299 -0
  1074. data/modules/emscripten/tools/node_modules/source-map/node_modules/amdefine/package.json +33 -0
  1075. data/modules/emscripten/tools/node_modules/source-map/package.json +74 -0
  1076. data/modules/emscripten/tools/node_modules/source-map/test/run-tests.js +73 -0
  1077. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-api.js +26 -0
  1078. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-array-set.js +71 -0
  1079. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-base64-vlq.js +24 -0
  1080. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-base64.js +35 -0
  1081. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-binary-search.js +54 -0
  1082. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-dog-fooding.js +72 -0
  1083. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-map-consumer.js +306 -0
  1084. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-map-generator.js +391 -0
  1085. data/modules/emscripten/tools/node_modules/source-map/test/source-map/test-source-node.js +282 -0
  1086. data/modules/emscripten/tools/node_modules/source-map/test/source-map/util.js +152 -0
  1087. data/modules/emscripten/tools/reproduceriter.js +216 -0
  1088. data/modules/emscripten/tools/reproduceriter.py +160 -0
  1089. data/modules/emscripten/tools/response_file.py +28 -0
  1090. data/modules/emscripten/tools/response_file.pyc +0 -0
  1091. data/modules/emscripten/tools/scan_js.py +20 -0
  1092. data/modules/emscripten/tools/scan_ll.py +18 -0
  1093. data/modules/emscripten/tools/scons/site_scons/site_tools/emscripten/__init__.py +3 -0
  1094. data/modules/emscripten/tools/scons/site_scons/site_tools/emscripten/emscripten.py +46 -0
  1095. data/modules/emscripten/tools/settings_template_readonly.py +47 -0
  1096. data/modules/emscripten/tools/shared.py +1437 -0
  1097. data/modules/emscripten/tools/shared.pyc +0 -0
  1098. data/modules/emscripten/tools/source-maps/sourcemap2json.js +15 -0
  1099. data/modules/emscripten/tools/source-maps/sourcemapper.js +177 -0
  1100. data/modules/emscripten/tools/split.py +97 -0
  1101. data/modules/emscripten/tools/tempfiles.py +40 -0
  1102. data/modules/emscripten/tools/tempfiles.pyc +0 -0
  1103. data/modules/emscripten/tools/test-js-optimizer-asm-last-output.js +75 -0
  1104. data/modules/emscripten/tools/test-js-optimizer-asm-last.js +91 -0
  1105. data/modules/emscripten/tools/test-js-optimizer-asm-outline-output.js +570 -0
  1106. data/modules/emscripten/tools/test-js-optimizer-asm-outline.js +606 -0
  1107. data/modules/emscripten/tools/test-js-optimizer-asm-pre-output.js +540 -0
  1108. data/modules/emscripten/tools/test-js-optimizer-asm-pre.js +550 -0
  1109. data/modules/emscripten/tools/test-js-optimizer-asm-regs-min-output.js +36 -0
  1110. data/modules/emscripten/tools/test-js-optimizer-asm-regs-min.js +37 -0
  1111. data/modules/emscripten/tools/test-js-optimizer-asm-regs-output.js +106 -0
  1112. data/modules/emscripten/tools/test-js-optimizer-asm-regs.js +110 -0
  1113. data/modules/emscripten/tools/test-js-optimizer-asm-relocate-output.js +9 -0
  1114. data/modules/emscripten/tools/test-js-optimizer-asm-relocate.js +12 -0
  1115. data/modules/emscripten/tools/test-js-optimizer-output.js +291 -0
  1116. data/modules/emscripten/tools/test-js-optimizer-regs-output.js +232 -0
  1117. data/modules/emscripten/tools/test-js-optimizer-regs.js +237 -0
  1118. data/modules/emscripten/tools/test-js-optimizer-t2-output.js +91 -0
  1119. data/modules/emscripten/tools/test-js-optimizer-t2.js +92 -0
  1120. data/modules/emscripten/tools/test-js-optimizer-t2c-output.js +17 -0
  1121. data/modules/emscripten/tools/test-js-optimizer-t2c.js +18 -0
  1122. data/modules/emscripten/tools/test-js-optimizer-t3-output.js +49 -0
  1123. data/modules/emscripten/tools/test-js-optimizer-t3.js +50 -0
  1124. data/modules/emscripten/tools/test-js-optimizer.js +401 -0
  1125. data/modules/mruby/AUTHORS +18 -0
  1126. data/modules/mruby/CONTRIBUTING.md +65 -0
  1127. data/modules/mruby/ChangeLog +15 -0
  1128. data/modules/mruby/INSTALL +29 -0
  1129. data/modules/mruby/LEGAL +6 -0
  1130. data/modules/mruby/MITL +20 -0
  1131. data/modules/mruby/Makefile +18 -0
  1132. data/modules/mruby/NEWS +13 -0
  1133. data/modules/mruby/README.md +116 -0
  1134. data/modules/mruby/Rakefile +114 -0
  1135. data/modules/mruby/TODO +11 -0
  1136. data/modules/mruby/benchmark/ao-render.rb +315 -0
  1137. data/modules/mruby/benchmark/bm_so_lists.rb +47 -0
  1138. data/modules/mruby/benchmark/fib39.rb +8 -0
  1139. data/modules/mruby/build_config.rb +88 -0
  1140. data/modules/mruby/doc/compile/README.md +376 -0
  1141. data/modules/mruby/doc/mrbgems/README.md +254 -0
  1142. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/README.md +4 -0
  1143. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrbgem.rake +23 -0
  1144. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/mrblib/example.rb +5 -0
  1145. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/src/example.c +20 -0
  1146. data/modules/mruby/examples/mrbgems/c_and_ruby_extension_example/test/example.rb +7 -0
  1147. data/modules/mruby/examples/mrbgems/c_extension_example/README.md +4 -0
  1148. data/modules/mruby/examples/mrbgems/c_extension_example/mrbgem.rake +23 -0
  1149. data/modules/mruby/examples/mrbgems/c_extension_example/src/example.c +20 -0
  1150. data/modules/mruby/examples/mrbgems/c_extension_example/test/example.c +7 -0
  1151. data/modules/mruby/examples/mrbgems/c_extension_example/test/example.rb +3 -0
  1152. data/modules/mruby/examples/mrbgems/ruby_extension_example/README.md +4 -0
  1153. data/modules/mruby/examples/mrbgems/ruby_extension_example/mrbgem.rake +23 -0
  1154. data/modules/mruby/examples/mrbgems/ruby_extension_example/mrblib/example.rb +5 -0
  1155. data/modules/mruby/examples/mrbgems/ruby_extension_example/test/example.rb +3 -0
  1156. data/modules/mruby/examples/targets/ArduinoDue.rb +65 -0
  1157. data/modules/mruby/examples/targets/chipKitMax32.rb +68 -0
  1158. data/modules/mruby/include/mrbconf.h +87 -0
  1159. data/modules/mruby/include/mruby/array.h +63 -0
  1160. data/modules/mruby/include/mruby/class.h +75 -0
  1161. data/modules/mruby/include/mruby/compile.h +176 -0
  1162. data/modules/mruby/include/mruby/data.h +53 -0
  1163. data/modules/mruby/include/mruby/dump.h +151 -0
  1164. data/modules/mruby/include/mruby/gc.h +17 -0
  1165. data/modules/mruby/include/mruby/hash.h +54 -0
  1166. data/modules/mruby/include/mruby/irep.h +40 -0
  1167. data/modules/mruby/include/mruby/khash.h +257 -0
  1168. data/modules/mruby/include/mruby/numeric.h +32 -0
  1169. data/modules/mruby/include/mruby/proc.h +62 -0
  1170. data/modules/mruby/include/mruby/range.h +35 -0
  1171. data/modules/mruby/include/mruby/string.h +78 -0
  1172. data/modules/mruby/include/mruby/value.h +483 -0
  1173. data/modules/mruby/include/mruby/variable.h +78 -0
  1174. data/modules/mruby/include/mruby.h +388 -0
  1175. data/modules/mruby/minirake +477 -0
  1176. data/modules/mruby/mrbgems/default.gembox +61 -0
  1177. data/modules/mruby/mrbgems/full-core.gembox +9 -0
  1178. data/modules/mruby/mrbgems/mruby-array-ext/mrbgem.rake +4 -0
  1179. data/modules/mruby/mrbgems/mruby-array-ext/mrblib/array.rb +204 -0
  1180. data/modules/mruby/mrbgems/mruby-array-ext/src/array.c +140 -0
  1181. data/modules/mruby/mrbgems/mruby-array-ext/test/array.rb +109 -0
  1182. data/modules/mruby/mrbgems/mruby-bin-mirb/mrbgem.rake +5 -0
  1183. data/modules/mruby/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c +365 -0
  1184. data/modules/mruby/mrbgems/mruby-bin-mruby/mrbgem.rake +5 -0
  1185. data/modules/mruby/mrbgems/mruby-bin-mruby/tools/mruby/mruby.c +243 -0
  1186. data/modules/mruby/mrbgems/mruby-enum-ext/mrbgem.rake +4 -0
  1187. data/modules/mruby/mrbgems/mruby-enum-ext/mrblib/enum.rb +164 -0
  1188. data/modules/mruby/mrbgems/mruby-enum-ext/test/enum.rb +44 -0
  1189. data/modules/mruby/mrbgems/mruby-eval/mrbgem.rake +4 -0
  1190. data/modules/mruby/mrbgems/mruby-eval/src/eval.c +23 -0
  1191. data/modules/mruby/mrbgems/mruby-fiber/mrbgem.rake +4 -0
  1192. data/modules/mruby/mrbgems/mruby-fiber/src/fiber.c +251 -0
  1193. data/modules/mruby/mrbgems/mruby-fiber/test/fiber.rb +64 -0
  1194. data/modules/mruby/mrbgems/mruby-hash-ext/mrbgem.rake +4 -0
  1195. data/modules/mruby/mrbgems/mruby-hash-ext/mrblib/hash.rb +13 -0
  1196. data/modules/mruby/mrbgems/mruby-hash-ext/src/hash-ext.c +62 -0
  1197. data/modules/mruby/mrbgems/mruby-hash-ext/test/hash.rb +26 -0
  1198. data/modules/mruby/mrbgems/mruby-math/mrbgem.rake +4 -0
  1199. data/modules/mruby/mrbgems/mruby-math/src/math.c +685 -0
  1200. data/modules/mruby/mrbgems/mruby-math/test/math.rb +136 -0
  1201. data/modules/mruby/mrbgems/mruby-numeric-ext/mrbgem.rake +4 -0
  1202. data/modules/mruby/mrbgems/mruby-numeric-ext/src/numeric_ext.c +31 -0
  1203. data/modules/mruby/mrbgems/mruby-numeric-ext/test/numeric.rb +10 -0
  1204. data/modules/mruby/mrbgems/mruby-object-ext/mrbgem.rake +4 -0
  1205. data/modules/mruby/mrbgems/mruby-object-ext/src/object.c +108 -0
  1206. data/modules/mruby/mrbgems/mruby-object-ext/test/nil.rb +11 -0
  1207. data/modules/mruby/mrbgems/mruby-object-ext/test/object.rb +9 -0
  1208. data/modules/mruby/mrbgems/mruby-objectspace/mrbgem.rake +4 -0
  1209. data/modules/mruby/mrbgems/mruby-objectspace/src/mruby_objectspace.c +117 -0
  1210. data/modules/mruby/mrbgems/mruby-objectspace/test/objectspace.rb +38 -0
  1211. data/modules/mruby/mrbgems/mruby-print/mrbgem.rake +4 -0
  1212. data/modules/mruby/mrbgems/mruby-print/mrblib/print.rb +64 -0
  1213. data/modules/mruby/mrbgems/mruby-print/src/print.c +44 -0
  1214. data/modules/mruby/mrbgems/mruby-proc-ext/mrbgem.rake +4 -0
  1215. data/modules/mruby/mrbgems/mruby-proc-ext/mrblib/proc.rb +40 -0
  1216. data/modules/mruby/mrbgems/mruby-proc-ext/src/proc.c +97 -0
  1217. data/modules/mruby/mrbgems/mruby-proc-ext/test/proc.rb +41 -0
  1218. data/modules/mruby/mrbgems/mruby-random/mrbgem.rake +4 -0
  1219. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.c +193 -0
  1220. data/modules/mruby/mrbgems/mruby-random/src/mt19937ar.h +48 -0
  1221. data/modules/mruby/mrbgems/mruby-random/src/random.c +231 -0
  1222. data/modules/mruby/mrbgems/mruby-random/src/random.h +12 -0
  1223. data/modules/mruby/mrbgems/mruby-random/test/random.rb +32 -0
  1224. data/modules/mruby/mrbgems/mruby-range-ext/mrbgem.rake +4 -0
  1225. data/modules/mruby/mrbgems/mruby-range-ext/src/range.c +141 -0
  1226. data/modules/mruby/mrbgems/mruby-range-ext/test/range.rb +20 -0
  1227. data/modules/mruby/mrbgems/mruby-sprintf/mrbgem.rake +4 -0
  1228. data/modules/mruby/mrbgems/mruby-sprintf/src/kernel.c +30 -0
  1229. data/modules/mruby/mrbgems/mruby-sprintf/src/sprintf.c +1102 -0
  1230. data/modules/mruby/mrbgems/mruby-sprintf/test/sprintf.rb +3 -0
  1231. data/modules/mruby/mrbgems/mruby-string-ext/mrbgem.rake +4 -0
  1232. data/modules/mruby/mrbgems/mruby-string-ext/mrblib/string.rb +52 -0
  1233. data/modules/mruby/mrbgems/mruby-string-ext/src/string.c +175 -0
  1234. data/modules/mruby/mrbgems/mruby-string-ext/test/string.rb +112 -0
  1235. data/modules/mruby/mrbgems/mruby-struct/mrbgem.rake +4 -0
  1236. data/modules/mruby/mrbgems/mruby-struct/mrblib/struct.rb +50 -0
  1237. data/modules/mruby/mrbgems/mruby-struct/src/struct.c +818 -0
  1238. data/modules/mruby/mrbgems/mruby-struct/test/struct.rb +77 -0
  1239. data/modules/mruby/mrbgems/mruby-symbol-ext/mrbgem.rake +4 -0
  1240. data/modules/mruby/mrbgems/mruby-symbol-ext/mrblib/symbol.rb +9 -0
  1241. data/modules/mruby/mrbgems/mruby-symbol-ext/src/symbol.c +55 -0
  1242. data/modules/mruby/mrbgems/mruby-symbol-ext/test/symbol.rb +12 -0
  1243. data/modules/mruby/mrbgems/mruby-time/mrbgem.rake +4 -0
  1244. data/modules/mruby/mrbgems/mruby-time/src/time.c +749 -0
  1245. data/modules/mruby/mrbgems/mruby-time/test/time.rb +201 -0
  1246. data/modules/mruby/mrbgems/mruby-toplevel-ext/mrbgem.rake +4 -0
  1247. data/modules/mruby/mrbgems/mruby-toplevel-ext/mrblib/toplevel.rb +11 -0
  1248. data/modules/mruby/mrbgems/mruby-toplevel-ext/test/toplevel.rb +24 -0
  1249. data/modules/mruby/mrblib/array.rb +111 -0
  1250. data/modules/mruby/mrblib/class.rb +26 -0
  1251. data/modules/mruby/mrblib/compar.rb +104 -0
  1252. data/modules/mruby/mrblib/enum.rb +398 -0
  1253. data/modules/mruby/mrblib/error.rb +66 -0
  1254. data/modules/mruby/mrblib/hash.rb +193 -0
  1255. data/modules/mruby/mrblib/init_mrblib.c +14 -0
  1256. data/modules/mruby/mrblib/kernel.rb +46 -0
  1257. data/modules/mruby/mrblib/mrblib.rake +18 -0
  1258. data/modules/mruby/mrblib/numeric.rb +101 -0
  1259. data/modules/mruby/mrblib/print.rb +18 -0
  1260. data/modules/mruby/mrblib/range.rb +40 -0
  1261. data/modules/mruby/mrblib/string.rb +145 -0
  1262. data/modules/mruby/src/array.c +1150 -0
  1263. data/modules/mruby/src/backtrace.c +73 -0
  1264. data/modules/mruby/src/class.c +1942 -0
  1265. data/modules/mruby/src/codegen.c +2864 -0
  1266. data/modules/mruby/src/compar.c +13 -0
  1267. data/modules/mruby/src/crc.c +38 -0
  1268. data/modules/mruby/src/dump.c +542 -0
  1269. data/modules/mruby/src/enum.c +14 -0
  1270. data/modules/mruby/src/error.c +454 -0
  1271. data/modules/mruby/src/error.h +18 -0
  1272. data/modules/mruby/src/etc.c +204 -0
  1273. data/modules/mruby/src/gc.c +1542 -0
  1274. data/modules/mruby/src/hash.c +1261 -0
  1275. data/modules/mruby/src/init.c +62 -0
  1276. data/modules/mruby/src/kernel.c +1105 -0
  1277. data/modules/mruby/src/keywords +50 -0
  1278. data/modules/mruby/src/lex.def +212 -0
  1279. data/modules/mruby/src/load.c +629 -0
  1280. data/modules/mruby/src/mruby_core.rake +28 -0
  1281. data/modules/mruby/src/node.h +117 -0
  1282. data/modules/mruby/src/numeric.c +1418 -0
  1283. data/modules/mruby/src/object.c +593 -0
  1284. data/modules/mruby/src/opcode.h +160 -0
  1285. data/modules/mruby/src/parse.y +6050 -0
  1286. data/modules/mruby/src/pool.c +190 -0
  1287. data/modules/mruby/src/print.c +71 -0
  1288. data/modules/mruby/src/proc.c +209 -0
  1289. data/modules/mruby/src/range.c +442 -0
  1290. data/modules/mruby/src/re.h +13 -0
  1291. data/modules/mruby/src/state.c +200 -0
  1292. data/modules/mruby/src/string.c +2580 -0
  1293. data/modules/mruby/src/symbol.c +456 -0
  1294. data/modules/mruby/src/value_array.h +27 -0
  1295. data/modules/mruby/src/variable.c +1147 -0
  1296. data/modules/mruby/src/vm.c +2129 -0
  1297. data/modules/mruby/tasks/libmruby.rake +18 -0
  1298. data/modules/mruby/tasks/mrbgem_spec.rake +297 -0
  1299. data/modules/mruby/tasks/mrbgems.rake +85 -0
  1300. data/modules/mruby/tasks/mrbgems_test.rake +88 -0
  1301. data/modules/mruby/tasks/mruby_build.rake +211 -0
  1302. data/modules/mruby/tasks/mruby_build_commands.rake +287 -0
  1303. data/modules/mruby/tasks/mruby_build_gem.rake +67 -0
  1304. data/modules/mruby/tasks/ruby_ext.rake +70 -0
  1305. data/modules/mruby/tasks/toolchains/androideabi.rake +126 -0
  1306. data/modules/mruby/tasks/toolchains/clang.rake +8 -0
  1307. data/modules/mruby/tasks/toolchains/gcc.rake +21 -0
  1308. data/modules/mruby/tasks/toolchains/vs2010.rake +3 -0
  1309. data/modules/mruby/tasks/toolchains/vs2012.rake +44 -0
  1310. data/modules/mruby/test/README.md +7 -0
  1311. data/modules/mruby/test/assert.rb +238 -0
  1312. data/modules/mruby/test/driver.c +118 -0
  1313. data/modules/mruby/test/init_mrbtest.c +24 -0
  1314. data/modules/mruby/test/mrbtest.rake +47 -0
  1315. data/modules/mruby/test/report.rb +4 -0
  1316. data/modules/mruby/test/t/argumenterror.rb +21 -0
  1317. data/modules/mruby/test/t/array.rb +309 -0
  1318. data/modules/mruby/test/t/basicobject.rb +11 -0
  1319. data/modules/mruby/test/t/bs_block.rb +489 -0
  1320. data/modules/mruby/test/t/bs_literal.rb +38 -0
  1321. data/modules/mruby/test/t/class.rb +219 -0
  1322. data/modules/mruby/test/t/comparable.rb +72 -0
  1323. data/modules/mruby/test/t/enumerable.rb +108 -0
  1324. data/modules/mruby/test/t/exception.rb +337 -0
  1325. data/modules/mruby/test/t/false.rb +33 -0
  1326. data/modules/mruby/test/t/float.rb +145 -0
  1327. data/modules/mruby/test/t/gc.rb +45 -0
  1328. data/modules/mruby/test/t/hash.rb +310 -0
  1329. data/modules/mruby/test/t/indexerror.rb +10 -0
  1330. data/modules/mruby/test/t/integer.rb +222 -0
  1331. data/modules/mruby/test/t/kernel.rb +425 -0
  1332. data/modules/mruby/test/t/literals.rb +287 -0
  1333. data/modules/mruby/test/t/localjumperror.rb +13 -0
  1334. data/modules/mruby/test/t/methods.rb +109 -0
  1335. data/modules/mruby/test/t/module.rb +344 -0
  1336. data/modules/mruby/test/t/nameerror.rb +32 -0
  1337. data/modules/mruby/test/t/nil.rb +29 -0
  1338. data/modules/mruby/test/t/nomethoderror.rb +13 -0
  1339. data/modules/mruby/test/t/numeric.rb +29 -0
  1340. data/modules/mruby/test/t/object.rb +11 -0
  1341. data/modules/mruby/test/t/proc.rb +56 -0
  1342. data/modules/mruby/test/t/range.rb +82 -0
  1343. data/modules/mruby/test/t/rangeerror.rb +10 -0
  1344. data/modules/mruby/test/t/regexperror.rb +4 -0
  1345. data/modules/mruby/test/t/runtimeerror.rb +6 -0
  1346. data/modules/mruby/test/t/standarderror.rb +10 -0
  1347. data/modules/mruby/test/t/string.rb +483 -0
  1348. data/modules/mruby/test/t/symbol.rb +27 -0
  1349. data/modules/mruby/test/t/syntax.rb +67 -0
  1350. data/modules/mruby/test/t/true.rb +33 -0
  1351. data/modules/mruby/test/t/typeerror.rb +11 -0
  1352. data/modules/mruby/tools/mrbc/mrbc.c +318 -0
  1353. data/modules/mruby/tools/mrbc/mrbc.rake +14 -0
  1354. data/modules/mruby/travis_config.rb +6 -0
  1355. data/modules/mrubymix/LICENSE +21 -0
  1356. data/modules/mrubymix/README.md +6 -0
  1357. data/modules/mrubymix/bin/mrubymix +29 -0
  1358. data/modules/mrubymix/lib/mrubymix.rb +93 -0
  1359. data/modules/mrubymix/mrubymix.gemspec +13 -0
  1360. data/scripts/gen_gems_config.rb +185 -0
  1361. data/scripts/gen_post.rb +104 -0
  1362. data/templates/minimal/Rakefile +36 -0
  1363. data/templates/minimal/app/app.rb +3 -0
  1364. metadata +1408 -0
@@ -0,0 +1,1952 @@
1
+ (function() {
2
+
3
+ /**
4
+ * @fileoverview gl-matrix - High performance matrix and vector operations for WebGL
5
+ * @author Brandon Jones
6
+ * @version 1.2.4
7
+ */
8
+
9
+ // Modifed for emscripten: Global scoping etc.
10
+
11
+ /*
12
+ * Copyright (c) 2011 Brandon Jones
13
+ *
14
+ * This software is provided 'as-is', without any express or implied
15
+ * warranty. In no event will the authors be held liable for any damages
16
+ * arising from the use of this software.
17
+ *
18
+ * Permission is granted to anyone to use this software for any purpose,
19
+ * including commercial applications, and to alter it and redistribute it
20
+ * freely, subject to the following restrictions:
21
+ *
22
+ * 1. The origin of this software must not be misrepresented; you must not
23
+ * claim that you wrote the original software. If you use this software
24
+ * in a product, an acknowledgment in the product documentation would be
25
+ * appreciated but is not required.
26
+ *
27
+ * 2. Altered source versions must be plainly marked as such, and must not
28
+ * be misrepresented as being the original software.
29
+ *
30
+ * 3. This notice may not be removed or altered from any source
31
+ * distribution.
32
+ */
33
+
34
+
35
+ /**
36
+ * @class 3 Dimensional Vector
37
+ * @name vec3
38
+ */
39
+ var vec3 = {};
40
+
41
+ /**
42
+ * @class 3x3 Matrix
43
+ * @name mat3
44
+ */
45
+ var mat3 = {};
46
+
47
+ /**
48
+ * @class 4x4 Matrix
49
+ * @name mat4
50
+ */
51
+ var mat4 = {};
52
+
53
+ /**
54
+ * @class Quaternion
55
+ * @name quat4
56
+ */
57
+ var quat4 = {};
58
+
59
+ var MatrixArray = Float32Array;
60
+
61
+ /*
62
+ * vec3
63
+ */
64
+
65
+ /**
66
+ * Creates a new instance of a vec3 using the default array type
67
+ * Any javascript array-like objects containing at least 3 numeric elements can serve as a vec3
68
+ *
69
+ * @param {vec3} [vec] vec3 containing values to initialize with
70
+ *
71
+ * @returns {vec3} New vec3
72
+ */
73
+ vec3.create = function (vec) {
74
+ var dest = new MatrixArray(3);
75
+
76
+ if (vec) {
77
+ dest[0] = vec[0];
78
+ dest[1] = vec[1];
79
+ dest[2] = vec[2];
80
+ } else {
81
+ dest[0] = dest[1] = dest[2] = 0;
82
+ }
83
+
84
+ return dest;
85
+ };
86
+
87
+ /**
88
+ * Copies the values of one vec3 to another
89
+ *
90
+ * @param {vec3} vec vec3 containing values to copy
91
+ * @param {vec3} dest vec3 receiving copied values
92
+ *
93
+ * @returns {vec3} dest
94
+ */
95
+ vec3.set = function (vec, dest) {
96
+ dest[0] = vec[0];
97
+ dest[1] = vec[1];
98
+ dest[2] = vec[2];
99
+
100
+ return dest;
101
+ };
102
+
103
+ /**
104
+ * Performs a vector addition
105
+ *
106
+ * @param {vec3} vec First operand
107
+ * @param {vec3} vec2 Second operand
108
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
109
+ *
110
+ * @returns {vec3} dest if specified, vec otherwise
111
+ */
112
+ vec3.add = function (vec, vec2, dest) {
113
+ if (!dest || vec === dest) {
114
+ vec[0] += vec2[0];
115
+ vec[1] += vec2[1];
116
+ vec[2] += vec2[2];
117
+ return vec;
118
+ }
119
+
120
+ dest[0] = vec[0] + vec2[0];
121
+ dest[1] = vec[1] + vec2[1];
122
+ dest[2] = vec[2] + vec2[2];
123
+ return dest;
124
+ };
125
+
126
+ /**
127
+ * Performs a vector subtraction
128
+ *
129
+ * @param {vec3} vec First operand
130
+ * @param {vec3} vec2 Second operand
131
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
132
+ *
133
+ * @returns {vec3} dest if specified, vec otherwise
134
+ */
135
+ vec3.subtract = function (vec, vec2, dest) {
136
+ if (!dest || vec === dest) {
137
+ vec[0] -= vec2[0];
138
+ vec[1] -= vec2[1];
139
+ vec[2] -= vec2[2];
140
+ return vec;
141
+ }
142
+
143
+ dest[0] = vec[0] - vec2[0];
144
+ dest[1] = vec[1] - vec2[1];
145
+ dest[2] = vec[2] - vec2[2];
146
+ return dest;
147
+ };
148
+
149
+ /**
150
+ * Performs a vector multiplication
151
+ *
152
+ * @param {vec3} vec First operand
153
+ * @param {vec3} vec2 Second operand
154
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
155
+ *
156
+ * @returns {vec3} dest if specified, vec otherwise
157
+ */
158
+ vec3.multiply = function (vec, vec2, dest) {
159
+ if (!dest || vec === dest) {
160
+ vec[0] *= vec2[0];
161
+ vec[1] *= vec2[1];
162
+ vec[2] *= vec2[2];
163
+ return vec;
164
+ }
165
+
166
+ dest[0] = vec[0] * vec2[0];
167
+ dest[1] = vec[1] * vec2[1];
168
+ dest[2] = vec[2] * vec2[2];
169
+ return dest;
170
+ };
171
+
172
+ /**
173
+ * Negates the components of a vec3
174
+ *
175
+ * @param {vec3} vec vec3 to negate
176
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
177
+ *
178
+ * @returns {vec3} dest if specified, vec otherwise
179
+ */
180
+ vec3.negate = function (vec, dest) {
181
+ if (!dest) { dest = vec; }
182
+
183
+ dest[0] = -vec[0];
184
+ dest[1] = -vec[1];
185
+ dest[2] = -vec[2];
186
+ return dest;
187
+ };
188
+
189
+ /**
190
+ * Multiplies the components of a vec3 by a scalar value
191
+ *
192
+ * @param {vec3} vec vec3 to scale
193
+ * @param {number} val Value to scale by
194
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
195
+ *
196
+ * @returns {vec3} dest if specified, vec otherwise
197
+ */
198
+ vec3.scale = function (vec, val, dest) {
199
+ if (!dest || vec === dest) {
200
+ vec[0] *= val;
201
+ vec[1] *= val;
202
+ vec[2] *= val;
203
+ return vec;
204
+ }
205
+
206
+ dest[0] = vec[0] * val;
207
+ dest[1] = vec[1] * val;
208
+ dest[2] = vec[2] * val;
209
+ return dest;
210
+ };
211
+
212
+ /**
213
+ * Generates a unit vector of the same direction as the provided vec3
214
+ * If vector length is 0, returns [0, 0, 0]
215
+ *
216
+ * @param {vec3} vec vec3 to normalize
217
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
218
+ *
219
+ * @returns {vec3} dest if specified, vec otherwise
220
+ */
221
+ vec3.normalize = function (vec, dest) {
222
+ if (!dest) { dest = vec; }
223
+
224
+ var x = vec[0], y = vec[1], z = vec[2],
225
+ len = Math.sqrt(x * x + y * y + z * z);
226
+
227
+ if (!len) {
228
+ dest[0] = 0;
229
+ dest[1] = 0;
230
+ dest[2] = 0;
231
+ return dest;
232
+ } else if (len === 1) {
233
+ dest[0] = x;
234
+ dest[1] = y;
235
+ dest[2] = z;
236
+ return dest;
237
+ }
238
+
239
+ len = 1 / len;
240
+ dest[0] = x * len;
241
+ dest[1] = y * len;
242
+ dest[2] = z * len;
243
+ return dest;
244
+ };
245
+
246
+ /**
247
+ * Generates the cross product of two vec3s
248
+ *
249
+ * @param {vec3} vec First operand
250
+ * @param {vec3} vec2 Second operand
251
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
252
+ *
253
+ * @returns {vec3} dest if specified, vec otherwise
254
+ */
255
+ vec3.cross = function (vec, vec2, dest) {
256
+ if (!dest) { dest = vec; }
257
+
258
+ var x = vec[0], y = vec[1], z = vec[2],
259
+ x2 = vec2[0], y2 = vec2[1], z2 = vec2[2];
260
+
261
+ dest[0] = y * z2 - z * y2;
262
+ dest[1] = z * x2 - x * z2;
263
+ dest[2] = x * y2 - y * x2;
264
+ return dest;
265
+ };
266
+
267
+ /**
268
+ * Caclulates the length of a vec3
269
+ *
270
+ * @param {vec3} vec vec3 to calculate length of
271
+ *
272
+ * @returns {number} Length of vec
273
+ */
274
+ vec3.length = function (vec) {
275
+ var x = vec[0], y = vec[1], z = vec[2];
276
+ return Math.sqrt(x * x + y * y + z * z);
277
+ };
278
+
279
+ /**
280
+ * Caclulates the dot product of two vec3s
281
+ *
282
+ * @param {vec3} vec First operand
283
+ * @param {vec3} vec2 Second operand
284
+ *
285
+ * @returns {number} Dot product of vec and vec2
286
+ */
287
+ vec3.dot = function (vec, vec2) {
288
+ return vec[0] * vec2[0] + vec[1] * vec2[1] + vec[2] * vec2[2];
289
+ };
290
+
291
+ /**
292
+ * Generates a unit vector pointing from one vector to another
293
+ *
294
+ * @param {vec3} vec Origin vec3
295
+ * @param {vec3} vec2 vec3 to point to
296
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
297
+ *
298
+ * @returns {vec3} dest if specified, vec otherwise
299
+ */
300
+ vec3.direction = function (vec, vec2, dest) {
301
+ if (!dest) { dest = vec; }
302
+
303
+ var x = vec[0] - vec2[0],
304
+ y = vec[1] - vec2[1],
305
+ z = vec[2] - vec2[2],
306
+ len = Math.sqrt(x * x + y * y + z * z);
307
+
308
+ if (!len) {
309
+ dest[0] = 0;
310
+ dest[1] = 0;
311
+ dest[2] = 0;
312
+ return dest;
313
+ }
314
+
315
+ len = 1 / len;
316
+ dest[0] = x * len;
317
+ dest[1] = y * len;
318
+ dest[2] = z * len;
319
+ return dest;
320
+ };
321
+
322
+ /**
323
+ * Performs a linear interpolation between two vec3
324
+ *
325
+ * @param {vec3} vec First vector
326
+ * @param {vec3} vec2 Second vector
327
+ * @param {number} lerp Interpolation amount between the two inputs
328
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
329
+ *
330
+ * @returns {vec3} dest if specified, vec otherwise
331
+ */
332
+ vec3.lerp = function (vec, vec2, lerp, dest) {
333
+ if (!dest) { dest = vec; }
334
+
335
+ dest[0] = vec[0] + lerp * (vec2[0] - vec[0]);
336
+ dest[1] = vec[1] + lerp * (vec2[1] - vec[1]);
337
+ dest[2] = vec[2] + lerp * (vec2[2] - vec[2]);
338
+
339
+ return dest;
340
+ };
341
+
342
+ /**
343
+ * Calculates the euclidian distance between two vec3
344
+ *
345
+ * Params:
346
+ * @param {vec3} vec First vector
347
+ * @param {vec3} vec2 Second vector
348
+ *
349
+ * @returns {number} Distance between vec and vec2
350
+ */
351
+ vec3.dist = function (vec, vec2) {
352
+ var x = vec2[0] - vec[0],
353
+ y = vec2[1] - vec[1],
354
+ z = vec2[2] - vec[2];
355
+
356
+ return Math.sqrt(x*x + y*y + z*z);
357
+ };
358
+
359
+ /**
360
+ * Projects the specified vec3 from screen space into object space
361
+ * Based on the <a href="http://webcvs.freedesktop.org/mesa/Mesa/src/glu/mesa/project.c?revision=1.4&view=markup">Mesa gluUnProject implementation</a>
362
+ *
363
+ * @param {vec3} vec Screen-space vector to project
364
+ * @param {mat4} view View matrix
365
+ * @param {mat4} proj Projection matrix
366
+ * @param {vec4} viewport Viewport as given to gl.viewport [x, y, width, height]
367
+ * @param {vec3} [dest] vec3 receiving unprojected result. If not specified result is written to vec
368
+ *
369
+ * @returns {vec3} dest if specified, vec otherwise
370
+ */
371
+ vec3.unproject = function (vec, view, proj, viewport, dest) {
372
+ if (!dest) { dest = vec; }
373
+
374
+ var m = mat4.create();
375
+ var v = new MatrixArray(4);
376
+
377
+ v[0] = (vec[0] - viewport[0]) * 2.0 / viewport[2] - 1.0;
378
+ v[1] = (vec[1] - viewport[1]) * 2.0 / viewport[3] - 1.0;
379
+ v[2] = 2.0 * vec[2] - 1.0;
380
+ v[3] = 1.0;
381
+
382
+ mat4.multiply(proj, view, m);
383
+ if(!mat4.inverse(m)) { return null; }
384
+
385
+ mat4.multiplyVec4(m, v);
386
+ if(v[3] === 0.0) { return null; }
387
+
388
+ dest[0] = v[0] / v[3];
389
+ dest[1] = v[1] / v[3];
390
+ dest[2] = v[2] / v[3];
391
+
392
+ return dest;
393
+ };
394
+
395
+ /**
396
+ * Returns a string representation of a vector
397
+ *
398
+ * @param {vec3} vec Vector to represent as a string
399
+ *
400
+ * @returns {string} String representation of vec
401
+ */
402
+ vec3.str = function (vec) {
403
+ return '[' + vec[0] + ', ' + vec[1] + ', ' + vec[2] + ']';
404
+ };
405
+
406
+ /*
407
+ * mat3
408
+ */
409
+
410
+ /**
411
+ * Creates a new instance of a mat3 using the default array type
412
+ * Any javascript array-like object containing at least 9 numeric elements can serve as a mat3
413
+ *
414
+ * @param {mat3} [mat] mat3 containing values to initialize with
415
+ *
416
+ * @returns {mat3} New mat3
417
+ */
418
+ mat3.create = function (mat) {
419
+ var dest = new MatrixArray(9);
420
+
421
+ if (mat) {
422
+ dest[0] = mat[0];
423
+ dest[1] = mat[1];
424
+ dest[2] = mat[2];
425
+ dest[3] = mat[3];
426
+ dest[4] = mat[4];
427
+ dest[5] = mat[5];
428
+ dest[6] = mat[6];
429
+ dest[7] = mat[7];
430
+ dest[8] = mat[8];
431
+ }
432
+
433
+ return dest;
434
+ };
435
+
436
+ /**
437
+ * Copies the values of one mat3 to another
438
+ *
439
+ * @param {mat3} mat mat3 containing values to copy
440
+ * @param {mat3} dest mat3 receiving copied values
441
+ *
442
+ * @returns {mat3} dest
443
+ */
444
+ mat3.set = function (mat, dest) {
445
+ dest[0] = mat[0];
446
+ dest[1] = mat[1];
447
+ dest[2] = mat[2];
448
+ dest[3] = mat[3];
449
+ dest[4] = mat[4];
450
+ dest[5] = mat[5];
451
+ dest[6] = mat[6];
452
+ dest[7] = mat[7];
453
+ dest[8] = mat[8];
454
+ return dest;
455
+ };
456
+
457
+ /**
458
+ * Sets a mat3 to an identity matrix
459
+ *
460
+ * @param {mat3} dest mat3 to set
461
+ *
462
+ * @returns dest if specified, otherwise a new mat3
463
+ */
464
+ mat3.identity = function (dest) {
465
+ if (!dest) { dest = mat3.create(); }
466
+ dest[0] = 1;
467
+ dest[1] = 0;
468
+ dest[2] = 0;
469
+ dest[3] = 0;
470
+ dest[4] = 1;
471
+ dest[5] = 0;
472
+ dest[6] = 0;
473
+ dest[7] = 0;
474
+ dest[8] = 1;
475
+ return dest;
476
+ };
477
+
478
+ /**
479
+ * Transposes a mat3 (flips the values over the diagonal)
480
+ *
481
+ * Params:
482
+ * @param {mat3} mat mat3 to transpose
483
+ * @param {mat3} [dest] mat3 receiving transposed values. If not specified result is written to mat
484
+ *
485
+ * @returns {mat3} dest is specified, mat otherwise
486
+ */
487
+ mat3.transpose = function (mat, dest) {
488
+ // If we are transposing ourselves we can skip a few steps but have to cache some values
489
+ if (!dest || mat === dest) {
490
+ var a01 = mat[1], a02 = mat[2],
491
+ a12 = mat[5];
492
+
493
+ mat[1] = mat[3];
494
+ mat[2] = mat[6];
495
+ mat[3] = a01;
496
+ mat[5] = mat[7];
497
+ mat[6] = a02;
498
+ mat[7] = a12;
499
+ return mat;
500
+ }
501
+
502
+ dest[0] = mat[0];
503
+ dest[1] = mat[3];
504
+ dest[2] = mat[6];
505
+ dest[3] = mat[1];
506
+ dest[4] = mat[4];
507
+ dest[5] = mat[7];
508
+ dest[6] = mat[2];
509
+ dest[7] = mat[5];
510
+ dest[8] = mat[8];
511
+ return dest;
512
+ };
513
+
514
+ /**
515
+ * Copies the elements of a mat3 into the upper 3x3 elements of a mat4
516
+ *
517
+ * @param {mat3} mat mat3 containing values to copy
518
+ * @param {mat4} [dest] mat4 receiving copied values
519
+ *
520
+ * @returns {mat4} dest if specified, a new mat4 otherwise
521
+ */
522
+ mat3.toMat4 = function (mat, dest) {
523
+ if (!dest) { dest = mat4.create(); }
524
+
525
+ dest[15] = 1;
526
+ dest[14] = 0;
527
+ dest[13] = 0;
528
+ dest[12] = 0;
529
+
530
+ dest[11] = 0;
531
+ dest[10] = mat[8];
532
+ dest[9] = mat[7];
533
+ dest[8] = mat[6];
534
+
535
+ dest[7] = 0;
536
+ dest[6] = mat[5];
537
+ dest[5] = mat[4];
538
+ dest[4] = mat[3];
539
+
540
+ dest[3] = 0;
541
+ dest[2] = mat[2];
542
+ dest[1] = mat[1];
543
+ dest[0] = mat[0];
544
+
545
+ return dest;
546
+ };
547
+
548
+ /**
549
+ * Returns a string representation of a mat3
550
+ *
551
+ * @param {mat3} mat mat3 to represent as a string
552
+ *
553
+ * @param {string} String representation of mat
554
+ */
555
+ mat3.str = function (mat) {
556
+ return '[' + mat[0] + ', ' + mat[1] + ', ' + mat[2] +
557
+ ', ' + mat[3] + ', ' + mat[4] + ', ' + mat[5] +
558
+ ', ' + mat[6] + ', ' + mat[7] + ', ' + mat[8] + ']';
559
+ };
560
+
561
+ /*
562
+ * mat4
563
+ */
564
+
565
+ /**
566
+ * Creates a new instance of a mat4 using the default array type
567
+ * Any javascript array-like object containing at least 16 numeric elements can serve as a mat4
568
+ *
569
+ * @param {mat4} [mat] mat4 containing values to initialize with
570
+ *
571
+ * @returns {mat4} New mat4
572
+ */
573
+ mat4.create = function (mat) {
574
+ var dest = new MatrixArray(16);
575
+
576
+ if (mat) {
577
+ dest[0] = mat[0];
578
+ dest[1] = mat[1];
579
+ dest[2] = mat[2];
580
+ dest[3] = mat[3];
581
+ dest[4] = mat[4];
582
+ dest[5] = mat[5];
583
+ dest[6] = mat[6];
584
+ dest[7] = mat[7];
585
+ dest[8] = mat[8];
586
+ dest[9] = mat[9];
587
+ dest[10] = mat[10];
588
+ dest[11] = mat[11];
589
+ dest[12] = mat[12];
590
+ dest[13] = mat[13];
591
+ dest[14] = mat[14];
592
+ dest[15] = mat[15];
593
+ }
594
+
595
+ return dest;
596
+ };
597
+
598
+ /**
599
+ * Copies the values of one mat4 to another
600
+ *
601
+ * @param {mat4} mat mat4 containing values to copy
602
+ * @param {mat4} dest mat4 receiving copied values
603
+ *
604
+ * @returns {mat4} dest
605
+ */
606
+ mat4.set = function (mat, dest) {
607
+ dest[0] = mat[0];
608
+ dest[1] = mat[1];
609
+ dest[2] = mat[2];
610
+ dest[3] = mat[3];
611
+ dest[4] = mat[4];
612
+ dest[5] = mat[5];
613
+ dest[6] = mat[6];
614
+ dest[7] = mat[7];
615
+ dest[8] = mat[8];
616
+ dest[9] = mat[9];
617
+ dest[10] = mat[10];
618
+ dest[11] = mat[11];
619
+ dest[12] = mat[12];
620
+ dest[13] = mat[13];
621
+ dest[14] = mat[14];
622
+ dest[15] = mat[15];
623
+ return dest;
624
+ };
625
+
626
+ /**
627
+ * Sets a mat4 to an identity matrix
628
+ *
629
+ * @param {mat4} dest mat4 to set
630
+ *
631
+ * @returns {mat4} dest
632
+ */
633
+ mat4.identity = function (dest) {
634
+ if (!dest) { dest = mat4.create(); }
635
+ dest[0] = 1;
636
+ dest[1] = 0;
637
+ dest[2] = 0;
638
+ dest[3] = 0;
639
+ dest[4] = 0;
640
+ dest[5] = 1;
641
+ dest[6] = 0;
642
+ dest[7] = 0;
643
+ dest[8] = 0;
644
+ dest[9] = 0;
645
+ dest[10] = 1;
646
+ dest[11] = 0;
647
+ dest[12] = 0;
648
+ dest[13] = 0;
649
+ dest[14] = 0;
650
+ dest[15] = 1;
651
+ return dest;
652
+ };
653
+
654
+ /**
655
+ * Transposes a mat4 (flips the values over the diagonal)
656
+ *
657
+ * @param {mat4} mat mat4 to transpose
658
+ * @param {mat4} [dest] mat4 receiving transposed values. If not specified result is written to mat
659
+ *
660
+ * @param {mat4} dest is specified, mat otherwise
661
+ */
662
+ mat4.transpose = function (mat, dest) {
663
+ // If we are transposing ourselves we can skip a few steps but have to cache some values
664
+ if (!dest || mat === dest) {
665
+ var a01 = mat[1], a02 = mat[2], a03 = mat[3],
666
+ a12 = mat[6], a13 = mat[7],
667
+ a23 = mat[11];
668
+
669
+ mat[1] = mat[4];
670
+ mat[2] = mat[8];
671
+ mat[3] = mat[12];
672
+ mat[4] = a01;
673
+ mat[6] = mat[9];
674
+ mat[7] = mat[13];
675
+ mat[8] = a02;
676
+ mat[9] = a12;
677
+ mat[11] = mat[14];
678
+ mat[12] = a03;
679
+ mat[13] = a13;
680
+ mat[14] = a23;
681
+ return mat;
682
+ }
683
+
684
+ dest[0] = mat[0];
685
+ dest[1] = mat[4];
686
+ dest[2] = mat[8];
687
+ dest[3] = mat[12];
688
+ dest[4] = mat[1];
689
+ dest[5] = mat[5];
690
+ dest[6] = mat[9];
691
+ dest[7] = mat[13];
692
+ dest[8] = mat[2];
693
+ dest[9] = mat[6];
694
+ dest[10] = mat[10];
695
+ dest[11] = mat[14];
696
+ dest[12] = mat[3];
697
+ dest[13] = mat[7];
698
+ dest[14] = mat[11];
699
+ dest[15] = mat[15];
700
+ return dest;
701
+ };
702
+
703
+ /**
704
+ * Calculates the determinant of a mat4
705
+ *
706
+ * @param {mat4} mat mat4 to calculate determinant of
707
+ *
708
+ * @returns {number} determinant of mat
709
+ */
710
+ mat4.determinant = function (mat) {
711
+ // Cache the matrix values (makes for huge speed increases!)
712
+ var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3],
713
+ a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7],
714
+ a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11],
715
+ a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15];
716
+
717
+ return (a30 * a21 * a12 * a03 - a20 * a31 * a12 * a03 - a30 * a11 * a22 * a03 + a10 * a31 * a22 * a03 +
718
+ a20 * a11 * a32 * a03 - a10 * a21 * a32 * a03 - a30 * a21 * a02 * a13 + a20 * a31 * a02 * a13 +
719
+ a30 * a01 * a22 * a13 - a00 * a31 * a22 * a13 - a20 * a01 * a32 * a13 + a00 * a21 * a32 * a13 +
720
+ a30 * a11 * a02 * a23 - a10 * a31 * a02 * a23 - a30 * a01 * a12 * a23 + a00 * a31 * a12 * a23 +
721
+ a10 * a01 * a32 * a23 - a00 * a11 * a32 * a23 - a20 * a11 * a02 * a33 + a10 * a21 * a02 * a33 +
722
+ a20 * a01 * a12 * a33 - a00 * a21 * a12 * a33 - a10 * a01 * a22 * a33 + a00 * a11 * a22 * a33);
723
+ };
724
+
725
+ /**
726
+ * Calculates the inverse matrix of a mat4
727
+ *
728
+ * @param {mat4} mat mat4 to calculate inverse of
729
+ * @param {mat4} [dest] mat4 receiving inverse matrix. If not specified result is written to mat
730
+ *
731
+ * @param {mat4} dest is specified, mat otherwise, null if matrix cannot be inverted
732
+ */
733
+ mat4.inverse = function (mat, dest) {
734
+ if (!dest) { dest = mat; }
735
+
736
+ // Cache the matrix values (makes for huge speed increases!)
737
+ var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3],
738
+ a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7],
739
+ a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11],
740
+ a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15],
741
+
742
+ b00 = a00 * a11 - a01 * a10,
743
+ b01 = a00 * a12 - a02 * a10,
744
+ b02 = a00 * a13 - a03 * a10,
745
+ b03 = a01 * a12 - a02 * a11,
746
+ b04 = a01 * a13 - a03 * a11,
747
+ b05 = a02 * a13 - a03 * a12,
748
+ b06 = a20 * a31 - a21 * a30,
749
+ b07 = a20 * a32 - a22 * a30,
750
+ b08 = a20 * a33 - a23 * a30,
751
+ b09 = a21 * a32 - a22 * a31,
752
+ b10 = a21 * a33 - a23 * a31,
753
+ b11 = a22 * a33 - a23 * a32,
754
+
755
+ d = (b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06),
756
+ invDet;
757
+
758
+ // Calculate the determinant
759
+ if (!d) { return null; }
760
+ invDet = 1 / d;
761
+
762
+ dest[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;
763
+ dest[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;
764
+ dest[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;
765
+ dest[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;
766
+ dest[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;
767
+ dest[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;
768
+ dest[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;
769
+ dest[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;
770
+ dest[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;
771
+ dest[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;
772
+ dest[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;
773
+ dest[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;
774
+ dest[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;
775
+ dest[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;
776
+ dest[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;
777
+ dest[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;
778
+
779
+ return dest;
780
+ };
781
+
782
+ /**
783
+ * Copies the upper 3x3 elements of a mat4 into another mat4
784
+ *
785
+ * @param {mat4} mat mat4 containing values to copy
786
+ * @param {mat4} [dest] mat4 receiving copied values
787
+ *
788
+ * @returns {mat4} dest is specified, a new mat4 otherwise
789
+ */
790
+ mat4.toRotationMat = function (mat, dest) {
791
+ if (!dest) { dest = mat4.create(); }
792
+
793
+ dest[0] = mat[0];
794
+ dest[1] = mat[1];
795
+ dest[2] = mat[2];
796
+ dest[3] = mat[3];
797
+ dest[4] = mat[4];
798
+ dest[5] = mat[5];
799
+ dest[6] = mat[6];
800
+ dest[7] = mat[7];
801
+ dest[8] = mat[8];
802
+ dest[9] = mat[9];
803
+ dest[10] = mat[10];
804
+ dest[11] = mat[11];
805
+ dest[12] = 0;
806
+ dest[13] = 0;
807
+ dest[14] = 0;
808
+ dest[15] = 1;
809
+
810
+ return dest;
811
+ };
812
+
813
+ /**
814
+ * Copies the upper 3x3 elements of a mat4 into a mat3
815
+ *
816
+ * @param {mat4} mat mat4 containing values to copy
817
+ * @param {mat3} [dest] mat3 receiving copied values
818
+ *
819
+ * @returns {mat3} dest is specified, a new mat3 otherwise
820
+ */
821
+ mat4.toMat3 = function (mat, dest) {
822
+ if (!dest) { dest = mat3.create(); }
823
+
824
+ dest[0] = mat[0];
825
+ dest[1] = mat[1];
826
+ dest[2] = mat[2];
827
+ dest[3] = mat[4];
828
+ dest[4] = mat[5];
829
+ dest[5] = mat[6];
830
+ dest[6] = mat[8];
831
+ dest[7] = mat[9];
832
+ dest[8] = mat[10];
833
+
834
+ return dest;
835
+ };
836
+
837
+ /**
838
+ * Calculates the inverse of the upper 3x3 elements of a mat4 and copies the result into a mat3
839
+ * The resulting matrix is useful for calculating transformed normals
840
+ *
841
+ * Params:
842
+ * @param {mat4} mat mat4 containing values to invert and copy
843
+ * @param {mat3} [dest] mat3 receiving values
844
+ *
845
+ * @returns {mat3} dest is specified, a new mat3 otherwise, null if the matrix cannot be inverted
846
+ */
847
+ mat4.toInverseMat3 = function (mat, dest) {
848
+ // Cache the matrix values (makes for huge speed increases!)
849
+ var a00 = mat[0], a01 = mat[1], a02 = mat[2],
850
+ a10 = mat[4], a11 = mat[5], a12 = mat[6],
851
+ a20 = mat[8], a21 = mat[9], a22 = mat[10],
852
+
853
+ b01 = a22 * a11 - a12 * a21,
854
+ b11 = -a22 * a10 + a12 * a20,
855
+ b21 = a21 * a10 - a11 * a20,
856
+
857
+ d = a00 * b01 + a01 * b11 + a02 * b21,
858
+ id;
859
+
860
+ if (!d) { return null; }
861
+ id = 1 / d;
862
+
863
+ if (!dest) { dest = mat3.create(); }
864
+
865
+ dest[0] = b01 * id;
866
+ dest[1] = (-a22 * a01 + a02 * a21) * id;
867
+ dest[2] = (a12 * a01 - a02 * a11) * id;
868
+ dest[3] = b11 * id;
869
+ dest[4] = (a22 * a00 - a02 * a20) * id;
870
+ dest[5] = (-a12 * a00 + a02 * a10) * id;
871
+ dest[6] = b21 * id;
872
+ dest[7] = (-a21 * a00 + a01 * a20) * id;
873
+ dest[8] = (a11 * a00 - a01 * a10) * id;
874
+
875
+ return dest;
876
+ };
877
+
878
+ /**
879
+ * Performs a matrix multiplication
880
+ *
881
+ * @param {mat4} mat First operand
882
+ * @param {mat4} mat2 Second operand
883
+ * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat
884
+ *
885
+ * @returns {mat4} dest if specified, mat otherwise
886
+ */
887
+ mat4.multiply = function (mat, mat2, dest) {
888
+ if (!dest) { dest = mat; }
889
+
890
+ // Cache the matrix values (makes for huge speed increases!)
891
+ var a00 = mat[0], a01 = mat[1], a02 = mat[2], a03 = mat[3],
892
+ a10 = mat[4], a11 = mat[5], a12 = mat[6], a13 = mat[7],
893
+ a20 = mat[8], a21 = mat[9], a22 = mat[10], a23 = mat[11],
894
+ a30 = mat[12], a31 = mat[13], a32 = mat[14], a33 = mat[15],
895
+
896
+ b00 = mat2[0], b01 = mat2[1], b02 = mat2[2], b03 = mat2[3],
897
+ b10 = mat2[4], b11 = mat2[5], b12 = mat2[6], b13 = mat2[7],
898
+ b20 = mat2[8], b21 = mat2[9], b22 = mat2[10], b23 = mat2[11],
899
+ b30 = mat2[12], b31 = mat2[13], b32 = mat2[14], b33 = mat2[15];
900
+
901
+ dest[0] = b00 * a00 + b01 * a10 + b02 * a20 + b03 * a30;
902
+ dest[1] = b00 * a01 + b01 * a11 + b02 * a21 + b03 * a31;
903
+ dest[2] = b00 * a02 + b01 * a12 + b02 * a22 + b03 * a32;
904
+ dest[3] = b00 * a03 + b01 * a13 + b02 * a23 + b03 * a33;
905
+ dest[4] = b10 * a00 + b11 * a10 + b12 * a20 + b13 * a30;
906
+ dest[5] = b10 * a01 + b11 * a11 + b12 * a21 + b13 * a31;
907
+ dest[6] = b10 * a02 + b11 * a12 + b12 * a22 + b13 * a32;
908
+ dest[7] = b10 * a03 + b11 * a13 + b12 * a23 + b13 * a33;
909
+ dest[8] = b20 * a00 + b21 * a10 + b22 * a20 + b23 * a30;
910
+ dest[9] = b20 * a01 + b21 * a11 + b22 * a21 + b23 * a31;
911
+ dest[10] = b20 * a02 + b21 * a12 + b22 * a22 + b23 * a32;
912
+ dest[11] = b20 * a03 + b21 * a13 + b22 * a23 + b23 * a33;
913
+ dest[12] = b30 * a00 + b31 * a10 + b32 * a20 + b33 * a30;
914
+ dest[13] = b30 * a01 + b31 * a11 + b32 * a21 + b33 * a31;
915
+ dest[14] = b30 * a02 + b31 * a12 + b32 * a22 + b33 * a32;
916
+ dest[15] = b30 * a03 + b31 * a13 + b32 * a23 + b33 * a33;
917
+
918
+ return dest;
919
+ };
920
+
921
+ /**
922
+ * Transforms a vec3 with the given matrix
923
+ * 4th vector component is implicitly '1'
924
+ *
925
+ * @param {mat4} mat mat4 to transform the vector with
926
+ * @param {vec3} vec vec3 to transform
927
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
928
+ *
929
+ * @returns {vec3} dest if specified, vec otherwise
930
+ */
931
+ mat4.multiplyVec3 = function (mat, vec, dest) {
932
+ if (!dest) { dest = vec; }
933
+
934
+ var x = vec[0], y = vec[1], z = vec[2];
935
+
936
+ dest[0] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12];
937
+ dest[1] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13];
938
+ dest[2] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14];
939
+
940
+ return dest;
941
+ };
942
+
943
+ /**
944
+ * Transforms a vec4 with the given matrix
945
+ *
946
+ * @param {mat4} mat mat4 to transform the vector with
947
+ * @param {vec4} vec vec4 to transform
948
+ * @param {vec4} [dest] vec4 receiving operation result. If not specified result is written to vec
949
+ *
950
+ * @returns {vec4} dest if specified, vec otherwise
951
+ */
952
+ mat4.multiplyVec4 = function (mat, vec, dest) {
953
+ if (!dest) { dest = vec; }
954
+
955
+ var x = vec[0], y = vec[1], z = vec[2], w = vec[3];
956
+
957
+ dest[0] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12] * w;
958
+ dest[1] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13] * w;
959
+ dest[2] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14] * w;
960
+ dest[3] = mat[3] * x + mat[7] * y + mat[11] * z + mat[15] * w;
961
+
962
+ return dest;
963
+ };
964
+
965
+ /**
966
+ * Translates a matrix by the given vector
967
+ *
968
+ * @param {mat4} mat mat4 to translate
969
+ * @param {vec3} vec vec3 specifying the translation
970
+ * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat
971
+ *
972
+ * @returns {mat4} dest if specified, mat otherwise
973
+ */
974
+ mat4.translate = function (mat, vec, dest) {
975
+ var x = vec[0], y = vec[1], z = vec[2],
976
+ a00, a01, a02, a03,
977
+ a10, a11, a12, a13,
978
+ a20, a21, a22, a23;
979
+
980
+ if (!dest || mat === dest) {
981
+ mat[12] = mat[0] * x + mat[4] * y + mat[8] * z + mat[12];
982
+ mat[13] = mat[1] * x + mat[5] * y + mat[9] * z + mat[13];
983
+ mat[14] = mat[2] * x + mat[6] * y + mat[10] * z + mat[14];
984
+ mat[15] = mat[3] * x + mat[7] * y + mat[11] * z + mat[15];
985
+ return mat;
986
+ }
987
+
988
+ a00 = mat[0]; a01 = mat[1]; a02 = mat[2]; a03 = mat[3];
989
+ a10 = mat[4]; a11 = mat[5]; a12 = mat[6]; a13 = mat[7];
990
+ a20 = mat[8]; a21 = mat[9]; a22 = mat[10]; a23 = mat[11];
991
+
992
+ dest[0] = a00; dest[1] = a01; dest[2] = a02; dest[3] = a03;
993
+ dest[4] = a10; dest[5] = a11; dest[6] = a12; dest[7] = a13;
994
+ dest[8] = a20; dest[9] = a21; dest[10] = a22; dest[11] = a23;
995
+
996
+ dest[12] = a00 * x + a10 * y + a20 * z + mat[12];
997
+ dest[13] = a01 * x + a11 * y + a21 * z + mat[13];
998
+ dest[14] = a02 * x + a12 * y + a22 * z + mat[14];
999
+ dest[15] = a03 * x + a13 * y + a23 * z + mat[15];
1000
+ return dest;
1001
+ };
1002
+
1003
+ /**
1004
+ * Scales a matrix by the given vector
1005
+ *
1006
+ * @param {mat4} mat mat4 to scale
1007
+ * @param {vec3} vec vec3 specifying the scale for each axis
1008
+ * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat
1009
+ *
1010
+ * @param {mat4} dest if specified, mat otherwise
1011
+ */
1012
+ mat4.scale = function (mat, vec, dest) {
1013
+ var x = vec[0], y = vec[1], z = vec[2];
1014
+
1015
+ if (!dest || mat === dest) {
1016
+ mat[0] *= x;
1017
+ mat[1] *= x;
1018
+ mat[2] *= x;
1019
+ mat[3] *= x;
1020
+ mat[4] *= y;
1021
+ mat[5] *= y;
1022
+ mat[6] *= y;
1023
+ mat[7] *= y;
1024
+ mat[8] *= z;
1025
+ mat[9] *= z;
1026
+ mat[10] *= z;
1027
+ mat[11] *= z;
1028
+ return mat;
1029
+ }
1030
+
1031
+ dest[0] = mat[0] * x;
1032
+ dest[1] = mat[1] * x;
1033
+ dest[2] = mat[2] * x;
1034
+ dest[3] = mat[3] * x;
1035
+ dest[4] = mat[4] * y;
1036
+ dest[5] = mat[5] * y;
1037
+ dest[6] = mat[6] * y;
1038
+ dest[7] = mat[7] * y;
1039
+ dest[8] = mat[8] * z;
1040
+ dest[9] = mat[9] * z;
1041
+ dest[10] = mat[10] * z;
1042
+ dest[11] = mat[11] * z;
1043
+ dest[12] = mat[12];
1044
+ dest[13] = mat[13];
1045
+ dest[14] = mat[14];
1046
+ dest[15] = mat[15];
1047
+ return dest;
1048
+ };
1049
+
1050
+ /**
1051
+ * Rotates a matrix by the given angle around the specified axis
1052
+ * If rotating around a primary axis (X,Y,Z) one of the specialized rotation functions should be used instead for performance
1053
+ *
1054
+ * @param {mat4} mat mat4 to rotate
1055
+ * @param {number} angle Angle (in radians) to rotate
1056
+ * @param {vec3} axis vec3 representing the axis to rotate around
1057
+ * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat
1058
+ *
1059
+ * @returns {mat4} dest if specified, mat otherwise
1060
+ */
1061
+ mat4.rotate = function (mat, angle, axis, dest) {
1062
+ var x = axis[0], y = axis[1], z = axis[2],
1063
+ len = Math.sqrt(x * x + y * y + z * z),
1064
+ s, c, t,
1065
+ a00, a01, a02, a03,
1066
+ a10, a11, a12, a13,
1067
+ a20, a21, a22, a23,
1068
+ b00, b01, b02,
1069
+ b10, b11, b12,
1070
+ b20, b21, b22;
1071
+
1072
+ if (!len) { return null; }
1073
+ if (len !== 1) {
1074
+ len = 1 / len;
1075
+ x *= len;
1076
+ y *= len;
1077
+ z *= len;
1078
+ }
1079
+
1080
+ s = Math.sin(angle);
1081
+ c = Math.cos(angle);
1082
+ t = 1 - c;
1083
+
1084
+ a00 = mat[0]; a01 = mat[1]; a02 = mat[2]; a03 = mat[3];
1085
+ a10 = mat[4]; a11 = mat[5]; a12 = mat[6]; a13 = mat[7];
1086
+ a20 = mat[8]; a21 = mat[9]; a22 = mat[10]; a23 = mat[11];
1087
+
1088
+ // Construct the elements of the rotation matrix
1089
+ b00 = x * x * t + c; b01 = y * x * t + z * s; b02 = z * x * t - y * s;
1090
+ b10 = x * y * t - z * s; b11 = y * y * t + c; b12 = z * y * t + x * s;
1091
+ b20 = x * z * t + y * s; b21 = y * z * t - x * s; b22 = z * z * t + c;
1092
+
1093
+ if (!dest) {
1094
+ dest = mat;
1095
+ } else if (mat !== dest) { // If the source and destination differ, copy the unchanged last row
1096
+ dest[12] = mat[12];
1097
+ dest[13] = mat[13];
1098
+ dest[14] = mat[14];
1099
+ dest[15] = mat[15];
1100
+ }
1101
+
1102
+ // Perform rotation-specific matrix multiplication
1103
+ dest[0] = a00 * b00 + a10 * b01 + a20 * b02;
1104
+ dest[1] = a01 * b00 + a11 * b01 + a21 * b02;
1105
+ dest[2] = a02 * b00 + a12 * b01 + a22 * b02;
1106
+ dest[3] = a03 * b00 + a13 * b01 + a23 * b02;
1107
+
1108
+ dest[4] = a00 * b10 + a10 * b11 + a20 * b12;
1109
+ dest[5] = a01 * b10 + a11 * b11 + a21 * b12;
1110
+ dest[6] = a02 * b10 + a12 * b11 + a22 * b12;
1111
+ dest[7] = a03 * b10 + a13 * b11 + a23 * b12;
1112
+
1113
+ dest[8] = a00 * b20 + a10 * b21 + a20 * b22;
1114
+ dest[9] = a01 * b20 + a11 * b21 + a21 * b22;
1115
+ dest[10] = a02 * b20 + a12 * b21 + a22 * b22;
1116
+ dest[11] = a03 * b20 + a13 * b21 + a23 * b22;
1117
+ return dest;
1118
+ };
1119
+
1120
+ /**
1121
+ * Rotates a matrix by the given angle around the X axis
1122
+ *
1123
+ * @param {mat4} mat mat4 to rotate
1124
+ * @param {number} angle Angle (in radians) to rotate
1125
+ * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat
1126
+ *
1127
+ * @returns {mat4} dest if specified, mat otherwise
1128
+ */
1129
+ mat4.rotateX = function (mat, angle, dest) {
1130
+ var s = Math.sin(angle),
1131
+ c = Math.cos(angle),
1132
+ a10 = mat[4],
1133
+ a11 = mat[5],
1134
+ a12 = mat[6],
1135
+ a13 = mat[7],
1136
+ a20 = mat[8],
1137
+ a21 = mat[9],
1138
+ a22 = mat[10],
1139
+ a23 = mat[11];
1140
+
1141
+ if (!dest) {
1142
+ dest = mat;
1143
+ } else if (mat !== dest) { // If the source and destination differ, copy the unchanged rows
1144
+ dest[0] = mat[0];
1145
+ dest[1] = mat[1];
1146
+ dest[2] = mat[2];
1147
+ dest[3] = mat[3];
1148
+
1149
+ dest[12] = mat[12];
1150
+ dest[13] = mat[13];
1151
+ dest[14] = mat[14];
1152
+ dest[15] = mat[15];
1153
+ }
1154
+
1155
+ // Perform axis-specific matrix multiplication
1156
+ dest[4] = a10 * c + a20 * s;
1157
+ dest[5] = a11 * c + a21 * s;
1158
+ dest[6] = a12 * c + a22 * s;
1159
+ dest[7] = a13 * c + a23 * s;
1160
+
1161
+ dest[8] = a10 * -s + a20 * c;
1162
+ dest[9] = a11 * -s + a21 * c;
1163
+ dest[10] = a12 * -s + a22 * c;
1164
+ dest[11] = a13 * -s + a23 * c;
1165
+ return dest;
1166
+ };
1167
+
1168
+ /**
1169
+ * Rotates a matrix by the given angle around the Y axis
1170
+ *
1171
+ * @param {mat4} mat mat4 to rotate
1172
+ * @param {number} angle Angle (in radians) to rotate
1173
+ * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat
1174
+ *
1175
+ * @returns {mat4} dest if specified, mat otherwise
1176
+ */
1177
+ mat4.rotateY = function (mat, angle, dest) {
1178
+ var s = Math.sin(angle),
1179
+ c = Math.cos(angle),
1180
+ a00 = mat[0],
1181
+ a01 = mat[1],
1182
+ a02 = mat[2],
1183
+ a03 = mat[3],
1184
+ a20 = mat[8],
1185
+ a21 = mat[9],
1186
+ a22 = mat[10],
1187
+ a23 = mat[11];
1188
+
1189
+ if (!dest) {
1190
+ dest = mat;
1191
+ } else if (mat !== dest) { // If the source and destination differ, copy the unchanged rows
1192
+ dest[4] = mat[4];
1193
+ dest[5] = mat[5];
1194
+ dest[6] = mat[6];
1195
+ dest[7] = mat[7];
1196
+
1197
+ dest[12] = mat[12];
1198
+ dest[13] = mat[13];
1199
+ dest[14] = mat[14];
1200
+ dest[15] = mat[15];
1201
+ }
1202
+
1203
+ // Perform axis-specific matrix multiplication
1204
+ dest[0] = a00 * c + a20 * -s;
1205
+ dest[1] = a01 * c + a21 * -s;
1206
+ dest[2] = a02 * c + a22 * -s;
1207
+ dest[3] = a03 * c + a23 * -s;
1208
+
1209
+ dest[8] = a00 * s + a20 * c;
1210
+ dest[9] = a01 * s + a21 * c;
1211
+ dest[10] = a02 * s + a22 * c;
1212
+ dest[11] = a03 * s + a23 * c;
1213
+ return dest;
1214
+ };
1215
+
1216
+ /**
1217
+ * Rotates a matrix by the given angle around the Z axis
1218
+ *
1219
+ * @param {mat4} mat mat4 to rotate
1220
+ * @param {number} angle Angle (in radians) to rotate
1221
+ * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to mat
1222
+ *
1223
+ * @returns {mat4} dest if specified, mat otherwise
1224
+ */
1225
+ mat4.rotateZ = function (mat, angle, dest) {
1226
+ var s = Math.sin(angle),
1227
+ c = Math.cos(angle),
1228
+ a00 = mat[0],
1229
+ a01 = mat[1],
1230
+ a02 = mat[2],
1231
+ a03 = mat[3],
1232
+ a10 = mat[4],
1233
+ a11 = mat[5],
1234
+ a12 = mat[6],
1235
+ a13 = mat[7];
1236
+
1237
+ if (!dest) {
1238
+ dest = mat;
1239
+ } else if (mat !== dest) { // If the source and destination differ, copy the unchanged last row
1240
+ dest[8] = mat[8];
1241
+ dest[9] = mat[9];
1242
+ dest[10] = mat[10];
1243
+ dest[11] = mat[11];
1244
+
1245
+ dest[12] = mat[12];
1246
+ dest[13] = mat[13];
1247
+ dest[14] = mat[14];
1248
+ dest[15] = mat[15];
1249
+ }
1250
+
1251
+ // Perform axis-specific matrix multiplication
1252
+ dest[0] = a00 * c + a10 * s;
1253
+ dest[1] = a01 * c + a11 * s;
1254
+ dest[2] = a02 * c + a12 * s;
1255
+ dest[3] = a03 * c + a13 * s;
1256
+
1257
+ dest[4] = a00 * -s + a10 * c;
1258
+ dest[5] = a01 * -s + a11 * c;
1259
+ dest[6] = a02 * -s + a12 * c;
1260
+ dest[7] = a03 * -s + a13 * c;
1261
+
1262
+ return dest;
1263
+ };
1264
+
1265
+ /**
1266
+ * Generates a frustum matrix with the given bounds
1267
+ *
1268
+ * @param {number} left Left bound of the frustum
1269
+ * @param {number} right Right bound of the frustum
1270
+ * @param {number} bottom Bottom bound of the frustum
1271
+ * @param {number} top Top bound of the frustum
1272
+ * @param {number} near Near bound of the frustum
1273
+ * @param {number} far Far bound of the frustum
1274
+ * @param {mat4} [dest] mat4 frustum matrix will be written into
1275
+ *
1276
+ * @returns {mat4} dest if specified, a new mat4 otherwise
1277
+ */
1278
+ mat4.frustum = function (left, right, bottom, top, near, far, dest) {
1279
+ if (!dest) { dest = mat4.create(); }
1280
+ var rl = (right - left),
1281
+ tb = (top - bottom),
1282
+ fn = (far - near);
1283
+ dest[0] = (near * 2) / rl;
1284
+ dest[1] = 0;
1285
+ dest[2] = 0;
1286
+ dest[3] = 0;
1287
+ dest[4] = 0;
1288
+ dest[5] = (near * 2) / tb;
1289
+ dest[6] = 0;
1290
+ dest[7] = 0;
1291
+ dest[8] = (right + left) / rl;
1292
+ dest[9] = (top + bottom) / tb;
1293
+ dest[10] = -(far + near) / fn;
1294
+ dest[11] = -1;
1295
+ dest[12] = 0;
1296
+ dest[13] = 0;
1297
+ dest[14] = -(far * near * 2) / fn;
1298
+ dest[15] = 0;
1299
+ return dest;
1300
+ };
1301
+
1302
+ /**
1303
+ * Generates a perspective projection matrix with the given bounds
1304
+ *
1305
+ * @param {number} fovy Vertical field of view
1306
+ * @param {number} aspect Aspect ratio. typically viewport width/height
1307
+ * @param {number} near Near bound of the frustum
1308
+ * @param {number} far Far bound of the frustum
1309
+ * @param {mat4} [dest] mat4 frustum matrix will be written into
1310
+ *
1311
+ * @returns {mat4} dest if specified, a new mat4 otherwise
1312
+ */
1313
+ mat4.perspective = function (fovy, aspect, near, far, dest) {
1314
+ var top = near * Math.tan(fovy * Math.PI / 360.0),
1315
+ right = top * aspect;
1316
+ return mat4.frustum(-right, right, -top, top, near, far, dest);
1317
+ };
1318
+
1319
+ /**
1320
+ * Generates a orthogonal projection matrix with the given bounds
1321
+ *
1322
+ * @param {number} left Left bound of the frustum
1323
+ * @param {number} right Right bound of the frustum
1324
+ * @param {number} bottom Bottom bound of the frustum
1325
+ * @param {number} top Top bound of the frustum
1326
+ * @param {number} near Near bound of the frustum
1327
+ * @param {number} far Far bound of the frustum
1328
+ * @param {mat4} [dest] mat4 frustum matrix will be written into
1329
+ *
1330
+ * @returns {mat4} dest if specified, a new mat4 otherwise
1331
+ */
1332
+ mat4.ortho = function (left, right, bottom, top, near, far, dest) {
1333
+ if (!dest) { dest = mat4.create(); }
1334
+ var rl = (right - left),
1335
+ tb = (top - bottom),
1336
+ fn = (far - near);
1337
+ dest[0] = 2 / rl;
1338
+ dest[1] = 0;
1339
+ dest[2] = 0;
1340
+ dest[3] = 0;
1341
+ dest[4] = 0;
1342
+ dest[5] = 2 / tb;
1343
+ dest[6] = 0;
1344
+ dest[7] = 0;
1345
+ dest[8] = 0;
1346
+ dest[9] = 0;
1347
+ dest[10] = -2 / fn;
1348
+ dest[11] = 0;
1349
+ dest[12] = -(left + right) / rl;
1350
+ dest[13] = -(top + bottom) / tb;
1351
+ dest[14] = -(far + near) / fn;
1352
+ dest[15] = 1;
1353
+ return dest;
1354
+ };
1355
+
1356
+ /**
1357
+ * Generates a look-at matrix with the given eye position, focal point, and up axis
1358
+ *
1359
+ * @param {vec3} eye Position of the viewer
1360
+ * @param {vec3} center Point the viewer is looking at
1361
+ * @param {vec3} up vec3 pointing "up"
1362
+ * @param {mat4} [dest] mat4 frustum matrix will be written into
1363
+ *
1364
+ * @returns {mat4} dest if specified, a new mat4 otherwise
1365
+ */
1366
+ mat4.lookAt = function (eye, center, up, dest) {
1367
+ if (!dest) { dest = mat4.create(); }
1368
+
1369
+ var x0, x1, x2, y0, y1, y2, z0, z1, z2, len,
1370
+ eyex = eye[0],
1371
+ eyey = eye[1],
1372
+ eyez = eye[2],
1373
+ upx = up[0],
1374
+ upy = up[1],
1375
+ upz = up[2],
1376
+ centerx = center[0],
1377
+ centery = center[1],
1378
+ centerz = center[2];
1379
+
1380
+ if (eyex === centerx && eyey === centery && eyez === centerz) {
1381
+ return mat4.identity(dest);
1382
+ }
1383
+
1384
+ //vec3.direction(eye, center, z);
1385
+ z0 = eyex - centerx;
1386
+ z1 = eyey - centery;
1387
+ z2 = eyez - centerz;
1388
+
1389
+ // normalize (no check needed for 0 because of early return)
1390
+ len = 1 / Math.sqrt(z0 * z0 + z1 * z1 + z2 * z2);
1391
+ z0 *= len;
1392
+ z1 *= len;
1393
+ z2 *= len;
1394
+
1395
+ //vec3.normalize(vec3.cross(up, z, x));
1396
+ x0 = upy * z2 - upz * z1;
1397
+ x1 = upz * z0 - upx * z2;
1398
+ x2 = upx * z1 - upy * z0;
1399
+ len = Math.sqrt(x0 * x0 + x1 * x1 + x2 * x2);
1400
+ if (!len) {
1401
+ x0 = 0;
1402
+ x1 = 0;
1403
+ x2 = 0;
1404
+ } else {
1405
+ len = 1 / len;
1406
+ x0 *= len;
1407
+ x1 *= len;
1408
+ x2 *= len;
1409
+ }
1410
+
1411
+ //vec3.normalize(vec3.cross(z, x, y));
1412
+ y0 = z1 * x2 - z2 * x1;
1413
+ y1 = z2 * x0 - z0 * x2;
1414
+ y2 = z0 * x1 - z1 * x0;
1415
+
1416
+ len = Math.sqrt(y0 * y0 + y1 * y1 + y2 * y2);
1417
+ if (!len) {
1418
+ y0 = 0;
1419
+ y1 = 0;
1420
+ y2 = 0;
1421
+ } else {
1422
+ len = 1 / len;
1423
+ y0 *= len;
1424
+ y1 *= len;
1425
+ y2 *= len;
1426
+ }
1427
+
1428
+ dest[0] = x0;
1429
+ dest[1] = y0;
1430
+ dest[2] = z0;
1431
+ dest[3] = 0;
1432
+ dest[4] = x1;
1433
+ dest[5] = y1;
1434
+ dest[6] = z1;
1435
+ dest[7] = 0;
1436
+ dest[8] = x2;
1437
+ dest[9] = y2;
1438
+ dest[10] = z2;
1439
+ dest[11] = 0;
1440
+ dest[12] = -(x0 * eyex + x1 * eyey + x2 * eyez);
1441
+ dest[13] = -(y0 * eyex + y1 * eyey + y2 * eyez);
1442
+ dest[14] = -(z0 * eyex + z1 * eyey + z2 * eyez);
1443
+ dest[15] = 1;
1444
+
1445
+ return dest;
1446
+ };
1447
+
1448
+ /**
1449
+ * Creates a matrix from a quaternion rotation and vector translation
1450
+ * This is equivalent to (but much faster than):
1451
+ *
1452
+ * mat4.identity(dest);
1453
+ * mat4.translate(dest, vec);
1454
+ * var quatMat = mat4.create();
1455
+ * quat4.toMat4(quat, quatMat);
1456
+ * mat4.multiply(dest, quatMat);
1457
+ *
1458
+ * @param {quat4} quat Rotation quaternion
1459
+ * @param {vec3} vec Translation vector
1460
+ * @param {mat4} [dest] mat4 receiving operation result. If not specified result is written to a new mat4
1461
+ *
1462
+ * @returns {mat4} dest if specified, a new mat4 otherwise
1463
+ */
1464
+ mat4.fromRotationTranslation = function (quat, vec, dest) {
1465
+ if (!dest) { dest = mat4.create(); }
1466
+
1467
+ // Quaternion math
1468
+ var x = quat[0], y = quat[1], z = quat[2], w = quat[3],
1469
+ x2 = x + x,
1470
+ y2 = y + y,
1471
+ z2 = z + z,
1472
+
1473
+ xx = x * x2,
1474
+ xy = x * y2,
1475
+ xz = x * z2,
1476
+ yy = y * y2,
1477
+ yz = y * z2,
1478
+ zz = z * z2,
1479
+ wx = w * x2,
1480
+ wy = w * y2,
1481
+ wz = w * z2;
1482
+
1483
+ dest[0] = 1 - (yy + zz);
1484
+ dest[1] = xy + wz;
1485
+ dest[2] = xz - wy;
1486
+ dest[3] = 0;
1487
+ dest[4] = xy - wz;
1488
+ dest[5] = 1 - (xx + zz);
1489
+ dest[6] = yz + wx;
1490
+ dest[7] = 0;
1491
+ dest[8] = xz + wy;
1492
+ dest[9] = yz - wx;
1493
+ dest[10] = 1 - (xx + yy);
1494
+ dest[11] = 0;
1495
+ dest[12] = vec[0];
1496
+ dest[13] = vec[1];
1497
+ dest[14] = vec[2];
1498
+ dest[15] = 1;
1499
+
1500
+ return dest;
1501
+ };
1502
+
1503
+ /**
1504
+ * Returns a string representation of a mat4
1505
+ *
1506
+ * @param {mat4} mat mat4 to represent as a string
1507
+ *
1508
+ * @returns {string} String representation of mat
1509
+ */
1510
+ mat4.str = function (mat) {
1511
+ return '[' + mat[0] + ', ' + mat[1] + ', ' + mat[2] + ', ' + mat[3] +
1512
+ ', ' + mat[4] + ', ' + mat[5] + ', ' + mat[6] + ', ' + mat[7] +
1513
+ ', ' + mat[8] + ', ' + mat[9] + ', ' + mat[10] + ', ' + mat[11] +
1514
+ ', ' + mat[12] + ', ' + mat[13] + ', ' + mat[14] + ', ' + mat[15] + ']';
1515
+ };
1516
+
1517
+ /*
1518
+ * quat4
1519
+ */
1520
+
1521
+ /**
1522
+ * Creates a new instance of a quat4 using the default array type
1523
+ * Any javascript array containing at least 4 numeric elements can serve as a quat4
1524
+ *
1525
+ * @param {quat4} [quat] quat4 containing values to initialize with
1526
+ *
1527
+ * @returns {quat4} New quat4
1528
+ */
1529
+ quat4.create = function (quat) {
1530
+ var dest = new MatrixArray(4);
1531
+
1532
+ if (quat) {
1533
+ dest[0] = quat[0];
1534
+ dest[1] = quat[1];
1535
+ dest[2] = quat[2];
1536
+ dest[3] = quat[3];
1537
+ }
1538
+
1539
+ return dest;
1540
+ };
1541
+
1542
+ /**
1543
+ * Copies the values of one quat4 to another
1544
+ *
1545
+ * @param {quat4} quat quat4 containing values to copy
1546
+ * @param {quat4} dest quat4 receiving copied values
1547
+ *
1548
+ * @returns {quat4} dest
1549
+ */
1550
+ quat4.set = function (quat, dest) {
1551
+ dest[0] = quat[0];
1552
+ dest[1] = quat[1];
1553
+ dest[2] = quat[2];
1554
+ dest[3] = quat[3];
1555
+
1556
+ return dest;
1557
+ };
1558
+
1559
+ /**
1560
+ * Calculates the W component of a quat4 from the X, Y, and Z components.
1561
+ * Assumes that quaternion is 1 unit in length.
1562
+ * Any existing W component will be ignored.
1563
+ *
1564
+ * @param {quat4} quat quat4 to calculate W component of
1565
+ * @param {quat4} [dest] quat4 receiving calculated values. If not specified result is written to quat
1566
+ *
1567
+ * @returns {quat4} dest if specified, quat otherwise
1568
+ */
1569
+ quat4.calculateW = function (quat, dest) {
1570
+ var x = quat[0], y = quat[1], z = quat[2];
1571
+
1572
+ if (!dest || quat === dest) {
1573
+ quat[3] = -Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));
1574
+ return quat;
1575
+ }
1576
+ dest[0] = x;
1577
+ dest[1] = y;
1578
+ dest[2] = z;
1579
+ dest[3] = -Math.sqrt(Math.abs(1.0 - x * x - y * y - z * z));
1580
+ return dest;
1581
+ };
1582
+
1583
+ /**
1584
+ * Calculates the dot product of two quaternions
1585
+ *
1586
+ * @param {quat4} quat First operand
1587
+ * @param {quat4} quat2 Second operand
1588
+ *
1589
+ * @return {number} Dot product of quat and quat2
1590
+ */
1591
+ quat4.dot = function(quat, quat2){
1592
+ return quat[0]*quat2[0] + quat[1]*quat2[1] + quat[2]*quat2[2] + quat[3]*quat2[3];
1593
+ };
1594
+
1595
+ /**
1596
+ * Calculates the inverse of a quat4
1597
+ *
1598
+ * @param {quat4} quat quat4 to calculate inverse of
1599
+ * @param {quat4} [dest] quat4 receiving inverse values. If not specified result is written to quat
1600
+ *
1601
+ * @returns {quat4} dest if specified, quat otherwise
1602
+ */
1603
+ quat4.inverse = function(quat, dest) {
1604
+ var q0 = quat[0], q1 = quat[1], q2 = quat[2], q3 = quat[3],
1605
+ dot = q0*q0 + q1*q1 + q2*q2 + q3*q3,
1606
+ invDot = dot ? 1.0/dot : 0;
1607
+
1608
+ // TODO: Would be faster to return [0,0,0,0] immediately if dot == 0
1609
+
1610
+ if(!dest || quat === dest) {
1611
+ quat[0] *= -invDot;
1612
+ quat[1] *= -invDot;
1613
+ quat[2] *= -invDot;
1614
+ quat[3] *= invDot;
1615
+ return quat;
1616
+ }
1617
+ dest[0] = -quat[0]*invDot;
1618
+ dest[1] = -quat[1]*invDot;
1619
+ dest[2] = -quat[2]*invDot;
1620
+ dest[3] = quat[3]*invDot;
1621
+ return dest;
1622
+ };
1623
+
1624
+
1625
+ /**
1626
+ * Calculates the conjugate of a quat4
1627
+ * If the quaternion is normalized, this function is faster than quat4.inverse and produces the same result.
1628
+ *
1629
+ * @param {quat4} quat quat4 to calculate conjugate of
1630
+ * @param {quat4} [dest] quat4 receiving conjugate values. If not specified result is written to quat
1631
+ *
1632
+ * @returns {quat4} dest if specified, quat otherwise
1633
+ */
1634
+ quat4.conjugate = function (quat, dest) {
1635
+ if (!dest || quat === dest) {
1636
+ quat[0] *= -1;
1637
+ quat[1] *= -1;
1638
+ quat[2] *= -1;
1639
+ return quat;
1640
+ }
1641
+ dest[0] = -quat[0];
1642
+ dest[1] = -quat[1];
1643
+ dest[2] = -quat[2];
1644
+ dest[3] = quat[3];
1645
+ return dest;
1646
+ };
1647
+
1648
+ /**
1649
+ * Calculates the length of a quat4
1650
+ *
1651
+ * Params:
1652
+ * @param {quat4} quat quat4 to calculate length of
1653
+ *
1654
+ * @returns Length of quat
1655
+ */
1656
+ quat4.length = function (quat) {
1657
+ var x = quat[0], y = quat[1], z = quat[2], w = quat[3];
1658
+ return Math.sqrt(x * x + y * y + z * z + w * w);
1659
+ };
1660
+
1661
+ /**
1662
+ * Generates a unit quaternion of the same direction as the provided quat4
1663
+ * If quaternion length is 0, returns [0, 0, 0, 0]
1664
+ *
1665
+ * @param {quat4} quat quat4 to normalize
1666
+ * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat
1667
+ *
1668
+ * @returns {quat4} dest if specified, quat otherwise
1669
+ */
1670
+ quat4.normalize = function (quat, dest) {
1671
+ if (!dest) { dest = quat; }
1672
+
1673
+ var x = quat[0], y = quat[1], z = quat[2], w = quat[3],
1674
+ len = Math.sqrt(x * x + y * y + z * z + w * w);
1675
+ if (len === 0) {
1676
+ dest[0] = 0;
1677
+ dest[1] = 0;
1678
+ dest[2] = 0;
1679
+ dest[3] = 0;
1680
+ return dest;
1681
+ }
1682
+ len = 1 / len;
1683
+ dest[0] = x * len;
1684
+ dest[1] = y * len;
1685
+ dest[2] = z * len;
1686
+ dest[3] = w * len;
1687
+
1688
+ return dest;
1689
+ };
1690
+
1691
+ /**
1692
+ * Performs quaternion addition
1693
+ *
1694
+ * @param {quat4} quat First operand
1695
+ * @param {quat4} quat2 Second operand
1696
+ * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat
1697
+ *
1698
+ * @returns {quat4} dest if specified, quat otherwise
1699
+ */
1700
+ quat4.add = function (quat, quat2, dest) {
1701
+ if(!dest || quat === dest) {
1702
+ quat[0] += quat2[0];
1703
+ quat[1] += quat2[1];
1704
+ quat[2] += quat2[2];
1705
+ quat[3] += quat2[3];
1706
+ return quat;
1707
+ }
1708
+ dest[0] = quat[0]+quat2[0];
1709
+ dest[1] = quat[1]+quat2[1];
1710
+ dest[2] = quat[2]+quat2[2];
1711
+ dest[3] = quat[3]+quat2[3];
1712
+ return dest;
1713
+ };
1714
+
1715
+ /**
1716
+ * Performs a quaternion multiplication
1717
+ *
1718
+ * @param {quat4} quat First operand
1719
+ * @param {quat4} quat2 Second operand
1720
+ * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat
1721
+ *
1722
+ * @returns {quat4} dest if specified, quat otherwise
1723
+ */
1724
+ quat4.multiply = function (quat, quat2, dest) {
1725
+ if (!dest) { dest = quat; }
1726
+
1727
+ var qax = quat[0], qay = quat[1], qaz = quat[2], qaw = quat[3],
1728
+ qbx = quat2[0], qby = quat2[1], qbz = quat2[2], qbw = quat2[3];
1729
+
1730
+ dest[0] = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;
1731
+ dest[1] = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;
1732
+ dest[2] = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;
1733
+ dest[3] = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;
1734
+
1735
+ return dest;
1736
+ };
1737
+
1738
+ /**
1739
+ * Transforms a vec3 with the given quaternion
1740
+ *
1741
+ * @param {quat4} quat quat4 to transform the vector with
1742
+ * @param {vec3} vec vec3 to transform
1743
+ * @param {vec3} [dest] vec3 receiving operation result. If not specified result is written to vec
1744
+ *
1745
+ * @returns dest if specified, vec otherwise
1746
+ */
1747
+ quat4.multiplyVec3 = function (quat, vec, dest) {
1748
+ if (!dest) { dest = vec; }
1749
+
1750
+ var x = vec[0], y = vec[1], z = vec[2],
1751
+ qx = quat[0], qy = quat[1], qz = quat[2], qw = quat[3],
1752
+
1753
+ // calculate quat * vec
1754
+ ix = qw * x + qy * z - qz * y,
1755
+ iy = qw * y + qz * x - qx * z,
1756
+ iz = qw * z + qx * y - qy * x,
1757
+ iw = -qx * x - qy * y - qz * z;
1758
+
1759
+ // calculate result * inverse quat
1760
+ dest[0] = ix * qw + iw * -qx + iy * -qz - iz * -qy;
1761
+ dest[1] = iy * qw + iw * -qy + iz * -qx - ix * -qz;
1762
+ dest[2] = iz * qw + iw * -qz + ix * -qy - iy * -qx;
1763
+
1764
+ return dest;
1765
+ };
1766
+
1767
+ /**
1768
+ * Multiplies the components of a quaternion by a scalar value
1769
+ *
1770
+ * @param {quat4} quat to scale
1771
+ * @param {number} val Value to scale by
1772
+ * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat
1773
+ *
1774
+ * @returns {quat4} dest if specified, quat otherwise
1775
+ */
1776
+ quat4.scale = function (quat, val, dest) {
1777
+ if(!dest || quat === dest) {
1778
+ quat[0] *= val;
1779
+ quat[1] *= val;
1780
+ quat[2] *= val;
1781
+ quat[3] *= val;
1782
+ return quat;
1783
+ }
1784
+ dest[0] = quat[0]*val;
1785
+ dest[1] = quat[1]*val;
1786
+ dest[2] = quat[2]*val;
1787
+ dest[3] = quat[3]*val;
1788
+ return dest;
1789
+ };
1790
+
1791
+ /**
1792
+ * Calculates a 3x3 matrix from the given quat4
1793
+ *
1794
+ * @param {quat4} quat quat4 to create matrix from
1795
+ * @param {mat3} [dest] mat3 receiving operation result
1796
+ *
1797
+ * @returns {mat3} dest if specified, a new mat3 otherwise
1798
+ */
1799
+ quat4.toMat3 = function (quat, dest) {
1800
+ if (!dest) { dest = mat3.create(); }
1801
+
1802
+ var x = quat[0], y = quat[1], z = quat[2], w = quat[3],
1803
+ x2 = x + x,
1804
+ y2 = y + y,
1805
+ z2 = z + z,
1806
+
1807
+ xx = x * x2,
1808
+ xy = x * y2,
1809
+ xz = x * z2,
1810
+ yy = y * y2,
1811
+ yz = y * z2,
1812
+ zz = z * z2,
1813
+ wx = w * x2,
1814
+ wy = w * y2,
1815
+ wz = w * z2;
1816
+
1817
+ dest[0] = 1 - (yy + zz);
1818
+ dest[1] = xy + wz;
1819
+ dest[2] = xz - wy;
1820
+
1821
+ dest[3] = xy - wz;
1822
+ dest[4] = 1 - (xx + zz);
1823
+ dest[5] = yz + wx;
1824
+
1825
+ dest[6] = xz + wy;
1826
+ dest[7] = yz - wx;
1827
+ dest[8] = 1 - (xx + yy);
1828
+
1829
+ return dest;
1830
+ };
1831
+
1832
+ /**
1833
+ * Calculates a 4x4 matrix from the given quat4
1834
+ *
1835
+ * @param {quat4} quat quat4 to create matrix from
1836
+ * @param {mat4} [dest] mat4 receiving operation result
1837
+ *
1838
+ * @returns {mat4} dest if specified, a new mat4 otherwise
1839
+ */
1840
+ quat4.toMat4 = function (quat, dest) {
1841
+ if (!dest) { dest = mat4.create(); }
1842
+
1843
+ var x = quat[0], y = quat[1], z = quat[2], w = quat[3],
1844
+ x2 = x + x,
1845
+ y2 = y + y,
1846
+ z2 = z + z,
1847
+
1848
+ xx = x * x2,
1849
+ xy = x * y2,
1850
+ xz = x * z2,
1851
+ yy = y * y2,
1852
+ yz = y * z2,
1853
+ zz = z * z2,
1854
+ wx = w * x2,
1855
+ wy = w * y2,
1856
+ wz = w * z2;
1857
+
1858
+ dest[0] = 1 - (yy + zz);
1859
+ dest[1] = xy + wz;
1860
+ dest[2] = xz - wy;
1861
+ dest[3] = 0;
1862
+
1863
+ dest[4] = xy - wz;
1864
+ dest[5] = 1 - (xx + zz);
1865
+ dest[6] = yz + wx;
1866
+ dest[7] = 0;
1867
+
1868
+ dest[8] = xz + wy;
1869
+ dest[9] = yz - wx;
1870
+ dest[10] = 1 - (xx + yy);
1871
+ dest[11] = 0;
1872
+
1873
+ dest[12] = 0;
1874
+ dest[13] = 0;
1875
+ dest[14] = 0;
1876
+ dest[15] = 1;
1877
+
1878
+ return dest;
1879
+ };
1880
+
1881
+ /**
1882
+ * Performs a spherical linear interpolation between two quat4
1883
+ *
1884
+ * @param {quat4} quat First quaternion
1885
+ * @param {quat4} quat2 Second quaternion
1886
+ * @param {number} slerp Interpolation amount between the two inputs
1887
+ * @param {quat4} [dest] quat4 receiving operation result. If not specified result is written to quat
1888
+ *
1889
+ * @returns {quat4} dest if specified, quat otherwise
1890
+ */
1891
+ quat4.slerp = function (quat, quat2, slerp, dest) {
1892
+ if (!dest) { dest = quat; }
1893
+
1894
+ var cosHalfTheta = quat[0] * quat2[0] + quat[1] * quat2[1] + quat[2] * quat2[2] + quat[3] * quat2[3],
1895
+ halfTheta,
1896
+ sinHalfTheta,
1897
+ ratioA,
1898
+ ratioB;
1899
+
1900
+ if (Math.abs(cosHalfTheta) >= 1.0) {
1901
+ if (dest !== quat) {
1902
+ dest[0] = quat[0];
1903
+ dest[1] = quat[1];
1904
+ dest[2] = quat[2];
1905
+ dest[3] = quat[3];
1906
+ }
1907
+ return dest;
1908
+ }
1909
+
1910
+ halfTheta = Math.acos(cosHalfTheta);
1911
+ sinHalfTheta = Math.sqrt(1.0 - cosHalfTheta * cosHalfTheta);
1912
+
1913
+ if (Math.abs(sinHalfTheta) < 0.001) {
1914
+ dest[0] = (quat[0] * 0.5 + quat2[0] * 0.5);
1915
+ dest[1] = (quat[1] * 0.5 + quat2[1] * 0.5);
1916
+ dest[2] = (quat[2] * 0.5 + quat2[2] * 0.5);
1917
+ dest[3] = (quat[3] * 0.5 + quat2[3] * 0.5);
1918
+ return dest;
1919
+ }
1920
+
1921
+ ratioA = Math.sin((1 - slerp) * halfTheta) / sinHalfTheta;
1922
+ ratioB = Math.sin(slerp * halfTheta) / sinHalfTheta;
1923
+
1924
+ dest[0] = (quat[0] * ratioA + quat2[0] * ratioB);
1925
+ dest[1] = (quat[1] * ratioA + quat2[1] * ratioB);
1926
+ dest[2] = (quat[2] * ratioA + quat2[2] * ratioB);
1927
+ dest[3] = (quat[3] * ratioA + quat2[3] * ratioB);
1928
+
1929
+ return dest;
1930
+ };
1931
+
1932
+ /**
1933
+ * Returns a string representation of a quaternion
1934
+ *
1935
+ * @param {quat4} quat quat4 to represent as a string
1936
+ *
1937
+ * @returns {string} String representation of quat
1938
+ */
1939
+ quat4.str = function (quat) {
1940
+ return '[' + quat[0] + ', ' + quat[1] + ', ' + quat[2] + ', ' + quat[3] + ']';
1941
+ };
1942
+
1943
+
1944
+ return {
1945
+ vec3: vec3,
1946
+ mat3: mat3,
1947
+ mat4: mat4,
1948
+ quat4: quat4
1949
+ };
1950
+
1951
+ })();
1952
+