distil 0.7.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 (552) hide show
  1. data/Rakefile +28 -0
  2. data/VERSION +1 -0
  3. data/bin/distil +45 -0
  4. data/distil.gemspec +586 -0
  5. data/lib/bootstrap-template.js +56 -0
  6. data/lib/configurable.rb +125 -0
  7. data/lib/file-set.rb +42 -0
  8. data/lib/file-types/css-file.rb +75 -0
  9. data/lib/file-types/html-file.rb +11 -0
  10. data/lib/file-types/javascript-file.rb +98 -0
  11. data/lib/file-types/json-file.rb +14 -0
  12. data/lib/file-types/nib-file.rb +9 -0
  13. data/lib/jsdoc.conf +18 -0
  14. data/lib/jsl.conf +121 -0
  15. data/lib/project.rb +96 -0
  16. data/lib/source-file.rb +181 -0
  17. data/lib/target.rb +96 -0
  18. data/lib/task.rb +239 -0
  19. data/lib/tasks/copy-task.rb +21 -0
  20. data/lib/tasks/css-task.rb +18 -0
  21. data/lib/tasks/javascript-task.rb +125 -0
  22. data/lib/tasks/multiple-output-task.rb +134 -0
  23. data/lib/tasks/nib-task.rb +83 -0
  24. data/lib/tasks/output-task.rb +73 -0
  25. data/lib/tasks/single-output-task.rb +83 -0
  26. data/lib/tasks/test-task.rb +280 -0
  27. data/lib/test/HtmlTestReporter.js +127 -0
  28. data/lib/test/Test.js +248 -0
  29. data/lib/test/TestReporter.js +79 -0
  30. data/lib/test/TestRunner.js +132 -0
  31. data/lib/test/browser.rb +97 -0
  32. data/lib/test/scriptwrapper.html +10 -0
  33. data/lib/test/unittest.html +127 -0
  34. data/vendor/Makefile +35 -0
  35. data/vendor/extconf.rb +3 -0
  36. data/vendor/jsdoc-extras/plugins/distil-plugin.js +142 -0
  37. data/vendor/jsdoc-extras/plugins/interface-plugin.js +36 -0
  38. data/vendor/jsdoc-extras/templates/coherent/allclasses.tmpl +17 -0
  39. data/vendor/jsdoc-extras/templates/coherent/allfiles.tmpl +53 -0
  40. data/vendor/jsdoc-extras/templates/coherent/class.tmpl +803 -0
  41. data/vendor/jsdoc-extras/templates/coherent/index.tmpl +37 -0
  42. data/vendor/jsdoc-extras/templates/coherent/publish.js +242 -0
  43. data/vendor/jsdoc-extras/templates/coherent/showdown.js +421 -0
  44. data/vendor/jsdoc-extras/templates/coherent/static/code-footer.html +3 -0
  45. data/vendor/jsdoc-extras/templates/coherent/static/code-header.html +7 -0
  46. data/vendor/jsdoc-extras/templates/coherent/static/default.css +297 -0
  47. data/vendor/jsdoc-extras/templates/coherent/static/header.html +2 -0
  48. data/vendor/jsdoc-extras/templates/coherent/static/index.html +19 -0
  49. data/vendor/jsdoc-extras/templates/coherent/symbol.tmpl +35 -0
  50. data/vendor/jsdoc-toolkit/README.txt +183 -0
  51. data/vendor/jsdoc-toolkit/app/frame/Chain.js +102 -0
  52. data/vendor/jsdoc-toolkit/app/frame/Dumper.js +144 -0
  53. data/vendor/jsdoc-toolkit/app/frame/Hash.js +84 -0
  54. data/vendor/jsdoc-toolkit/app/frame/Link.js +171 -0
  55. data/vendor/jsdoc-toolkit/app/frame/Namespace.js +10 -0
  56. data/vendor/jsdoc-toolkit/app/frame/Opt.js +134 -0
  57. data/vendor/jsdoc-toolkit/app/frame/Reflection.js +26 -0
  58. data/vendor/jsdoc-toolkit/app/frame/String.js +93 -0
  59. data/vendor/jsdoc-toolkit/app/frame/Testrun.js +129 -0
  60. data/vendor/jsdoc-toolkit/app/frame.js +33 -0
  61. data/vendor/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
  62. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
  63. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
  64. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
  65. data/vendor/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
  66. data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
  67. data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +300 -0
  68. data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
  69. data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
  70. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
  71. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Parser.js +144 -0
  72. data/vendor/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
  73. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +644 -0
  74. data/vendor/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +241 -0
  75. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
  76. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
  77. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
  78. data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
  79. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
  80. data/vendor/jsdoc-toolkit/app/lib/JSDOC/Walker.js +499 -0
  81. data/vendor/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
  82. data/vendor/jsdoc-toolkit/app/main.js +129 -0
  83. data/vendor/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
  84. data/vendor/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
  85. data/vendor/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
  86. data/vendor/jsdoc-toolkit/app/plugins/publishSrcHilite.js +54 -0
  87. data/vendor/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
  88. data/vendor/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
  89. data/vendor/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
  90. data/vendor/jsdoc-toolkit/app/run.js +348 -0
  91. data/vendor/jsdoc-toolkit/app/t/TestDoc.js +144 -0
  92. data/vendor/jsdoc-toolkit/app/t/runner.js +13 -0
  93. data/vendor/jsdoc-toolkit/app/test/addon.js +24 -0
  94. data/vendor/jsdoc-toolkit/app/test/anon_inner.js +14 -0
  95. data/vendor/jsdoc-toolkit/app/test/augments.js +31 -0
  96. data/vendor/jsdoc-toolkit/app/test/augments2.js +26 -0
  97. data/vendor/jsdoc-toolkit/app/test/borrows.js +46 -0
  98. data/vendor/jsdoc-toolkit/app/test/borrows2.js +23 -0
  99. data/vendor/jsdoc-toolkit/app/test/config.js +22 -0
  100. data/vendor/jsdoc-toolkit/app/test/constructs.js +18 -0
  101. data/vendor/jsdoc-toolkit/app/test/encoding.js +10 -0
  102. data/vendor/jsdoc-toolkit/app/test/encoding_other.js +12 -0
  103. data/vendor/jsdoc-toolkit/app/test/event.js +54 -0
  104. data/vendor/jsdoc-toolkit/app/test/exports.js +14 -0
  105. data/vendor/jsdoc-toolkit/app/test/functions_anon.js +39 -0
  106. data/vendor/jsdoc-toolkit/app/test/functions_nested.js +33 -0
  107. data/vendor/jsdoc-toolkit/app/test/global.js +13 -0
  108. data/vendor/jsdoc-toolkit/app/test/globals.js +25 -0
  109. data/vendor/jsdoc-toolkit/app/test/ignore.js +10 -0
  110. data/vendor/jsdoc-toolkit/app/test/inner.js +16 -0
  111. data/vendor/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
  112. data/vendor/jsdoc-toolkit/app/test/lend.js +33 -0
  113. data/vendor/jsdoc-toolkit/app/test/memberof.js +19 -0
  114. data/vendor/jsdoc-toolkit/app/test/memberof2.js +38 -0
  115. data/vendor/jsdoc-toolkit/app/test/memberof3.js +33 -0
  116. data/vendor/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
  117. data/vendor/jsdoc-toolkit/app/test/module.js +17 -0
  118. data/vendor/jsdoc-toolkit/app/test/name.js +19 -0
  119. data/vendor/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
  120. data/vendor/jsdoc-toolkit/app/test/nocode.js +13 -0
  121. data/vendor/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
  122. data/vendor/jsdoc-toolkit/app/test/overview.js +20 -0
  123. data/vendor/jsdoc-toolkit/app/test/param_inline.js +37 -0
  124. data/vendor/jsdoc-toolkit/app/test/params_optional.js +8 -0
  125. data/vendor/jsdoc-toolkit/app/test/prototype.js +17 -0
  126. data/vendor/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
  127. data/vendor/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
  128. data/vendor/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
  129. data/vendor/jsdoc-toolkit/app/test/public.js +10 -0
  130. data/vendor/jsdoc-toolkit/app/test/scripts/code.js +5 -0
  131. data/vendor/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
  132. data/vendor/jsdoc-toolkit/app/test/shared.js +42 -0
  133. data/vendor/jsdoc-toolkit/app/test/shared2.js +2 -0
  134. data/vendor/jsdoc-toolkit/app/test/shortcuts.js +22 -0
  135. data/vendor/jsdoc-toolkit/app/test/static_this.js +13 -0
  136. data/vendor/jsdoc-toolkit/app/test/synonyms.js +31 -0
  137. data/vendor/jsdoc-toolkit/app/test/tosource.js +23 -0
  138. data/vendor/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
  139. data/vendor/jsdoc-toolkit/app/test.js +342 -0
  140. data/vendor/jsdoc-toolkit/changes.txt +116 -0
  141. data/vendor/jsdoc-toolkit/conf/sample.conf +31 -0
  142. data/vendor/jsdoc-toolkit/java/build.xml +36 -0
  143. data/vendor/jsdoc-toolkit/java/build_1.4.xml +36 -0
  144. data/vendor/jsdoc-toolkit/java/classes/js.jar +0 -0
  145. data/vendor/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
  146. data/vendor/jsdoc-toolkit/java/src/JsRun.java +21 -0
  147. data/vendor/jsdoc-toolkit/jsdebug.jar +0 -0
  148. data/vendor/jsdoc-toolkit/jsrun.jar +0 -0
  149. data/vendor/jsdoc-toolkit/jsrun.sh +53 -0
  150. data/vendor/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
  151. data/vendor/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
  152. data/vendor/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
  153. data/vendor/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
  154. data/vendor/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
  155. data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-footer.html +3 -0
  156. data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-header.html +14 -0
  157. data/vendor/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
  158. data/vendor/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
  159. data/vendor/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
  160. data/vendor/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
  161. data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.cpp +333 -0
  162. data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.h +86 -0
  163. data/vendor/jsl-0.3.0/src/Makefile.in +375 -0
  164. data/vendor/jsl-0.3.0/src/Makefile.ref +372 -0
  165. data/vendor/jsl-0.3.0/src/README.html +826 -0
  166. data/vendor/jsl-0.3.0/src/SpiderMonkey.rsp +12 -0
  167. data/vendor/jsl-0.3.0/src/_jsl_online.php +223 -0
  168. data/vendor/jsl-0.3.0/src/config/AIX4.1.mk +65 -0
  169. data/vendor/jsl-0.3.0/src/config/AIX4.2.mk +64 -0
  170. data/vendor/jsl-0.3.0/src/config/AIX4.3.mk +65 -0
  171. data/vendor/jsl-0.3.0/src/config/Darwin.mk +81 -0
  172. data/vendor/jsl-0.3.0/src/config/Darwin1.3.mk +81 -0
  173. data/vendor/jsl-0.3.0/src/config/Darwin1.4.mk +41 -0
  174. data/vendor/jsl-0.3.0/src/config/Darwin5.2.mk +81 -0
  175. data/vendor/jsl-0.3.0/src/config/Darwin5.3.mk +81 -0
  176. data/vendor/jsl-0.3.0/src/config/HP-UXB.10.10.mk +77 -0
  177. data/vendor/jsl-0.3.0/src/config/HP-UXB.10.20.mk +77 -0
  178. data/vendor/jsl-0.3.0/src/config/HP-UXB.11.00.mk +80 -0
  179. data/vendor/jsl-0.3.0/src/config/IRIX.mk +87 -0
  180. data/vendor/jsl-0.3.0/src/config/IRIX5.3.mk +44 -0
  181. data/vendor/jsl-0.3.0/src/config/IRIX6.1.mk +44 -0
  182. data/vendor/jsl-0.3.0/src/config/IRIX6.2.mk +44 -0
  183. data/vendor/jsl-0.3.0/src/config/IRIX6.3.mk +44 -0
  184. data/vendor/jsl-0.3.0/src/config/IRIX6.5.mk +44 -0
  185. data/vendor/jsl-0.3.0/src/config/Linux_All.mk +103 -0
  186. data/vendor/jsl-0.3.0/src/config/Mac_OS10.0.mk +82 -0
  187. data/vendor/jsl-0.3.0/src/config/OSF1V4.0.mk +72 -0
  188. data/vendor/jsl-0.3.0/src/config/OSF1V5.0.mk +69 -0
  189. data/vendor/jsl-0.3.0/src/config/SunOS4.1.4.mk +101 -0
  190. data/vendor/jsl-0.3.0/src/config/SunOS5.3.mk +91 -0
  191. data/vendor/jsl-0.3.0/src/config/SunOS5.4.mk +92 -0
  192. data/vendor/jsl-0.3.0/src/config/SunOS5.5.1.mk +44 -0
  193. data/vendor/jsl-0.3.0/src/config/SunOS5.5.mk +87 -0
  194. data/vendor/jsl-0.3.0/src/config/SunOS5.6.mk +89 -0
  195. data/vendor/jsl-0.3.0/src/config/SunOS5.7.mk +44 -0
  196. data/vendor/jsl-0.3.0/src/config/SunOS5.8.mk +44 -0
  197. data/vendor/jsl-0.3.0/src/config/SunOS5.9.mk +44 -0
  198. data/vendor/jsl-0.3.0/src/config/WINNT4.0.mk +112 -0
  199. data/vendor/jsl-0.3.0/src/config/WINNT5.0.mk +112 -0
  200. data/vendor/jsl-0.3.0/src/config/WINNT5.1.mk +112 -0
  201. data/vendor/jsl-0.3.0/src/config/WINNT5.2.mk +112 -0
  202. data/vendor/jsl-0.3.0/src/config/dgux.mk +64 -0
  203. data/vendor/jsl-0.3.0/src/config.mk +166 -0
  204. data/vendor/jsl-0.3.0/src/editline/Makefile.ref +144 -0
  205. data/vendor/jsl-0.3.0/src/editline/README +83 -0
  206. data/vendor/jsl-0.3.0/src/editline/editline.3 +175 -0
  207. data/vendor/jsl-0.3.0/src/editline/editline.c +1369 -0
  208. data/vendor/jsl-0.3.0/src/editline/editline.h +135 -0
  209. data/vendor/jsl-0.3.0/src/editline/sysunix.c +182 -0
  210. data/vendor/jsl-0.3.0/src/editline/unix.h +82 -0
  211. data/vendor/jsl-0.3.0/src/fdlibm/Makefile.in +127 -0
  212. data/vendor/jsl-0.3.0/src/fdlibm/Makefile.ref +192 -0
  213. data/vendor/jsl-0.3.0/src/fdlibm/e_acos.c +147 -0
  214. data/vendor/jsl-0.3.0/src/fdlibm/e_acosh.c +105 -0
  215. data/vendor/jsl-0.3.0/src/fdlibm/e_asin.c +156 -0
  216. data/vendor/jsl-0.3.0/src/fdlibm/e_atan2.c +165 -0
  217. data/vendor/jsl-0.3.0/src/fdlibm/e_atanh.c +110 -0
  218. data/vendor/jsl-0.3.0/src/fdlibm/e_cosh.c +133 -0
  219. data/vendor/jsl-0.3.0/src/fdlibm/e_exp.c +202 -0
  220. data/vendor/jsl-0.3.0/src/fdlibm/e_fmod.c +184 -0
  221. data/vendor/jsl-0.3.0/src/fdlibm/e_gamma.c +71 -0
  222. data/vendor/jsl-0.3.0/src/fdlibm/e_gamma_r.c +70 -0
  223. data/vendor/jsl-0.3.0/src/fdlibm/e_hypot.c +173 -0
  224. data/vendor/jsl-0.3.0/src/fdlibm/e_j0.c +524 -0
  225. data/vendor/jsl-0.3.0/src/fdlibm/e_j1.c +523 -0
  226. data/vendor/jsl-0.3.0/src/fdlibm/e_jn.c +315 -0
  227. data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma.c +71 -0
  228. data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma_r.c +347 -0
  229. data/vendor/jsl-0.3.0/src/fdlibm/e_log.c +184 -0
  230. data/vendor/jsl-0.3.0/src/fdlibm/e_log10.c +134 -0
  231. data/vendor/jsl-0.3.0/src/fdlibm/e_pow.c +386 -0
  232. data/vendor/jsl-0.3.0/src/fdlibm/e_rem_pio2.c +221 -0
  233. data/vendor/jsl-0.3.0/src/fdlibm/e_remainder.c +120 -0
  234. data/vendor/jsl-0.3.0/src/fdlibm/e_scalb.c +89 -0
  235. data/vendor/jsl-0.3.0/src/fdlibm/e_sinh.c +122 -0
  236. data/vendor/jsl-0.3.0/src/fdlibm/e_sqrt.c +497 -0
  237. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.dsp +160 -0
  238. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.h +273 -0
  239. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mak +1453 -0
  240. data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mdp +0 -0
  241. data/vendor/jsl-0.3.0/src/fdlibm/k_cos.c +134 -0
  242. data/vendor/jsl-0.3.0/src/fdlibm/k_rem_pio2.c +354 -0
  243. data/vendor/jsl-0.3.0/src/fdlibm/k_sin.c +114 -0
  244. data/vendor/jsl-0.3.0/src/fdlibm/k_standard.c +785 -0
  245. data/vendor/jsl-0.3.0/src/fdlibm/k_tan.c +170 -0
  246. data/vendor/jsl-0.3.0/src/fdlibm/s_asinh.c +101 -0
  247. data/vendor/jsl-0.3.0/src/fdlibm/s_atan.c +175 -0
  248. data/vendor/jsl-0.3.0/src/fdlibm/s_cbrt.c +133 -0
  249. data/vendor/jsl-0.3.0/src/fdlibm/s_ceil.c +120 -0
  250. data/vendor/jsl-0.3.0/src/fdlibm/s_copysign.c +72 -0
  251. data/vendor/jsl-0.3.0/src/fdlibm/s_cos.c +118 -0
  252. data/vendor/jsl-0.3.0/src/fdlibm/s_erf.c +356 -0
  253. data/vendor/jsl-0.3.0/src/fdlibm/s_expm1.c +267 -0
  254. data/vendor/jsl-0.3.0/src/fdlibm/s_fabs.c +70 -0
  255. data/vendor/jsl-0.3.0/src/fdlibm/s_finite.c +71 -0
  256. data/vendor/jsl-0.3.0/src/fdlibm/s_floor.c +121 -0
  257. data/vendor/jsl-0.3.0/src/fdlibm/s_frexp.c +99 -0
  258. data/vendor/jsl-0.3.0/src/fdlibm/s_ilogb.c +85 -0
  259. data/vendor/jsl-0.3.0/src/fdlibm/s_isnan.c +74 -0
  260. data/vendor/jsl-0.3.0/src/fdlibm/s_ldexp.c +66 -0
  261. data/vendor/jsl-0.3.0/src/fdlibm/s_lib_version.c +73 -0
  262. data/vendor/jsl-0.3.0/src/fdlibm/s_log1p.c +211 -0
  263. data/vendor/jsl-0.3.0/src/fdlibm/s_logb.c +79 -0
  264. data/vendor/jsl-0.3.0/src/fdlibm/s_matherr.c +64 -0
  265. data/vendor/jsl-0.3.0/src/fdlibm/s_modf.c +132 -0
  266. data/vendor/jsl-0.3.0/src/fdlibm/s_nextafter.c +124 -0
  267. data/vendor/jsl-0.3.0/src/fdlibm/s_rint.c +131 -0
  268. data/vendor/jsl-0.3.0/src/fdlibm/s_scalbn.c +107 -0
  269. data/vendor/jsl-0.3.0/src/fdlibm/s_signgam.c +40 -0
  270. data/vendor/jsl-0.3.0/src/fdlibm/s_significand.c +68 -0
  271. data/vendor/jsl-0.3.0/src/fdlibm/s_sin.c +118 -0
  272. data/vendor/jsl-0.3.0/src/fdlibm/s_tan.c +112 -0
  273. data/vendor/jsl-0.3.0/src/fdlibm/s_tanh.c +122 -0
  274. data/vendor/jsl-0.3.0/src/fdlibm/w_acos.c +78 -0
  275. data/vendor/jsl-0.3.0/src/fdlibm/w_acosh.c +78 -0
  276. data/vendor/jsl-0.3.0/src/fdlibm/w_asin.c +80 -0
  277. data/vendor/jsl-0.3.0/src/fdlibm/w_atan2.c +79 -0
  278. data/vendor/jsl-0.3.0/src/fdlibm/w_atanh.c +81 -0
  279. data/vendor/jsl-0.3.0/src/fdlibm/w_cosh.c +77 -0
  280. data/vendor/jsl-0.3.0/src/fdlibm/w_exp.c +88 -0
  281. data/vendor/jsl-0.3.0/src/fdlibm/w_fmod.c +78 -0
  282. data/vendor/jsl-0.3.0/src/fdlibm/w_gamma.c +85 -0
  283. data/vendor/jsl-0.3.0/src/fdlibm/w_gamma_r.c +81 -0
  284. data/vendor/jsl-0.3.0/src/fdlibm/w_hypot.c +78 -0
  285. data/vendor/jsl-0.3.0/src/fdlibm/w_j0.c +105 -0
  286. data/vendor/jsl-0.3.0/src/fdlibm/w_j1.c +106 -0
  287. data/vendor/jsl-0.3.0/src/fdlibm/w_jn.c +128 -0
  288. data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma.c +85 -0
  289. data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma_r.c +81 -0
  290. data/vendor/jsl-0.3.0/src/fdlibm/w_log.c +78 -0
  291. data/vendor/jsl-0.3.0/src/fdlibm/w_log10.c +81 -0
  292. data/vendor/jsl-0.3.0/src/fdlibm/w_pow.c +99 -0
  293. data/vendor/jsl-0.3.0/src/fdlibm/w_remainder.c +77 -0
  294. data/vendor/jsl-0.3.0/src/fdlibm/w_scalb.c +95 -0
  295. data/vendor/jsl-0.3.0/src/fdlibm/w_sinh.c +77 -0
  296. data/vendor/jsl-0.3.0/src/fdlibm/w_sqrt.c +77 -0
  297. data/vendor/jsl-0.3.0/src/js.c +2447 -0
  298. data/vendor/jsl-0.3.0/src/js.dsp +420 -0
  299. data/vendor/jsl-0.3.0/src/js.mak +4025 -0
  300. data/vendor/jsl-0.3.0/src/js.mdp +0 -0
  301. data/vendor/jsl-0.3.0/src/js.msg +291 -0
  302. data/vendor/jsl-0.3.0/src/js.pkg +2 -0
  303. data/vendor/jsl-0.3.0/src/js3240.rc +79 -0
  304. data/vendor/jsl-0.3.0/src/jsOS240.def +654 -0
  305. data/vendor/jsl-0.3.0/src/jsapi.c +4405 -0
  306. data/vendor/jsl-0.3.0/src/jsapi.h +1856 -0
  307. data/vendor/jsl-0.3.0/src/jsarena.c +567 -0
  308. data/vendor/jsl-0.3.0/src/jsarena.h +302 -0
  309. data/vendor/jsl-0.3.0/src/jsarray.c +1428 -0
  310. data/vendor/jsl-0.3.0/src/jsarray.h +77 -0
  311. data/vendor/jsl-0.3.0/src/jsatom.c +927 -0
  312. data/vendor/jsl-0.3.0/src/jsatom.h +426 -0
  313. data/vendor/jsl-0.3.0/src/jsbit.h +113 -0
  314. data/vendor/jsl-0.3.0/src/jsbool.c +220 -0
  315. data/vendor/jsl-0.3.0/src/jsbool.h +62 -0
  316. data/vendor/jsl-0.3.0/src/jsclist.h +139 -0
  317. data/vendor/jsl-0.3.0/src/jscntxt.c +1036 -0
  318. data/vendor/jsl-0.3.0/src/jscntxt.h +608 -0
  319. data/vendor/jsl-0.3.0/src/jscompat.h +57 -0
  320. data/vendor/jsl-0.3.0/src/jsconfig.h +489 -0
  321. data/vendor/jsl-0.3.0/src/jsconfig.mk +181 -0
  322. data/vendor/jsl-0.3.0/src/jscpucfg.c +377 -0
  323. data/vendor/jsl-0.3.0/src/jscpucfg.h +204 -0
  324. data/vendor/jsl-0.3.0/src/jsdate.c +2238 -0
  325. data/vendor/jsl-0.3.0/src/jsdate.h +118 -0
  326. data/vendor/jsl-0.3.0/src/jsdbgapi.c +1260 -0
  327. data/vendor/jsl-0.3.0/src/jsdbgapi.h +345 -0
  328. data/vendor/jsl-0.3.0/src/jsdhash.c +763 -0
  329. data/vendor/jsl-0.3.0/src/jsdhash.h +579 -0
  330. data/vendor/jsl-0.3.0/src/jsdtoa.c +3135 -0
  331. data/vendor/jsl-0.3.0/src/jsdtoa.h +130 -0
  332. data/vendor/jsl-0.3.0/src/jsemit.c +4851 -0
  333. data/vendor/jsl-0.3.0/src/jsemit.h +576 -0
  334. data/vendor/jsl-0.3.0/src/jsexn.c +1084 -0
  335. data/vendor/jsl-0.3.0/src/jsexn.h +102 -0
  336. data/vendor/jsl-0.3.0/src/jsfile.c +2610 -0
  337. data/vendor/jsl-0.3.0/src/jsfile.h +50 -0
  338. data/vendor/jsl-0.3.0/src/jsfile.msg +89 -0
  339. data/vendor/jsl-0.3.0/src/jsfun.c +2015 -0
  340. data/vendor/jsl-0.3.0/src/jsfun.h +158 -0
  341. data/vendor/jsl-0.3.0/src/jsgc.c +1441 -0
  342. data/vendor/jsl-0.3.0/src/jsgc.h +230 -0
  343. data/vendor/jsl-0.3.0/src/jshash.c +471 -0
  344. data/vendor/jsl-0.3.0/src/jshash.h +152 -0
  345. data/vendor/jsl-0.3.0/src/jsify.pl +485 -0
  346. data/vendor/jsl-0.3.0/src/jsinterp.c +4797 -0
  347. data/vendor/jsl-0.3.0/src/jsinterp.h +302 -0
  348. data/vendor/jsl-0.3.0/src/jsl-test.js +28 -0
  349. data/vendor/jsl-0.3.0/src/jsl.c +2371 -0
  350. data/vendor/jsl-0.3.0/src/jsl.conf +127 -0
  351. data/vendor/jsl-0.3.0/src/jsl.conf.old +124 -0
  352. data/vendor/jsl-0.3.0/src/jsl.dsp +242 -0
  353. data/vendor/jsl-0.3.0/src/jsl.dsw +59 -0
  354. data/vendor/jsl-0.3.0/src/jslibmath.h +290 -0
  355. data/vendor/jsl-0.3.0/src/jslock.c +1261 -0
  356. data/vendor/jsl-0.3.0/src/jslock.h +289 -0
  357. data/vendor/jsl-0.3.0/src/jslocko.asm +59 -0
  358. data/vendor/jsl-0.3.0/src/jslog2.c +83 -0
  359. data/vendor/jsl-0.3.0/src/jslong.c +281 -0
  360. data/vendor/jsl-0.3.0/src/jslong.h +437 -0
  361. data/vendor/jsl-0.3.0/src/jsmath.c +477 -0
  362. data/vendor/jsl-0.3.0/src/jsmath.h +55 -0
  363. data/vendor/jsl-0.3.0/src/jsnum.c +1148 -0
  364. data/vendor/jsl-0.3.0/src/jsnum.h +257 -0
  365. data/vendor/jsl-0.3.0/src/jsobj.c +4066 -0
  366. data/vendor/jsl-0.3.0/src/jsobj.h +475 -0
  367. data/vendor/jsl-0.3.0/src/jsopcode.c +2730 -0
  368. data/vendor/jsl-0.3.0/src/jsopcode.h +275 -0
  369. data/vendor/jsl-0.3.0/src/jsopcode.tbl +344 -0
  370. data/vendor/jsl-0.3.0/src/jsosdep.h +127 -0
  371. data/vendor/jsl-0.3.0/src/jsotypes.h +211 -0
  372. data/vendor/jsl-0.3.0/src/jsparse.c +4438 -0
  373. data/vendor/jsl-0.3.0/src/jsparse.h +345 -0
  374. data/vendor/jsl-0.3.0/src/jsprf.c +1212 -0
  375. data/vendor/jsl-0.3.0/src/jsprf.h +148 -0
  376. data/vendor/jsl-0.3.0/src/jsprvtd.h +174 -0
  377. data/vendor/jsl-0.3.0/src/jspubtd.h +586 -0
  378. data/vendor/jsl-0.3.0/src/jsregexp.c +3831 -0
  379. data/vendor/jsl-0.3.0/src/jsregexp.h +180 -0
  380. data/vendor/jsl-0.3.0/src/jsscan.c +1814 -0
  381. data/vendor/jsl-0.3.0/src/jsscan.h +267 -0
  382. data/vendor/jsl-0.3.0/src/jsscope.c +1639 -0
  383. data/vendor/jsl-0.3.0/src/jsscope.h +389 -0
  384. data/vendor/jsl-0.3.0/src/jsscript.c +1284 -0
  385. data/vendor/jsl-0.3.0/src/jsscript.h +179 -0
  386. data/vendor/jsl-0.3.0/src/jsshell.msg +50 -0
  387. data/vendor/jsl-0.3.0/src/jsstddef.h +83 -0
  388. data/vendor/jsl-0.3.0/src/jsstr.c +4502 -0
  389. data/vendor/jsl-0.3.0/src/jsstr.h +448 -0
  390. data/vendor/jsl-0.3.0/src/jstypes.h +391 -0
  391. data/vendor/jsl-0.3.0/src/jsutil.c +157 -0
  392. data/vendor/jsl-0.3.0/src/jsutil.h +75 -0
  393. data/vendor/jsl-0.3.0/src/jsxdrapi.c +686 -0
  394. data/vendor/jsl-0.3.0/src/jsxdrapi.h +193 -0
  395. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnect.dsp +157 -0
  396. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsp +120 -0
  397. data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsw +44 -0
  398. data/vendor/jsl-0.3.0/src/liveconnect/Makefile.in +106 -0
  399. data/vendor/jsl-0.3.0/src/liveconnect/Makefile.ref +169 -0
  400. data/vendor/jsl-0.3.0/src/liveconnect/README.html +719 -0
  401. data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
  402. data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
  403. data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.in +89 -0
  404. data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.ref +57 -0
  405. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/Makefile.ref +47 -0
  406. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSException.java +140 -0
  407. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
  408. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
  409. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
  410. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
  411. data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
  412. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.1.mk +45 -0
  413. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.2.mk +45 -0
  414. data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.3.mk +50 -0
  415. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.10.mk +43 -0
  416. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.20.mk +43 -0
  417. data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.11.00.mk +43 -0
  418. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.2.mk +43 -0
  419. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.3.mk +43 -0
  420. data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.5.mk +43 -0
  421. data/vendor/jsl-0.3.0/src/liveconnect/config/Linux_All.mk +73 -0
  422. data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V4.0.mk +65 -0
  423. data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V5.0.mk +62 -0
  424. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.5.1.mk +55 -0
  425. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.6.mk +39 -0
  426. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.7.mk +39 -0
  427. data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.8.mk +39 -0
  428. data/vendor/jsl-0.3.0/src/liveconnect/config/WINNT4.0.mk +53 -0
  429. data/vendor/jsl-0.3.0/src/liveconnect/jsj.c +884 -0
  430. data/vendor/jsl-0.3.0/src/liveconnect/jsj.msg +98 -0
  431. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JSObject.c +1379 -0
  432. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaArray.c +481 -0
  433. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaClass.c +749 -0
  434. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaMember.c +186 -0
  435. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaObject.c +1099 -0
  436. data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaPackage.c +548 -0
  437. data/vendor/jsl-0.3.0/src/liveconnect/jsj_array.c +207 -0
  438. data/vendor/jsl-0.3.0/src/liveconnect/jsj_class.c +765 -0
  439. data/vendor/jsl-0.3.0/src/liveconnect/jsj_convert.c +954 -0
  440. data/vendor/jsl-0.3.0/src/liveconnect/jsj_field.c +421 -0
  441. data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.c +504 -0
  442. data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.h +161 -0
  443. data/vendor/jsl-0.3.0/src/liveconnect/jsj_method.c +1823 -0
  444. data/vendor/jsl-0.3.0/src/liveconnect/jsj_nodl.c +1 -0
  445. data/vendor/jsl-0.3.0/src/liveconnect/jsj_private.h +689 -0
  446. data/vendor/jsl-0.3.0/src/liveconnect/jsj_simpleapi.c +219 -0
  447. data/vendor/jsl-0.3.0/src/liveconnect/jsj_utils.c +513 -0
  448. data/vendor/jsl-0.3.0/src/liveconnect/jsjava.h +313 -0
  449. data/vendor/jsl-0.3.0/src/liveconnect/liveconnect.pkg +3 -0
  450. data/vendor/jsl-0.3.0/src/liveconnect/netscape_javascript_JSObject.h +155 -0
  451. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.cpp +785 -0
  452. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.h +197 -0
  453. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.cpp +163 -0
  454. data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.h +76 -0
  455. data/vendor/jsl-0.3.0/src/liveconnect/nsILiveconnect.h +195 -0
  456. data/vendor/jsl-0.3.0/src/liveconnect/nsISecureLiveconnect.h +84 -0
  457. data/vendor/jsl-0.3.0/src/liveconnect/nsISecurityContext.h +135 -0
  458. data/vendor/jsl-0.3.0/src/liveconnect/win32.order +6 -0
  459. data/vendor/jsl-0.3.0/src/lock_SunOS.s +114 -0
  460. data/vendor/jsl-0.3.0/src/perfect.js +39 -0
  461. data/vendor/jsl-0.3.0/src/perlconnect/JS.def +6 -0
  462. data/vendor/jsl-0.3.0/src/perlconnect/JS.dsp +107 -0
  463. data/vendor/jsl-0.3.0/src/perlconnect/JS.pm +318 -0
  464. data/vendor/jsl-0.3.0/src/perlconnect/JS.xs +1050 -0
  465. data/vendor/jsl-0.3.0/src/perlconnect/Makefile.PL +67 -0
  466. data/vendor/jsl-0.3.0/src/perlconnect/Makefile.ref +152 -0
  467. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsp +103 -0
  468. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsw +59 -0
  469. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.pm +126 -0
  470. data/vendor/jsl-0.3.0/src/perlconnect/PerlConnectShell.dsp +89 -0
  471. data/vendor/jsl-0.3.0/src/perlconnect/README.html +345 -0
  472. data/vendor/jsl-0.3.0/src/perlconnect/bg.jpg +0 -0
  473. data/vendor/jsl-0.3.0/src/perlconnect/jsperl.c +1100 -0
  474. data/vendor/jsl-0.3.0/src/perlconnect/jsperl.h +52 -0
  475. data/vendor/jsl-0.3.0/src/perlconnect/jsperlbuild.pl +81 -0
  476. data/vendor/jsl-0.3.0/src/perlconnect/jsperlpvt.h +57 -0
  477. data/vendor/jsl-0.3.0/src/perlconnect/test.js +73 -0
  478. data/vendor/jsl-0.3.0/src/perlconnect/test.pl +244 -0
  479. data/vendor/jsl-0.3.0/src/perlconnect/typemap +121 -0
  480. data/vendor/jsl-0.3.0/src/plify_jsdhash.sed +31 -0
  481. data/vendor/jsl-0.3.0/src/prmjtime.c +646 -0
  482. data/vendor/jsl-0.3.0/src/prmjtime.h +95 -0
  483. data/vendor/jsl-0.3.0/src/resource.h +15 -0
  484. data/vendor/jsl-0.3.0/src/rules.mk +193 -0
  485. data/vendor/jsl-0.3.0/src/win32.order +391 -0
  486. data/vendor/jsl-0.3.0/tests/conf/always_use_option_explicit.js +4 -0
  487. data/vendor/jsl-0.3.0/tests/conf/define.js +8 -0
  488. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-1.js +7 -0
  489. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-2.js +8 -0
  490. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-3.js +27 -0
  491. data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-4.js +4 -0
  492. data/vendor/jsl-0.3.0/tests/conf/lambda_assign_requires_semicolon.js +24 -0
  493. data/vendor/jsl-0.3.0/tests/conf/legacy_control_comments.js +8 -0
  494. data/vendor/jsl-0.3.0/tests/control_comments/control_comments.js +33 -0
  495. data/vendor/jsl-0.3.0/tests/control_comments/declare.js +26 -0
  496. data/vendor/jsl-0.3.0/tests/control_comments/import-overflow.js +9 -0
  497. data/vendor/jsl-0.3.0/tests/control_comments/import.js +5 -0
  498. data/vendor/jsl-0.3.0/tests/control_comments/import2.js +2 -0
  499. data/vendor/jsl-0.3.0/tests/control_comments/invalid_fallthru.js +13 -0
  500. data/vendor/jsl-0.3.0/tests/control_comments/option_explicit-with.js +12 -0
  501. data/vendor/jsl-0.3.0/tests/control_comments/option_explicit.js +64 -0
  502. data/vendor/jsl-0.3.0/tests/errors/unterminated_comment.js +8 -0
  503. data/vendor/jsl-0.3.0/tests/html/script_tag_in_js_literal.html +14 -0
  504. data/vendor/jsl-0.3.0/tests/run_tests.pl +71 -0
  505. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_else_stmt.js +21 -0
  506. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_nested_stmt.js +66 -0
  507. data/vendor/jsl-0.3.0/tests/warnings/ambiguous_newline.js +261 -0
  508. data/vendor/jsl-0.3.0/tests/warnings/anon_no_return_value.js +26 -0
  509. data/vendor/jsl-0.3.0/tests/warnings/assign_to_function_call.js +16 -0
  510. data/vendor/jsl-0.3.0/tests/warnings/block_without_braces.js +13 -0
  511. data/vendor/jsl-0.3.0/tests/warnings/comma_separated_stmts.js +17 -0
  512. data/vendor/jsl-0.3.0/tests/warnings/comparison_type_conv.js +44 -0
  513. data/vendor/jsl-0.3.0/tests/warnings/default_not_at_end.js +15 -0
  514. data/vendor/jsl-0.3.0/tests/warnings/dup_option_explicit.js +5 -0
  515. data/vendor/jsl-0.3.0/tests/warnings/duplicate_case_in_switch.js +62 -0
  516. data/vendor/jsl-0.3.0/tests/warnings/duplicate_formal.js +5 -0
  517. data/vendor/jsl-0.3.0/tests/warnings/empty_statement.js +29 -0
  518. data/vendor/jsl-0.3.0/tests/warnings/equal_as_assign.js +7 -0
  519. data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt-ignore.js +21 -0
  520. data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt.js +63 -0
  521. data/vendor/jsl-0.3.0/tests/warnings/jsl_cc_not_understood.js +5 -0
  522. data/vendor/jsl-0.3.0/tests/warnings/leading_decimal_point.js +7 -0
  523. data/vendor/jsl-0.3.0/tests/warnings/legacy_cc_not_understood.js +9 -0
  524. data/vendor/jsl-0.3.0/tests/warnings/meaningless_block.js +12 -0
  525. data/vendor/jsl-0.3.0/tests/warnings/misplaced_regex.js +20 -0
  526. data/vendor/jsl-0.3.0/tests/warnings/missing_break.js +87 -0
  527. data/vendor/jsl-0.3.0/tests/warnings/missing_break_for_last_case.js +19 -0
  528. data/vendor/jsl-0.3.0/tests/warnings/missing_default_case.js +51 -0
  529. data/vendor/jsl-0.3.0/tests/warnings/missing_option_explicit.js +5 -0
  530. data/vendor/jsl-0.3.0/tests/warnings/missing_semicolon.js +19 -0
  531. data/vendor/jsl-0.3.0/tests/warnings/multiple_plus_minus.js +10 -0
  532. data/vendor/jsl-0.3.0/tests/warnings/nested_comment.js +6 -0
  533. data/vendor/jsl-0.3.0/tests/warnings/no_return_value.js +25 -0
  534. data/vendor/jsl-0.3.0/tests/warnings/octal_number.js +5 -0
  535. data/vendor/jsl-0.3.0/tests/warnings/parseint_missing_radix.js +15 -0
  536. data/vendor/jsl-0.3.0/tests/warnings/partial_option_explicit.js +5 -0
  537. data/vendor/jsl-0.3.0/tests/warnings/redeclared_var.js +10 -0
  538. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/bad_backref.js +5 -0
  539. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/deprecated_usage.js +11 -0
  540. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/invalid_backref.js +5 -0
  541. data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/trailing_comma.js +5 -0
  542. data/vendor/jsl-0.3.0/tests/warnings/trailing_comma_in_array.js +8 -0
  543. data/vendor/jsl-0.3.0/tests/warnings/trailing_decimal_point.js +7 -0
  544. data/vendor/jsl-0.3.0/tests/warnings/unreachable_code.js +29 -0
  545. data/vendor/jsl-0.3.0/tests/warnings/use_of_label.js +19 -0
  546. data/vendor/jsl-0.3.0/tests/warnings/useless_assign.js +20 -0
  547. data/vendor/jsl-0.3.0/tests/warnings/useless_comparison.js +55 -0
  548. data/vendor/jsl-0.3.0/tests/warnings/useless_void.js +6 -0
  549. data/vendor/jsl-0.3.0/tests/warnings/var_hides_arg.js +4 -0
  550. data/vendor/jsl-0.3.0/tests/warnings/with_statement.js +7 -0
  551. data/vendor/yuicompressor-2.4.2.jar +0 -0
  552. metadata +605 -0
