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.
- data/Rakefile +28 -0
- data/VERSION +1 -0
- data/bin/distil +45 -0
- data/distil.gemspec +586 -0
- data/lib/bootstrap-template.js +56 -0
- data/lib/configurable.rb +125 -0
- data/lib/file-set.rb +42 -0
- data/lib/file-types/css-file.rb +75 -0
- data/lib/file-types/html-file.rb +11 -0
- data/lib/file-types/javascript-file.rb +98 -0
- data/lib/file-types/json-file.rb +14 -0
- data/lib/file-types/nib-file.rb +9 -0
- data/lib/jsdoc.conf +18 -0
- data/lib/jsl.conf +121 -0
- data/lib/project.rb +96 -0
- data/lib/source-file.rb +181 -0
- data/lib/target.rb +96 -0
- data/lib/task.rb +239 -0
- data/lib/tasks/copy-task.rb +21 -0
- data/lib/tasks/css-task.rb +18 -0
- data/lib/tasks/javascript-task.rb +125 -0
- data/lib/tasks/multiple-output-task.rb +134 -0
- data/lib/tasks/nib-task.rb +83 -0
- data/lib/tasks/output-task.rb +73 -0
- data/lib/tasks/single-output-task.rb +83 -0
- data/lib/tasks/test-task.rb +280 -0
- data/lib/test/HtmlTestReporter.js +127 -0
- data/lib/test/Test.js +248 -0
- data/lib/test/TestReporter.js +79 -0
- data/lib/test/TestRunner.js +132 -0
- data/lib/test/browser.rb +97 -0
- data/lib/test/scriptwrapper.html +10 -0
- data/lib/test/unittest.html +127 -0
- data/vendor/Makefile +35 -0
- data/vendor/extconf.rb +3 -0
- data/vendor/jsdoc-extras/plugins/distil-plugin.js +142 -0
- data/vendor/jsdoc-extras/plugins/interface-plugin.js +36 -0
- data/vendor/jsdoc-extras/templates/coherent/allclasses.tmpl +17 -0
- data/vendor/jsdoc-extras/templates/coherent/allfiles.tmpl +53 -0
- data/vendor/jsdoc-extras/templates/coherent/class.tmpl +803 -0
- data/vendor/jsdoc-extras/templates/coherent/index.tmpl +37 -0
- data/vendor/jsdoc-extras/templates/coherent/publish.js +242 -0
- data/vendor/jsdoc-extras/templates/coherent/showdown.js +421 -0
- data/vendor/jsdoc-extras/templates/coherent/static/code-footer.html +3 -0
- data/vendor/jsdoc-extras/templates/coherent/static/code-header.html +7 -0
- data/vendor/jsdoc-extras/templates/coherent/static/default.css +297 -0
- data/vendor/jsdoc-extras/templates/coherent/static/header.html +2 -0
- data/vendor/jsdoc-extras/templates/coherent/static/index.html +19 -0
- data/vendor/jsdoc-extras/templates/coherent/symbol.tmpl +35 -0
- data/vendor/jsdoc-toolkit/README.txt +183 -0
- data/vendor/jsdoc-toolkit/app/frame/Chain.js +102 -0
- data/vendor/jsdoc-toolkit/app/frame/Dumper.js +144 -0
- data/vendor/jsdoc-toolkit/app/frame/Hash.js +84 -0
- data/vendor/jsdoc-toolkit/app/frame/Link.js +171 -0
- data/vendor/jsdoc-toolkit/app/frame/Namespace.js +10 -0
- data/vendor/jsdoc-toolkit/app/frame/Opt.js +134 -0
- data/vendor/jsdoc-toolkit/app/frame/Reflection.js +26 -0
- data/vendor/jsdoc-toolkit/app/frame/String.js +93 -0
- data/vendor/jsdoc-toolkit/app/frame/Testrun.js +129 -0
- data/vendor/jsdoc-toolkit/app/frame.js +33 -0
- data/vendor/jsdoc-toolkit/app/handlers/FOODOC.js +26 -0
- data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +159 -0
- data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +16 -0
- data/vendor/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +292 -0
- data/vendor/jsdoc-toolkit/app/handlers/XMLDOC.js +26 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +204 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +300 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +126 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +109 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Lang.js +144 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Parser.js +144 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +33 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +644 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +241 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +41 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Token.js +18 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +332 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +133 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Util.js +32 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC/Walker.js +499 -0
- data/vendor/jsdoc-toolkit/app/lib/JSDOC.js +106 -0
- data/vendor/jsdoc-toolkit/app/main.js +129 -0
- data/vendor/jsdoc-toolkit/app/plugins/commentSrcJson.js +20 -0
- data/vendor/jsdoc-toolkit/app/plugins/frameworkPrototype.js +16 -0
- data/vendor/jsdoc-toolkit/app/plugins/functionCall.js +10 -0
- data/vendor/jsdoc-toolkit/app/plugins/publishSrcHilite.js +54 -0
- data/vendor/jsdoc-toolkit/app/plugins/symbolLink.js +10 -0
- data/vendor/jsdoc-toolkit/app/plugins/tagParamConfig.js +31 -0
- data/vendor/jsdoc-toolkit/app/plugins/tagSynonyms.js +43 -0
- data/vendor/jsdoc-toolkit/app/run.js +348 -0
- data/vendor/jsdoc-toolkit/app/t/TestDoc.js +144 -0
- data/vendor/jsdoc-toolkit/app/t/runner.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/addon.js +24 -0
- data/vendor/jsdoc-toolkit/app/test/anon_inner.js +14 -0
- data/vendor/jsdoc-toolkit/app/test/augments.js +31 -0
- data/vendor/jsdoc-toolkit/app/test/augments2.js +26 -0
- data/vendor/jsdoc-toolkit/app/test/borrows.js +46 -0
- data/vendor/jsdoc-toolkit/app/test/borrows2.js +23 -0
- data/vendor/jsdoc-toolkit/app/test/config.js +22 -0
- data/vendor/jsdoc-toolkit/app/test/constructs.js +18 -0
- data/vendor/jsdoc-toolkit/app/test/encoding.js +10 -0
- data/vendor/jsdoc-toolkit/app/test/encoding_other.js +12 -0
- data/vendor/jsdoc-toolkit/app/test/event.js +54 -0
- data/vendor/jsdoc-toolkit/app/test/exports.js +14 -0
- data/vendor/jsdoc-toolkit/app/test/functions_anon.js +39 -0
- data/vendor/jsdoc-toolkit/app/test/functions_nested.js +33 -0
- data/vendor/jsdoc-toolkit/app/test/global.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/globals.js +25 -0
- data/vendor/jsdoc-toolkit/app/test/ignore.js +10 -0
- data/vendor/jsdoc-toolkit/app/test/inner.js +16 -0
- data/vendor/jsdoc-toolkit/app/test/jsdoc_test.js +477 -0
- data/vendor/jsdoc-toolkit/app/test/lend.js +33 -0
- data/vendor/jsdoc-toolkit/app/test/memberof.js +19 -0
- data/vendor/jsdoc-toolkit/app/test/memberof2.js +38 -0
- data/vendor/jsdoc-toolkit/app/test/memberof3.js +33 -0
- data/vendor/jsdoc-toolkit/app/test/memberof_constructor.js +17 -0
- data/vendor/jsdoc-toolkit/app/test/module.js +17 -0
- data/vendor/jsdoc-toolkit/app/test/name.js +19 -0
- data/vendor/jsdoc-toolkit/app/test/namespace_nested.js +23 -0
- data/vendor/jsdoc-toolkit/app/test/nocode.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/oblit_anon.js +20 -0
- data/vendor/jsdoc-toolkit/app/test/overview.js +20 -0
- data/vendor/jsdoc-toolkit/app/test/param_inline.js +37 -0
- data/vendor/jsdoc-toolkit/app/test/params_optional.js +8 -0
- data/vendor/jsdoc-toolkit/app/test/prototype.js +17 -0
- data/vendor/jsdoc-toolkit/app/test/prototype_nested.js +9 -0
- data/vendor/jsdoc-toolkit/app/test/prototype_oblit.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +24 -0
- data/vendor/jsdoc-toolkit/app/test/public.js +10 -0
- data/vendor/jsdoc-toolkit/app/test/scripts/code.js +5 -0
- data/vendor/jsdoc-toolkit/app/test/scripts/notcode.txt +5 -0
- data/vendor/jsdoc-toolkit/app/test/shared.js +42 -0
- data/vendor/jsdoc-toolkit/app/test/shared2.js +2 -0
- data/vendor/jsdoc-toolkit/app/test/shortcuts.js +22 -0
- data/vendor/jsdoc-toolkit/app/test/static_this.js +13 -0
- data/vendor/jsdoc-toolkit/app/test/synonyms.js +31 -0
- data/vendor/jsdoc-toolkit/app/test/tosource.js +23 -0
- data/vendor/jsdoc-toolkit/app/test/variable_redefine.js +14 -0
- data/vendor/jsdoc-toolkit/app/test.js +342 -0
- data/vendor/jsdoc-toolkit/changes.txt +116 -0
- data/vendor/jsdoc-toolkit/conf/sample.conf +31 -0
- data/vendor/jsdoc-toolkit/java/build.xml +36 -0
- data/vendor/jsdoc-toolkit/java/build_1.4.xml +36 -0
- data/vendor/jsdoc-toolkit/java/classes/js.jar +0 -0
- data/vendor/jsdoc-toolkit/java/src/JsDebugRun.java +21 -0
- data/vendor/jsdoc-toolkit/java/src/JsRun.java +21 -0
- data/vendor/jsdoc-toolkit/jsdebug.jar +0 -0
- data/vendor/jsdoc-toolkit/jsrun.jar +0 -0
- data/vendor/jsdoc-toolkit/jsrun.sh +53 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/allclasses.tmpl +17 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/allfiles.tmpl +56 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/class.tmpl +649 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/index.tmpl +39 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/publish.js +201 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-footer.html +3 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/code-header.html +14 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/default.css +162 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/header.html +2 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/static/index.html +19 -0
- data/vendor/jsdoc-toolkit/templates/jsdoc/symbol.tmpl +35 -0
- data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.cpp +333 -0
- data/vendor/jsl-0.3.0/src/JavaScriptLintAPI.h +86 -0
- data/vendor/jsl-0.3.0/src/Makefile.in +375 -0
- data/vendor/jsl-0.3.0/src/Makefile.ref +372 -0
- data/vendor/jsl-0.3.0/src/README.html +826 -0
- data/vendor/jsl-0.3.0/src/SpiderMonkey.rsp +12 -0
- data/vendor/jsl-0.3.0/src/_jsl_online.php +223 -0
- data/vendor/jsl-0.3.0/src/config/AIX4.1.mk +65 -0
- data/vendor/jsl-0.3.0/src/config/AIX4.2.mk +64 -0
- data/vendor/jsl-0.3.0/src/config/AIX4.3.mk +65 -0
- data/vendor/jsl-0.3.0/src/config/Darwin.mk +81 -0
- data/vendor/jsl-0.3.0/src/config/Darwin1.3.mk +81 -0
- data/vendor/jsl-0.3.0/src/config/Darwin1.4.mk +41 -0
- data/vendor/jsl-0.3.0/src/config/Darwin5.2.mk +81 -0
- data/vendor/jsl-0.3.0/src/config/Darwin5.3.mk +81 -0
- data/vendor/jsl-0.3.0/src/config/HP-UXB.10.10.mk +77 -0
- data/vendor/jsl-0.3.0/src/config/HP-UXB.10.20.mk +77 -0
- data/vendor/jsl-0.3.0/src/config/HP-UXB.11.00.mk +80 -0
- data/vendor/jsl-0.3.0/src/config/IRIX.mk +87 -0
- data/vendor/jsl-0.3.0/src/config/IRIX5.3.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/IRIX6.1.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/IRIX6.2.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/IRIX6.3.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/IRIX6.5.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/Linux_All.mk +103 -0
- data/vendor/jsl-0.3.0/src/config/Mac_OS10.0.mk +82 -0
- data/vendor/jsl-0.3.0/src/config/OSF1V4.0.mk +72 -0
- data/vendor/jsl-0.3.0/src/config/OSF1V5.0.mk +69 -0
- data/vendor/jsl-0.3.0/src/config/SunOS4.1.4.mk +101 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.3.mk +91 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.4.mk +92 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.5.1.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.5.mk +87 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.6.mk +89 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.7.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.8.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/SunOS5.9.mk +44 -0
- data/vendor/jsl-0.3.0/src/config/WINNT4.0.mk +112 -0
- data/vendor/jsl-0.3.0/src/config/WINNT5.0.mk +112 -0
- data/vendor/jsl-0.3.0/src/config/WINNT5.1.mk +112 -0
- data/vendor/jsl-0.3.0/src/config/WINNT5.2.mk +112 -0
- data/vendor/jsl-0.3.0/src/config/dgux.mk +64 -0
- data/vendor/jsl-0.3.0/src/config.mk +166 -0
- data/vendor/jsl-0.3.0/src/editline/Makefile.ref +144 -0
- data/vendor/jsl-0.3.0/src/editline/README +83 -0
- data/vendor/jsl-0.3.0/src/editline/editline.3 +175 -0
- data/vendor/jsl-0.3.0/src/editline/editline.c +1369 -0
- data/vendor/jsl-0.3.0/src/editline/editline.h +135 -0
- data/vendor/jsl-0.3.0/src/editline/sysunix.c +182 -0
- data/vendor/jsl-0.3.0/src/editline/unix.h +82 -0
- data/vendor/jsl-0.3.0/src/fdlibm/Makefile.in +127 -0
- data/vendor/jsl-0.3.0/src/fdlibm/Makefile.ref +192 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_acos.c +147 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_acosh.c +105 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_asin.c +156 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_atan2.c +165 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_atanh.c +110 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_cosh.c +133 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_exp.c +202 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_fmod.c +184 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_gamma.c +71 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_gamma_r.c +70 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_hypot.c +173 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_j0.c +524 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_j1.c +523 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_jn.c +315 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma.c +71 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_lgamma_r.c +347 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_log.c +184 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_log10.c +134 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_pow.c +386 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_rem_pio2.c +221 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_remainder.c +120 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_scalb.c +89 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_sinh.c +122 -0
- data/vendor/jsl-0.3.0/src/fdlibm/e_sqrt.c +497 -0
- data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.dsp +160 -0
- data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.h +273 -0
- data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mak +1453 -0
- data/vendor/jsl-0.3.0/src/fdlibm/fdlibm.mdp +0 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_cos.c +134 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_rem_pio2.c +354 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_sin.c +114 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_standard.c +785 -0
- data/vendor/jsl-0.3.0/src/fdlibm/k_tan.c +170 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_asinh.c +101 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_atan.c +175 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_cbrt.c +133 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_ceil.c +120 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_copysign.c +72 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_cos.c +118 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_erf.c +356 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_expm1.c +267 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_fabs.c +70 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_finite.c +71 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_floor.c +121 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_frexp.c +99 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_ilogb.c +85 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_isnan.c +74 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_ldexp.c +66 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_lib_version.c +73 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_log1p.c +211 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_logb.c +79 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_matherr.c +64 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_modf.c +132 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_nextafter.c +124 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_rint.c +131 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_scalbn.c +107 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_signgam.c +40 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_significand.c +68 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_sin.c +118 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_tan.c +112 -0
- data/vendor/jsl-0.3.0/src/fdlibm/s_tanh.c +122 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_acos.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_acosh.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_asin.c +80 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_atan2.c +79 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_atanh.c +81 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_cosh.c +77 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_exp.c +88 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_fmod.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_gamma.c +85 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_gamma_r.c +81 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_hypot.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_j0.c +105 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_j1.c +106 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_jn.c +128 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma.c +85 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_lgamma_r.c +81 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_log.c +78 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_log10.c +81 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_pow.c +99 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_remainder.c +77 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_scalb.c +95 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_sinh.c +77 -0
- data/vendor/jsl-0.3.0/src/fdlibm/w_sqrt.c +77 -0
- data/vendor/jsl-0.3.0/src/js.c +2447 -0
- data/vendor/jsl-0.3.0/src/js.dsp +420 -0
- data/vendor/jsl-0.3.0/src/js.mak +4025 -0
- data/vendor/jsl-0.3.0/src/js.mdp +0 -0
- data/vendor/jsl-0.3.0/src/js.msg +291 -0
- data/vendor/jsl-0.3.0/src/js.pkg +2 -0
- data/vendor/jsl-0.3.0/src/js3240.rc +79 -0
- data/vendor/jsl-0.3.0/src/jsOS240.def +654 -0
- data/vendor/jsl-0.3.0/src/jsapi.c +4405 -0
- data/vendor/jsl-0.3.0/src/jsapi.h +1856 -0
- data/vendor/jsl-0.3.0/src/jsarena.c +567 -0
- data/vendor/jsl-0.3.0/src/jsarena.h +302 -0
- data/vendor/jsl-0.3.0/src/jsarray.c +1428 -0
- data/vendor/jsl-0.3.0/src/jsarray.h +77 -0
- data/vendor/jsl-0.3.0/src/jsatom.c +927 -0
- data/vendor/jsl-0.3.0/src/jsatom.h +426 -0
- data/vendor/jsl-0.3.0/src/jsbit.h +113 -0
- data/vendor/jsl-0.3.0/src/jsbool.c +220 -0
- data/vendor/jsl-0.3.0/src/jsbool.h +62 -0
- data/vendor/jsl-0.3.0/src/jsclist.h +139 -0
- data/vendor/jsl-0.3.0/src/jscntxt.c +1036 -0
- data/vendor/jsl-0.3.0/src/jscntxt.h +608 -0
- data/vendor/jsl-0.3.0/src/jscompat.h +57 -0
- data/vendor/jsl-0.3.0/src/jsconfig.h +489 -0
- data/vendor/jsl-0.3.0/src/jsconfig.mk +181 -0
- data/vendor/jsl-0.3.0/src/jscpucfg.c +377 -0
- data/vendor/jsl-0.3.0/src/jscpucfg.h +204 -0
- data/vendor/jsl-0.3.0/src/jsdate.c +2238 -0
- data/vendor/jsl-0.3.0/src/jsdate.h +118 -0
- data/vendor/jsl-0.3.0/src/jsdbgapi.c +1260 -0
- data/vendor/jsl-0.3.0/src/jsdbgapi.h +345 -0
- data/vendor/jsl-0.3.0/src/jsdhash.c +763 -0
- data/vendor/jsl-0.3.0/src/jsdhash.h +579 -0
- data/vendor/jsl-0.3.0/src/jsdtoa.c +3135 -0
- data/vendor/jsl-0.3.0/src/jsdtoa.h +130 -0
- data/vendor/jsl-0.3.0/src/jsemit.c +4851 -0
- data/vendor/jsl-0.3.0/src/jsemit.h +576 -0
- data/vendor/jsl-0.3.0/src/jsexn.c +1084 -0
- data/vendor/jsl-0.3.0/src/jsexn.h +102 -0
- data/vendor/jsl-0.3.0/src/jsfile.c +2610 -0
- data/vendor/jsl-0.3.0/src/jsfile.h +50 -0
- data/vendor/jsl-0.3.0/src/jsfile.msg +89 -0
- data/vendor/jsl-0.3.0/src/jsfun.c +2015 -0
- data/vendor/jsl-0.3.0/src/jsfun.h +158 -0
- data/vendor/jsl-0.3.0/src/jsgc.c +1441 -0
- data/vendor/jsl-0.3.0/src/jsgc.h +230 -0
- data/vendor/jsl-0.3.0/src/jshash.c +471 -0
- data/vendor/jsl-0.3.0/src/jshash.h +152 -0
- data/vendor/jsl-0.3.0/src/jsify.pl +485 -0
- data/vendor/jsl-0.3.0/src/jsinterp.c +4797 -0
- data/vendor/jsl-0.3.0/src/jsinterp.h +302 -0
- data/vendor/jsl-0.3.0/src/jsl-test.js +28 -0
- data/vendor/jsl-0.3.0/src/jsl.c +2371 -0
- data/vendor/jsl-0.3.0/src/jsl.conf +127 -0
- data/vendor/jsl-0.3.0/src/jsl.conf.old +124 -0
- data/vendor/jsl-0.3.0/src/jsl.dsp +242 -0
- data/vendor/jsl-0.3.0/src/jsl.dsw +59 -0
- data/vendor/jsl-0.3.0/src/jslibmath.h +290 -0
- data/vendor/jsl-0.3.0/src/jslock.c +1261 -0
- data/vendor/jsl-0.3.0/src/jslock.h +289 -0
- data/vendor/jsl-0.3.0/src/jslocko.asm +59 -0
- data/vendor/jsl-0.3.0/src/jslog2.c +83 -0
- data/vendor/jsl-0.3.0/src/jslong.c +281 -0
- data/vendor/jsl-0.3.0/src/jslong.h +437 -0
- data/vendor/jsl-0.3.0/src/jsmath.c +477 -0
- data/vendor/jsl-0.3.0/src/jsmath.h +55 -0
- data/vendor/jsl-0.3.0/src/jsnum.c +1148 -0
- data/vendor/jsl-0.3.0/src/jsnum.h +257 -0
- data/vendor/jsl-0.3.0/src/jsobj.c +4066 -0
- data/vendor/jsl-0.3.0/src/jsobj.h +475 -0
- data/vendor/jsl-0.3.0/src/jsopcode.c +2730 -0
- data/vendor/jsl-0.3.0/src/jsopcode.h +275 -0
- data/vendor/jsl-0.3.0/src/jsopcode.tbl +344 -0
- data/vendor/jsl-0.3.0/src/jsosdep.h +127 -0
- data/vendor/jsl-0.3.0/src/jsotypes.h +211 -0
- data/vendor/jsl-0.3.0/src/jsparse.c +4438 -0
- data/vendor/jsl-0.3.0/src/jsparse.h +345 -0
- data/vendor/jsl-0.3.0/src/jsprf.c +1212 -0
- data/vendor/jsl-0.3.0/src/jsprf.h +148 -0
- data/vendor/jsl-0.3.0/src/jsprvtd.h +174 -0
- data/vendor/jsl-0.3.0/src/jspubtd.h +586 -0
- data/vendor/jsl-0.3.0/src/jsregexp.c +3831 -0
- data/vendor/jsl-0.3.0/src/jsregexp.h +180 -0
- data/vendor/jsl-0.3.0/src/jsscan.c +1814 -0
- data/vendor/jsl-0.3.0/src/jsscan.h +267 -0
- data/vendor/jsl-0.3.0/src/jsscope.c +1639 -0
- data/vendor/jsl-0.3.0/src/jsscope.h +389 -0
- data/vendor/jsl-0.3.0/src/jsscript.c +1284 -0
- data/vendor/jsl-0.3.0/src/jsscript.h +179 -0
- data/vendor/jsl-0.3.0/src/jsshell.msg +50 -0
- data/vendor/jsl-0.3.0/src/jsstddef.h +83 -0
- data/vendor/jsl-0.3.0/src/jsstr.c +4502 -0
- data/vendor/jsl-0.3.0/src/jsstr.h +448 -0
- data/vendor/jsl-0.3.0/src/jstypes.h +391 -0
- data/vendor/jsl-0.3.0/src/jsutil.c +157 -0
- data/vendor/jsl-0.3.0/src/jsutil.h +75 -0
- data/vendor/jsl-0.3.0/src/jsxdrapi.c +686 -0
- data/vendor/jsl-0.3.0/src/jsxdrapi.h +193 -0
- data/vendor/jsl-0.3.0/src/liveconnect/LiveConnect.dsp +157 -0
- data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsp +120 -0
- data/vendor/jsl-0.3.0/src/liveconnect/LiveConnectShell.dsw +44 -0
- data/vendor/jsl-0.3.0/src/liveconnect/Makefile.in +106 -0
- data/vendor/jsl-0.3.0/src/liveconnect/Makefile.ref +169 -0
- data/vendor/jsl-0.3.0/src/liveconnect/README.html +719 -0
- data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSException.h +14 -0
- data/vendor/jsl-0.3.0/src/liveconnect/_jni/netscape_javascript_JSObject.h +155 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.in +89 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/Makefile.ref +57 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/Makefile.ref +47 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSException.java +140 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSObject.java +183 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSProxy.java +58 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSRunnable.java +70 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/JSUtil.java +59 -0
- data/vendor/jsl-0.3.0/src/liveconnect/classes/netscape/javascript/Makefile.ref +53 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.1.mk +45 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.2.mk +45 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/AIX4.3.mk +50 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.10.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.10.20.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/HP-UXB.11.00.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.2.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.3.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/IRIX6.5.mk +43 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/Linux_All.mk +73 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V4.0.mk +65 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/OSF1V5.0.mk +62 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.5.1.mk +55 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.6.mk +39 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.7.mk +39 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/SunOS5.8.mk +39 -0
- data/vendor/jsl-0.3.0/src/liveconnect/config/WINNT4.0.mk +53 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj.c +884 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj.msg +98 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JSObject.c +1379 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaArray.c +481 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaClass.c +749 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaMember.c +186 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaObject.c +1099 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_JavaPackage.c +548 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_array.c +207 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_class.c +765 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_convert.c +954 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_field.c +421 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.c +504 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_hash.h +161 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_method.c +1823 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_nodl.c +1 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_private.h +689 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_simpleapi.c +219 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsj_utils.c +513 -0
- data/vendor/jsl-0.3.0/src/liveconnect/jsjava.h +313 -0
- data/vendor/jsl-0.3.0/src/liveconnect/liveconnect.pkg +3 -0
- data/vendor/jsl-0.3.0/src/liveconnect/netscape_javascript_JSObject.h +155 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.cpp +785 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnect.h +197 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.cpp +163 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsCLiveconnectFactory.h +76 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsILiveconnect.h +195 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsISecureLiveconnect.h +84 -0
- data/vendor/jsl-0.3.0/src/liveconnect/nsISecurityContext.h +135 -0
- data/vendor/jsl-0.3.0/src/liveconnect/win32.order +6 -0
- data/vendor/jsl-0.3.0/src/lock_SunOS.s +114 -0
- data/vendor/jsl-0.3.0/src/perfect.js +39 -0
- data/vendor/jsl-0.3.0/src/perlconnect/JS.def +6 -0
- data/vendor/jsl-0.3.0/src/perlconnect/JS.dsp +107 -0
- data/vendor/jsl-0.3.0/src/perlconnect/JS.pm +318 -0
- data/vendor/jsl-0.3.0/src/perlconnect/JS.xs +1050 -0
- data/vendor/jsl-0.3.0/src/perlconnect/Makefile.PL +67 -0
- data/vendor/jsl-0.3.0/src/perlconnect/Makefile.ref +152 -0
- data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsp +103 -0
- data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.dsw +59 -0
- data/vendor/jsl-0.3.0/src/perlconnect/PerlConnect.pm +126 -0
- data/vendor/jsl-0.3.0/src/perlconnect/PerlConnectShell.dsp +89 -0
- data/vendor/jsl-0.3.0/src/perlconnect/README.html +345 -0
- data/vendor/jsl-0.3.0/src/perlconnect/bg.jpg +0 -0
- data/vendor/jsl-0.3.0/src/perlconnect/jsperl.c +1100 -0
- data/vendor/jsl-0.3.0/src/perlconnect/jsperl.h +52 -0
- data/vendor/jsl-0.3.0/src/perlconnect/jsperlbuild.pl +81 -0
- data/vendor/jsl-0.3.0/src/perlconnect/jsperlpvt.h +57 -0
- data/vendor/jsl-0.3.0/src/perlconnect/test.js +73 -0
- data/vendor/jsl-0.3.0/src/perlconnect/test.pl +244 -0
- data/vendor/jsl-0.3.0/src/perlconnect/typemap +121 -0
- data/vendor/jsl-0.3.0/src/plify_jsdhash.sed +31 -0
- data/vendor/jsl-0.3.0/src/prmjtime.c +646 -0
- data/vendor/jsl-0.3.0/src/prmjtime.h +95 -0
- data/vendor/jsl-0.3.0/src/resource.h +15 -0
- data/vendor/jsl-0.3.0/src/rules.mk +193 -0
- data/vendor/jsl-0.3.0/src/win32.order +391 -0
- data/vendor/jsl-0.3.0/tests/conf/always_use_option_explicit.js +4 -0
- data/vendor/jsl-0.3.0/tests/conf/define.js +8 -0
- data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-1.js +7 -0
- data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-2.js +8 -0
- data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-3.js +27 -0
- data/vendor/jsl-0.3.0/tests/conf/jscript_function_extensions-4.js +4 -0
- data/vendor/jsl-0.3.0/tests/conf/lambda_assign_requires_semicolon.js +24 -0
- data/vendor/jsl-0.3.0/tests/conf/legacy_control_comments.js +8 -0
- data/vendor/jsl-0.3.0/tests/control_comments/control_comments.js +33 -0
- data/vendor/jsl-0.3.0/tests/control_comments/declare.js +26 -0
- data/vendor/jsl-0.3.0/tests/control_comments/import-overflow.js +9 -0
- data/vendor/jsl-0.3.0/tests/control_comments/import.js +5 -0
- data/vendor/jsl-0.3.0/tests/control_comments/import2.js +2 -0
- data/vendor/jsl-0.3.0/tests/control_comments/invalid_fallthru.js +13 -0
- data/vendor/jsl-0.3.0/tests/control_comments/option_explicit-with.js +12 -0
- data/vendor/jsl-0.3.0/tests/control_comments/option_explicit.js +64 -0
- data/vendor/jsl-0.3.0/tests/errors/unterminated_comment.js +8 -0
- data/vendor/jsl-0.3.0/tests/html/script_tag_in_js_literal.html +14 -0
- data/vendor/jsl-0.3.0/tests/run_tests.pl +71 -0
- data/vendor/jsl-0.3.0/tests/warnings/ambiguous_else_stmt.js +21 -0
- data/vendor/jsl-0.3.0/tests/warnings/ambiguous_nested_stmt.js +66 -0
- data/vendor/jsl-0.3.0/tests/warnings/ambiguous_newline.js +261 -0
- data/vendor/jsl-0.3.0/tests/warnings/anon_no_return_value.js +26 -0
- data/vendor/jsl-0.3.0/tests/warnings/assign_to_function_call.js +16 -0
- data/vendor/jsl-0.3.0/tests/warnings/block_without_braces.js +13 -0
- data/vendor/jsl-0.3.0/tests/warnings/comma_separated_stmts.js +17 -0
- data/vendor/jsl-0.3.0/tests/warnings/comparison_type_conv.js +44 -0
- data/vendor/jsl-0.3.0/tests/warnings/default_not_at_end.js +15 -0
- data/vendor/jsl-0.3.0/tests/warnings/dup_option_explicit.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/duplicate_case_in_switch.js +62 -0
- data/vendor/jsl-0.3.0/tests/warnings/duplicate_formal.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/empty_statement.js +29 -0
- data/vendor/jsl-0.3.0/tests/warnings/equal_as_assign.js +7 -0
- data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt-ignore.js +21 -0
- data/vendor/jsl-0.3.0/tests/warnings/inc_dec_within_stmt.js +63 -0
- data/vendor/jsl-0.3.0/tests/warnings/jsl_cc_not_understood.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/leading_decimal_point.js +7 -0
- data/vendor/jsl-0.3.0/tests/warnings/legacy_cc_not_understood.js +9 -0
- data/vendor/jsl-0.3.0/tests/warnings/meaningless_block.js +12 -0
- data/vendor/jsl-0.3.0/tests/warnings/misplaced_regex.js +20 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_break.js +87 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_break_for_last_case.js +19 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_default_case.js +51 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_option_explicit.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/missing_semicolon.js +19 -0
- data/vendor/jsl-0.3.0/tests/warnings/multiple_plus_minus.js +10 -0
- data/vendor/jsl-0.3.0/tests/warnings/nested_comment.js +6 -0
- data/vendor/jsl-0.3.0/tests/warnings/no_return_value.js +25 -0
- data/vendor/jsl-0.3.0/tests/warnings/octal_number.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/parseint_missing_radix.js +15 -0
- data/vendor/jsl-0.3.0/tests/warnings/partial_option_explicit.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/redeclared_var.js +10 -0
- data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/bad_backref.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/deprecated_usage.js +11 -0
- data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/invalid_backref.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/spidermonkey/trailing_comma.js +5 -0
- data/vendor/jsl-0.3.0/tests/warnings/trailing_comma_in_array.js +8 -0
- data/vendor/jsl-0.3.0/tests/warnings/trailing_decimal_point.js +7 -0
- data/vendor/jsl-0.3.0/tests/warnings/unreachable_code.js +29 -0
- data/vendor/jsl-0.3.0/tests/warnings/use_of_label.js +19 -0
- data/vendor/jsl-0.3.0/tests/warnings/useless_assign.js +20 -0
- data/vendor/jsl-0.3.0/tests/warnings/useless_comparison.js +55 -0
- data/vendor/jsl-0.3.0/tests/warnings/useless_void.js +6 -0
- data/vendor/jsl-0.3.0/tests/warnings/var_hides_arg.js +4 -0
- data/vendor/jsl-0.3.0/tests/warnings/with_statement.js +7 -0
- data/vendor/yuicompressor-2.4.2.jar +0 -0
- 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
|
+
|