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,426 @@
|
|
|
1
|
+
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
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
|
+
#ifndef jsatom_h___
|
|
41
|
+
#define jsatom_h___
|
|
42
|
+
/*
|
|
43
|
+
* JS atom table.
|
|
44
|
+
*/
|
|
45
|
+
#include <stddef.h>
|
|
46
|
+
#include "jstypes.h"
|
|
47
|
+
#include "jshash.h" /* Added by JSIFY */
|
|
48
|
+
#include "jsapi.h"
|
|
49
|
+
#include "jsprvtd.h"
|
|
50
|
+
#include "jspubtd.h"
|
|
51
|
+
|
|
52
|
+
#ifdef JS_THREADSAFE
|
|
53
|
+
#include "jslock.h"
|
|
54
|
+
#endif
|
|
55
|
+
|
|
56
|
+
JS_BEGIN_EXTERN_C
|
|
57
|
+
|
|
58
|
+
#define ATOM_PINNED 0x01 /* atom is pinned against GC */
|
|
59
|
+
#define ATOM_INTERNED 0x02 /* pinned variant for JS_Intern* API */
|
|
60
|
+
#define ATOM_MARK 0x04 /* atom is reachable via GC */
|
|
61
|
+
#define ATOM_NOCOPY 0x40 /* don't copy atom string bytes */
|
|
62
|
+
#define ATOM_TMPSTR 0x80 /* internal, to avoid extra string */
|
|
63
|
+
|
|
64
|
+
struct JSAtom {
|
|
65
|
+
JSHashEntry entry; /* key is jsval, value keyword info */
|
|
66
|
+
uint32 flags; /* pinned, interned, and mark flags */
|
|
67
|
+
jsatomid number; /* atom serial number and hash code */
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
#define ATOM_KEY(atom) ((jsval)(atom)->entry.key)
|
|
71
|
+
#define ATOM_IS_OBJECT(atom) JSVAL_IS_OBJECT(ATOM_KEY(atom))
|
|
72
|
+
#define ATOM_TO_OBJECT(atom) JSVAL_TO_OBJECT(ATOM_KEY(atom))
|
|
73
|
+
#define ATOM_IS_INT(atom) JSVAL_IS_INT(ATOM_KEY(atom))
|
|
74
|
+
#define ATOM_TO_INT(atom) JSVAL_TO_INT(ATOM_KEY(atom))
|
|
75
|
+
#define ATOM_IS_DOUBLE(atom) JSVAL_IS_DOUBLE(ATOM_KEY(atom))
|
|
76
|
+
#define ATOM_TO_DOUBLE(atom) JSVAL_TO_DOUBLE(ATOM_KEY(atom))
|
|
77
|
+
#define ATOM_IS_STRING(atom) JSVAL_IS_STRING(ATOM_KEY(atom))
|
|
78
|
+
#define ATOM_TO_STRING(atom) JSVAL_TO_STRING(ATOM_KEY(atom))
|
|
79
|
+
#define ATOM_IS_BOOLEAN(atom) JSVAL_IS_BOOLEAN(ATOM_KEY(atom))
|
|
80
|
+
#define ATOM_TO_BOOLEAN(atom) JSVAL_TO_BOOLEAN(ATOM_KEY(atom))
|
|
81
|
+
|
|
82
|
+
/*
|
|
83
|
+
* Return a printable, lossless char[] representation of a string-type atom.
|
|
84
|
+
* The lifetime of the result extends at least until the next GC activation,
|
|
85
|
+
* longer if cx's string newborn root is not overwritten.
|
|
86
|
+
*/
|
|
87
|
+
extern JS_FRIEND_API(const char *)
|
|
88
|
+
js_AtomToPrintableString(JSContext *cx, JSAtom *atom);
|
|
89
|
+
|
|
90
|
+
#define ATOM_KEYWORD(atom) ((struct keyword *)(atom)->entry.value)
|
|
91
|
+
#define ATOM_SET_KEYWORD(atom,kw) ((atom)->entry.value = (kw))
|
|
92
|
+
|
|
93
|
+
struct JSAtomListElement {
|
|
94
|
+
JSHashEntry entry;
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
#define ALE_ATOM(ale) ((JSAtom *) (ale)->entry.key)
|
|
98
|
+
#define ALE_INDEX(ale) ((jsatomid) (ale)->entry.value)
|
|
99
|
+
#define ALE_JSOP(ale) ((JSOp) (ale)->entry.value)
|
|
100
|
+
#define ALE_VALUE(ale) ((jsval) (ale)->entry.value)
|
|
101
|
+
#define ALE_NEXT(ale) ((JSAtomListElement *) (ale)->entry.next)
|
|
102
|
+
|
|
103
|
+
#define ALE_SET_ATOM(ale,atom) ((ale)->entry.key = (const void *)(atom))
|
|
104
|
+
#define ALE_SET_INDEX(ale,index)((ale)->entry.value = (void *)(index))
|
|
105
|
+
#define ALE_SET_JSOP(ale,op) ((ale)->entry.value = (void *)(op))
|
|
106
|
+
#define ALE_SET_VALUE(ale,val) ((ale)->entry.value = (JSHashEntry *)(val))
|
|
107
|
+
#define ALE_SET_NEXT(ale,link) ((ale)->entry.next = (JSHashEntry *)(link))
|
|
108
|
+
|
|
109
|
+
struct JSAtomList {
|
|
110
|
+
JSAtomListElement *list; /* literals indexed for mapping */
|
|
111
|
+
JSHashTable *table; /* hash table if list gets too long */
|
|
112
|
+
jsuint count; /* count of indexed literals */
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
#define ATOM_LIST_INIT(al) ((al)->list = NULL, (al)->table = NULL, \
|
|
116
|
+
(al)->count = 0)
|
|
117
|
+
|
|
118
|
+
#define ATOM_LIST_SEARCH(_ale,_al,_atom) \
|
|
119
|
+
JS_BEGIN_MACRO \
|
|
120
|
+
JSHashEntry **_hep; \
|
|
121
|
+
ATOM_LIST_LOOKUP(_ale, _hep, _al, _atom); \
|
|
122
|
+
JS_END_MACRO
|
|
123
|
+
|
|
124
|
+
#define ATOM_LIST_LOOKUP(_ale,_hep,_al,_atom) \
|
|
125
|
+
JS_BEGIN_MACRO \
|
|
126
|
+
if ((_al)->table) { \
|
|
127
|
+
_hep = JS_HashTableRawLookup((_al)->table, _atom->number, _atom); \
|
|
128
|
+
_ale = *_hep ? (JSAtomListElement *) *_hep : NULL; \
|
|
129
|
+
} else { \
|
|
130
|
+
JSAtomListElement **_alep = &(_al)->list; \
|
|
131
|
+
_hep = NULL; \
|
|
132
|
+
while ((_ale = *_alep) != NULL) { \
|
|
133
|
+
if (ALE_ATOM(_ale) == (_atom)) { \
|
|
134
|
+
/* Hit, move atom's element to the front of the list. */ \
|
|
135
|
+
*_alep = ALE_NEXT(_ale); \
|
|
136
|
+
ALE_SET_NEXT(_ale, (_al)->list); \
|
|
137
|
+
(_al)->list = _ale; \
|
|
138
|
+
break; \
|
|
139
|
+
} \
|
|
140
|
+
_alep = (JSAtomListElement **)&_ale->entry.next; \
|
|
141
|
+
} \
|
|
142
|
+
} \
|
|
143
|
+
JS_END_MACRO
|
|
144
|
+
|
|
145
|
+
struct JSAtomMap {
|
|
146
|
+
JSAtom **vector; /* array of ptrs to indexed atoms */
|
|
147
|
+
jsatomid length; /* count of (to-be-)indexed atoms */
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
struct JSAtomState {
|
|
151
|
+
JSRuntime *runtime; /* runtime that owns us */
|
|
152
|
+
JSHashTable *table; /* hash table containing all atoms */
|
|
153
|
+
jsatomid number; /* one beyond greatest atom number */
|
|
154
|
+
jsatomid liveAtoms; /* number of live atoms after last GC */
|
|
155
|
+
|
|
156
|
+
/* Type names and value literals. */
|
|
157
|
+
JSAtom *typeAtoms[JSTYPE_LIMIT];
|
|
158
|
+
JSAtom *booleanAtoms[2];
|
|
159
|
+
JSAtom *nullAtom;
|
|
160
|
+
|
|
161
|
+
/* Various built-in or commonly-used atoms, pinned on first context. */
|
|
162
|
+
JSAtom *ArgumentsAtom;
|
|
163
|
+
JSAtom *ArrayAtom;
|
|
164
|
+
JSAtom *BooleanAtom;
|
|
165
|
+
JSAtom *CallAtom;
|
|
166
|
+
JSAtom *DateAtom;
|
|
167
|
+
JSAtom *ErrorAtom;
|
|
168
|
+
JSAtom *FunctionAtom;
|
|
169
|
+
JSAtom *MathAtom;
|
|
170
|
+
JSAtom *NumberAtom;
|
|
171
|
+
JSAtom *ObjectAtom;
|
|
172
|
+
JSAtom *RegExpAtom;
|
|
173
|
+
JSAtom *ScriptAtom;
|
|
174
|
+
JSAtom *StringAtom;
|
|
175
|
+
JSAtom *anonymousAtom;
|
|
176
|
+
JSAtom *argumentsAtom;
|
|
177
|
+
JSAtom *arityAtom;
|
|
178
|
+
JSAtom *calleeAtom;
|
|
179
|
+
JSAtom *callerAtom;
|
|
180
|
+
JSAtom *classPrototypeAtom;
|
|
181
|
+
JSAtom *constructorAtom;
|
|
182
|
+
JSAtom *countAtom;
|
|
183
|
+
JSAtom *evalAtom;
|
|
184
|
+
JSAtom *getAtom;
|
|
185
|
+
JSAtom *getterAtom;
|
|
186
|
+
JSAtom *indexAtom;
|
|
187
|
+
JSAtom *inputAtom;
|
|
188
|
+
JSAtom *lengthAtom;
|
|
189
|
+
JSAtom *nameAtom;
|
|
190
|
+
JSAtom *noSuchMethodAtom;
|
|
191
|
+
JSAtom *parentAtom;
|
|
192
|
+
JSAtom *protoAtom;
|
|
193
|
+
JSAtom *setAtom;
|
|
194
|
+
JSAtom *setterAtom;
|
|
195
|
+
JSAtom *toLocaleStringAtom;
|
|
196
|
+
JSAtom *toSourceAtom;
|
|
197
|
+
JSAtom *toStringAtom;
|
|
198
|
+
JSAtom *valueOfAtom;
|
|
199
|
+
|
|
200
|
+
/* Less frequently used atoms, pinned lazily by JS_ResolveStandardClass. */
|
|
201
|
+
struct {
|
|
202
|
+
JSAtom *EvalErrorAtom;
|
|
203
|
+
JSAtom *InfinityAtom;
|
|
204
|
+
JSAtom *InternalErrorAtom;
|
|
205
|
+
JSAtom *NaNAtom;
|
|
206
|
+
JSAtom *RangeErrorAtom;
|
|
207
|
+
JSAtom *ReferenceErrorAtom;
|
|
208
|
+
JSAtom *SyntaxErrorAtom;
|
|
209
|
+
JSAtom *TypeErrorAtom;
|
|
210
|
+
JSAtom *URIErrorAtom;
|
|
211
|
+
JSAtom *decodeURIAtom;
|
|
212
|
+
JSAtom *decodeURIComponentAtom;
|
|
213
|
+
JSAtom *defineGetterAtom;
|
|
214
|
+
JSAtom *defineSetterAtom;
|
|
215
|
+
JSAtom *encodeURIAtom;
|
|
216
|
+
JSAtom *encodeURIComponentAtom;
|
|
217
|
+
JSAtom *escapeAtom;
|
|
218
|
+
JSAtom *hasOwnPropertyAtom;
|
|
219
|
+
JSAtom *isFiniteAtom;
|
|
220
|
+
JSAtom *isNaNAtom;
|
|
221
|
+
JSAtom *isPrototypeOfAtom;
|
|
222
|
+
JSAtom *lookupGetterAtom;
|
|
223
|
+
JSAtom *lookupSetterAtom;
|
|
224
|
+
JSAtom *parseFloatAtom;
|
|
225
|
+
JSAtom *parseIntAtom;
|
|
226
|
+
JSAtom *propertyIsEnumerableAtom;
|
|
227
|
+
JSAtom *unescapeAtom;
|
|
228
|
+
JSAtom *unevalAtom;
|
|
229
|
+
JSAtom *unwatchAtom;
|
|
230
|
+
JSAtom *watchAtom;
|
|
231
|
+
} lazy;
|
|
232
|
+
|
|
233
|
+
#ifdef JS_THREADSAFE
|
|
234
|
+
JSThinLock lock;
|
|
235
|
+
volatile uint32 tablegen;
|
|
236
|
+
#endif
|
|
237
|
+
#ifdef NARCISSUS
|
|
238
|
+
JSAtom *callAtom;
|
|
239
|
+
JSAtom *constructAtom;
|
|
240
|
+
JSAtom *hasInstanceAtom;
|
|
241
|
+
JSAtom *ExecutionContextAtom;
|
|
242
|
+
JSAtom *currentAtom;
|
|
243
|
+
#endif
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
/* Well-known predefined strings and their atoms. */
|
|
247
|
+
extern const char *js_type_str[];
|
|
248
|
+
extern const char *js_boolean_str[];
|
|
249
|
+
|
|
250
|
+
extern const char js_Arguments_str[];
|
|
251
|
+
extern const char js_Array_str[];
|
|
252
|
+
extern const char js_Boolean_str[];
|
|
253
|
+
extern const char js_Call_str[];
|
|
254
|
+
extern const char js_Date_str[];
|
|
255
|
+
extern const char js_Function_str[];
|
|
256
|
+
extern const char js_Math_str[];
|
|
257
|
+
extern const char js_Number_str[];
|
|
258
|
+
extern const char js_Object_str[];
|
|
259
|
+
extern const char js_RegExp_str[];
|
|
260
|
+
extern const char js_Script_str[];
|
|
261
|
+
extern const char js_String_str[];
|
|
262
|
+
extern const char js_anonymous_str[];
|
|
263
|
+
extern const char js_arguments_str[];
|
|
264
|
+
extern const char js_arity_str[];
|
|
265
|
+
extern const char js_callee_str[];
|
|
266
|
+
extern const char js_caller_str[];
|
|
267
|
+
extern const char js_class_prototype_str[];
|
|
268
|
+
extern const char js_constructor_str[];
|
|
269
|
+
extern const char js_count_str[];
|
|
270
|
+
extern const char js_eval_str[];
|
|
271
|
+
extern const char js_getter_str[];
|
|
272
|
+
extern const char js_get_str[];
|
|
273
|
+
extern const char js_index_str[];
|
|
274
|
+
extern const char js_input_str[];
|
|
275
|
+
extern const char js_length_str[];
|
|
276
|
+
extern const char js_name_str[];
|
|
277
|
+
extern const char js_noSuchMethod_str[];
|
|
278
|
+
extern const char js_parent_str[];
|
|
279
|
+
extern const char js_proto_str[];
|
|
280
|
+
extern const char js_setter_str[];
|
|
281
|
+
extern const char js_set_str[];
|
|
282
|
+
extern const char js_toSource_str[];
|
|
283
|
+
extern const char js_toString_str[];
|
|
284
|
+
extern const char js_toLocaleString_str[];
|
|
285
|
+
extern const char js_valueOf_str[];
|
|
286
|
+
|
|
287
|
+
#ifdef NARCISSUS
|
|
288
|
+
extern const char js_call_str[];
|
|
289
|
+
extern const char js_construct_str[];
|
|
290
|
+
extern const char js_hasInstance_str[];
|
|
291
|
+
extern const char js_ExecutionContext_str[];
|
|
292
|
+
extern const char js_current_str[];
|
|
293
|
+
#endif
|
|
294
|
+
|
|
295
|
+
/*
|
|
296
|
+
* Initialize atom state. Return true on success, false with an out of
|
|
297
|
+
* memory error report on failure.
|
|
298
|
+
*/
|
|
299
|
+
extern JSBool
|
|
300
|
+
js_InitAtomState(JSContext *cx, JSAtomState *state);
|
|
301
|
+
|
|
302
|
+
/*
|
|
303
|
+
* Free and clear atom state (except for any interned string atoms).
|
|
304
|
+
*/
|
|
305
|
+
extern void
|
|
306
|
+
js_FreeAtomState(JSContext *cx, JSAtomState *state);
|
|
307
|
+
|
|
308
|
+
/*
|
|
309
|
+
* Interned strings are atoms that live until state's runtime is destroyed.
|
|
310
|
+
* This function frees all interned string atoms, and then frees and clears
|
|
311
|
+
* state's members (just as js_FreeAtomState does), unless there aren't any
|
|
312
|
+
* interned strings in state -- in which case state must be "free" already.
|
|
313
|
+
*
|
|
314
|
+
* NB: js_FreeAtomState is called for each "last" context being destroyed in
|
|
315
|
+
* a runtime, where there may yet be another context created in the runtime;
|
|
316
|
+
* whereas js_FinishAtomState is called from JS_DestroyRuntime, when we know
|
|
317
|
+
* that no more contexts will be created. Thus we minimize garbage during
|
|
318
|
+
* context-free episodes on a runtime, while preserving atoms created by the
|
|
319
|
+
* JS_Intern*String APIs for the life of the runtime.
|
|
320
|
+
*/
|
|
321
|
+
extern void
|
|
322
|
+
js_FinishAtomState(JSAtomState *state);
|
|
323
|
+
|
|
324
|
+
/*
|
|
325
|
+
* Atom garbage collection hooks.
|
|
326
|
+
*/
|
|
327
|
+
typedef void
|
|
328
|
+
(*JSGCThingMarker)(void *thing, void *data);
|
|
329
|
+
|
|
330
|
+
extern void
|
|
331
|
+
js_MarkAtomState(JSAtomState *state, uintN gcflags, JSGCThingMarker mark,
|
|
332
|
+
void *data);
|
|
333
|
+
|
|
334
|
+
extern void
|
|
335
|
+
js_SweepAtomState(JSAtomState *state);
|
|
336
|
+
|
|
337
|
+
extern JSBool
|
|
338
|
+
js_InitPinnedAtoms(JSContext *cx, JSAtomState *state);
|
|
339
|
+
|
|
340
|
+
extern void
|
|
341
|
+
js_UnpinPinnedAtoms(JSAtomState *state);
|
|
342
|
+
|
|
343
|
+
/*
|
|
344
|
+
* Find or create the atom for an object. If we create a new atom, give it the
|
|
345
|
+
* type indicated in flags. Return 0 on failure to allocate memory.
|
|
346
|
+
*/
|
|
347
|
+
extern JSAtom *
|
|
348
|
+
js_AtomizeObject(JSContext *cx, JSObject *obj, uintN flags);
|
|
349
|
+
|
|
350
|
+
/*
|
|
351
|
+
* Find or create the atom for a Boolean value. If we create a new atom, give
|
|
352
|
+
* it the type indicated in flags. Return 0 on failure to allocate memory.
|
|
353
|
+
*/
|
|
354
|
+
extern JSAtom *
|
|
355
|
+
js_AtomizeBoolean(JSContext *cx, JSBool b, uintN flags);
|
|
356
|
+
|
|
357
|
+
/*
|
|
358
|
+
* Find or create the atom for an integer value. If we create a new atom, give
|
|
359
|
+
* it the type indicated in flags. Return 0 on failure to allocate memory.
|
|
360
|
+
*/
|
|
361
|
+
extern JSAtom *
|
|
362
|
+
js_AtomizeInt(JSContext *cx, jsint i, uintN flags);
|
|
363
|
+
|
|
364
|
+
/*
|
|
365
|
+
* Find or create the atom for a double value. If we create a new atom, give
|
|
366
|
+
* it the type indicated in flags. Return 0 on failure to allocate memory.
|
|
367
|
+
*/
|
|
368
|
+
extern JSAtom *
|
|
369
|
+
js_AtomizeDouble(JSContext *cx, jsdouble d, uintN flags);
|
|
370
|
+
|
|
371
|
+
/*
|
|
372
|
+
* Find or create the atom for a string. If we create a new atom, give it the
|
|
373
|
+
* type indicated in flags. Return 0 on failure to allocate memory.
|
|
374
|
+
*/
|
|
375
|
+
extern JSAtom *
|
|
376
|
+
js_AtomizeString(JSContext *cx, JSString *str, uintN flags);
|
|
377
|
+
|
|
378
|
+
extern JS_FRIEND_API(JSAtom *)
|
|
379
|
+
js_Atomize(JSContext *cx, const char *bytes, size_t length, uintN flags);
|
|
380
|
+
|
|
381
|
+
extern JS_FRIEND_API(JSAtom *)
|
|
382
|
+
js_AtomizeChars(JSContext *cx, const jschar *chars, size_t length, uintN flags);
|
|
383
|
+
|
|
384
|
+
/*
|
|
385
|
+
* This variant handles all value tag types.
|
|
386
|
+
*/
|
|
387
|
+
extern JSAtom *
|
|
388
|
+
js_AtomizeValue(JSContext *cx, jsval value, uintN flags);
|
|
389
|
+
|
|
390
|
+
/*
|
|
391
|
+
* Convert v to an atomized string.
|
|
392
|
+
*/
|
|
393
|
+
extern JSAtom *
|
|
394
|
+
js_ValueToStringAtom(JSContext *cx, jsval v);
|
|
395
|
+
|
|
396
|
+
/*
|
|
397
|
+
* Assign atom an index and insert it on al.
|
|
398
|
+
*/
|
|
399
|
+
extern JSAtomListElement *
|
|
400
|
+
js_IndexAtom(JSContext *cx, JSAtom *atom, JSAtomList *al);
|
|
401
|
+
|
|
402
|
+
/*
|
|
403
|
+
* Get the atom with index i from map.
|
|
404
|
+
*/
|
|
405
|
+
extern JS_FRIEND_API(JSAtom *)
|
|
406
|
+
js_GetAtom(JSContext *cx, JSAtomMap *map, jsatomid i);
|
|
407
|
+
|
|
408
|
+
/*
|
|
409
|
+
* For all unmapped atoms recorded in al, add a mapping from the atom's index
|
|
410
|
+
* to its address. The GC must not run until all indexed atoms in atomLists
|
|
411
|
+
* have been mapped by scripts connected to live objects (Function and Script
|
|
412
|
+
* class objects have scripts as/in their private data -- the GC knows about
|
|
413
|
+
* these two classes).
|
|
414
|
+
*/
|
|
415
|
+
extern JS_FRIEND_API(JSBool)
|
|
416
|
+
js_InitAtomMap(JSContext *cx, JSAtomMap *map, JSAtomList *al);
|
|
417
|
+
|
|
418
|
+
/*
|
|
419
|
+
* Free map->vector and clear map.
|
|
420
|
+
*/
|
|
421
|
+
extern JS_FRIEND_API(void)
|
|
422
|
+
js_FreeAtomMap(JSContext *cx, JSAtomMap *map);
|
|
423
|
+
|
|
424
|
+
JS_END_EXTERN_C
|
|
425
|
+
|
|
426
|
+
#endif /* jsatom_h___ */
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
2
|
+
/* ***** BEGIN LICENSE BLOCK *****
|
|
3
|
+
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
4
|
+
*
|
|
5
|
+
* The contents of this file are subject to the Mozilla Public License Version
|
|
6
|
+
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
7
|
+
* the License. You may obtain a copy of the License at
|
|
8
|
+
* http://www.mozilla.org/MPL/
|
|
9
|
+
*
|
|
10
|
+
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
11
|
+
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
12
|
+
* for the specific language governing rights and limitations under the
|
|
13
|
+
* License.
|
|
14
|
+
*
|
|
15
|
+
* The Original Code is Mozilla Communicator client code, released
|
|
16
|
+
* March 31, 1998.
|
|
17
|
+
*
|
|
18
|
+
* The Initial Developer of the Original Code is
|
|
19
|
+
* Netscape Communications Corporation.
|
|
20
|
+
* Portions created by the Initial Developer are Copyright (C) 1998
|
|
21
|
+
* the Initial Developer. All Rights Reserved.
|
|
22
|
+
*
|
|
23
|
+
* Contributor(s):
|
|
24
|
+
*
|
|
25
|
+
* Alternatively, the contents of this file may be used under the terms of
|
|
26
|
+
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
|
27
|
+
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
28
|
+
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
29
|
+
* of those above. If you wish to allow use of your version of this file only
|
|
30
|
+
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
31
|
+
* use your version of this file under the terms of the MPL, indicate your
|
|
32
|
+
* decision by deleting the provisions above and replace them with the notice
|
|
33
|
+
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
34
|
+
* the provisions above, a recipient may use your version of this file under
|
|
35
|
+
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
36
|
+
*
|
|
37
|
+
* ***** END LICENSE BLOCK ***** */
|
|
38
|
+
|
|
39
|
+
#ifndef jsbit_h___
|
|
40
|
+
#define jsbit_h___
|
|
41
|
+
|
|
42
|
+
#include "jstypes.h"
|
|
43
|
+
JS_BEGIN_EXTERN_C
|
|
44
|
+
|
|
45
|
+
/*
|
|
46
|
+
** A jsbitmap_t is a long integer that can be used for bitmaps
|
|
47
|
+
*/
|
|
48
|
+
typedef JSUword jsbitmap_t; /* NSPR name, a la Unix system types */
|
|
49
|
+
typedef jsbitmap_t jsbitmap; /* JS-style scalar typedef name */
|
|
50
|
+
|
|
51
|
+
#define JS_TEST_BIT(_map,_bit) \
|
|
52
|
+
((_map)[(_bit)>>JS_BITS_PER_WORD_LOG2] & (1L << ((_bit) & (JS_BITS_PER_WORD-1))))
|
|
53
|
+
#define JS_SET_BIT(_map,_bit) \
|
|
54
|
+
((_map)[(_bit)>>JS_BITS_PER_WORD_LOG2] |= (1L << ((_bit) & (JS_BITS_PER_WORD-1))))
|
|
55
|
+
#define JS_CLEAR_BIT(_map,_bit) \
|
|
56
|
+
((_map)[(_bit)>>JS_BITS_PER_WORD_LOG2] &= ~(1L << ((_bit) & (JS_BITS_PER_WORD-1))))
|
|
57
|
+
|
|
58
|
+
/*
|
|
59
|
+
** Compute the log of the least power of 2 greater than or equal to n
|
|
60
|
+
*/
|
|
61
|
+
extern JS_PUBLIC_API(JSIntn) JS_CeilingLog2(JSUint32 i);
|
|
62
|
+
|
|
63
|
+
/*
|
|
64
|
+
** Compute the log of the greatest power of 2 less than or equal to n
|
|
65
|
+
*/
|
|
66
|
+
extern JS_PUBLIC_API(JSIntn) JS_FloorLog2(JSUint32 i);
|
|
67
|
+
|
|
68
|
+
/*
|
|
69
|
+
** Macro version of JS_CeilingLog2: Compute the log of the least power of
|
|
70
|
+
** 2 greater than or equal to _n. The result is returned in _log2.
|
|
71
|
+
*/
|
|
72
|
+
#define JS_CEILING_LOG2(_log2,_n) \
|
|
73
|
+
JS_BEGIN_MACRO \
|
|
74
|
+
JSUint32 j_ = (JSUint32)(_n); \
|
|
75
|
+
(_log2) = 0; \
|
|
76
|
+
if ((j_) & ((j_)-1)) \
|
|
77
|
+
(_log2) += 1; \
|
|
78
|
+
if ((j_) >> 16) \
|
|
79
|
+
(_log2) += 16, (j_) >>= 16; \
|
|
80
|
+
if ((j_) >> 8) \
|
|
81
|
+
(_log2) += 8, (j_) >>= 8; \
|
|
82
|
+
if ((j_) >> 4) \
|
|
83
|
+
(_log2) += 4, (j_) >>= 4; \
|
|
84
|
+
if ((j_) >> 2) \
|
|
85
|
+
(_log2) += 2, (j_) >>= 2; \
|
|
86
|
+
if ((j_) >> 1) \
|
|
87
|
+
(_log2) += 1; \
|
|
88
|
+
JS_END_MACRO
|
|
89
|
+
|
|
90
|
+
/*
|
|
91
|
+
** Macro version of JS_FloorLog2: Compute the log of the greatest power of
|
|
92
|
+
** 2 less than or equal to _n. The result is returned in _log2.
|
|
93
|
+
**
|
|
94
|
+
** This is equivalent to finding the highest set bit in the word.
|
|
95
|
+
*/
|
|
96
|
+
#define JS_FLOOR_LOG2(_log2,_n) \
|
|
97
|
+
JS_BEGIN_MACRO \
|
|
98
|
+
JSUint32 j_ = (JSUint32)(_n); \
|
|
99
|
+
(_log2) = 0; \
|
|
100
|
+
if ((j_) >> 16) \
|
|
101
|
+
(_log2) += 16, (j_) >>= 16; \
|
|
102
|
+
if ((j_) >> 8) \
|
|
103
|
+
(_log2) += 8, (j_) >>= 8; \
|
|
104
|
+
if ((j_) >> 4) \
|
|
105
|
+
(_log2) += 4, (j_) >>= 4; \
|
|
106
|
+
if ((j_) >> 2) \
|
|
107
|
+
(_log2) += 2, (j_) >>= 2; \
|
|
108
|
+
if ((j_) >> 1) \
|
|
109
|
+
(_log2) += 1; \
|
|
110
|
+
JS_END_MACRO
|
|
111
|
+
|
|
112
|
+
JS_END_EXTERN_C
|
|
113
|
+
#endif /* jsbit_h___ */
|