@@ -0,0 +1,749 @@
1
+ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2
+ *
3
+ * ***** BEGIN LICENSE BLOCK *****
4
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
5
+ *
6
+ * The contents of this file are subject to the Mozilla Public License Version
7
+ * 1.1 (the "License"); you may not use this file except in compliance with
8
+ * the License. You may obtain a copy of the License at
9
+ * http://www.mozilla.org/MPL/
10
+ *
11
+ * Software distributed under the License is distributed on an "AS IS" basis,
12
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13
+ * for the specific language governing rights and limitations under the
14
+ * License.
15
+ *
16
+ * The Original Code is Mozilla Communicator client code, released
17
+ * March 31, 1998.
18
+ *
19
+ * The Initial Developer of the Original Code is
20
+ * Netscape Communications Corporation.
21
+ * Portions created by the Initial Developer are Copyright (C) 1998
22
+ * the Initial Developer. All Rights Reserved.
23
+ *
24
+ * Contributor(s):
25
+ *
26
+ * Alternatively, the contents of this file may be used under the terms of
27
+ * either of the GNU General Public License Version 2 or later (the "GPL"),
28
+ * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
29
+ * in which case the provisions of the GPL or the LGPL are applicable instead
30
+ * of those above. If you wish to allow use of your version of this file only
31
+ * under the terms of either the GPL or the LGPL, and not to allow others to
32
+ * use your version of this file under the terms of the MPL, indicate your
33
+ * decision by deleting the provisions above and replace them with the notice
34
+ * and other provisions required by the GPL or the LGPL. If you do not delete
35
+ * the provisions above, a recipient may use your version of this file under
36
+ * the terms of any one of the MPL, the GPL or the LGPL.
37
+ *
38
+ * ***** END LICENSE BLOCK ***** */
39
+
40
+ /* This file is part of the Java-vendor-neutral implementation of LiveConnect
41
+ *
42
+ * It contains the native code implementation of JS's JavaClass class.
43
+ *
44
+ * A JavaClass is JavaScript's representation of a Java class.
45
+ * Its parent JS object is always a JavaPackage object. A JavaClass is not an
46
+ * exact reflection of Java's corresponding java.lang.Class object. Rather,
47
+ * the properties of a JavaClass are the static methods and properties of the
48
+ * corresponding Java class.
49
+ *
50
+ * Note that there is no runtime equivalent to the JavaClass class in Java.
51
+ * (Although there are instances of java.lang.String and there are static
52
+ * methods of java.lang.String that can be invoked, there's no such thing as
53
+ * a first-class object that can be referenced simply as "java.lang.String".)
54
+ */
55
+
56
+ #include <stdlib.h>
57
+ #include <string.h>
58
+
59
+ #include "jsj_private.h" /* LiveConnect internals */
60
+ #include "jscntxt.h" /* for error reporting */
61
+
62
+ JS_STATIC_DLL_CALLBACK(JSBool)
63
+ JavaClass_convert(JSContext *cx, JSObject *obj, JSType type, jsval *vp)
64
+ {
65
+ char *name;
66
+ JSString *str;
67
+
68
+ JavaClassDescriptor *class_descriptor;
69
+
70
+ class_descriptor = JS_GetPrivate(cx, obj);
71
+ if (!class_descriptor)
72
+ return JS_FALSE;
73
+
74
+ switch(type) {
75
+
76
+
77
+ case JSTYPE_STRING:
78
+ /* Convert '/' to '.' so that it looks like Java language syntax. */
79
+ if (!class_descriptor->name)
80
+ break;
81
+ name = JS_smprintf("[JavaClass %s]", class_descriptor->name);
82
+ if (!name) {
83
+ JS_ReportOutOfMemory(cx);
84
+ return JS_FALSE;
85
+ }
86
+
87
+ str = JS_NewString(cx, name, strlen(name));
88
+ if (!str) {
89
+ free(name);
90
+ /* It's not necessary to call JS_ReportOutOfMemory(), as
91
+ JS_NewString() will do so on failure. */
92
+ return JS_FALSE;
93
+ }
94
+
95
+ *vp = STRING_TO_JSVAL(str);
96
+ return JS_TRUE;
97
+
98
+ default:
99
+ break;
100
+ }
101
+ return JS_TRUE;
102
+ }
103
+
104
+ static JSBool
105
+ lookup_static_member_by_id(JSContext *cx, JNIEnv *jEnv, JSObject *obj,
106
+ JavaClassDescriptor **class_descriptorp,
107
+ jsid id, JavaMemberDescriptor **memberp)
108
+ {
109
+ jsval idval;
110
+ JavaMemberDescriptor *member_descriptor;
111
+ const char *member_name;
112
+ JavaClassDescriptor *class_descriptor;
113
+
114
+ class_descriptor = JS_GetPrivate(cx, obj);
115
+ if (!class_descriptor) {
116
+ *class_descriptorp = NULL;
117
+ *memberp = NULL;
118
+ return JS_TRUE;
119
+ }
120
+
121
+ if (class_descriptorp)
122
+ *class_descriptorp = class_descriptor;
123
+
124
+ member_descriptor = jsj_LookupJavaStaticMemberDescriptorById(cx, jEnv, class_descriptor, id);
125
+ if (!member_descriptor) {
126
+ JS_IdToValue(cx, id, &idval);
127
+ if (!JSVAL_IS_STRING(idval)) {
128
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
129
+ JSJMSG_BAD_JCLASS_EXPR);
130
+ return JS_FALSE;
131
+ }
132
+
133
+ member_name = JS_GetStringBytes(JSVAL_TO_STRING(idval));
134
+
135
+ /*
136
+ * See if the property looks like the explicit resolution of an
137
+ * overloaded method, e.g. "max(double,double)".
138
+ */
139
+ member_descriptor =
140
+ jsj_ResolveExplicitMethod(cx, jEnv, class_descriptor, id, JS_TRUE);
141
+ if (member_descriptor)
142
+ goto done;
143
+
144
+ /* Why do we have to do this ? */
145
+ if (!strcmp(member_name, "prototype")) {
146
+ *memberp = NULL;
147
+ return JS_TRUE;
148
+ }
149
+
150
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
151
+ JSJMSG_MISSING_NAME,
152
+ class_descriptor->name, member_name);
153
+ return JS_FALSE;
154
+ }
155
+
156
+ done:
157
+ if (memberp)
158
+ *memberp = member_descriptor;
159
+ return JS_TRUE;
160
+ }
161
+
162
+ JS_STATIC_DLL_CALLBACK(JSBool)
163
+ JavaClass_getPropertyById(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
164
+ {
165
+ jsval idval;
166
+ jclass java_class;
167
+ const char *member_name;
168
+ JavaClassDescriptor *class_descriptor;
169
+ JavaMemberDescriptor *member_descriptor;
170
+ JNIEnv *jEnv;
171
+ JSJavaThreadState *jsj_env;
172
+ JSBool result;
173
+
174
+ /* printf("In JavaClass_getProperty\n"); */
175
+
176
+ /* Get the Java per-thread environment pointer for this JSContext */
177
+ jsj_env = jsj_EnterJava(cx, &jEnv);
178
+ if (!jEnv)
179
+ return JS_FALSE;
180
+
181
+ if (!lookup_static_member_by_id(cx, jEnv, obj, &class_descriptor, id, &member_descriptor)) {
182
+ jsj_ExitJava(jsj_env);
183
+ return JS_FALSE;
184
+ }
185
+ if (!member_descriptor) {
186
+ *vp = JSVAL_VOID;
187
+ jsj_ExitJava(jsj_env);
188
+ return JS_TRUE;
189
+ }
190
+
191
+ java_class = class_descriptor->java_class;
192
+
193
+ if (member_descriptor->field) {
194
+ if (!member_descriptor->methods) {
195
+ result = jsj_GetJavaFieldValue(cx, jEnv, member_descriptor->field, java_class, vp);
196
+ jsj_ExitJava(jsj_env);
197
+ return result;
198
+ } else {
199
+ JS_ASSERT(0);
200
+ }
201
+ } else {
202
+ JSFunction *function;
203
+
204
+ /* TODO - eliminate JSFUN_BOUND_METHOD */
205
+ if (member_descriptor->methods->is_alias) {
206
+ /* If this is an explicit resolution of an overloaded method,
207
+ use the fully-qualified method name as the name of the
208
+ resulting JS function, i.e. "myMethod(int,long)" */
209
+ JS_IdToValue(cx, id, &idval);
210
+ member_name = JS_GetStringBytes(JSVAL_TO_STRING(idval));
211
+ } else {
212
+ /* Either not explicit resolution of overloaded method or
213
+ explicit resolution was unnecessary because method was
214
+ not overloaded. */
215
+ member_name = member_descriptor->name;
216
+ }
217
+ function = JS_NewFunction(cx, jsj_JavaStaticMethodWrapper, 0,
218
+ JSFUN_BOUND_METHOD, obj, member_name);
219
+ if (!function) {
220
+ jsj_ExitJava(jsj_env);
221
+ return JS_FALSE;
222
+ }
223
+
224
+ *vp = OBJECT_TO_JSVAL(JS_GetFunctionObject(function));
225
+ }
226
+
227
+ jsj_ExitJava(jsj_env);
228
+ return JS_TRUE;
229
+ }
230
+
231
+ JS_STATIC_DLL_CALLBACK(JSBool)
232
+ JavaClass_setPropertyById(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
233
+ {
234
+ jclass java_class;
235
+ const char *member_name;
236
+ JavaClassDescriptor *class_descriptor;
237
+ JavaMemberDescriptor *member_descriptor;
238
+ jsval idval;
239
+ JNIEnv *jEnv;
240
+ JSJavaThreadState *jsj_env;
241
+ JSBool result;
242
+
243
+ /* printf("In JavaClass_setProperty\n"); */
244
+
245
+ /* Get the Java per-thread environment pointer for this JSContext */
246
+ jsj_env = jsj_EnterJava(cx, &jEnv);
247
+ if (!jEnv)
248
+ return JS_FALSE;
249
+
250
+ if (!lookup_static_member_by_id(cx, jEnv, obj, &class_descriptor, id, &member_descriptor)) {
251
+ jsj_ExitJava(jsj_env);
252
+ return JS_FALSE;
253
+ }
254
+
255
+ /* Check for the case where there is a method with the given name, but no field
256
+ with that name */
257
+ if (!member_descriptor->field)
258
+ goto no_such_field;
259
+
260
+ /* Silently fail if field value is final (immutable), as required by ECMA spec */
261
+ if (member_descriptor->field->modifiers & ACC_FINAL) {
262
+ jsj_ExitJava(jsj_env);
263
+ return JS_TRUE;
264
+ }
265
+
266
+ java_class = class_descriptor->java_class;
267
+ result = jsj_SetJavaFieldValue(cx, jEnv, member_descriptor->field, java_class, *vp);
268
+ jsj_ExitJava(jsj_env);
269
+ return result;
270
+
271
+ no_such_field:
272
+ JS_IdToValue(cx, id, &idval);
273
+ member_name = JS_GetStringBytes(JSVAL_TO_STRING(idval));
274
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
275
+ JSJMSG_MISSING_STATIC,
276
+ member_name, class_descriptor->name);
277
+ jsj_ExitJava(jsj_env);
278
+ return JS_FALSE;
279
+ }
280
+
281
+ /*
282
+ * Free the private native data associated with the JavaPackage object.
283
+ */
284
+ JS_STATIC_DLL_CALLBACK(void)
285
+ JavaClass_finalize(JSContext *cx, JSObject *obj)
286
+ {
287
+ JNIEnv *jEnv;
288
+ JSJavaThreadState *jsj_env;
289
+
290
+ JavaClassDescriptor *class_descriptor = JS_GetPrivate(cx, obj);
291
+ if (!class_descriptor)
292
+ return;
293
+
294
+ /* Get the Java per-thread environment pointer for this JSContext */
295
+ jsj_env = jsj_EnterJava(cx, &jEnv);
296
+ if (!jEnv)
297
+ return;
298
+
299
+ /* printf("Finalizing %s\n", class_descriptor->name); */
300
+ jsj_ReleaseJavaClassDescriptor(cx, jEnv, class_descriptor);
301
+ jsj_ExitJava(jsj_env);
302
+ }
303
+
304
+
305
+ JS_STATIC_DLL_CALLBACK(JSBool)
306
+ JavaClass_lookupProperty(JSContext *cx, JSObject *obj, jsid id,
307
+ JSObject **objp, JSProperty **propp
308
+ #if defined JS_THREADSAFE && defined DEBUG
309
+ , const char *file, uintN line
310
+ #endif
311
+ )
312
+ {
313
+ JNIEnv *jEnv;
314
+ JSErrorReporter old_reporter;
315
+ JSJavaThreadState *jsj_env;
316
+
317
+ /* printf("In JavaClass_lookupProperty()\n"); */
318
+
319
+ /* Get the Java per-thread environment pointer for this JSContext */
320
+ jsj_env = jsj_EnterJava(cx, &jEnv);
321
+ if (!jEnv)
322
+ return JS_FALSE;
323
+
324
+ old_reporter = JS_SetErrorReporter(cx, NULL);
325
+ if (lookup_static_member_by_id(cx, jEnv, obj, NULL, id, NULL)) {
326
+ *objp = obj;
327
+ *propp = (JSProperty*)1;
328
+ } else {
329
+ *objp = NULL;
330
+ *propp = NULL;
331
+ }
332
+
333
+ JS_SetErrorReporter(cx, old_reporter);
334
+ jsj_ExitJava(jsj_env);
335
+ return JS_TRUE;
336
+ }
337
+
338
+ JS_STATIC_DLL_CALLBACK(JSBool)
339
+ JavaClass_defineProperty(JSContext *cx, JSObject *obj, jsid id, jsval value,
340
+ JSPropertyOp getter, JSPropertyOp setter,
341
+ uintN attrs, JSProperty **propp)
342
+ {
343
+ JavaClassDescriptor *class_descriptor;
344
+
345
+ class_descriptor = JS_GetPrivate(cx, obj);
346
+
347
+ /* Check for prototype JavaClass object */
348
+ if (!class_descriptor)
349
+ return JS_TRUE;
350
+
351
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
352
+ JSJMSG_JCLASS_PROP_DEFINE);
353
+ return JS_FALSE;
354
+ }
355
+
356
+ JS_STATIC_DLL_CALLBACK(JSBool)
357
+ JavaClass_getAttributes(JSContext *cx, JSObject *obj, jsid id,
358
+ JSProperty *prop, uintN *attrsp)
359
+ {
360
+ /* We don't maintain JS property attributes for Java class members */
361
+ *attrsp = JSPROP_PERMANENT|JSPROP_ENUMERATE;
362
+ return JS_FALSE;
363
+ }
364
+
365
+ JS_STATIC_DLL_CALLBACK(JSBool)
366
+ JavaClass_setAttributes(JSContext *cx, JSObject *obj, jsid id,
367
+ JSProperty *prop, uintN *attrsp)
368
+ {
369
+ /* We don't maintain JS property attributes for Java class members */
370
+ if (*attrsp != (JSPROP_PERMANENT|JSPROP_ENUMERATE)) {
371
+ JS_ASSERT(0);
372
+ return JS_FALSE;
373
+ }
374
+
375
+ /* Silently ignore all setAttribute attempts */
376
+ return JS_TRUE;
377
+ }
378
+
379
+ JS_STATIC_DLL_CALLBACK(JSBool)
380
+ JavaClass_deleteProperty(JSContext *cx, JSObject *obj, jsid id, jsval *vp)
381
+ {
382
+ JSVersion version = JS_GetVersion(cx);
383
+
384
+ *vp = JSVAL_FALSE;
385
+
386
+ if (!JSVERSION_IS_ECMA(version)) {
387
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
388
+ JSJMSG_JCLASS_PROP_DELETE);
389
+ return JS_FALSE;
390
+ } else {
391
+ /* Attempts to delete permanent properties are silently ignored
392
+ by ECMAScript. */
393
+ return JS_TRUE;
394
+ }
395
+ }
396
+
397
+ JS_STATIC_DLL_CALLBACK(JSBool)
398
+ JavaClass_defaultValue(JSContext *cx, JSObject *obj, JSType type, jsval *vp)
399
+ {
400
+ /* printf("In JavaClass_defaultValue()\n"); */
401
+ return JavaClass_convert(cx, obj, JSTYPE_STRING, vp);
402
+ }
403
+
404
+ JS_STATIC_DLL_CALLBACK(JSBool)
405
+ JavaClass_newEnumerate(JSContext *cx, JSObject *obj, JSIterateOp enum_op,
406
+ jsval *statep, jsid *idp)
407
+ {
408
+ JavaMemberDescriptor *member_descriptor;
409
+ JavaClassDescriptor *class_descriptor;
410
+ JNIEnv *jEnv;
411
+ JSJavaThreadState *jsj_env;
412
+
413
+ class_descriptor = JS_GetPrivate(cx, obj);
414
+
415
+ /* Check for prototype JavaClass object */
416
+ if (!class_descriptor) {
417
+ *statep = JSVAL_NULL;
418
+ if (idp)
419
+ *idp = INT_TO_JSVAL(0);
420
+ return JS_TRUE;
421
+ }
422
+
423
+ switch(enum_op) {
424
+ case JSENUMERATE_INIT:
425
+ /* Get the Java per-thread environment pointer for this JSContext */
426
+ jsj_env = jsj_EnterJava(cx, &jEnv);
427
+ if (!jEnv)
428
+ return JS_FALSE;
429
+ member_descriptor = jsj_GetClassStaticMembers(cx, jEnv, class_descriptor);
430
+ *statep = PRIVATE_TO_JSVAL(member_descriptor);
431
+ if (idp)
432
+ *idp = INT_TO_JSVAL(class_descriptor->num_instance_members);
433
+ jsj_ExitJava(jsj_env);
434
+ return JS_TRUE;
435
+
436
+ case JSENUMERATE_NEXT:
437
+ member_descriptor = JSVAL_TO_PRIVATE(*statep);
438
+ if (member_descriptor) {
439
+
440
+ /* Don't enumerate explicit-signature methods, i.e. enumerate toValue,
441
+ but not toValue(int), toValue(double), etc. */
442
+ while (member_descriptor->methods && member_descriptor->methods->is_alias) {
443
+ member_descriptor = member_descriptor->next;
444
+ if (!member_descriptor) {
445
+ *statep = JSVAL_NULL;
446
+ return JS_TRUE;
447
+ }
448
+ }
449
+
450
+ *idp = member_descriptor->id;
451
+ *statep = PRIVATE_TO_JSVAL(member_descriptor->next);
452
+ return JS_TRUE;
453
+ }
454
+ /* Fall through ... */
455
+
456
+ case JSENUMERATE_DESTROY:
457
+ *statep = JSVAL_NULL;
458
+ return JS_TRUE;
459
+
460
+ default:
461
+ JS_ASSERT(0);
462
+ return JS_FALSE;
463
+ }
464
+ }
465
+
466
+ JS_STATIC_DLL_CALLBACK(JSBool)
467
+ JavaClass_checkAccess(JSContext *cx, JSObject *obj, jsid id,
468
+ JSAccessMode mode, jsval *vp, uintN *attrsp)
469
+ {
470
+ switch (mode) {
471
+ case JSACC_WATCH:
472
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
473
+ JSJMSG_JCLASS_PROP_WATCH);
474
+ return JS_FALSE;
475
+
476
+ case JSACC_IMPORT:
477
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
478
+ JSJMSG_JCLASS_PROP_EXPORT);
479
+ return JS_FALSE;
480
+
481
+ default:
482
+ return JS_TRUE;
483
+ }
484
+ }
485
+
486
+ /*
487
+ * Implement the JavaScript instanceof operator for JavaClass objects by using
488
+ * the equivalent Java instanceof operation.
489
+ */
490
+ JS_STATIC_DLL_CALLBACK(JSBool)
491
+ JavaClass_hasInstance(JSContext *cx, JSObject *obj, jsval candidate_jsval,
492
+ JSBool *has_instancep)
493
+ {
494
+ JavaClassDescriptor *class_descriptor;
495
+ JavaObjectWrapper *java_wrapper;
496
+ JSClass *js_class;
497
+ JSBool has_instance;
498
+ JSObject *candidate_obj;
499
+ jclass java_class;
500
+ jobject java_obj;
501
+ JNIEnv *jEnv;
502
+ JSJavaThreadState *jsj_env;
503
+
504
+ has_instance = JS_FALSE;
505
+ class_descriptor = JS_GetPrivate(cx, obj);
506
+ if (!class_descriptor) {
507
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
508
+ JSJMSG_BAD_OP_JCLASS);
509
+ return JS_FALSE;
510
+ }
511
+
512
+ /*
513
+ * Make sure that the thing to the left of the instanceof operator is a
514
+ * Java object.
515
+ */
516
+ if (!JSVAL_IS_OBJECT(candidate_jsval))
517
+ goto done;
518
+ candidate_obj = JSVAL_TO_OBJECT(candidate_jsval);
519
+ #ifdef JS_THREADSAFE
520
+ js_class = JS_GetClass(cx, candidate_obj);
521
+ #else
522
+ js_class = JS_GetClass(candidate_obj);
523
+ #endif
524
+ if ((js_class != &JavaObject_class) && (js_class != &JavaArray_class))
525
+ goto done;
526
+
527
+ java_class = class_descriptor->java_class;
528
+ java_wrapper = JS_GetPrivate(cx, candidate_obj);
529
+ if (!java_wrapper) {
530
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
531
+ JSJMSG_BAD_OP_PROTO);
532
+ return JS_FALSE;
533
+ }
534
+ java_obj = java_wrapper->java_obj;
535
+ /* Get JNI pointer */
536
+ jsj_env = jsj_EnterJava(cx, &jEnv);
537
+ has_instance = (*jEnv)->IsInstanceOf(jEnv, java_obj, java_class);
538
+ jsj_ExitJava(jsj_env);
539
+
540
+ done:
541
+ *has_instancep = has_instance;
542
+ return JS_TRUE;
543
+ }
544
+
545
+ JSObjectOps JavaClass_ops = {
546
+ /* Mandatory non-null function pointer members. */
547
+ jsj_wrapper_newObjectMap, /* newObjectMap */
548
+ jsj_wrapper_destroyObjectMap, /* destroyObjectMap */
549
+ JavaClass_lookupProperty,
550
+ JavaClass_defineProperty,
551
+ JavaClass_getPropertyById, /* getProperty */
552
+ JavaClass_setPropertyById, /* setProperty */
553
+ JavaClass_getAttributes,
554
+ JavaClass_setAttributes,
555
+ JavaClass_deleteProperty,
556
+ JavaClass_defaultValue,
557
+ JavaClass_newEnumerate,
558
+ JavaClass_checkAccess,
559
+
560
+ /* Optionally non-null members start here. */
561
+ NULL, /* thisObject */
562
+ NULL, /* dropProperty */
563
+ jsj_JavaConstructorWrapper, /* call */
564
+ jsj_JavaConstructorWrapper, /* construct */
565
+ NULL, /* xdrObject */
566
+ JavaClass_hasInstance, /* hasInstance */
567
+ NULL, /* setProto */
568
+ NULL, /* setParent */
569
+ NULL, /* mark */
570
+ NULL, /* clear */
571
+ jsj_wrapper_getRequiredSlot, /* getRequiredSlot */
572
+ jsj_wrapper_setRequiredSlot /* setRequiredSlot */
573
+ };
574
+
575
+ JS_STATIC_DLL_CALLBACK(JSObjectOps *)
576
+ JavaClass_getObjectOps(JSContext *cx, JSClass *clazz)
577
+ {
578
+ return &JavaClass_ops;
579
+ }
580
+
581
+ JSClass JavaClass_class = {
582
+ "JavaClass", JSCLASS_HAS_PRIVATE,
583
+ NULL, NULL, NULL, NULL,
584
+ NULL, NULL, JavaClass_convert, JavaClass_finalize,
585
+
586
+ /* Optionally non-null members start here. */
587
+ JavaClass_getObjectOps,
588
+ NULL,
589
+ NULL,
590
+ NULL,
591
+ NULL,
592
+ NULL,
593
+ NULL,
594
+ 0,
595
+ };
596
+
597
+ static JSObject *
598
+ jsj_new_JavaClass(JSContext *cx, JNIEnv *jEnv, JSObject* parent_obj,
599
+ JavaClassDescriptor *class_descriptor)
600
+ {
601
+ JSObject *JavaClass_obj;
602
+
603
+ JavaClass_obj = JS_NewObject(cx, &JavaClass_class, 0, parent_obj);
604
+ if (!JavaClass_obj)
605
+ return NULL;
606
+
607
+ JS_SetPrivate(cx, JavaClass_obj, (void *)class_descriptor);
608
+
609
+ #ifdef DEBUG
610
+ /* printf("JavaClass \'%s\' created\n", class_descriptor->name); */
611
+ #endif
612
+
613
+ return JavaClass_obj;
614
+ }
615
+
616
+ JSObject *
617
+ jsj_define_JavaClass(JSContext *cx, JNIEnv *jEnv, JSObject* parent_obj,
618
+ const char *simple_class_name,
619
+ jclass java_class)
620
+ {
621
+ JavaClassDescriptor *class_descriptor;
622
+ JSObject *JavaClass_obj;
623
+
624
+ class_descriptor = jsj_GetJavaClassDescriptor(cx, jEnv, java_class);
625
+ if (!class_descriptor)
626
+ return NULL;
627
+
628
+ JavaClass_obj = jsj_new_JavaClass(cx, jEnv, parent_obj, class_descriptor);
629
+ if (!JavaClass_obj)
630
+ return NULL;
631
+
632
+ if (!JS_DefineProperty(cx, parent_obj, simple_class_name,
633
+ OBJECT_TO_JSVAL(JavaClass_obj), 0, 0,
634
+ JSPROP_PERMANENT|JSPROP_READONLY|JSPROP_ENUMERATE))
635
+ return NULL;
636
+ return JavaClass_obj;
637
+ }
638
+
639
+
640
+ /*
641
+ * The getClass() native JS method is defined as a property of the global
642
+ * object. Given a JavaObject it returns the corresponding JavaClass. This
643
+ * is useful for accessing static methods and fields.
644
+ *
645
+ * js> getClass(new java.lang.String("foo"))
646
+ * [JavaClass java.lang.String]
647
+ */
648
+ JS_STATIC_DLL_CALLBACK(JSBool)
649
+ getClass(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
650
+ {
651
+ JSObject *obj_arg, *JavaClass_obj;
652
+ JavaObjectWrapper *java_wrapper;
653
+ JavaClassDescriptor *class_descriptor;
654
+ JNIEnv *jEnv;
655
+ JSJavaThreadState *jsj_env;
656
+
657
+ if (argc != 1 ||
658
+ !JSVAL_IS_OBJECT(argv[0]) ||
659
+ !(obj_arg = JSVAL_TO_OBJECT(argv[0])) ||
660
+ (!JS_InstanceOf(cx, obj_arg, &JavaObject_class, 0) &&
661
+ !JS_InstanceOf(cx, obj_arg, &JavaArray_class, 0))) {
662
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
663
+ JSJMSG_NEED_JOBJECT_ARG);
664
+ return JS_FALSE;
665
+ }
666
+
667
+ java_wrapper = JS_GetPrivate(cx, obj_arg);
668
+ if (!java_wrapper) {
669
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
670
+ JSJMSG_PROTO_GETCLASS);
671
+ return JS_FALSE;
672
+ }
673
+
674
+ jsj_env = jsj_EnterJava(cx, &jEnv);
675
+ if (!jEnv)
676
+ return JS_FALSE;
677
+
678
+ class_descriptor = java_wrapper->class_descriptor;
679
+
680
+ JavaClass_obj = jsj_new_JavaClass(cx, jEnv, NULL, class_descriptor);
681
+ if (!JavaClass_obj) {
682
+ jsj_ExitJava(jsj_env);
683
+ return JS_FALSE;
684
+ }
685
+
686
+ *rval = OBJECT_TO_JSVAL(JavaClass_obj);
687
+ jsj_ExitJava(jsj_env);
688
+ return JS_TRUE;
689
+ }
690
+
691
+ JS_STATIC_DLL_CALLBACK(JSBool)
692
+ JavaClass_construct(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval *rval)
693
+ {
694
+ JSObject *obj_arg, *JavaClass_obj;
695
+ JavaObjectWrapper *java_wrapper;
696
+ JavaClassDescriptor *class_descriptor;
697
+ JNIEnv *jEnv;
698
+ JSJavaThreadState *jsj_env;
699
+
700
+ if (argc != 1 ||
701
+ !JSVAL_IS_OBJECT(argv[0]) ||
702
+ !(obj_arg = JSVAL_TO_OBJECT(argv[0])) ||
703
+ !JS_InstanceOf(cx, obj_arg, &JavaObject_class, 0) ||
704
+ ((java_wrapper = JS_GetPrivate(cx, obj_arg)) == NULL)) {
705
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
706
+ JSJMSG_NEED_JCLASS_ARG);
707
+ return JS_FALSE;
708
+ }
709
+
710
+ jsj_env = jsj_EnterJava(cx, &jEnv);
711
+ if (!jEnv)
712
+ return JS_FALSE;
713
+
714
+ class_descriptor = java_wrapper->class_descriptor;
715
+ if (!(*jEnv)->IsSameObject(jEnv, class_descriptor->java_class, jlClass)) {
716
+ JS_ReportErrorNumber(cx, jsj_GetErrorMessage, NULL,
717
+ JSJMSG_NEED_JCLASS_ARG);
718
+ jsj_ExitJava(jsj_env);
719
+ return JS_FALSE;
720
+ }
721
+
722
+ class_descriptor = jsj_GetJavaClassDescriptor(cx, jEnv, java_wrapper->java_obj);
723
+ JavaClass_obj = jsj_new_JavaClass(cx, jEnv, NULL, class_descriptor);
724
+ if (!JavaClass_obj) {
725
+ jsj_ExitJava(jsj_env);
726
+ return JS_FALSE;
727
+ }
728
+
729
+ *rval = OBJECT_TO_JSVAL(JavaClass_obj);
730
+ jsj_ExitJava(jsj_env);
731
+ return JS_TRUE;
732
+ }
733
+
734
+ extern JS_IMPORT_DATA(JSObjectOps) js_ObjectOps;
735
+
736
+ JSBool
737
+ jsj_init_JavaClass(JSContext *cx, JSObject *global_obj)
738
+ {
739
+ /* Define JavaClass class */
740
+ if (!JS_InitClass(cx, global_obj, 0, &JavaClass_class, JavaClass_construct, 0, 0, 0, 0, 0))
741
+ return JS_FALSE;
742
+
743
+ if (!JS_DefineFunction(cx, global_obj, "getClass", getClass, 0,
744
+ JSPROP_READONLY))
745
+ return JS_FALSE;
746
+
747
+ return jsj_InitJavaClassReflectionsTable();
748
+ }
749
+