├── .gitignore ├── .vimspector.json ├── README.md ├── README.remotedebugging ├── bin ├── TclProDebug.kit ├── TclProDebug.linux ├── debugadapter ├── makestarkit.tcl ├── prodebug └── remote_debug_wrapper ├── debug_server_main.tcl ├── demos ├── fac │ ├── fac.tcl │ └── tour.txt ├── hiq │ ├── hiq.tcl │ ├── hiqGUI.tcl │ ├── hiqState.tcl │ └── tour.txt ├── tutorials │ ├── fac-gui.tcl │ ├── fac.tcl │ ├── pulse.tcl │ ├── remote.tcl │ └── varbreak.tcl ├── uplevel │ └── uplevel.tcl └── xpm │ ├── makeXpm.tcl │ └── tour.txt ├── doc └── TclProUsersGuide14.pdf ├── lib ├── cmdline │ ├── cmdline.tcl │ └── pkgIndex.tcl ├── debugserver │ ├── connection.tcl │ ├── pkgIndex.tcl │ └── server.tcl ├── projectInfo │ ├── pkgIndex.tcl │ └── projectInfo.tcl ├── remotedebug │ ├── docs │ │ ├── initdebug.n │ │ └── initdebug.pdf │ ├── initdebug.tcl │ └── pkgIndex.tcl ├── tcldebugger │ ├── appLaunch.tcl │ ├── bindings.tcl │ ├── blend.pdx │ ├── block.tcl │ ├── break.tcl │ ├── breakWin.tcl │ ├── codeWin.tcl │ ├── coverage.tcl │ ├── dbg.tcl │ ├── debugger.tcl │ ├── evalWin.tcl │ ├── file.tcl │ ├── find.tcl │ ├── font.tcl │ ├── gui.tcl │ ├── guiUtil.tcl │ ├── icon.tcl │ ├── image.tcl │ ├── images │ │ ├── about.gif │ │ ├── break_d.gif │ │ ├── break_e.gif │ │ ├── break_m.gif │ │ ├── combo_arrow.gif │ │ ├── current.gif │ │ ├── current_d.gif │ │ ├── current_e.gif │ │ ├── current_m.gif │ │ ├── current_v.gif │ │ ├── debugUnixIcon.gif │ │ ├── go.gif │ │ ├── go_d.gif │ │ ├── history.gif │ │ ├── history_disable.gif │ │ ├── history_enable.gif │ │ ├── history_mixed.gif │ │ ├── kill.gif │ │ ├── kill_d.gif │ │ ├── logo.gif │ │ ├── refresh.gif │ │ ├── refresh_d.gif │ │ ├── restart.gif │ │ ├── restart_d.gif │ │ ├── stepin.gif │ │ ├── stepin_d.gif │ │ ├── stepout.gif │ │ ├── stepout_d.gif │ │ ├── stepover.gif │ │ ├── stepover_d.gif │ │ ├── stepresult.gif │ │ ├── stepresult_d.gif │ │ ├── stepto.gif │ │ ├── stepto_d.gif │ │ ├── stop.gif │ │ ├── stop_d.gif │ │ ├── var_d.gif │ │ ├── var_e.gif │ │ ├── win_break.gif │ │ ├── win_cover.gif │ │ ├── win_eval.gif │ │ ├── win_proc.gif │ │ └── win_watch.gif │ ├── initdebug.tcl │ ├── inspectorWin.tcl │ ├── instrument.tcl │ ├── location.tcl │ ├── menu.tcl │ ├── nub.tcl │ ├── oratcl.pdx │ ├── pkgIndex.tcl │ ├── portWin.tcl │ ├── pref.tcl │ ├── prefWin.tcl │ ├── procWin.tcl │ ├── proj.tcl │ ├── projWin.tcl │ ├── result.tcl │ ├── selection.tcl │ ├── stackWin.tcl │ ├── sybtcl.pdx │ ├── system.tcl │ ├── tabnotebook.tcl │ ├── tclCom.pdx │ ├── tcltest.pdx │ ├── tests │ │ ├── all.tcl │ │ ├── block.test │ │ ├── dbgLaunch.tcl │ │ ├── guiLaunch.tcl │ │ ├── initProject.tcl │ │ ├── initdebug.test │ │ ├── instrument.test │ │ ├── pkgIndex.tcl │ │ ├── pref.test │ │ ├── protest.tcl │ │ ├── startup.tcl │ │ └── system.test │ ├── tkcon.tcl │ ├── toolbar.tcl │ ├── uplevel.pdx │ ├── util.tcl │ ├── varWin.tcl │ ├── watchWin.tcl │ ├── widget.tcl │ └── xmlGen.pdx └── tclparser │ ├── ChangeLog │ ├── DEPENDENCIES │ ├── Makefile.in │ ├── README │ ├── aclocal.m4 │ ├── configure │ ├── configure.in │ ├── doc │ ├── parse.html │ ├── parse.man │ ├── parse.n │ └── parse.pdf │ ├── license.terms │ ├── tclParser.c │ ├── tclconfig │ ├── ChangeLog │ ├── README.txt │ ├── install-sh │ └── tcl.m4 │ ├── tests │ ├── all.tcl │ ├── parse.test │ └── parseCmd.test │ ├── tools │ ├── check_manifest │ └── genStubs.tcl │ └── win │ ├── makefile.vc │ ├── nmakehlp.c │ └── rules-ext.vc ├── license.terms ├── main.tcl ├── src ├── debug_server.tcl ├── images │ ├── about.gif │ ├── debugUnixIcon.gif │ └── logo.gif └── startup.tcl ├── starkit.manifest ├── tests ├── remote │ └── .vimspector.json ├── server │ └── simple_message_input └── simple_tcl_app │ ├── .vimspector.json │ ├── main.tcl │ └── simple_tcl_app.tpj ├── vendor └── tcllib1.19 │ ├── aes │ ├── aes.tcl │ └── pkgIndex.tcl │ ├── amazon-s3 │ ├── S3.tcl │ ├── pkgIndex.tcl │ └── xsxp.tcl │ ├── asn │ ├── asn.tcl │ └── pkgIndex.tcl │ ├── base32 │ ├── base32.tcl │ ├── base32_c.tcl │ ├── base32_tcl.tcl │ ├── base32core.tcl │ ├── base32hex.tcl │ ├── base32hex_c.tcl │ ├── base32hex_tcl.tcl │ └── pkgIndex.tcl │ ├── base64 │ ├── ascii85.tcl │ ├── base64.tcl │ ├── base64c.tcl │ ├── pkgIndex.tcl │ ├── uuencode.tcl │ └── yencode.tcl │ ├── bee │ ├── bee.tcl │ └── pkgIndex.tcl │ ├── bench │ ├── bench.tcl │ ├── bench_read.tcl │ ├── bench_wcsv.tcl │ ├── bench_wtext.tcl │ ├── libbench.tcl │ └── pkgIndex.tcl │ ├── bibtex │ ├── bibtex.tcl │ └── pkgIndex.tcl │ ├── blowfish │ ├── blowfish.tcl │ └── pkgIndex.tcl │ ├── cache │ ├── async.tcl │ └── pkgIndex.tcl │ ├── clock │ ├── iso8601.tcl │ ├── pkgIndex.tcl │ └── rfc2822.tcl │ ├── cmdline │ ├── cmdline.tcl │ └── pkgIndex.tcl │ ├── comm │ ├── comm.tcl │ └── pkgIndex.tcl │ ├── control │ ├── ascaller.tcl │ ├── assert.tcl │ ├── control.tcl │ ├── do.tcl │ ├── no-op.tcl │ ├── pkgIndex.tcl │ └── tclIndex │ ├── coroutine │ ├── coro_auto.tcl │ ├── coroutine.tcl │ └── pkgIndex.tcl │ ├── counter │ ├── counter.tcl │ └── pkgIndex.tcl │ ├── crc │ ├── cksum.tcl │ ├── crc16.tcl │ ├── crc32.tcl │ ├── crcc.tcl │ ├── pkgIndex.tcl │ └── sum.tcl │ ├── cron │ ├── cron.tcl │ └── pkgIndex.tcl │ ├── csv │ ├── csv.tcl │ └── pkgIndex.tcl │ ├── debug │ ├── caller.tcl │ ├── debug.tcl │ ├── heartbeat.tcl │ ├── pkgIndex.tcl │ └── timestamp.tcl │ ├── defer │ ├── defer.tcl │ └── pkgIndex.tcl │ ├── des │ ├── des.tcl │ ├── pkgIndex.tcl │ ├── tcldes.tcl │ └── tcldesjr.tcl │ ├── dicttool │ ├── dicttool.tcl │ └── pkgIndex.tcl │ ├── dns │ ├── dns.tcl │ ├── ip.tcl │ ├── ipMore.tcl │ ├── ipMoreC.tcl │ ├── msgs │ │ └── en.msg │ ├── pkgIndex.tcl │ ├── resolv.tcl │ └── spf.tcl │ ├── docstrip │ ├── docstrip.tcl │ ├── docstrip_util.tcl │ └── pkgIndex.tcl │ ├── doctools │ ├── api.tcl │ ├── api_idx.tcl │ ├── api_toc.tcl │ ├── changelog.tcl │ ├── checker.tcl │ ├── checker_idx.tcl │ ├── checker_toc.tcl │ ├── cvs.tcl │ ├── docidx.tcl │ ├── doctoc.tcl │ ├── doctools.tcl │ ├── mpformats │ │ ├── _common.tcl │ │ ├── _html.tcl │ │ ├── _idx_common.tcl │ │ ├── _nroff.tcl │ │ ├── _text.tcl │ │ ├── _toc_common.tcl │ │ ├── _xml.tcl │ │ ├── c.msg │ │ ├── de.msg │ │ ├── en.msg │ │ ├── fmt.desc │ │ ├── fmt.html │ │ ├── fmt.latex │ │ ├── fmt.list │ │ ├── fmt.nroff │ │ ├── fmt.null │ │ ├── fmt.text │ │ ├── fmt.tmml │ │ ├── fmt.wiki │ │ ├── fr.msg │ │ ├── idx.html │ │ ├── idx.nroff │ │ ├── idx.null │ │ ├── idx.text │ │ ├── idx.wiki │ │ ├── man.macros │ │ ├── toc.html │ │ ├── toc.nroff │ │ ├── toc.null │ │ ├── toc.text │ │ ├── toc.tmml │ │ └── toc.wiki │ └── pkgIndex.tcl │ ├── doctools2base │ ├── config.tcl │ ├── html.tcl │ ├── html_cssdefaults.tcl │ ├── msgcat.tcl │ ├── nroff_manmacros.tcl │ ├── paths.tcl │ ├── pkgIndex.tcl │ ├── tcl_parse.tcl │ └── text.tcl │ ├── doctools2idx │ ├── container.tcl │ ├── export.tcl │ ├── export_docidx.tcl │ ├── export_html.tcl │ ├── export_json.tcl │ ├── export_nroff.tcl │ ├── export_text.tcl │ ├── export_wiki.tcl │ ├── import.tcl │ ├── import_docidx.tcl │ ├── import_json.tcl │ ├── msgcat_c.tcl │ ├── msgcat_de.tcl │ ├── msgcat_en.tcl │ ├── msgcat_fr.tcl │ ├── parse.tcl │ ├── pkgIndex.tcl │ └── structure.tcl │ ├── doctools2toc │ ├── container.tcl │ ├── export.tcl │ ├── export_doctoc.tcl │ ├── export_html.tcl │ ├── export_json.tcl │ ├── export_nroff.tcl │ ├── export_text.tcl │ ├── export_wiki.tcl │ ├── import.tcl │ ├── import_doctoc.tcl │ ├── import_json.tcl │ ├── msgcat_c.tcl │ ├── msgcat_de.tcl │ ├── msgcat_en.tcl │ ├── msgcat_fr.tcl │ ├── parse.tcl │ ├── pkgIndex.tcl │ └── structure.tcl │ ├── dtplite │ ├── dtplite.tcl │ └── pkgIndex.tcl │ ├── fileutil │ ├── decode.tcl │ ├── fileutil.tcl │ ├── multi.tcl │ ├── multiop.tcl │ ├── pkgIndex.tcl │ └── traverse.tcl │ ├── ftp │ ├── ftp.tcl │ ├── ftp_geturl.tcl │ └── pkgIndex.tcl │ ├── ftpd │ ├── ftpd.tcl │ └── pkgIndex.tcl │ ├── fumagic │ ├── cfront.tcl │ ├── cgen.tcl │ ├── filetypes.tcl │ ├── pkgIndex.tcl │ └── rtcore.tcl │ ├── generator │ ├── generator.tcl │ └── pkgIndex.tcl │ ├── gpx │ ├── gpx.tcl │ └── pkgIndex.tcl │ ├── grammar_aycock │ ├── aycock-build.tcl │ ├── aycock-debug.tcl │ ├── aycock-runtime.tcl │ └── pkgIndex.tcl │ ├── grammar_fa │ ├── dacceptor.tcl │ ├── dexec.tcl │ ├── fa.tcl │ ├── faop.tcl │ └── pkgIndex.tcl │ ├── grammar_me │ ├── gasm.tcl │ ├── me_cpu.tcl │ ├── me_cpucore.tcl │ ├── me_tcl.tcl │ ├── me_util.tcl │ └── pkgIndex.tcl │ ├── grammar_peg │ ├── peg.tcl │ ├── peg_interp.tcl │ └── pkgIndex.tcl │ ├── hook │ ├── hook.tcl │ └── pkgIndex.tcl │ ├── html │ ├── html.tcl │ └── pkgIndex.tcl │ ├── htmlparse │ ├── htmlparse.tcl │ └── pkgIndex.tcl │ ├── http │ ├── autoproxy.tcl │ └── pkgIndex.tcl │ ├── httpd │ ├── build.tcl │ ├── httpd.tcl │ └── pkgIndex.tcl │ ├── httpwget │ ├── pkgIndex.tcl │ └── wget.tcl │ ├── ident │ ├── ident.tcl │ └── pkgIndex.tcl │ ├── imap4 │ ├── imap4.tcl │ └── pkgIndex.tcl │ ├── inifile │ ├── ini.tcl │ └── pkgIndex.tcl │ ├── interp │ ├── deleg_method.tcl │ ├── deleg_proc.tcl │ ├── interp.tcl │ └── pkgIndex.tcl │ ├── irc │ ├── irc.tcl │ ├── picoirc.tcl │ └── pkgIndex.tcl │ ├── javascript │ ├── javascript.tcl │ └── pkgIndex.tcl │ ├── jpeg │ ├── jpeg.tcl │ └── pkgIndex.tcl │ ├── json │ ├── json.tcl │ ├── json_tcl.tcl │ ├── json_write.tcl │ ├── jsonc.tcl │ └── pkgIndex.tcl │ ├── lambda │ ├── lambda.tcl │ └── pkgIndex.tcl │ ├── ldap │ ├── ldap.tcl │ ├── ldapx.tcl │ └── pkgIndex.tcl │ ├── map │ ├── map_geocode_nominatim.tcl │ ├── map_slippy.tcl │ ├── map_slippy_cache.tcl │ ├── map_slippy_fetcher.tcl │ └── pkgIndex.tcl │ ├── mapproj │ ├── mapproj.tcl │ └── pkgIndex.tcl │ ├── markdown │ ├── markdown.tcl │ └── pkgIndex.tcl │ ├── math │ ├── bessel.tcl │ ├── bigfloat.tcl │ ├── bigfloat2.tcl │ ├── bignum.tcl │ ├── calculus.tcl │ ├── classic_polyns.tcl │ ├── combinatorics.tcl │ ├── constants.tcl │ ├── decimal.tcl │ ├── elliptic.tcl │ ├── exact.tcl │ ├── exponential.tcl │ ├── fourier.tcl │ ├── fuzzy.tcl │ ├── geometry.tcl │ ├── interpolate.tcl │ ├── kruskal.tcl │ ├── linalg.tcl │ ├── liststat.tcl │ ├── machineparameters.tcl │ ├── math.tcl │ ├── misc.tcl │ ├── mvlinreg.tcl │ ├── numtheory.tcl │ ├── optimize.tcl │ ├── pca.tcl │ ├── pdf_stat.tcl │ ├── pkgIndex.tcl │ ├── plotstat.tcl │ ├── polynomials.tcl │ ├── primes.tcl │ ├── qcomplex.tcl │ ├── rational_funcs.tcl │ ├── romannumerals.tcl │ ├── special.tcl │ ├── stat_kernel.tcl │ ├── statistics.tcl │ ├── symdiff.tcl │ ├── tclIndex │ └── wilcoxon.tcl │ ├── md4 │ ├── md4.tcl │ ├── md4c.tcl │ └── pkgIndex.tcl │ ├── md5 │ ├── md5.tcl │ ├── md5c.tcl │ ├── md5x.tcl │ └── pkgIndex.tcl │ ├── md5crypt │ ├── md5crypt.tcl │ ├── md5cryptc.tcl │ └── pkgIndex.tcl │ ├── mime │ ├── mime.tcl │ ├── pkgIndex.tcl │ └── smtp.tcl │ ├── multiplexer │ ├── multiplexer.tcl │ └── pkgIndex.tcl │ ├── namespacex │ ├── namespacex.tcl │ └── pkgIndex.tcl │ ├── ncgi │ ├── ncgi.tcl │ └── pkgIndex.tcl │ ├── nettool │ ├── build.tcl │ ├── nettool.tcl │ └── pkgIndex.tcl │ ├── nmea │ ├── nmea.tcl │ └── pkgIndex.tcl │ ├── nns │ ├── common.tcl │ ├── nns.tcl │ ├── nns_auto.tcl │ ├── pkgIndex.tcl │ └── server.tcl │ ├── nntp │ ├── nntp.tcl │ └── pkgIndex.tcl │ ├── ntp │ ├── pkgIndex.tcl │ └── time.tcl │ ├── oauth │ ├── oauth.tcl │ └── pkgIndex.tcl │ ├── oodialect │ ├── oodialect.tcl │ └── pkgIndex.tcl │ ├── oometa │ ├── oometa.tcl │ ├── oooption.tcl │ └── pkgIndex.tcl │ ├── ooutil │ ├── ooutil.tcl │ └── pkgIndex.tcl │ ├── otp │ ├── otp.tcl │ └── pkgIndex.tcl │ ├── page │ ├── analysis_peg_emodes.tcl │ ├── analysis_peg_minimize.tcl │ ├── analysis_peg_reachable.tcl │ ├── analysis_peg_realizable.tcl │ ├── compiler_peg_mecpu.tcl │ ├── gen_peg_canon.tcl │ ├── gen_peg_cpkg.tcl │ ├── gen_peg_hb.tcl │ ├── gen_peg_me.tcl │ ├── gen_peg_me.template │ ├── gen_peg_mecpu.tcl │ ├── gen_peg_mecpu.template │ ├── gen_peg_ser.tcl │ ├── gen_tree_text.tcl │ ├── parse_lemon.tcl │ ├── parse_peg.tcl │ ├── parse_peghb.tcl │ ├── parse_pegser.tcl │ ├── peg_grammar.tcl │ ├── pkgIndex.tcl │ ├── pluginmgr.tcl │ ├── plugins │ │ ├── config_peg.tcl │ │ ├── pkgIndex.tcl │ │ ├── reader_hb.tcl │ │ ├── reader_lemon.tcl │ │ ├── reader_peg.tcl │ │ ├── reader_ser.tcl │ │ ├── reader_treeser.tcl │ │ ├── transform_mecpu.tcl │ │ ├── transform_reachable.tcl │ │ ├── transform_realizable.tcl │ │ ├── writer_hb.tcl │ │ ├── writer_identity.tcl │ │ ├── writer_me.tcl │ │ ├── writer_mecpu.tcl │ │ ├── writer_null.tcl │ │ ├── writer_peg.tcl │ │ ├── writer_ser.tcl │ │ ├── writer_tpc.tcl │ │ └── writer_tree.tcl │ ├── util_flow.tcl │ ├── util_norm_lemon.tcl │ ├── util_norm_peg.tcl │ ├── util_peg.tcl │ └── util_quote.tcl │ ├── pkgIndex.tcl │ ├── pki │ ├── pkgIndex.tcl │ └── pki.tcl │ ├── pluginmgr │ ├── pkgIndex.tcl │ └── pluginmgr.tcl │ ├── png │ ├── pkgIndex.tcl │ └── png.tcl │ ├── pop3 │ ├── pkgIndex.tcl │ └── pop3.tcl │ ├── pop3d │ ├── pkgIndex.tcl │ ├── pop3d.tcl │ ├── pop3d_dbox.tcl │ └── pop3d_udb.tcl │ ├── practcl │ ├── build.tcl │ ├── pkgIndex.tcl │ └── practcl.tcl │ ├── processman │ ├── pkgIndex.tcl │ └── processman.tcl │ ├── profiler │ ├── pkgIndex.tcl │ └── profiler.tcl │ ├── pt │ ├── char.tcl │ ├── configuration.tcl │ ├── paths.tcl │ ├── pkgIndex.tcl │ ├── pt_astree.tcl │ ├── pt_cparam_config_critcl.tcl │ ├── pt_cparam_config_tea.tcl │ ├── pt_parse_peg.tcl │ ├── pt_parse_peg_c.tcl │ ├── pt_parse_peg_tcl.tcl │ ├── pt_peg_container.tcl │ ├── pt_peg_container_peg.tcl │ ├── pt_peg_export.tcl │ ├── pt_peg_export_container.tcl │ ├── pt_peg_export_json.tcl │ ├── pt_peg_export_peg.tcl │ ├── pt_peg_from_json.tcl │ ├── pt_peg_from_peg.tcl │ ├── pt_peg_import.tcl │ ├── pt_peg_import_json.tcl │ ├── pt_peg_import_peg.tcl │ ├── pt_peg_interp.tcl │ ├── pt_peg_op.tcl │ ├── pt_peg_to_container.tcl │ ├── pt_peg_to_cparam.tcl │ ├── pt_peg_to_json.tcl │ ├── pt_peg_to_param.tcl │ ├── pt_peg_to_peg.tcl │ ├── pt_peg_to_tclparam.tcl │ ├── pt_pegrammar.tcl │ ├── pt_pexpr_op.tcl │ ├── pt_pexpression.tcl │ ├── pt_pgen.tcl │ ├── pt_rdengine.tcl │ ├── pt_rdengine_c.tcl │ ├── pt_rdengine_nx.tcl │ ├── pt_rdengine_oo.tcl │ ├── pt_rdengine_tcl.tcl │ ├── pt_tclparam_config_nx.tcl │ ├── pt_tclparam_config_snit.tcl │ ├── pt_tclparam_config_tcloo.tcl │ ├── pt_util.tcl │ ├── rde_critcl │ │ ├── m.c │ │ ├── m.h │ │ ├── ms.c │ │ ├── ms.h │ │ ├── ot.c │ │ ├── ot.h │ │ ├── p.c │ │ ├── p.h │ │ ├── pInt.h │ │ ├── param.c │ │ ├── param.h │ │ ├── stack.c │ │ ├── stack.h │ │ ├── tc.c │ │ ├── tc.h │ │ ├── util.c │ │ └── util.h │ └── text_write.tcl │ ├── rc4 │ ├── pkgIndex.tcl │ ├── rc4.tcl │ └── rc4c.tcl │ ├── rcs │ ├── pkgIndex.tcl │ └── rcs.tcl │ ├── report │ ├── pkgIndex.tcl │ └── report.tcl │ ├── rest │ ├── pkgIndex.tcl │ └── rest.tcl │ ├── ripemd │ ├── pkgIndex.tcl │ ├── ripemd128.tcl │ └── ripemd160.tcl │ ├── sasl │ ├── gtoken.tcl │ ├── ntlm.tcl │ ├── pkgIndex.tcl │ ├── sasl.tcl │ └── scram.tcl │ ├── sha1 │ ├── pkgIndex.tcl │ ├── sha1.tcl │ ├── sha1c.tcl │ ├── sha1v1.tcl │ ├── sha256.tcl │ └── sha256c.tcl │ ├── simulation │ ├── annealing.tcl │ ├── montecarlo.tcl │ ├── pkgIndex.tcl │ └── random.tcl │ ├── smtpd │ ├── pkgIndex.tcl │ └── smtpd.tcl │ ├── snit │ ├── main1.tcl │ ├── main1_83.tcl │ ├── main2.tcl │ ├── pkgIndex.tcl │ ├── snit.tcl │ ├── snit2.tcl │ ├── snit_tcl83_utils.tcl │ └── validate.tcl │ ├── soundex │ ├── pkgIndex.tcl │ └── soundex.tcl │ ├── stooop │ ├── mkpkgidx.tcl │ ├── pkgIndex.tcl │ ├── stooop.tcl │ ├── switched.tcl │ └── xifo.tcl │ ├── string │ ├── pkgIndex.tcl │ ├── token.tcl │ └── token_shell.tcl │ ├── stringprep │ ├── pkgIndex.tcl │ ├── stringprep.tcl │ ├── stringprep_data.tcl │ ├── unicode.tcl │ └── unicode_data.tcl │ ├── struct │ ├── disjointset.tcl │ ├── graph.tcl │ ├── graph1.tcl │ ├── graph_c.tcl │ ├── graph_tcl.tcl │ ├── graphops.tcl │ ├── list.tcl │ ├── matrix.tcl │ ├── matrix1.tcl │ ├── pkgIndex.tcl │ ├── pool.tcl │ ├── prioqueue.tcl │ ├── queue.tcl │ ├── queue_c.tcl │ ├── queue_oo.tcl │ ├── queue_tcl.tcl │ ├── record.tcl │ ├── sets.tcl │ ├── sets_c.tcl │ ├── sets_tcl.tcl │ ├── skiplist.tcl │ ├── stack.tcl │ ├── stack_c.tcl │ ├── stack_oo.tcl │ ├── stack_tcl.tcl │ ├── struct.tcl │ ├── struct1.tcl │ ├── tree.tcl │ ├── tree1.tcl │ ├── tree_c.tcl │ └── tree_tcl.tcl │ ├── tar │ ├── pkgIndex.tcl │ └── tar.tcl │ ├── tepam │ ├── pkgIndex.tcl │ ├── tepam.tcl │ └── tepam_doc_gen.tcl │ ├── term │ ├── ansi │ │ ├── code.tcl │ │ ├── code │ │ │ ├── attr.tcl │ │ │ ├── ctrl.tcl │ │ │ └── macros.tcl │ │ ├── ctrlunix.tcl │ │ └── send.tcl │ ├── bind.tcl │ ├── imenu.tcl │ ├── ipager.tcl │ ├── pkgIndex.tcl │ ├── receive.tcl │ ├── send.tcl │ └── term.tcl │ ├── textutil │ ├── adjust.tcl │ ├── dehypht.tex │ ├── eshyph_vo.tex │ ├── expander.tcl │ ├── ithyph.tex │ ├── pkgIndex.tcl │ ├── repeat.tcl │ ├── split.tcl │ ├── string.tcl │ ├── tabify.tcl │ ├── textutil.tcl │ └── trim.tcl │ ├── tie │ ├── pkgIndex.tcl │ ├── tie.tcl │ ├── tie_array.tcl │ ├── tie_dsource.tcl │ ├── tie_file.tcl │ ├── tie_growfile.tcl │ ├── tie_log.tcl │ └── tie_rarray.tcl │ ├── tiff │ ├── pkgIndex.tcl │ └── tiff.tcl │ ├── tool-ui │ ├── build.tcl │ ├── pkgIndex.tcl │ └── tool-ui.tcl │ ├── tool │ ├── build.tcl │ ├── pkgIndex.tcl │ └── tool.tcl │ ├── tool_datatype │ ├── datatype.tcl │ └── pkgIndex.tcl │ ├── transfer │ ├── connect.tcl │ ├── copyops.tcl │ ├── ddest.tcl │ ├── dsource.tcl │ ├── pkgIndex.tcl │ ├── receiver.tcl │ ├── tqueue.tcl │ └── transmitter.tcl │ ├── treeql │ ├── pkgIndex.tcl │ ├── treeql.tcl │ ├── treeql84.tcl │ └── treeql85.tcl │ ├── try │ ├── pkgIndex.tcl │ ├── throw.tcl │ └── try.tcl │ ├── udpcluster │ ├── pkgIndex.tcl │ └── udpcluster.tcl │ ├── uev │ ├── pkgIndex.tcl │ ├── uevent.tcl │ └── uevent_onidle.tcl │ ├── units │ ├── pkgIndex.tcl │ └── units.tcl │ ├── uri │ ├── pkgIndex.tcl │ ├── uri.tcl │ └── urn-scheme.tcl │ ├── uuid │ ├── pkgIndex.tcl │ └── uuid.tcl │ ├── valtype │ ├── cc_amex.tcl │ ├── cc_discover.tcl │ ├── cc_mastercard.tcl │ ├── cc_visa.tcl │ ├── ean13.tcl │ ├── iban.tcl │ ├── imei.tcl │ ├── isbn.tcl │ ├── luhn.tcl │ ├── luhn5.tcl │ ├── pkgIndex.tcl │ ├── usnpi.tcl │ ├── valtype.tcl │ └── verhoeff.tcl │ ├── virtchannel_base │ ├── cat.tcl │ ├── facade.tcl │ ├── fifo.tcl │ ├── fifo2.tcl │ ├── halfpipe.tcl │ ├── memchan.tcl │ ├── null.tcl │ ├── nullzero.tcl │ ├── pkgIndex.tcl │ ├── random.tcl │ ├── randseed.tcl │ ├── std.tcl │ ├── string.tcl │ ├── textwindow.tcl │ ├── variable.tcl │ └── zero.tcl │ ├── virtchannel_core │ ├── core.tcl │ ├── events.tcl │ ├── pkgIndex.tcl │ └── transformcore.tcl │ ├── virtchannel_transform │ ├── adler32.tcl │ ├── base64.tcl │ ├── counter.tcl │ ├── crc32.tcl │ ├── hex.tcl │ ├── identity.tcl │ ├── limitsize.tcl │ ├── observe.tcl │ ├── otp.tcl │ ├── pkgIndex.tcl │ ├── rot.tcl │ ├── spacer.tcl │ └── zlib.tcl │ ├── websocket │ ├── pkgIndex.tcl │ └── websocket.tcl │ ├── wip │ ├── pkgIndex.tcl │ ├── wip.tcl │ └── wip2.tcl │ ├── yaml │ ├── huddle.tcl │ ├── huddle_types.tcl │ ├── json2huddle.tcl │ ├── pkgIndex.tcl │ └── yaml.tcl │ └── zip │ ├── decode.tcl │ ├── encode.tcl │ ├── mkzip.tcl │ └── pkgIndex.tcl └── vscode ├── .gitignore ├── README.md ├── make_extension └── package.json /.gitignore: -------------------------------------------------------------------------------- 1 | lib/tclparser/config.status 2 | lib/tclparser/config.log 3 | lib/tclparser/Makefile 4 | lib/tclparser/libtclparser*.so 5 | lib/tclparser/pkgIndex.tcl 6 | lib/tclparser/*.o 7 | -------------------------------------------------------------------------------- /.vimspector.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://puremourning.github.io/vimspector/schema/vimspector.schema.json", 3 | "adapters": { 4 | "this-tclpro": { 5 | "variables": { 6 | "tclpro": "${workspaceRoot}" 7 | }, 8 | "name": "tclpro", 9 | "command": [ 10 | "tclsh", 11 | "${tclpro}/bin/debugadapter", 12 | "-verbose" 13 | ], 14 | "configuration": { 15 | "extensionDirs": [ 16 | "${workspaceRoot}/.tclpro" 17 | ] 18 | } 19 | } 20 | }, 21 | "configurations": { 22 | "Debug current script with this tclpro": { 23 | "adapter": "this-tclpro", 24 | "autoselect": false, 25 | "configuration": { 26 | "request": "launch", 27 | "tclsh": "tclsh", 28 | "args": [ "*${args}" ], 29 | "target": "${file}", 30 | "cwd": "${fileDirname}" 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /README.remotedebugging: -------------------------------------------------------------------------------- 1 | Remote debugging of programs still works as described in the TclPro User Manual 2 | and the initdebug man page at lib/remotedebug/docs/initdebug.pdf. 3 | 4 | The only addition is that for the sake of convenience the initdebug.tcl file has 5 | been wrapped in a package, so that (assuming the auto_path variable has been 6 | initialized properly) a client code file can be prepared for remote debugging 7 | simply by adding the commands: 8 | 9 | package require remotedebug 10 | debugger_init 11 | debugger_eval {} 12 | -------------------------------------------------------------------------------- /bin/TclProDebug.kit: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/bin/TclProDebug.kit -------------------------------------------------------------------------------- /bin/TclProDebug.linux: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/bin/TclProDebug.linux -------------------------------------------------------------------------------- /bin/debugadapter: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #\ 3 | exec tclsh "$0" "$@" 4 | 5 | lappend auto_path [file join [file dirname [info script]] ../vendor/tcllib1.19] 6 | 7 | source [file join [file dirname [info script]] ../debug_server_main.tcl] 8 | 9 | # vim: ft=tcl 10 | -------------------------------------------------------------------------------- /bin/makestarkit.tcl: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env tclsh 2 | 3 | set startDir [pwd] 4 | 5 | try { 6 | set binDir [file dir [file norm [file join [info script] .. __dummy__]]] 7 | cd $binDir 8 | set appDir [file root [file tail [file dir $binDir]]] 9 | file delete -force ./$appDir.vfs 10 | file mkdir ./$appDir.vfs 11 | set f [open ../starkit.manifest] 12 | foreach sfile [read $f] { 13 | file mkdir [file join $appDir.vfs [file dir $sfile]] 14 | file copy ../$sfile [file join $appDir.vfs $sfile] 15 | } 16 | lassign [concat [lindex $argv 0] sdx.kit] sdx 17 | if {![file isfile $sdx]} { 18 | error "please specify pathname of sdx.kit on command line." 19 | } 20 | exec [info nameofexecutable] $sdx wrap $appDir.kit 21 | } finally { 22 | close $f 23 | cd $startDir 24 | } -------------------------------------------------------------------------------- /bin/prodebug: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env tclsh 2 | 3 | source [file dirn [file dirn [file dirn [file norm [file join [info script] __dummy__]]]]]/main.tcl 4 | -------------------------------------------------------------------------------- /bin/remote_debug_wrapper: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #\ 3 | exec tclsh "$0" "$@" 4 | 5 | set TclProDirectory [file dirname [file dirname [info script]]] 6 | 7 | lappend auto_path [file join $TclProDirectory lib remotedebug] 8 | 9 | package require remotedebug 2.0 10 | 11 | set port 2345 12 | if { [info exists ::env(TCLPRO_DEBUG_PORT)] } { 13 | set port $::env(TCLPRO_DEBUG_PORT) 14 | } 15 | 16 | # 17 | # Parse additional arguments for this process: 18 | # -port 19 | # -cwd 20 | # 21 | while { [llength $argv] } { 22 | set arg [lindex $argv 0] 23 | if { $arg == "--" } { 24 | set argv [lassign $argv ignored_] 25 | break 26 | } elseif { $arg == "-port" } { 27 | set argv [lassign $argv ignored_ port] 28 | } elseif { $arg == "-cwd" } { 29 | set argv [lassign $argv ignored_ cwd] 30 | cd $cwd 31 | } else { 32 | break 33 | } 34 | } 35 | 36 | 37 | set script [lindex $argv 0] 38 | set argv [lrange $argv 1 end] 39 | set argv0 $script 40 | 41 | puts "Preparing to execute $argv0 with args $argv" 42 | 43 | puts "Using TCL interpreter: [info nameofexecutable]" 44 | puts "Using TCL version: [info tclversion], [info patchlevel]" 45 | puts "Using TCL library: [info library]" 46 | 47 | puts stderr "Listening for connections on $port" 48 | if { ! [debugger_init_accept $port] } { 49 | puts stderr "Unable to connect?" 50 | exit 1 51 | } 52 | 53 | puts "Ready? Let's go. Running $argv0 with $argv" 54 | 55 | source $argv0 56 | -------------------------------------------------------------------------------- /demos/fac/fac.tcl: -------------------------------------------------------------------------------- 1 | # fac.tcl -- 2 | # 3 | # This program takes a command line argument and prints the 4 | # factorial of each integer between 1 and itself. 5 | # 6 | # Copyright (c) 1998 Scriptics Corporation 7 | # See the file "license.terms" for information on usage and redistribution of this file. 8 | # 9 | # RCS: @(#) $Id: fac.tcl,v 1.2 2000/10/31 23:31:08 welch Exp $ 10 | 11 | # factorial -- 12 | # 13 | # Tail-recursive implementation of the factorial function. 14 | # As a side-effect, the global value of "n" is decremented. 15 | # 16 | 17 | proc factorial {result} { 18 | global n 19 | if {$n <= 1} { 20 | return $result 21 | } 22 | set result [expr {$n * $result}] 23 | incr n -1 24 | return [factorial $result] 25 | } 26 | 27 | # 28 | # Set max to the value of the command line argument. 29 | # 30 | 31 | if {$argc != 1} { 32 | error "this program requires 1 integer as a command line arg" 33 | } 34 | set max [lindex $argv 0] 35 | 36 | # 37 | # Call the factorial procedure for each integer from max down to 1. 38 | # Store each result in the fact array. 39 | # 40 | 41 | for {set i $max} {$i >= 1} {incr i -1} { 42 | 43 | set n $i 44 | 45 | set fact($i) [factorial 1] 46 | } 47 | 48 | # 49 | # Print the index and value of each entry in the fact array. 50 | # 51 | 52 | foreach index [lsort -integer [array names fact]] { 53 | puts "fact($index) = $fact($index)" 54 | } 55 | -------------------------------------------------------------------------------- /demos/fac/tour.txt: -------------------------------------------------------------------------------- 1 | tour.txt -- 2 | 3 | This file contains a sequence of actions to take to give an 4 | alpha demo. 5 | 6 | Copyright (c) 1998 Scriptics Corporation 7 | All rights reserved. 8 | 9 | RCS: @(#) $Id: tour.txt,v 1.1 2000/07/14 18:00:02 welch Exp $ 10 | 11 | 1) load demos/fac/fac.tcl with tclsh and cmdline args: 4 5 12 | 13 | notice the values of argc and argv 14 | 15 | 2) open watch window 16 | 17 | add x, temp, y, and fact to watch window 18 | 19 | 3) start stepping 20 | 21 | step into first fact call 22 | 23 | keep stepping through 24 | 25 | step-out at deepest return 26 | 27 | 28 | 5) add var-bpts for y 29 | 30 | 6) step "over" the 2nd call to fact 31 | 32 | keep pressing run util at deepest return 33 | 34 | step out 35 | -------------------------------------------------------------------------------- /demos/hiq/hiq.tcl: -------------------------------------------------------------------------------- 1 | # hiq.tcl -- 2 | # 3 | # Main code for the Hi-Q game. This file initializes the global variables 4 | # and sources other code files. 5 | # 6 | # Copyright (c) 1996 Dartmouth College 7 | # Copyright (c) 1998 Scriptics Corporation 8 | # See the file "license.terms" for information on usage and redistribution of this file. 9 | # 10 | # RCS: @(#) $Id: hiq.tcl,v 1.2 2000/10/31 23:31:09 welch Exp $ 11 | 12 | 13 | # "color" is an associative array which we use to abstract away the font 14 | # and color attributes of all tk widgets. 15 | 16 | set color(bg) white 17 | set color(fg) black 18 | set color(button-bg) steelblue 19 | set color(button-mute) lightsteelblue 20 | set color(button-fg) white 21 | set color(canvas-bg) white 22 | set color(canvas-fg) steelblue 23 | set color(peg) pink 24 | set color(hole) black 25 | set color(fontsize) 24 26 | set color(font) -*-helvetica-medium-r-*-*-24-*-*-*-*-*-*-* 27 | #set color(fontsize) 14 28 | #set color(font) -adobe-courier-medium-r-*-*-14-*-*-*-*-*-*-* 29 | 30 | # source the other files... 31 | 32 | source hiqGUI.tcl 33 | source hiqState.tcl 34 | 35 | # pop up the main window & start the game 36 | 37 | set board_obj [pop_up_main_window] 38 | start_game $board_obj 39 | -------------------------------------------------------------------------------- /demos/hiq/tour.txt: -------------------------------------------------------------------------------- 1 | tour.txt -- 2 | 3 | This file contains a sequence of actions to take to give an 4 | alpha demo. 5 | 6 | Copyright (c) 1998 Scriptics Corporation 7 | All rights reserved. 8 | 9 | RCS: @(#) $Id: tour.txt,v 1.1 2000/07/14 18:00:03 welch Exp $ 10 | 11 | 1) open demos/hiq/hiqGUI.tcl 12 | 13 | 2) add breakpoint on "pack .hiq", line 49 14 | 15 | open breakpoint window 16 | 17 | 3) load hiq.tcl with wish 18 | 19 | 4) run 20 | 21 | 5) eval "update", keep eval window open 22 | 23 | 6) step, update, step, update, step-out, step-in, run 24 | 25 | 7) demostrate how pegs are moved in the app 26 | 27 | add breakpoint on line 94 of hiqGUI.tcl 28 | 29 | 8) drag a peg & drop over blue 30 | 31 | step-in repeatedly 32 | 33 | 9) drag a peg & drop over illegal hole 34 | 35 | 10) drag a peg & drop over legal hole 36 | 37 | 11) press undo move 38 | 39 | check proc win for *new* 40 | 41 | press "supress and break" 42 | 43 | eval new_message $w "undid!!!" 44 | 45 | eval update 46 | 47 | 12) drag a peg & drop peg 48 | 49 | disable bpt 50 | 51 | drag a peg & drop peg 52 | 53 | 13) demonstrate "restart" 54 | 55 | add bpt to line 212 of hiqState.tcl 56 | 57 | press restart 58 | 59 | see multiple stacks 60 | 61 | 62 | -------------------------------------------------------------------------------- /demos/tutorials/fac-gui.tcl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # the next line restarts using prowish82 \ 3 | exec prowish82 "$0" "$@" 4 | 5 | # fac.tcl -- 6 | # 7 | # This program creates a simple Tk graphical user interface to 8 | # compute factorials. It is intended as a demo application for 9 | # TclPro. 10 | 11 | # This procedure computes the factorial of its argument using a 12 | # recursive approach and returns the factorial as result. 13 | 14 | proc fac x { 15 | if {$x <= 1} { 16 | return 1 17 | } 18 | set next [expr {$x - 1}] 19 | return [expr {$x * [fac $next]}] 20 | } 21 | 22 | # Create the three widgets that make up the GUI for the application 23 | # and arrange them in a gridded pattern. 24 | 25 | label .label1 -text "Enter number:" 26 | entry .entry 27 | label .label2 -textvariable answer 28 | grid .label1 .entry 29 | grid .label2 -columnspan 2 30 | 31 | # Arrange for the fac procedure to be invoked whenever Return is typed 32 | # in the entry widget. The result is stored in variable "answer"; the 33 | # widget .label2 always displays the value of this variable. 34 | 35 | bind .entry { 36 | set answer "Answer is [fac [.entry get]]" 37 | } 38 | -------------------------------------------------------------------------------- /demos/tutorials/fac.tcl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # the next line restarts using protclsh82 \ 3 | exec protclsh82 "$0" "$@" 4 | 5 | # fac.tcl -- 6 | # 7 | # This program computes factorials. It is intended as a 8 | # simple demo application for TclPro. 9 | 10 | # This procedure computes the factorial of its argument using a 11 | # recursive approach and returns the factorial as a result. 12 | 13 | proc fac x { 14 | if {$x <= 1} { 15 | return 1 16 | } 17 | set next [expr {$x - 1}] 18 | return [expr {$x * [fac $next]}] 19 | } 20 | 21 | set iter 1 22 | 23 | while {$iter == 1} { 24 | 25 | # Prompt for a value 26 | 27 | puts -nonewline "Enter a number: " 28 | flush stdout 29 | set value [gets stdin] 30 | 31 | # Output the factorial 32 | 33 | puts "${value}! is [fac $value]" 34 | 35 | # Do it again? 36 | 37 | puts -nonewline "Calculate another factorial? (y/n) " 38 | flush stdout 39 | set iter [regexp {^[yY]} [gets stdin]] 40 | } 41 | -------------------------------------------------------------------------------- /demos/tutorials/pulse.tcl: -------------------------------------------------------------------------------- 1 | # pulse.tcl -- 2 | # 3 | # 4 | # Copyright (c) 1999 Scriptics Corporation 5 | # See the file "license.terms" for information on usage and redistribution of this file. 6 | # 7 | 8 | set beats 0 9 | set pending "" 10 | 11 | label .title -text "Total Heartbeats" 12 | label .beats -textvariable beats 13 | 14 | label .scaleTitle -text "Heart Rate" 15 | scale .rate -orient horizontal -from 60 -to 180 -variable rate 16 | 17 | frame .controls 18 | button .controls.start -text "Start" -command {start} 19 | button .controls.stop -text "Stop" -command {stop} 20 | button .controls.clear -text "Clear" -command {clear} 21 | 22 | pack .title -pady 4 -padx 6 23 | pack .beats 24 | pack .scaleTitle -pady 4 -padx 2 25 | pack .rate -padx 2 -fill x 26 | pack .controls -fill x -pady 4 27 | 28 | pack .controls.start -padx 4 -side left -expand yes 29 | pack .controls.stop -padx 4 -side left -expand yes 30 | pack .controls.clear -padx 4 -side left -expand yes 31 | 32 | proc start {} { 33 | global pending 34 | 35 | if {$pending == ""} { 36 | set pending [after idle animate] 37 | } 38 | } 39 | 40 | proc animate {} { 41 | global rate pending beats 42 | 43 | incr beats 44 | set delay [expr {int(60.0/$rate*1000)}] 45 | set pending [after $delay animate] 46 | } 47 | 48 | 49 | proc stop {} { 50 | global pending 51 | 52 | if {$pending != ""} { 53 | after cancel $pending 54 | set pending "" 55 | } 56 | } 57 | 58 | proc clear {} { 59 | global beats 60 | 61 | set beats 0 62 | } 63 | 64 | -------------------------------------------------------------------------------- /demos/tutorials/remote.tcl: -------------------------------------------------------------------------------- 1 | source prodebug.tcl 2 | 3 | debugger_init localhost 2576 4 | debugger_eval { 5 | source pulse.tcl 6 | } 7 | 8 | -------------------------------------------------------------------------------- /demos/tutorials/varbreak.tcl: -------------------------------------------------------------------------------- 1 | # varbreak.tcl -- 2 | # 3 | # This program increments a variable "x". It was designed to 4 | # illustrate variable breakpoints in TclPro Debugger. 5 | # 6 | # Copyright (c) 1999 Scriptics Corporation 7 | # See the file "license.terms" for information on usage and redistribution of this file. 8 | # 9 | 10 | set x 0 11 | 12 | label .x -textvariable x 13 | pack .x -padx 6 -pady 4 14 | button .incr -text "Increment" -command {Increment x} 15 | pack .incr -side left -expand yes -padx 4 -pady 4 16 | button .decr -text "Decrement" -command {Decrement x} 17 | pack .decr -side left -expand yes -padx 4 -pady 4 18 | 19 | # 20 | # Increment - Increases the value of the variable whose name is 21 | # "varName" by one. 22 | # 23 | 24 | proc Increment {varName} { 25 | global $varName 26 | incr $varName 27 | } 28 | 29 | # 30 | # Decrement - Reduces the value of the variable "varName" by one. 31 | # 32 | 33 | proc Decrement {varName} { 34 | global $varName 35 | incr $varName -1 36 | } 37 | 38 | -------------------------------------------------------------------------------- /demos/uplevel/uplevel.tcl: -------------------------------------------------------------------------------- 1 | # uplevel.tcl -- 2 | # 3 | # This program demonstrates the debugger's display of stack data when 4 | # an application stops in a script invoked via the "uplevel" command. 5 | # 6 | # Copyright (c) 1998 Scriptics Corporation 7 | # See the file "license.terms" for information on usage and redistribution of this file. 8 | # 9 | # RCS: @(#) $Id: uplevel.tcl,v 1.2 2000/10/31 23:31:13 welch Exp $ 10 | 11 | # factorial -- 12 | # 13 | # Tail-recursive implementation of the factorial function. 14 | # As a side-effect, the global value of "n" is decremented. 15 | # 16 | 17 | proc factorial {result} { 18 | global n 19 | if {$n <= 1} { 20 | return $result 21 | } 22 | set result [expr {$n * $result}] 23 | incr n -1 24 | return [factorial $result] 25 | } 26 | 27 | # populate_fact_array -- 28 | # 29 | # Call the factorial procedure for each integer from 1 to global max. 30 | # Store each result in the global fact array. 31 | # 32 | 33 | proc populate_fact_array {} { 34 | 35 | uplevel \#0 { 36 | 37 | # 38 | # Call the factorial procedure for each integer from 1 to max. 39 | # Store each result in the global fact array. 40 | # 41 | 42 | for {set i 1} {$i <= $max} {incr i 1} { 43 | 44 | set n $i 45 | 46 | set fact($i) [factorial 1] 47 | } 48 | } 49 | } 50 | 51 | set max 5 52 | populate_fact_array 53 | 54 | # 55 | # Print the index and value of each entry in the fact array. 56 | # 57 | 58 | foreach index [lsort [array names fact]] { 59 | puts "fact($index) = $fact($index)" 60 | } 61 | -------------------------------------------------------------------------------- /demos/xpm/tour.txt: -------------------------------------------------------------------------------- 1 | tour.txt -- 2 | 3 | This file contains a sequence of actions to take to give an 4 | alpha demo. 5 | 6 | Copyright (c) 1998 Scriptics Corporation 7 | All rights reserved. 8 | 9 | RCS: @(#) $Id: tour.txt,v 1.1 2000/07/14 18:00:24 welch Exp $ 10 | 11 | 1) load makeXPM.tcl with tclsh and cmdline args: 6 8 4 design.xpm 12 | 13 | 2) open proc window and start stepping 14 | 15 | add breakpoints at beginning of red and indigo 16 | 17 | 3) step in "writeToFile" 18 | 19 | run 20 | 21 | 4) step-in until "result" has a value 22 | 23 | watch "color" 24 | 25 | inspect "result"--live 26 | 27 | run 28 | 29 | 5) stopped in indigo 30 | 31 | ..... 32 | 33 | step-out repeatedly 34 | 35 | 5) goto writeToFile stack level 36 | 37 | inspect "repeatNumber"--live 38 | 39 | inspect "lineNumber"--live+bpt 40 | 41 | remove all bpts 42 | 43 | run 44 | 45 | 6) interrupt 46 | 47 | run 48 | 49 | interrupt 50 | 51 | run 52 | -------------------------------------------------------------------------------- /doc/TclProUsersGuide14.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/doc/TclProUsersGuide14.pdf -------------------------------------------------------------------------------- /lib/cmdline/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded cmdline 1.3.3 [list source [file join $dir cmdline.tcl]] 3 | -------------------------------------------------------------------------------- /lib/debugserver/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | namespace eval debugserver { 2 | variable contents { 3 | connection.tcl 4 | server.tcl 5 | } 6 | 7 | proc Load { dir } { 8 | package provide debugserver 1.0 9 | 10 | variable contents 11 | foreach file $contents { 12 | source [file join $dir $file] 13 | } 14 | } 15 | } 16 | package ifneeded debugserver 1.0 [list debugserver::Load $dir] 17 | -------------------------------------------------------------------------------- /lib/projectInfo/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded projectInfo 2.0 [list source [file join $dir projectInfo.tcl]] 2 | -------------------------------------------------------------------------------- /lib/remotedebug/docs/initdebug.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/remotedebug/docs/initdebug.pdf -------------------------------------------------------------------------------- /lib/remotedebug/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded remotedebug 2.0 "[list source [file join $dir initdebug.tcl]];[::list package provide remotedebug 2.0]" 2 | -------------------------------------------------------------------------------- /lib/tcldebugger/blend.pdx: -------------------------------------------------------------------------------- 1 | # blend.pdx -- 2 | # 3 | # This file implements the TclPro Debugger extension for the 4 | # TclBlend extension. 5 | # 6 | # Copyright (c) 1998-2000 Ajuba Solutions 7 | # Copyright (c) 2017 Forward Folio LLC 8 | # See the file "license.terms" for information on usage and redistribution of this file. 9 | # 10 | 11 | # Register the TclBlend extension 12 | 13 | instrument::addExtension 2.0 {java} 14 | 15 | namespace eval blend { 16 | } 17 | 18 | # Register handlers for each of the TclBlend commands 19 | 20 | instrument::addCommand java::bind {parseSimpleArgs 1 3 {parseWord parseWord parseBody}} 21 | instrument::addCommand try {parseSimpleArgs 1 -1 blend::parseTry} 22 | instrument::addCommand java::try {parseSimpleArgs 1 -1 blend::parseTry} 23 | 24 | # blend::parseTry -- 25 | # 26 | # This routine wraps the java::try command. 27 | # Parse args of the pattern: 28 | # ?catch exception_pair script ... ? ?finally script? 29 | # 30 | # Arguments: 31 | # tokens The list of word tokens for the current command. 32 | # index The index of the next word to be parsed. 33 | # 34 | # Results: 35 | # Returns the index of the last token + 1 (all have been parsed). 36 | 37 | proc blend::parseTry {tokens index} { 38 | # The first script argument is required. 39 | 40 | set argList [list parseBody] 41 | 42 | set i [expr {$index + 1}] 43 | set argc [llength $tokens] 44 | while {$i < $argc} { 45 | # At this point in the loop, there are 3X + 2 more args. 46 | 47 | if {$i == [expr {$argc - 2}]} { 48 | lappend argList parseWord parseBody 49 | incr i 2 50 | } else { 51 | lappend argList parseWord parseWord parseBody 52 | incr i 3 53 | } 54 | } 55 | 56 | # in case "try" was call with wrong num args, just check the extras 57 | # against parseWord for now--the user will get a Tcl runtime exception. 58 | 59 | lappend argList parseWord 60 | 61 | return [instrument::parseSimpleArgs 1 -1 $argList $tokens $index] 62 | } 63 | -------------------------------------------------------------------------------- /lib/tcldebugger/images/about.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/about.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/break_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/break_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/break_e.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/break_e.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/break_m.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/break_m.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/combo_arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/combo_arrow.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/current.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/current.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/current_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/current_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/current_e.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/current_e.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/current_m.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/current_m.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/current_v.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/current_v.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/debugUnixIcon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/debugUnixIcon.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/go.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/go.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/go_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/go_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/history.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/history.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/history_disable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/history_disable.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/history_enable.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/history_enable.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/history_mixed.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/history_mixed.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/kill.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/kill.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/kill_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/kill_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/logo.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/refresh.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/refresh.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/refresh_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/refresh_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/restart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/restart.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/restart_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/restart_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepin.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepin.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepin_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepin_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepout.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepout.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepout_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepout_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepover.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepover.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepover_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepover_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepresult.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepresult.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepresult_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepresult_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepto.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepto.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stepto_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stepto_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stop.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stop.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/stop_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/stop_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/var_d.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/var_d.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/var_e.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/var_e.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/win_break.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/win_break.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/win_cover.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/win_cover.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/win_eval.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/win_eval.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/win_proc.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/win_proc.gif -------------------------------------------------------------------------------- /lib/tcldebugger/images/win_watch.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tcldebugger/images/win_watch.gif -------------------------------------------------------------------------------- /lib/tcldebugger/oratcl.pdx: -------------------------------------------------------------------------------- 1 | # oratcl.pdx -- 2 | # 3 | # This file implements the TclPro Debugger extension for OraTcl. 4 | # 5 | # Copyright (c) 1998-2000 Ajuba Solutions 6 | # Copyright (c) 2017 Forward Folio LLC 7 | # See the file "license.terms" for information on usage and redistribution of this file. 8 | # 9 | # RCS: @(#) $Id: oratcl.pdx,v 1.3 2000/05/30 22:54:42 hershey Exp $ 10 | 11 | # Register the Oratcl extension 12 | 13 | instrument::addExtension 2.0 {OraTcl} 14 | 15 | # Register handlers for each of the Oratcl commands 16 | 17 | instrument::addCommand orafetch {parseSimpleArgs 1 -1 {parseWord parseBody parseWord}} 18 | -------------------------------------------------------------------------------- /lib/tcldebugger/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded debugger 2.0 [list source [file join $dir debugger.tcl]] -------------------------------------------------------------------------------- /lib/tcldebugger/sybtcl.pdx: -------------------------------------------------------------------------------- 1 | # sybtcl.pdx -- 2 | # 3 | # This file implements the TclPro Debugger extension for Sybtcl. 4 | # 5 | # Copyright (c) 1998-2000 Ajuba Solutions 6 | # Copyright (c) 2017 Forward Folio LLC 7 | # See the file "license.terms" for information on usage and redistribution of this file. 8 | # 9 | 10 | # Register the Sybtcl extension 11 | 12 | instrument::addExtension 2.0 {sybtcl} 13 | 14 | # Register handlers for each of the Sybtcl commands 15 | 16 | instrument::addCommand sybevent {parseSimpleArgs 1 2 { 17 | parseWord parseBody}} 18 | 19 | instrument::addCommand sybnext {parseSimpleArgs 1 -1 { 20 | parseWord parseBody parseWord}} 21 | -------------------------------------------------------------------------------- /lib/tcldebugger/tclCom.pdx: -------------------------------------------------------------------------------- 1 | # tclCom.pdx -- 2 | # 3 | # This file implements the TclPro Debugger extension for the Tcl 4 | # Com API. 5 | # 6 | # Copyright (c) 1998-2000 Ajuba Solutions 7 | # Copyright (c) 2017 Forward Folio LLC 8 | # See the file "license.terms" for information on usage and redistribution of this file. 9 | # 10 | 11 | # Register the Tcl Com extension 12 | 13 | instrument::addExtension 2.0 {tclCom} 14 | 15 | # Register handlers for each of the XML Generation commands 16 | 17 | instrument::addCommand foreachitem {parseTail 3 { 18 | parseWord parseBody}} 19 | instrument::addCommand tclcom::foreachitem {parseTail 3 { 20 | parseWord parseBody}} 21 | -------------------------------------------------------------------------------- /lib/tcldebugger/tcltest.pdx: -------------------------------------------------------------------------------- 1 | # tcltest.pdx -- 2 | # 3 | # This file implements custom instrumenter extensions 4 | # for the tcltest package. 5 | # 6 | # Copyright (c) 1998-2000 Ajuba Solutions 7 | # Copyright (c) 2017 Forward Folio LLC 8 | # See the file "license.terms" for information on usage and redistribution of this file. 9 | # 10 | 11 | # Register the tcltest extension 12 | 13 | instrument::addExtension 2.0 {parseTest} 14 | 15 | namespace eval parseTest { 16 | } 17 | 18 | # Register handlers for each of the tcltest commands 19 | 20 | instrument::addCommand test {parseTail 4 { 21 | parseWord parseBody parseWord}} 22 | instrument::addCommand tcltest::test {parseTail 4 { 23 | parseWord parseBody parseWord}} 24 | -------------------------------------------------------------------------------- /lib/tcldebugger/tests/all.tcl: -------------------------------------------------------------------------------- 1 | # all.tcl -- 2 | # 3 | # This file contains a top-level script to run all of the 4 | # tcldebugger tests. 5 | # 6 | # Copyright (c) 1998-2000 by Ajuba Solutions 7 | # Copyright (c) 2017 Forward Folio LLC 8 | # See the file "license.terms" for information on usage and redistribution of this file. 9 | # 10 | 11 | if {[info exists ::tcltest::testSingleFile]} { 12 | if {!$::tcltest::testSingleFile} { 13 | set saveOutput $::tcltest::temporaryDirectory 14 | } 15 | } 16 | 17 | lappend auto_path [file join [file dirname [info script]] ..] 18 | package require protest 19 | catch {namespace import ::protest::*} 20 | 21 | if {[info exists saveOutput]} { 22 | set ::tcltest::temporaryDirectory $saveOutput 23 | } 24 | 25 | puts "Temporary files stored in $::tcltest::temporaryDirectory" 26 | set timeCmd {clock format [clock seconds]} 27 | puts stdout "Tests began at [eval $timeCmd]" 28 | 29 | if {$tcl_platform(platform) == "windows"} { 30 | ::protest::testAllFiles "" wish$::protest::currentVersion(Tk-short) 31 | } else { 32 | ::protest::testAllFiles "" wish$::protest::currentVersion(Tk) 33 | } 34 | 35 | set numFailures [llength $::tcltest::failFiles] 36 | 37 | puts stdout "\nTests ended at [eval $timeCmd]" 38 | ::tcltest::cleanupTests 1 39 | 40 | if {$numFailures > 0} { 41 | return -code error -errorcode $numFailures \ 42 | -errorinfo "Found $numFailures test file failures" 43 | } else { 44 | return 45 | } 46 | -------------------------------------------------------------------------------- /lib/tcldebugger/tests/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex -direct" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded protest 1.0 [list source [file join $dir protest.tcl]] 12 | -------------------------------------------------------------------------------- /lib/tcldebugger/uplevel.pdx: -------------------------------------------------------------------------------- 1 | # blend.pdx -- 2 | # 3 | # This file implements the TclPro Debugger extension for the 4 | # TclBlend extension. 5 | # 6 | # Copyright (c) 1998-2000 Ajuba Solutions 7 | # Copyright (c) 2017 Forward Folio LLC 8 | # See the file "license.terms" for information on usage and redistribution of this file. 9 | # 10 | 11 | # Register the TclBlend extension 12 | 13 | instrument::addExtension 2.0 {parseUplevel} 14 | 15 | namespace eval parseUplevel { 16 | } 17 | 18 | # Register handlers for each of the TclBlend commands 19 | 20 | instrument::addCommand uplevel \ 21 | {parseSimpleArgs 1 -1 parseUplevel::parseUplevelCmd} 22 | 23 | # parseUplevel::parseUplevelCmd -- 24 | # 25 | # This routine wraps the foobar command. 26 | # Parse args of the pattern: 27 | # ?catch exception_pair script ... ? ?finally script? 28 | # 29 | # Arguments: 30 | # tokens The list of word tokens for the current command. 31 | # index The index of the next word to be parsed. 32 | # 33 | # Results: 34 | # Returns the index of the last token + 1 (all have been parsed). 35 | 36 | proc parseUplevel::parseUplevelCmd {tokens index} { 37 | set argc [expr {[llength $tokens] - $index}] 38 | 39 | if {$argc == 1} { 40 | return [instrument::parseSimpleArgs 1 1 {parseBody} $tokens $index] 41 | } elseif {$argc == 2} { 42 | instrument::getLiteral [lindex $tokens $index] literal 43 | if {[regexp {^\#?[0-9]+$} $literal]} { 44 | # If there's a literal level arg, call parseWord on it. 45 | 46 | return [instrument::parseSimpleArgs 2 2 {parseWord parseBody} \ 47 | $tokens $index] 48 | } 49 | } 50 | return [instrument::parseSimpleArgs 1 -1 {parseWord} $tokens $index] 51 | } 52 | -------------------------------------------------------------------------------- /lib/tcldebugger/xmlGen.pdx: -------------------------------------------------------------------------------- 1 | # xmlGen.pdx -- 2 | # 3 | # This file implements the TclPro Debugger extension for the XML 4 | # Generation API. 5 | # 6 | # Copyright (c) 1998-2000 Ajuba Solutions 7 | # Copyright (c) 2017 Forward Folio LLC 8 | # See the file "license.terms" for information on usage and redistribution of this file. 9 | # 10 | 11 | # Register the XML Generation extension 12 | 13 | instrument::addExtension 2.0 {xmlGen} 14 | 15 | # Register handlers for each of the XML Generation commands 16 | 17 | instrument::addCommand element {parseSimpleArgs 2 4 { 18 | parseWord parseWord parseWord parseBody}} 19 | instrument::addCommand xmlgen::element {parseSimpleArgs 2 4 { 20 | parseWord parseWord parseWord parseBody}} 21 | -------------------------------------------------------------------------------- /lib/tclparser/DEPENDENCIES: -------------------------------------------------------------------------------- 1 | # List each dependent module on a line by itself 2 | tcl 3 | -------------------------------------------------------------------------------- /lib/tclparser/README: -------------------------------------------------------------------------------- 1 | # Copyright (c) 1999-2000 Ajuba Solutions 2 | 3 | This is the Tcl parser component used by the checker to 4 | parse a Tcl script into commands, words and tokens. 5 | 6 | -------------------------------------------------------------------------------- /lib/tclparser/aclocal.m4: -------------------------------------------------------------------------------- 1 | # 2 | # Include the TEA standard macro set 3 | # 4 | 5 | builtin(include,tclconfig/tcl.m4) 6 | 7 | # 8 | # Add here whatever m4 macros you want to define for your package 9 | # 10 | -------------------------------------------------------------------------------- /lib/tclparser/doc/parse.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/lib/tclparser/doc/parse.pdf -------------------------------------------------------------------------------- /lib/tclparser/tclconfig/README.txt: -------------------------------------------------------------------------------- 1 | These files comprise the basic building blocks for a Tcl Extension 2 | Architecture (TEA) extension. For more information on TEA see: 3 | 4 | http://www.tcl.tk/doc/tea/ 5 | 6 | This package is part of the Tcl project at SourceForge, and latest 7 | sources should be available there: 8 | 9 | http://tcl.sourceforge.net/ 10 | 11 | This package is a freely available open source package. You can do 12 | virtually anything you like with it, such as modifying it, redistributing 13 | it, and selling it either in whole or in part. 14 | 15 | CONTENTS 16 | ======== 17 | The following is a short description of the files you will find in 18 | the sample extension. 19 | 20 | README.txt This file 21 | 22 | install-sh Program used for copying binaries and script files 23 | to their install locations. 24 | 25 | tcl.m4 Collection of Tcl autoconf macros. Included by a package's 26 | aclocal.m4 to define TEA_* macros. 27 | -------------------------------------------------------------------------------- /lib/tclparser/tests/all.tcl: -------------------------------------------------------------------------------- 1 | # all.tcl -- 2 | # 3 | # This file contains a top-level script to run all of the Tcl 4 | # tests. Execute it by invoking "source all.test" when running tcltest 5 | # in this directory. 6 | # 7 | # Copyright (c) 1998-2000 Ajuba Solutions 8 | # All rights reserved. 9 | # 10 | # RCS: @(#) $Id: all.tcl,v 1.3 2000/05/30 22:08:51 wart Exp $ 11 | 12 | if {[lsearch [namespace children] ::tcltest] == -1} { 13 | package require tcltest 14 | namespace import ::tcltest::* 15 | } 16 | 17 | if {"[info commands parser]" == ""} { 18 | package require parser 19 | } 20 | 21 | set ::tcltest::testSingleFile false 22 | set ::tcltest::testsDirectory [file dir [info script]] 23 | 24 | puts stdout "Tcl $tcl_patchLevel tests running in interp: [info nameofexecutable]" 25 | puts stdout "Tests running in working dir: $::tcltest::testsDirectory" 26 | if {[llength $::tcltest::skip] > 0} { 27 | puts stdout "Skipping tests that match: $::tcltest::skip" 28 | } 29 | if {[llength $::tcltest::match] > 0} { 30 | puts stdout "Only running tests that match: $::tcltest::match" 31 | } 32 | 33 | if {[llength $::tcltest::skipFiles] > 0} { 34 | puts stdout "Skipping test files that match: $::tcltest::skipFiles" 35 | } 36 | if {[llength $::tcltest::matchFiles] > 0} { 37 | puts stdout "Only sourcing test files that match: $::tcltest::matchFiles" 38 | } 39 | 40 | set timeCmd {clock format [clock seconds]} 41 | puts stdout "Tests began at [eval $timeCmd]" 42 | 43 | # source each of the specified tests 44 | foreach file [lsort [::tcltest::getMatchingFiles]] { 45 | set tail [file tail $file] 46 | puts stdout $tail 47 | if {[catch {source $file} msg]} { 48 | puts stdout $msg 49 | } 50 | } 51 | 52 | # cleanup 53 | puts stdout "\nTests ended at [eval $timeCmd]" 54 | ::tcltest::cleanupTests 1 55 | return 56 | 57 | -------------------------------------------------------------------------------- /lib/tclparser/tools/check_manifest: -------------------------------------------------------------------------------- 1 | #!/usr/local/bin/tclsh 2 | # -*- tcl -*- 3 | # check the manifest against the current contents of the directory 4 | 5 | set manifest [lindex $argv 0] 6 | 7 | rename file ori_file 8 | proc file {name} { 9 | global files 10 | set files($name) 1 11 | if {! [ori_file exists $name]} { 12 | puts stdout "missing: $name" 13 | } 14 | } 15 | 16 | # read manifest and check existence of all listed files 17 | source $manifest 18 | 19 | 20 | # now backwards: find all files and check 21 | # for files not listed in the manifest 22 | 23 | set list [exec find . -print] 24 | regsub -all "\n" $list { } list 25 | 26 | foreach f $list { 27 | if {[catch {set files($f)}]} { 28 | puts stdout "new: $f" 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/images/about.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/src/images/about.gif -------------------------------------------------------------------------------- /src/images/debugUnixIcon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/src/images/debugUnixIcon.gif -------------------------------------------------------------------------------- /src/images/logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/src/images/logo.gif -------------------------------------------------------------------------------- /tests/remote/.vimspector.json: -------------------------------------------------------------------------------- 1 | { 2 | "adapters": { 3 | "tclpro": { 4 | "name": "tclpro", 5 | "command": [ 6 | "/inf10xl_user1/infrastructure_release/vdev_build/core/third-party_LINUX_X86/tcl-8.5.16/64/bin/tclsh8.5", 7 | "/mma/users/benj/proj/tcl-debug/TclProDebug/bin/debugadapter" 8 | ] 9 | } 10 | }, 11 | "configurations": { 12 | "launch": { 13 | "adapter": "tclpro", 14 | "configuration": { 15 | "request": "launch", 16 | "tclsh": "/usr/bin/wish", 17 | "cwd": "${workspaceRoot}", 18 | "target": "${workspaceRoot}/main.tcl", 19 | "args": [ "this", "is", "a", "test" ], 20 | "pauseOnEntry": true 21 | } 22 | }, 23 | "attach": { 24 | "adapter": "tclpro", 25 | "configuration": { 26 | "request": "attach", 27 | "pauseOnEntry": true, 28 | "host": "${host}", 29 | "port": "${port}" 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /tests/server/simple_message_input: -------------------------------------------------------------------------------- 1 | Content-Length: 49 2 | 3 | {"command":"initialize","type":"request","seq":1} 4 | Content-Length: 47 5 | 6 | {"event":"Hello again, ","type":"cruel world!"} 7 | -------------------------------------------------------------------------------- /tests/simple_tcl_app/.vimspector.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": { 3 | "launch": { 4 | "adapter": "tclpro", 5 | "configuration": { 6 | "request": "launch", 7 | "cwd": "${workspaceRoot}", 8 | "target": "${workspaceRoot}/main.tcl", 9 | "args": [ "this", "is", "a", "test" ] 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /tests/simple_tcl_app/main.tcl: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #\ 3 | exec tclsh "$0" "$@" 4 | 5 | proc Puts { args } { 6 | ::test::Puts {*}$args 7 | } 8 | 9 | namespace eval ::test { 10 | proc Puts { args } { 11 | puts {*}$args 12 | } 13 | 14 | proc DoTop { args } { 15 | uplevel #0 {*}$args 16 | } 17 | proc Test { } { 18 | uplevel 1 Puts -nonewline "Hello," 19 | 20 | DoTop Puts "World!" 21 | } 22 | } 23 | 24 | set args 0 25 | foreach arg $::argv { 26 | incr args 27 | puts "ARG: $arg" 28 | 29 | } 30 | puts "There were $args args" 31 | 32 | set something_like_a_list {a b c d} 33 | lappend something_like_a_list e f g 34 | 35 | set not_a_dict { a b c } 36 | set list_of_lists { a {b B} {c C c} } 37 | set dict_of_dicts { a {a A} b {b B} c {c C} } 38 | 39 | puts "done" 40 | 41 | proc Toast { } { 42 | ::test::Test 43 | } 44 | 45 | Toast 46 | -------------------------------------------------------------------------------- /tests/simple_tcl_app/simple_tcl_app.tpj: -------------------------------------------------------------------------------- 1 | instrumentIncrTcl 1 2 | appDir /mma/users/benj/proj/tcl-debug/TclProDebug/tests/simple_tcl_app 3 | errorAction 1 4 | breakList {} 5 | appScriptList /mma/users/benj/proj/tcl-debug/TclProDebug/tests/simple_tcl_app/main.tcl 6 | appArg {this is a test} 7 | appType local 8 | doInstrument * 9 | appDirList /mma/users/benj/proj/tcl-debug/TclProDebug/tests/simple_tcl_app 10 | instrumentDynamic 1 11 | dontInstrument {} 12 | appArgList {{this is a test}} 13 | prevViewFile /mma/users/benj/proj/tcl-debug/TclProDebug/tests/simple_tcl_app/main.tcl 14 | projVersion 1.0 15 | portRemote 2576 16 | autoLoad 0 17 | instrumentExpect 1 18 | watchList {} 19 | appInterp /inf10xl_user1/infrastructure_release/vdev_build/core/third-party_LINUX_X86/tcl-8.5.16/64/bin/tclsh8.5 20 | instrumentTclx 1 21 | appScript /mma/users/benj/proj/tcl-debug/TclProDebug/tests/simple_tcl_app/main.tcl 22 | appInterpList {/inf10xl_user1/infrastructure_release/vdev_build/core/third-party_LINUX_X86/tcl-8.5.16/64/bin/tclsh8.5 /usr/bin/tclsh /usr/bin/tclsh8.5 /usr/bin/wish /usr/bin/wish8.5} 23 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/aes/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded aes 1.2.1 [list source [file join $dir aes.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/amazon-s3/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -- 2 | # Copyright (c) 2006 Darren New 3 | # This is for the Amazon S3 web service packages. 4 | 5 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 6 | 7 | package ifneeded xsxp 1.0 [list source [file join $dir xsxp.tcl]] 8 | package ifneeded S3 1.0.3 [list source [file join $dir S3.tcl]] 9 | 10 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/asn/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | 3 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 4 | package ifneeded asn 0.8.4 [list source [file join $dir asn.tcl]] 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/base32/base32_tcl.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # This code is hereby put into the public domain. 3 | # ### ### ### ######### ######### ######### 4 | ## Overview 5 | # Base32 encoding and decoding of small strings. 6 | 7 | # ### ### ### ######### ######### ######### 8 | ## Notes 9 | 10 | # A binary string is split into groups of 5 bits (2^5 == 32), and each 11 | # group is converted into a printable character as is specified in RFC 12 | # 3548. 13 | 14 | # ### ### ### ######### ######### ######### 15 | ## Requisites 16 | 17 | package require base32::core 18 | namespace eval ::base32 {} 19 | 20 | # ### ### ### ######### ######### ######### 21 | ## API & Implementation 22 | 23 | proc ::base32::tcl_encode {bitstring} { 24 | variable forward 25 | 26 | binary scan $bitstring B* bits 27 | set len [string length $bits] 28 | set rem [expr {$len % 5}] 29 | if {$rem} {append bits =/$rem} 30 | #puts "($bitstring) => <$bits>" 31 | 32 | return [string map $forward $bits] 33 | } 34 | 35 | proc ::base32::tcl_decode {estring} { 36 | variable backward 37 | variable invalid 38 | 39 | if {![core::valid $estring $invalid msg]} { 40 | return -code error $msg 41 | } 42 | #puts "I<$estring>" 43 | #puts "M<[string map $backward $estring]>" 44 | 45 | return [binary format B* [string map $backward [string toupper $estring]]] 46 | } 47 | 48 | # ### ### ### ######### ######### ######### 49 | ## Data structures 50 | 51 | namespace eval ::base32 { 52 | # Initialize the maps 53 | variable forward 54 | variable backward 55 | variable invalid 56 | 57 | core::define { 58 | 0 A 9 J 18 S 27 3 59 | 1 B 10 K 19 T 28 4 60 | 2 C 11 L 20 U 29 5 61 | 3 D 12 M 21 V 30 6 62 | 4 E 13 N 22 W 31 7 63 | 5 F 14 O 23 X 64 | 6 G 15 P 24 Y 65 | 7 H 16 Q 25 Z 66 | 8 I 17 R 26 2 67 | } forward backward invalid ; # {} 68 | # puts ///$forward/// 69 | # puts ///$backward/// 70 | } 71 | 72 | # ### ### ### ######### ######### ######### 73 | ## Ok 74 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/base32/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} return 2 | package ifneeded base32 0.1 [list source [file join $dir base32.tcl]] 3 | package ifneeded base32::hex 0.1 [list source [file join $dir base32hex.tcl]] 4 | package ifneeded base32::core 0.1 [list source [file join $dir base32core.tcl]] 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/base64/base64c.tcl: -------------------------------------------------------------------------------- 1 | # base64c - Copyright (C) 2003 Pat Thoyts 2 | # 3 | # This package is a place-holder for the critcl enhanced code present in 4 | # the tcllib base64 module. 5 | # 6 | # Normally this code will become part of the tcllibc library. 7 | # 8 | 9 | # @sak notprovided base64c 10 | package require critcl 11 | package provide base64c 0.1.0 12 | 13 | namespace eval ::base64c { 14 | variable base64c_rcsid {$Id$} 15 | 16 | critcl::ccode { 17 | /* no code required in this file */ 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/base64/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded base64 2.4.2 [list source [file join $dir base64.tcl]] 3 | package ifneeded uuencode 1.1.5 [list source [file join $dir uuencode.tcl]] 4 | package ifneeded yencode 1.1.3 [list source [file join $dir yencode.tcl]] 5 | package ifneeded ascii85 1.0 [list source [file join $dir ascii85.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/bee/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | 3 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 4 | package ifneeded bee 0.1 [list source [file join $dir bee.tcl]] 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/bench/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} { 2 | return 3 | } 4 | package ifneeded bench 0.4 [list source [file join $dir bench.tcl]] 5 | package ifneeded bench::out::text 0.1.2 [list source [file join $dir bench_wtext.tcl]] 6 | package ifneeded bench::out::csv 0.1.2 [list source [file join $dir bench_wcsv.tcl]] 7 | package ifneeded bench::in 0.1 [list source [file join $dir bench_read.tcl]] 8 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/bibtex/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded bibtex 0.6 [list source [file join $dir bibtex.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/blowfish/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded blowfish 1.0.4 [list source [file join $dir blowfish.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/cache/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded cache::async 0.3 [list source [file join $dir async.tcl]] 3 | 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/clock/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | package ifneeded clock::rfc2822 0.1 [list source [file join $dir rfc2822.tcl]] 3 | package ifneeded clock::iso8601 0.1 [list source [file join $dir iso8601.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/cmdline/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded cmdline 1.5 [list source [file join $dir cmdline.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/comm/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 2 | package ifneeded comm 4.6.3.1 [list source [file join $dir comm.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/control/control.tcl: -------------------------------------------------------------------------------- 1 | # control.tcl -- 2 | # 3 | # This is the main package provide script for the package 4 | # "control". It provides commands that govern the flow of 5 | # control of a program. 6 | 7 | package require Tcl 8.2 8 | 9 | namespace eval ::control { 10 | namespace export assert control do no-op rswitch 11 | 12 | proc control {command args} { 13 | # Need to add error handling here 14 | namespace eval [list $command] $args 15 | } 16 | 17 | # Set up for auto-loading the commands 18 | variable home [file join [pwd] [file dirname [info script]]] 19 | if {[lsearch -exact $::auto_path $home] == -1} { 20 | lappend ::auto_path $home 21 | } 22 | 23 | package provide [namespace tail [namespace current]] 0.1.3 24 | } 25 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/control/no-op.tcl: -------------------------------------------------------------------------------- 1 | # no-op.tcl -- 2 | # 3 | # The [no-op] command of the package "control". 4 | # It accepts any number of arguments and does nothing. 5 | # It returns an empty string. 6 | # 7 | # RCS: @(#) $Id$ 8 | 9 | namespace eval ::control { 10 | 11 | proc no-op args {} 12 | 13 | } 14 | 15 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/control/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded control 0.1.3 [list source [file join $dir control.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/control/tclIndex: -------------------------------------------------------------------------------- 1 | # Tcl autoload index file, version 2.0 2 | # This file is generated by the "auto_mkindex" command 3 | # and sourced to set up indexing information for one or 4 | # more commands. Typically each line is a command that 5 | # sets an element in the auto_index array, where the 6 | # element name is the name of a command and the value is 7 | # a script that loads the command. 8 | 9 | set auto_index(::control::CommandAsCaller) [list source [file join $dir ascaller.tcl]] 10 | set auto_index(::control::BodyAsCaller) [list source [file join $dir ascaller.tcl]] 11 | set auto_index(::control::ErrorInfoAsCaller) [list source [file join $dir ascaller.tcl]] 12 | set auto_index(::control::assert::EnabledAssert) [list source [file join $dir assert.tcl]] 13 | set auto_index(::control::assert::enabled) [list source [file join $dir assert.tcl]] 14 | set auto_index(::control::assert::callback) [list source [file join $dir assert.tcl]] 15 | set auto_index(::control::AssertSwitch) [list source [file join $dir assert.tcl]] 16 | set auto_index(::control::assert) [list source [file join $dir assert.tcl]] 17 | set auto_index(::control::do) [list source [file join $dir do.tcl]] 18 | set auto_index(::control::no-op) [list source [file join $dir no-op.tcl]] 19 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/coroutine/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 2 | package ifneeded coroutine 1.2 [list source [file join $dir coroutine.tcl]] 3 | package ifneeded coroutine::auto 1.1.3 [list source [file join $dir coro_auto.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/counter/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 12 | package ifneeded counter 2.0.4 [list source [file join $dir counter.tcl]] 13 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/crc/crcc.tcl: -------------------------------------------------------------------------------- 1 | # crcc.tcl - Copyright (C) 2002 Pat Thoyts 2 | # 3 | # Place holder for building a critcl C module for this tcllib module. 4 | # 5 | # ------------------------------------------------------------------------- 6 | # See the file "license.terms" for information on usage and redistribution 7 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 8 | # ------------------------------------------------------------------------- 9 | # $Id$ 10 | 11 | package require critcl 12 | 13 | namespace eval ::crc { 14 | variable rcsid {$Id$} 15 | 16 | critcl::ccode { 17 | /* no code required in this file */ 18 | } 19 | } 20 | 21 | # @sak notprovided crcc 22 | package provide crcc 1.0.0 -------------------------------------------------------------------------------- /vendor/tcllib1.19/crc/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded cksum 1.1.4 [list source [file join $dir cksum.tcl]] 3 | package ifneeded crc16 1.1.3 [list source [file join $dir crc16.tcl]] 4 | package ifneeded crc32 1.3.2 [list source [file join $dir crc32.tcl]] 5 | package ifneeded sum 1.1.2 [list source [file join $dir sum.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/cron/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 2 | package ifneeded cron 2.1 [list source [file join $dir cron.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/csv/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded csv 0.8.1 [list source [file join $dir csv.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/debug/heartbeat.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -* 2 | # Debug -- Heartbeat. Track operation of Tcl's eventloop. 3 | # -- Colin McCormack / originally Wub server utilities 4 | 5 | # # ## ### ##### ######## ############# ##################### 6 | ## Requisites 7 | 8 | package require Tcl 8.5 9 | package require debug 10 | 11 | namespace eval ::debug { 12 | namespace export heartbeat 13 | namespace ensemble create 14 | } 15 | 16 | # # ## ### ##### ######## ############# ##################### 17 | ## API & Implementation 18 | 19 | proc ::debug::heartbeat {{delta 500}} { 20 | variable duration $delta 21 | variable timer 22 | 23 | if {$duration > 0} { 24 | # stop a previous heartbeat before starting the next 25 | catch { after cancel $timer } 26 | on heartbeat 27 | every $duration { 28 | debug.heartbeat {[debug::pulse]} 29 | } 30 | } else { 31 | catch { after cancel $timer } 32 | off heartbeat 33 | } 34 | } 35 | 36 | proc ::debug::every {ms body} { 37 | eval $body 38 | variable timer [after $ms [info level 0]] 39 | return 40 | } 41 | 42 | proc ::debug::pulse {} { 43 | variable duration 44 | variable hbtimer 45 | variable heartbeat 46 | 47 | set now [::tcl::clock::milliseconds] 48 | set diff [expr {$now - $hbtimer - $duration}] 49 | 50 | set hbtimer $now 51 | 52 | return [list [incr heartbeat] $diff] 53 | } 54 | 55 | # # ## ### ##### ######## ############# ##################### 56 | 57 | namespace eval ::debug { 58 | variable duration 0 ; # milliseconds between heart-beats 59 | variable heartbeat 0 ; # beat counter 60 | variable hbtimer [::tcl::clock::milliseconds] 61 | variable timer 62 | } 63 | 64 | # # ## ### ##### ######## ############# ##################### 65 | ## Ready 66 | 67 | package provide debug::heartbeat 1 68 | return 69 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/debug/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package require Tcl] 8.5]} return 2 | package ifneeded debug 1.0.6 [list source [file join $dir debug.tcl]] 3 | package ifneeded debug::heartbeat 1 [list source [file join $dir heartbeat.tcl]] 4 | package ifneeded debug::timestamp 1 [list source [file join $dir timestamp.tcl]] 5 | package ifneeded debug::caller 1.1 [list source [file join $dir caller.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/debug/timestamp.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -* 2 | # Debug -- Timestamps. 3 | # -- Colin McCormack / originally Wub server utilities 4 | # 5 | # Generate timestamps for debug messages. 6 | # The provided commands are for use in prefixes and headers. 7 | 8 | # # ## ### ##### ######## ############# ##################### 9 | ## Requisites 10 | 11 | package require Tcl 8.5 12 | package require debug 13 | 14 | namespace eval ::debug { 15 | namespace export timestamp 16 | namespace ensemble create 17 | } 18 | 19 | # # ## ### ##### ######## ############# ##################### 20 | ## API & Implementation 21 | 22 | proc ::debug::timestamp {} { 23 | variable timestamp::delta 24 | variable timestamp::baseline 25 | 26 | set now [::tcl::clock::milliseconds] 27 | if {$delta} { 28 | set time "${now}-[expr {$now - $delta}]mS " 29 | } else { 30 | set time "${now}mS " 31 | } 32 | set delta $now 33 | return $time 34 | } 35 | 36 | # # ## ### ##### ######## ############# ##################### 37 | 38 | namespace eval ::debug::timestamp { 39 | variable delta 0 40 | variable baseline [::tcl::clock::milliseconds] 41 | } 42 | 43 | # # ## ### ##### ######## ############# ##################### 44 | ## Ready 45 | 46 | package provide debug::timestamp 1 47 | return 48 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/defer/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.6]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded defer 1 [list source [file join $dir defer.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/des/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded des 1.1.0 [list source [file join $dir des.tcl]] 6 | package ifneeded tclDES 1.0.0 [list source [file join $dir tcldes.tcl]] 7 | package ifneeded tclDESjr 1.0.0 [list source [file join $dir tcldesjr.tcl]] 8 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/dicttool/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded dicttool 1.1 [list source [file join $dir dicttool.tcl]] 12 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/dns/msgs/en.msg: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | package require msgcat 3 | namespace import ::msgcat::* 4 | 5 | mcset en "option %s not supported" "option %s not supported" 6 | mcset en "option %s not supported" "option %s not supported" 7 | mcset en "not an ip mask: %s" "not an ip mask: %s" 8 | mcset en "ip host could not be found in %s" "ip host could not be found in %s" 9 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/dns/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl - 2 | # 3 | # $Id$ 4 | 5 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 6 | package ifneeded dns 1.4.0 [list source [file join $dir dns.tcl]] 7 | package ifneeded resolv 1.0.3 [list source [file join $dir resolv.tcl]] 8 | package ifneeded ip 1.4 [list source [file join $dir ip.tcl]] 9 | package ifneeded spf 1.1.1 [list source [file join $dir spf.tcl]] 10 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/docstrip/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | ## 2 | ## This is the file `pkgIndex.tcl', 3 | ## generated with the SAK utility 4 | ## (sak docstrip/regen). 5 | ## 6 | ## The original source files were: 7 | ## 8 | ## tcldocstrip.dtx (with options: `idx') 9 | ## 10 | ## In other words: 11 | ## ************************************** 12 | ## * This Source is not the True Source * 13 | ## ************************************** 14 | ## the true source is the file from which this one was generated. 15 | ## 16 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 17 | package ifneeded docstrip 1.2\ 18 | [list source [file join $dir docstrip.tcl]] 19 | package ifneeded docstrip::util 1.3.1\ 20 | [list source [file join $dir docstrip_util.tcl]] 21 | ## 22 | ## 23 | ## End of file `pkgIndex.tcl'. -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/api.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # api.tcl -- API placeholders 3 | # 4 | # Copyright (c) 2001 Andreas Kupries 5 | # Copyright (c) 2002 Andreas Kupries 6 | # Copyright (c) 2003 Andreas Kupries 7 | 8 | ################################################################ 9 | # This file defines all commands expected from a formatter by the 10 | # doctools library. It is loaded into the formatter interpreter before 11 | # the code for a particular format is loaded. All commands defined 12 | # here return an error. This ensures the generation of errors if a 13 | # format forgets to define commands in the API. 14 | 15 | ################################################################ 16 | # Here it comes 17 | 18 | foreach __cmd { 19 | initialize shutdown setup numpasses listvariables varset 20 | 21 | manpage_begin moddesc titledesc manpage_end require description 22 | section para list_begin list_end lst_item call bullet enum see_also 23 | keywords example example_begin example_end nl arg cmd opt emph strong 24 | comment sectref syscmd method option widget fun type package class var 25 | file uri term const copyright category 26 | } { 27 | proc fmt_$__cmd {args} [list return "return -code error \"Unimplemented API command $__cmd\""] 28 | } 29 | unset __cmd 30 | 31 | ################################################################ 32 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/api_idx.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # api_idx.tcl -- API placeholders 3 | # 4 | # Copyright (c) 2003 Andreas Kupries 5 | 6 | ################################################################ 7 | # This file defines all commands expected from a docidx formatter by the 8 | # doctools library. It is loaded into the formatter interpreter before 9 | # the code for a particular docidx format is loaded. All commands defined 10 | # here return an error. This ensures the generation of errors if a 11 | # format forgets to define commands in the API. 12 | 13 | ################################################################ 14 | # Here it comes 15 | 16 | foreach __cmd { 17 | idx_initialize idx_shutdown idx_setup idx_numpasses 18 | idx_listvariables idx_varset 19 | fmt_index_begin fmt_index_end fmt_key fmt_manpage fmt_url 20 | fmt_comment fmt_plain_text 21 | } { 22 | proc $__cmd {args} [list return "return -code error \"Unimplemented API command $__cmd\""] 23 | } 24 | unset __cmd 25 | 26 | ################################################################ 27 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/api_toc.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # api_toc.tcl -- API placeholders 3 | # 4 | # Copyright (c) 2003 Andreas Kupries 5 | 6 | ################################################################ 7 | # This file defines all commands expected from a doctoc formatter by the 8 | # doctools library. It is loaded into the formatter interpreter before 9 | # the code for a particular doctoc format is loaded. All commands defined 10 | # here return an error. This ensures the generation of errors if a 11 | # format forgets to define commands in the API. 12 | 13 | ################################################################ 14 | # Here it comes 15 | 16 | foreach __cmd { 17 | toc_initialize toc_shutdown toc_setup toc_numpasses 18 | toc_listvariables toc_varset 19 | fmt_toc_begin fmt_toc_end fmt_division_start fmt_division_end 20 | fmt_item fmt_comment fmt_plain_text 21 | } { 22 | proc $__cmd {args} [list return "return -code error \"Unimplemented API command $__cmd\""] 23 | } 24 | unset __cmd 25 | 26 | ################################################################ 27 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/mpformats/_idx_common.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # _idx_common.tcl 4 | # 5 | # (c) 2003 Andreas Kupries 6 | 7 | ################################################################ 8 | # The code here contains general definitions for API functions and 9 | # state information. They are used by several formatters to simplify 10 | # their own code. 11 | 12 | proc idx_initialize {} {return} 13 | proc idx_shutdown {} {return} 14 | proc idx_numpasses {} {return 1} 15 | proc idx_postprocess {text} {return $text} 16 | proc idx_setup {n} {return} 17 | proc idx_listvariables {} {return {}} 18 | proc idx_varset {varname text} {return} 19 | 20 | 21 | proc fmt_plain_text {text} {return $text} 22 | 23 | ################################################################ 24 | # Functions made available to the formatter to access the common 25 | # state managed here. 26 | 27 | proc c_provenance {} { 28 | return "Generated by tcllib/doctools/idx with format '[dt_format]'" 29 | } 30 | 31 | ################################################################ 32 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/mpformats/_toc_common.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # _toc_common.tcl 4 | # 5 | # (c) 2003 Andreas Kupries 6 | 7 | ################################################################ 8 | # The code here contains general definitions for API functions and 9 | # state information. They are used by several formatters to simplify 10 | # their own code. 11 | 12 | proc toc_initialize {} {return} 13 | proc toc_shutdown {} {return} 14 | proc toc_numpasses {} {return 1} 15 | proc toc_postprocess {text} {return $text} 16 | proc toc_setup {n} {return} 17 | proc toc_listvariables {} {return {}} 18 | proc toc_varset {varname text} {return} 19 | 20 | 21 | proc fmt_plain_text {text} {return $text} 22 | 23 | ################################################################ 24 | # Functions made available to the formatter to access the common 25 | # state managed here. 26 | 27 | proc c_provenance {} { 28 | return "Generated by tcllib/doctools/toc with format '[dt_format]'" 29 | } 30 | 31 | ################################################################ 32 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/mpformats/fmt.desc: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # -- Extraction of meta information from a manpage (package 4 | # description), and associating it with package names. 5 | # 6 | # Copyright (c) 2005 Andreas Kupries 7 | # 8 | ################################################################ 9 | 10 | # Take the null format as a base and extend it a bit. 11 | dt_source fmt.null 12 | 13 | global data 14 | array set data {} 15 | 16 | proc fmt_numpasses {} {return 1} 17 | proc fmt_postprocess {text} { 18 | global data 19 | 20 | # Title in required packages => This is the sole package. 21 | # Otherwise dump everything required. 22 | 23 | if {[lsearch -exact $data(require) $data(title)] >= 0} { 24 | return [list $data(title) $data(shortdesc) $data(desc)] 25 | } else { 26 | set res {} 27 | foreach p $data(require) { 28 | lappend res [list $p $data(shortdesc) $data(desc)] 29 | } 30 | return [join $res \n] 31 | } 32 | } 33 | proc fmt_plain_text {text} {return ""} 34 | proc fmt_setup {n} {return} 35 | 36 | proc fmt_manpage_begin {title section version} { 37 | global data 38 | set data(title) $title 39 | set data(require) {} 40 | set data(desc) "" 41 | set data(shortdesc) "" 42 | return 43 | } 44 | 45 | proc fmt_moddesc {desc} {global data ; set data(shortdesc) $desc} 46 | proc fmt_titledesc {desc} {global data ; set data(desc) $desc} 47 | proc fmt_require {p {v {}}} {global data ; lappend data(require) $p ; return} 48 | 49 | ################################################################ 50 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/mpformats/fmt.list: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # -- Extraction of basic meta information (title section version) from a manpage. 4 | # 5 | # Copyright (c) 2001-2002 Andreas Kupries 6 | # Copyright (c) 2003 Andreas Kupries 7 | # 8 | ################################################################ 9 | 10 | # Take the null format as a base and extend it a bit. 11 | dt_source fmt.null 12 | 13 | global data 14 | array set data {} 15 | 16 | proc fmt_numpasses {} {return 1} 17 | proc fmt_postprocess {text} { 18 | global data 19 | foreach key {seealso keywords} { 20 | array set _ {} 21 | foreach ref $data($key) {set _($ref) .} 22 | set data($key) [array names _] 23 | unset _ 24 | } 25 | return [list manpage [array get data]]\n 26 | } 27 | proc fmt_plain_text {text} {return ""} 28 | proc fmt_setup {n} {return} 29 | 30 | proc fmt_manpage_begin {title section version} { 31 | global data 32 | set data(title) $title 33 | set data(section) $section 34 | set data(version) $version 35 | set data(file) [dt_file] 36 | set data(fid) [dt_fileid] 37 | set data(module) [dt_module] 38 | set data(desc) "" 39 | set data(shortdesc) "" 40 | set data(keywords) [list] 41 | set data(seealso) [list] 42 | set data(category) "" 43 | return 44 | } 45 | 46 | proc fmt_moddesc {desc} {global data ; set data(shortdesc) $desc} 47 | proc fmt_titledesc {desc} {global data ; set data(desc) $desc} 48 | proc fmt_keywords {args} {global data ; foreach ref $args {lappend data(keywords) $ref} ; return} 49 | proc fmt_see_also {args} {global data ; foreach ref $args {lappend data(seealso) $ref} ; return} 50 | proc fmt_category {text} {global data ; set data(category) $text ; return} 51 | 52 | ################################################################ 53 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/mpformats/fmt.null: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # -- Null format 4 | # 5 | # Copyright (c) 2001-2002 Andreas Kupries 6 | # Copyright (c) 2003 Andreas Kupries 7 | 8 | # This is a null format which does return no output at all. 9 | 10 | ################################################################ 11 | 12 | proc fmt_initialize {} {return} 13 | proc fmt_shutdown {} {return} 14 | proc fmt_numpasses {} {return 1} 15 | proc fmt_postprocess {text} {return ""} 16 | proc fmt_plain_text {text} {return ""} 17 | proc fmt_setup {n} {return} 18 | 19 | foreach p { 20 | manpage_begin moddesc titledesc manpage_end require description 21 | section para list_begin list_end lst_item call usage bullet enum 22 | arg_def cmd_def opt_def tkoption_def see_also keywords example 23 | example_begin example_end nl arg cmd opt emph comment image mdash 24 | sectref syscmd method option widget fun type package class var 25 | file uri term const copyright namespace subsection category ndash 26 | } { 27 | proc fmt_$p {args} {return ""} 28 | } 29 | 30 | ################################################################ 31 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/mpformats/idx.null: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # -- Null format (docidx) 4 | # 5 | # Copyright (c) 2003 Andreas Kupries 6 | 7 | # This is a null format which does return no output at all. 8 | 9 | ################################################################ 10 | 11 | proc idx_initialize {} {return} 12 | proc idx_shutdown {} {return} 13 | proc idx_numpasses {} {return 1} 14 | proc idx_postprocess {text} {return ""} 15 | proc idx_setup {n} {return} 16 | 17 | foreach p { 18 | index_begin index_end key manpage url comment plain_text 19 | } { 20 | proc fmt_$p {args} {return ""} 21 | } 22 | 23 | ################################################################ 24 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/mpformats/toc.null: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # -- Null format (doctoc) 4 | # 5 | # Copyright (c) 2003 Andreas Kupries 6 | 7 | # This is a null format which does return no output at all. 8 | 9 | ################################################################ 10 | 11 | proc toc_initialize {} {return} 12 | proc toc_shutdown {} {return} 13 | proc toc_numpasses {} {return 1} 14 | proc toc_postprocess {text} {return ""} 15 | proc toc_setup {n} {return} 16 | 17 | foreach p { 18 | toc_begin toc_end item division_start division_end comment plain_text 19 | } { 20 | proc fmt_$p {args} {return ""} 21 | } 22 | 23 | ################################################################ 24 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/mpformats/toc.tmml: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # $Id: toc.tmml,v 1.6 2005/09/28 04:51:19 andreas_kupries Exp $ 4 | # 5 | # Engine to convert a doctoc document into TMML. 6 | # 7 | # Copyright (c) 2003 Andreas Kupries 8 | # Freely redistributable. 9 | # 10 | # See also 11 | # 12 | ###################################################################### 13 | 14 | dt_source _toc_common.tcl 15 | dt_source _xml.tcl 16 | 17 | ###################################################################### 18 | # Conversion specification. 19 | # 20 | # One-pass processing. 21 | 22 | rename toc_postprocess {} 23 | rename fmt_postprocess toc_postprocess 24 | 25 | proc fmt_plain_text {text} {if {$text != {}} {return \n} else {return {}}} 26 | 27 | ################################################################ 28 | ## Backend for TMML markup 29 | 30 | proc fmt_toc_begin {label title} {sequence [start manual package $label] [wrap $title title]} 31 | proc fmt_toc_end {} {end manual} 32 | proc fmt_division_start {title symfile} {sequence [start division] [wrap $text title]} 33 | proc fmt_division_end {} {end division} 34 | proc fmt_item {file label desc} {emptyElement subdoc href [dt_fmap $file]} 35 | proc fmt_comment {text} {xmlComment $text} 36 | 37 | ################################################################ 38 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded doctools 1.4.21 [list source [file join $dir doctools.tcl]] 3 | package ifneeded doctools::toc 1.1.6 [list source [file join $dir doctoc.tcl]] 4 | package ifneeded doctools::idx 1.0.7 [list source [file join $dir docidx.tcl]] 5 | package ifneeded doctools::cvs 1 [list source [file join $dir cvs.tcl]] 6 | package ifneeded doctools::changelog 1.1 [list source [file join $dir changelog.tcl]] 7 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2base/msgcat.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Copyright (c) 2009 Andreas Kupries 3 | 4 | # L10N, I18N 5 | 6 | # Support package. Handling of message catalogs within the various 7 | # doctools document processing packages. Contrary to the regular 8 | # msgcat package here message catalogs are equated with packages. This 9 | # makes their use easier, as the user does not have to know the 10 | # location of the message catalogs. Locating a desired catalog is 11 | # handled through Tcl's regular package management. 12 | 13 | # To this end this package provides a command analogous to 14 | # 'msgcat::load', just replacing direct file access with package 15 | # loading. This is 'doctools::msgcat::init'. 16 | 17 | # # ## ### ##### ######## ############# ##################### 18 | ## Requirements 19 | 20 | package require Tcl 8.4 ; # Required Core 21 | package require msgcat ; # Fondation catalog database 22 | 23 | namespace eval ::doctools::msgcat {} 24 | 25 | # # ## ### ##### ######## ############# ##################### 26 | ## Overide catalog unknown handler to report missing strings 27 | ## as fatal problem. DEBUG only. 28 | 29 | if 0 { 30 | proc ::msgcat::mcunknown {locale code} { 31 | return "unknown error code \"$code\" (for locale $locale)" 32 | } 33 | } 34 | 35 | # # ## ### ##### ######## ############# ##################### 36 | ## Public API 37 | 38 | proc ::doctools::msgcat::init {prefix} { 39 | set matches 0 40 | foreach p [msgcat::mcpreferences] { 41 | set pkg doctools::msgcat::${prefix}::${p} 42 | if {![catch { 43 | package require $pkg 44 | }]} { 45 | incr matches 46 | } 47 | } 48 | return $matches 49 | } 50 | 51 | # # ## ### ##### ######## ############# ##################### 52 | ## Ready 53 | 54 | namespace eval ::doctools::msgcat { 55 | namespace export init 56 | } 57 | 58 | package provide doctools::msgcat 0.1 59 | return 60 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2base/paths.tcl: -------------------------------------------------------------------------------- 1 | # docidx.tcl -- 2 | # 3 | # Generic path list management, for use by import management. 4 | # 5 | # Copyright (c) 2009 Andreas Kupries 6 | # 7 | # See the file "license.terms" for information on usage and redistribution 8 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 9 | # 10 | # RCS: @(#) $Id$ 11 | 12 | # Each object manages a list of paths. 13 | 14 | # ### ### ### ######### ######### ######### 15 | ## Requisites 16 | 17 | package require Tcl 8.4 18 | package require snit 19 | 20 | # ### ### ### ######### ######### ######### 21 | ## API 22 | 23 | snit::type ::doctools::paths { 24 | 25 | # ### ### ### ######### ######### ######### 26 | ## Options :: None 27 | 28 | # ### ### ### ######### ######### ######### 29 | ## Creation, destruction 30 | 31 | # Default constructor. 32 | # Default destructor. 33 | 34 | # ### ### ### ######### ######### ######### 35 | ## Methods :: Querying and manipulating the list of paths. 36 | 37 | method paths {} { 38 | return $mypaths 39 | } 40 | 41 | method add {path} { 42 | set pos [lsearch $mypaths $path] 43 | if {$pos >= 0 } return 44 | lappend mypaths $path 45 | return 46 | } 47 | 48 | method remove {path} { 49 | set pos [lsearch $mypaths $path] 50 | if {$pos < 0} return 51 | set mypaths [lreplace $mypaths $pos $pos] 52 | return 53 | } 54 | 55 | method clear {} { 56 | set mypaths {} 57 | return 58 | } 59 | 60 | # ### ### ### ######### ######### ######### 61 | ## Internal methods :: None 62 | 63 | # ### ### ### ######### ######### ######### 64 | ## State :: List of paths. 65 | 66 | variable mypaths {} 67 | 68 | ## 69 | # ### ### ### ######### ######### ######### 70 | } 71 | 72 | # ### ### ### ######### ######### ######### 73 | ## Ready 74 | 75 | package provide doctools::paths 0.1 76 | return 77 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2base/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | 3 | # Packages for the doctools {idx,toc,doc} v2 implementation 4 | # (still v1.1 doc{idx,toc} languages). 5 | 6 | # Supporting packages 7 | # - Handling configuration variables, and include paths. 8 | # - Handling text generation, the nroff man.macros definitions, 9 | # HTML/XML generation, and the default CSS style 10 | # - Handling of message catalogs as packages. 11 | # - Recursive descent parser for Tcl strings (as expected by 'subst -novariables'). 12 | 13 | package ifneeded doctools::config 0.1 [list source [file join $dir config.tcl]] 14 | package ifneeded doctools::paths 0.1 [list source [file join $dir paths.tcl]] 15 | package ifneeded doctools::text 0.1 [list source [file join $dir text.tcl]] 16 | package ifneeded doctools::nroff::man_macros 0.1 [list source [file join $dir nroff_manmacros.tcl]] 17 | package ifneeded doctools::html 0.1 [list source [file join $dir html.tcl]] 18 | package ifneeded doctools::html::cssdefaults 0.1 [list source [file join $dir html_cssdefaults.tcl]] 19 | package ifneeded doctools::msgcat 0.1 [list source [file join $dir msgcat.tcl]] 20 | package ifneeded doctools::tcl::parse 0.1 [list source [file join $dir tcl_parse.tcl]] 21 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2idx/msgcat_c.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | package require msgcat 3 | namespace import ::msgcat::* 4 | 5 | mcset c docidx/char/syntax {Bad character in string} 6 | mcset c docidx/cmd/illegal {Illegal command "%1$s", not a docidx command} ; # Details: cmdname 7 | mcset c docidx/cmd/nested {Illegal use of "%1$s" as argument of other command} ; # Details: cmdname 8 | mcset c docidx/cmd/toomanyargs {Too many args for "%1$s", at most %2$d allowed} ; # Details: cmdname, max#args 9 | mcset c docidx/cmd/wrongargs {Wrong#args for "%1$s", need at least %2$d} ; # Details: cmdname, min#args 10 | mcset c docidx/eof/syntax {Bad } 11 | mcset c docidx/include/path/notfound {Include file "%1$s" not found} ; # Details: file name 12 | mcset c docidx/include/read-failed {Unable to read include file "%1$s", %2$s} ; # Details: file name and error msg 13 | mcset c docidx/include/syntax {Errors in include file "%1$s"} 14 | mcset c docidx/plaintext {Plain text beyond whitespace is not allowed} 15 | mcset c docidx/vset/varname/unknown {Unknown variable "%1$s"} ; # Details: variable name 16 | 17 | mcset c docidx/index_begin/missing {Expected [index_begin], not found} 18 | mcset c docidx/index_begin/syntax {Unexpected [index_begin], not allowed here} 19 | mcset c docidx/index_end/missing {Expected [index_end], not found} 20 | mcset c docidx/index_end/syntax {Unexpected [index_end], not allowed here} 21 | mcset c docidx/key/missing {Expected [key], not found} 22 | mcset c docidx/key/syntax {Unexpected [key], not allowed here} 23 | 24 | mcset c docidx/ref/redef {Bad redefinition of reference "%1$s", first (%2$s "%3$s"), now (%4$s "%5$s")} 25 | 26 | package provide doctools::msgcat::idx::c 0.1 27 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2idx/msgcat_de.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | package require msgcat 3 | namespace import ::msgcat::* 4 | 5 | mcset de docidx/char/syntax {Unerwartetes Zeichen im String} 6 | mcset de docidx/cmd/illegal {Illegaler Befehl "%1$s", ist kein docidx Befehl} ; # Details: cmdname 7 | mcset de docidx/cmd/nested {Illegale Nutzung von "%1$s" als Argument eines anderen Befehles} ; # Details: cmdname 8 | mcset de docidx/cmd/toomanyargs {Zu viele Argumente fuer "%1$s", hoechstens %2$d moeglich} ; # Details: cmdname, max#args 9 | mcset de docidx/cmd/wrongargs {Zu wenig Argumente fuer "%1$s", mindestens %2$d notwendig} ; # Details: cmdname, min#args 10 | mcset de docidx/eof/syntax {Unerwartetes Ende der Datei} 11 | mcset de docidx/include/path/notfound {Include-Datei "%1$s" nicht gefunden} ; # Details: file name 12 | mcset de docidx/include/read-failed {Konnte Include-Datei "%1$s" nicht lesen: %2$s} ; # Details: file name and error msg 13 | mcset de docidx/include/syntax {Fehler in der Include-Datei "%1$s"} 14 | mcset de docidx/plaintext {Normaler Text ist (mit Ausnahme von reinem Leerraum) nicht erlaubt} 15 | mcset de docidx/vset/varname/unknown {Unbekannte Variable "%1$s"} ; # Details: variable name 16 | 17 | mcset de docidx/index_begin/missing {Erwarteter Befehl [index_begin] nicht vorhanden} 18 | mcset de docidx/index_begin/syntax {[index_begin] ist hier nicht erlaubt} 19 | mcset de docidx/index_end/missing {Erwarteter Befehl [index_end] nicht vorhanden} 20 | mcset de docidx/index_end/syntax {[index_end] ist hier nicht erlaubt} 21 | mcset de docidx/key/missing {Erwarteter Befehl [key] nicht vorhanden} 22 | mcset de docidx/key/syntax {[key] ist hier nicht erlaubt} 23 | 24 | mcset de docidx/ref/redef {Fehlerhafte Verwendung der Referenz "%1$s", zuerst (%2$s "%3$s"), jetzt (%4$s "%5$s")} 25 | 26 | package provide doctools::msgcat::idx::de 0.1 27 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2idx/msgcat_en.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | package require msgcat 3 | namespace import ::msgcat::* 4 | 5 | mcset en docidx/char/syntax {Bad character in string} 6 | mcset en docidx/cmd/illegal {Illegal command "%1$s", not a docidx command} ; # Details: cmdname 7 | mcset en docidx/cmd/nested {Illegal use of "%1$s" as argument of other command} ; # Details: cmdname 8 | mcset en docidx/cmd/toomanyargs {Too many args for "%1$s", at most %2$d allowed} ; # Details: cmdname, max#args 9 | mcset en docidx/cmd/wrongargs {Wrong#args for "%1$s", need at least %2$d} ; # Details: cmdname, min#args 10 | mcset en docidx/eof/syntax {Bad } 11 | mcset en docidx/include/path/notfound {Include file "%1$s" not found} ; # Details: file name 12 | mcset en docidx/include/read-failed {Unable to read include file "%1$s", %2$s} ; # Details: file name and error msg 13 | mcset en docidx/include/syntax {Errors in include file "%1$s"} 14 | mcset en docidx/plaintext {Plain text beyond whitespace is not allowed} 15 | mcset en docidx/vset/varname/unknown {Unknown variable "%1$s"} ; # Details: variable name 16 | 17 | mcset en docidx/index_begin/missing {Expected [index_begin], not found} 18 | mcset en docidx/index_begin/syntax {Unexpected [index_begin], not allowed here} 19 | mcset en docidx/index_end/missing {Expected [index_end], not found} 20 | mcset en docidx/index_end/syntax {Unexpected [index_end], not allowed here} 21 | mcset en docidx/key/missing {Expected [key], not found} 22 | mcset en docidx/key/syntax {Unexpected [key], not allowed here} 23 | 24 | mcset en docidx/ref/redef {Bad redefinition of reference "%1$s", first (%2$s "%3$s"), now (%4$s "%5$s")} 25 | 26 | package provide doctools::msgcat::idx::en 0.1 27 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2idx/msgcat_fr.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | package require msgcat 3 | namespace import ::msgcat::* 4 | 5 | # The texts are in english because I have do not have enough knowledge 6 | # of french to make the translation. 7 | 8 | mcset fr docidx/char/syntax {Bad character in string} 9 | mcset fr docidx/cmd/illegal {Illegal command "%1$s", not a docidx command} ; # Details: cmdname 10 | mcset fr docidx/cmd/nested {Illegal use of "%1$s" as argument of other command} ; # Details: cmdname 11 | mcset fr docidx/cmd/toomanyargs {Too many args for "%1$s", at most %2$d allowed} ; # Details: cmdname, max#args 12 | mcset fr docidx/cmd/wrongargs {Wrong#args for "%1$s", need at least %2$d} ; # Details: cmdname, min#args 13 | mcset fr docidx/eof/syntax {Bad } 14 | mcset fr docidx/include/path/notfound {Include file "%1$s" not found} ; # Details: file name 15 | mcset fr docidx/include/read-failed {Unable to read include file "%1$s", %2$s} ; # Details: file name and error msg 16 | mcset fr docidx/include/syntax {Errors in include file "%1$s"} 17 | mcset fr docidx/plaintext {Plain text beyond whitespace is not allowed} 18 | mcset fr docidx/vset/varname/unknown {Unknown variable "%1$s"} ; # Details: variable name 19 | 20 | mcset fr docidx/index_begin/missing {Expected [index_begin], not found} 21 | mcset fr docidx/index_begin/syntax {Unexpected [index_begin], not allowed here} 22 | mcset fr docidx/index_end/missing {Expected [index_end], not found} 23 | mcset fr docidx/index_end/syntax {Unexpected [index_end], not allowed here} 24 | mcset fr docidx/key/missing {Expected [key], not found} 25 | mcset fr docidx/key/syntax {Unexpected [key], not allowed here} 26 | 27 | mcset fr docidx/ref/redef {Bad redefinition of reference "%1$s", first (%2$s "%3$s"), now (%4$s "%5$s")} 28 | 29 | package provide doctools::msgcat::idx::fr 0.1 30 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2toc/msgcat_c.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | package require msgcat 3 | namespace import ::msgcat::* 4 | 5 | mcset c doctoc/char/syntax {Bad character in string} 6 | mcset c doctoc/cmd/illegal {Illegal command "%1$s", not a doctoc command} ; # Details: cmdname 7 | mcset c doctoc/cmd/nested {Illegal use of "%1$s" as argument of other command} ; # Details: cmdname 8 | mcset c doctoc/cmd/toomanyargs {Too many args for "%1$s", at most %2$d allowed} ; # Details: cmdname, max#args 9 | mcset c doctoc/cmd/wrongargs {Wrong#args for "%1$s", need at least %2$d} ; # Details: cmdname, min#args 10 | mcset c doctoc/eof/syntax {Bad } 11 | mcset c doctoc/include/path/notfound {Include file "%1$s" not found} ; # Details: file name 12 | mcset c doctoc/include/read-failed {Unable to read include file "%1$s", %2$s} ; # Details: file name and error msg 13 | mcset c doctoc/include/syntax {Errors in include file "%1$s"} 14 | mcset c doctoc/plaintext {Plain text beyond whitespace is not allowed} 15 | mcset c doctoc/vset/varname/unknown {Unknown variable "%1$s"} ; # Details: variable name 16 | 17 | mcset c doctoc/division_end/missing {Expected [division_end], not found} 18 | mcset c doctoc/division_end/syntax {Unexpected [division_end], not allowed here} 19 | mcset c doctoc/division_start/syntax {Expected [division_start], not found} 20 | mcset c doctoc/item/syntax {Unexpected [item], not allowed here} 21 | mcset c doctoc/toc_begin/missing {Expected [toc_begin], not found} 22 | mcset c doctoc/toc_begin/syntax {Unexpected [toc_begin], not allowed here} 23 | mcset c doctoc/toc_end/missing {Expected [toc_end], not found} 24 | mcset c doctoc/toc_end/syntax {Unexpected [toc_end], not allowed here} 25 | 26 | mcset c doctoc/redef {Bad reuse of label "%1$s"} 27 | 28 | package provide doctools::msgcat::toc::c 0.1 29 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/doctools2toc/msgcat_en.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | package require msgcat 3 | namespace import ::msgcat::* 4 | 5 | mcset en doctoc/char/syntax {Bad character in string} 6 | mcset en doctoc/cmd/illegal {Illegal command "%1$s", not a doctoc command} ; # Details: cmdname 7 | mcset en doctoc/cmd/nested {Illegal use of "%1$s" as argument of other command} ; # Details: cmdname 8 | mcset en doctoc/cmd/toomanyargs {Too many args for "%1$s", at most %2$d allowed} ; # Details: cmdname, max#args 9 | mcset en doctoc/cmd/wrongargs {Wrong#args for "%1$s", need at least %2$d} ; # Details: cmdname, min#args 10 | mcset en doctoc/eof/syntax {Bad } 11 | mcset en doctoc/include/path/notfound {Include file "%1$s" not found} ; # Details: file name 12 | mcset en doctoc/include/read-failed {Unable to read include file "%1$s", %2$s} ; # Details: file name and error msg 13 | mcset en doctoc/include/syntax {Errors in include file "%1$s"} 14 | mcset en doctoc/plaintext {Plain text beyond whitespace is not allowed} 15 | mcset en doctoc/vset/varname/unknown {Unknown variable "%1$s"} ; # Details: variable name 16 | 17 | mcset en doctoc/division_end/missing {Expected [division_end], not found} 18 | mcset en doctoc/division_end/syntax {Unexpected [division_end], not allowed here} 19 | mcset en doctoc/division_start/syntax {Expected [division_start], not found} 20 | mcset en doctoc/item/syntax {Unexpected [item], not allowed here} 21 | mcset en doctoc/toc_begin/missing {Expected [toc_begin], not found} 22 | mcset en doctoc/toc_begin/syntax {Unexpected [toc_begin], not allowed here} 23 | mcset en doctoc/toc_end/missing {Expected [toc_end], not found} 24 | mcset en doctoc/toc_end/syntax {Unexpected [toc_end], not allowed here} 25 | 26 | mcset en doctoc/redef {Bad reuse of label "%1$s"} 27 | 28 | package provide doctools::msgcat::toc::en 0.1 29 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/dtplite/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded dtplite 1.3 [list source [file join $dir dtplite.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/fileutil/multi.tcl: -------------------------------------------------------------------------------- 1 | # ### ### ### ######### ######### ######### 2 | ## 3 | # (c) 2007 Andreas Kupries. 4 | 5 | # Multi file operations. Singleton based on the multiop processor. 6 | 7 | # ### ### ### ######### ######### ######### 8 | ## Requisites 9 | 10 | package require fileutil::multi::op 11 | 12 | # ### ### ### ######### ######### ######### 13 | ## API & Implementation 14 | 15 | namespace eval ::fileutil {} 16 | 17 | # Create the multiop processor object and make its do method the main 18 | # command of this package. 19 | ::fileutil::multi::op ::fileutil::multi::obj 20 | 21 | proc ::fileutil::multi {args} { 22 | return [uplevel 1 [linsert $args 0 ::fileutil::multi::obj do]] 23 | } 24 | 25 | # ### ### ### ######### ######### ######### 26 | ## Ready 27 | 28 | package provide fileutil::multi 0.1 29 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/fileutil/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded fileutil 1.16 [list source [file join $dir fileutil.tcl]] 3 | 4 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 5 | package ifneeded fileutil::traverse 0.6 [list source [file join $dir traverse.tcl]] 6 | 7 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 8 | package ifneeded fileutil::multi 0.1 [list source [file join $dir multi.tcl]] 9 | package ifneeded fileutil::multi::op 0.5.3 [list source [file join $dir multiop.tcl]] 10 | package ifneeded fileutil::decode 0.2.1 [list source [file join $dir decode.tcl]] 11 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/ftp/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded ftp 2.4.13 [list source [file join $dir ftp.tcl]] 3 | package ifneeded ftp::geturl 0.2.2 [list source [file join $dir ftp_geturl.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/ftpd/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 2 | package ifneeded ftpd 1.3 [list source [file join $dir ftpd.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/fumagic/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 2 | 3 | # Recognizers 4 | package ifneeded fileutil::magic::filetype 2.0 [list source [file join $dir filetypes.tcl]] 5 | 6 | # Runtime 7 | package ifneeded fileutil::magic::rt 2.0 [list source [file join $dir rtcore.tcl]] 8 | 9 | # Compiler packages 10 | package ifneeded fileutil::magic::cgen 1.2.0 [list source [file join $dir cgen.tcl]] 11 | package ifneeded fileutil::magic::cfront 1.2.0 [list source [file join $dir cfront.tcl]] 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/generator/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Requires Tcl 8.6 and higher, to have the coroutines underlying generators. 2 | if {![package vsatisfies [package provide Tcl] 8.6]} return 3 | package ifneeded generator 0.1 [list source [file join $dir generator.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/gpx/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | package ifneeded gpx 1 [list source [file join $dir gpx.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/grammar_aycock/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | 3 | package ifneeded grammar::aycock 1.0 \ 4 | [list source [file join $dir aycock-build.tcl]] 5 | package ifneeded grammar::aycock::debug 1.0 \ 6 | [list source [file join $dir aycock-debug.tcl]] 7 | package ifneeded grammar::aycock::runtime 1.0 \ 8 | [list source [file join $dir aycock-runtime.tcl]] 9 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/grammar_fa/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | 3 | package ifneeded grammar::fa 0.5 [list source [file join $dir fa.tcl]] 4 | package ifneeded grammar::fa::op 0.4.1 [list source [file join $dir faop.tcl]] 5 | package ifneeded grammar::fa::dacceptor 0.1.1 [list source [file join $dir dacceptor.tcl]] 6 | package ifneeded grammar::fa::dexec 0.2 [list source [file join $dir dexec.tcl]] 7 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/grammar_me/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | 3 | package ifneeded grammar::me::util 0.1 [list source [file join $dir me_util.tcl]] 4 | package ifneeded grammar::me::tcl 0.1 [list source [file join $dir me_tcl.tcl]] 5 | package ifneeded grammar::me::cpu 0.2 [list source [file join $dir me_cpu.tcl]] 6 | package ifneeded grammar::me::cpu::core 0.2 [list source [file join $dir me_cpucore.tcl]] 7 | package ifneeded grammar::me::cpu::gasm 0.1 [list source [file join $dir gasm.tcl]] 8 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/grammar_peg/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded grammar::peg 0.2 [list source [file join $dir peg.tcl]] 2 | package ifneeded grammar::peg::interp 0.1.1 [list source [file join $dir peg_interp.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/hook/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded hook 0.1 [list source [file join $dir hook.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/html/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded html 1.4.4 [list source [file join $dir html.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/htmlparse/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded htmlparse 1.2.2 [list source [file join $dir htmlparse.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/http/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded autoproxy 1.6 [list source [file join $dir autoproxy.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/httpd/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | 2 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 3 | package ifneeded httpd 4.1.1 [list source [file join $dir httpd.tcl]] 4 | 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/httpwget/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded http::wget 0.1 [list source [file join $dir wget.tcl]] 12 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/httpwget/wget.tcl: -------------------------------------------------------------------------------- 1 | ### 2 | # Tool to download file from the web 3 | # Enhacements to http 4 | ### 5 | package provide http::wget 0.1 6 | package require http 7 | 8 | ::namespace eval ::http {} 9 | 10 | ### 11 | # topic: 1ed971e03ae89415e2f25d20e59b765c 12 | # description: this proc contributed by Donal Fellows 13 | ### 14 | proc ::http::_followRedirects {url args} { 15 | while 1 { 16 | set token [geturl $url -validate 1] 17 | set ncode [ncode $token] 18 | if { $ncode eq "404" } { 19 | error "URL Not found" 20 | } 21 | switch -glob $ncode { 22 | 30[1237] {### redirect - see below ###} 23 | default {cleanup $token ; return $url} 24 | } 25 | upvar #0 $token state 26 | array set meta [set ${token}(meta)] 27 | cleanup $token 28 | if {![info exists meta(Location)]} { 29 | return $url 30 | } 31 | set url $meta(Location) 32 | unset meta 33 | } 34 | return $url 35 | } 36 | 37 | ### 38 | # topic: fced7bc395596569ac225a719c686dcc 39 | ### 40 | proc ::http::wget {url destfile {verbose 1}} { 41 | set tmpchan [open $destfile w] 42 | fconfigure $tmpchan -translation binary 43 | if { $verbose } { 44 | puts [list GETTING [file tail $destfile] from $url] 45 | } 46 | set real_url [_followRedirects $url] 47 | set token [geturl $real_url -channel $tmpchan -binary yes] 48 | if {[ncode $token] != "200"} { 49 | error "DOWNLOAD FAILED" 50 | } 51 | cleanup $token 52 | close $tmpchan 53 | } 54 | 55 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/ident/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 12 | package ifneeded ident 0.42 [list source [file join $dir ident.tcl]] 13 | 14 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/imap4/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | package ifneeded imap4 0.5.3 [list source [file join $dir imap4.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/inifile/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if { ![package vsatisfies [package provide Tcl] 8.2] } { return } 2 | package ifneeded inifile 0.3.1 [list source [file join $dir ini.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/interp/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.3]} return 2 | package ifneeded interp 0.1.2 [list source [file join $dir interp.tcl]] 3 | package ifneeded interp::delegate::proc 0.2 [list source [file join $dir deleg_proc.tcl]] 4 | package ifneeded interp::delegate::method 0.2 [list source [file join $dir deleg_method.tcl]] 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/irc/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -*- tcl -*- 2 | # $Id$ 3 | if { ![package vsatisfies [package provide Tcl] 8.3] } { 4 | # PRAGMA: returnok 5 | return 6 | } 7 | package ifneeded irc 0.6.2 [list source [file join $dir irc.tcl]] 8 | package ifneeded picoirc 0.5.2 [list source [file join $dir picoirc.tcl]] 9 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/javascript/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | 3 | if {![package vsatisfies [package provide Tcl] 8]} {return} 4 | package ifneeded javascript 1.0.2 [list source [file join $dir javascript.tcl]] 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/jpeg/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded jpeg 0.5 [list source [file join $dir jpeg.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/json/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | 3 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 4 | package ifneeded json 1.3.4 [list source [file join $dir json.tcl]] 5 | 6 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 7 | package ifneeded json::write 1.0.3 [list source [file join $dir json_write.tcl]] 8 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/lambda/lambda.tcl: -------------------------------------------------------------------------------- 1 | # # ## ### ##### ######## ############# #################### 2 | ## -*- tcl -*- 3 | ## (C) 2011 Andreas Kupries, BSD licensed. 4 | 5 | # Two convenience commands to make the writing of anonymous 6 | # procedures, i.e. lambdas more proc-like. Instead of, for example, to 7 | # write 8 | # 9 | # set f {::apply {{x} { .... }}} 10 | # 11 | # with its deep nesting of braces, or (if we wish to curry (*)) 12 | # 13 | # set f [list ::apply {{x y} { .... }} $valueforx] 14 | # 15 | # with a list command to insert the arguments, just write 16 | # 17 | # set f [lambda {x} { .... }] 18 | # and 19 | # set f [lambda {x y} { .... } $valueforx] 20 | # 21 | # (*) Pre-supply arguments to the anon proc, making the lambda a 22 | # partial application. 23 | 24 | # # ## ### ##### ######## ############# #################### 25 | ## Requisites 26 | 27 | package require Tcl 8.5 28 | 29 | # # ## ### ##### ######## ############# ##################### 30 | ## Public API implementation 31 | 32 | proc lambda {arguments body args} { 33 | return [list ::apply [list $arguments $body] {*}$args] 34 | } 35 | 36 | proc lambda@ {ns arguments body args} { 37 | return [list ::apply [list $arguments $body $ns] {*}$args] 38 | } 39 | 40 | # # ## ### ##### ######## ############# #################### 41 | ## Ready 42 | package provide lambda 1 43 | 44 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/lambda/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | #checker -scope global exclude warnUndefinedVar 2 | # var in question is 'dir'. 3 | if {![package vsatisfies [package provide Tcl] 8.5]} { 4 | # PRAGMA: returnok 5 | return 6 | } 7 | # Utility wrapper around ::apply for easier writing. 8 | package ifneeded lambda 1 [list source [file join $dir lambda.tcl]] 9 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/ldap/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | 3 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 4 | package ifneeded ldap 1.9.2 [list source [file join $dir ldap.tcl]] 5 | 6 | # the OO level wrapper for ldap 7 | package ifneeded ldapx 1.1 [list source [file join $dir ldapx.tcl]] 8 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/map/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded map::slippy 0.5 [list source [file join $dir map_slippy.tcl]] 3 | package ifneeded map::slippy::fetcher 0.4 [list source [file join $dir map_slippy_fetcher.tcl]] 4 | package ifneeded map::slippy::cache 0.2 [list source [file join $dir map_slippy_cache.tcl]] 5 | package ifneeded map::geocode::nominatim 0.1 [list source [file join $dir map_geocode_nominatim.tcl]] 6 | 7 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/mapproj/mapproj.tcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/vendor/tcllib1.19/mapproj/mapproj.tcl -------------------------------------------------------------------------------- /vendor/tcllib1.19/mapproj/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded mapproj 1.0 [list source [file join $dir mapproj.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/markdown/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded Markdown 1.1 [list source [file join $dir markdown.tcl]] 2 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/math/math.tcl: -------------------------------------------------------------------------------- 1 | # math.tcl -- 2 | # 3 | # Main 'package provide' script for the package 'math'. 4 | # 5 | # Copyright (c) 1998-2000 by Ajuba Solutions. 6 | # Copyright (c) 2002 by Kevin B. Kenny. All rights reserved. 7 | # 8 | # See the file "license.terms" for information on usage and redistribution 9 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 10 | 11 | package require Tcl 8.2 ;# uses [lindex $l end-$integer] 12 | 13 | # @mdgen OWNER: tclIndex 14 | # @mdgen OWNER: misc.tcl 15 | # @mdgen OWNER: combinatorics.tcl 16 | 17 | namespace eval ::math { 18 | # misc.tcl 19 | 20 | namespace export cov fibonacci integrate 21 | namespace export max mean min 22 | namespace export product random sigma 23 | namespace export stats sum 24 | namespace export expectDouble expectInteger 25 | 26 | # combinatorics.tcl 27 | 28 | namespace export ln_Gamma factorial choose 29 | namespace export Beta 30 | 31 | # Set up for auto-loading 32 | 33 | if { ![interp issafe {}]} { 34 | variable home [file join [pwd] [file dirname [info script]]] 35 | if {[lsearch -exact $::auto_path $home] == -1} { 36 | lappend ::auto_path $home 37 | } 38 | } else { 39 | source [file join [file dirname [info script]] misc.tcl] 40 | source [file join [file dirname [info script]] combinatorics.tcl] 41 | } 42 | 43 | package provide [namespace tail [namespace current]] 1.2.5 44 | } 45 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/math/tclIndex: -------------------------------------------------------------------------------- 1 | # Tcl autoload index file, version 2.0 2 | # This file is generated by the "auto_mkindex" command 3 | # and sourced to set up indexing information for one or 4 | # more commands. Typically each line is a command that 5 | # sets an element in the auto_index array, where the 6 | # element name is the name of a command and the value is 7 | # a script that loads the command. 8 | 9 | set auto_index(::math::cov) [list source [file join $dir misc.tcl]] 10 | set auto_index(::math::fibonacci) [list source [file join $dir misc.tcl]] 11 | set auto_index(::math::integrate) [list source [file join $dir misc.tcl]] 12 | set auto_index(::math::max) [list source [file join $dir misc.tcl]] 13 | set auto_index(::math::mean) [list source [file join $dir misc.tcl]] 14 | set auto_index(::math::min) [list source [file join $dir misc.tcl]] 15 | set auto_index(::math::product) [list source [file join $dir misc.tcl]] 16 | set auto_index(::math::random) [list source [file join $dir misc.tcl]] 17 | set auto_index(::math::sigma) [list source [file join $dir misc.tcl]] 18 | set auto_index(::math::stats) [list source [file join $dir misc.tcl]] 19 | set auto_index(::math::sum) [list source [file join $dir misc.tcl]] 20 | set auto_index(::math::expectDouble) [list source [file join $dir misc.tcl]] 21 | set auto_index(::math::InitializeFactorial) [list source [file join $dir combinatorics.tcl]] 22 | set auto_index(::math::InitializePascal) [list source [file join $dir combinatorics.tcl]] 23 | set auto_index(::math::ln_Gamma) [list source [file join $dir combinatorics.tcl]] 24 | set auto_index(::math::factorial) [list source [file join $dir combinatorics.tcl]] 25 | set auto_index(::math::choose) [list source [file join $dir combinatorics.tcl]] 26 | set auto_index(::math::Beta) [list source [file join $dir combinatorics.tcl]] 27 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/md4/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # This package has been tested with tcl 8.2.3 and above. 2 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 3 | package ifneeded md4 1.0.7 [list source [file join $dir md4.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/md5/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded md5 2.0.7 [list source [file join $dir md5x.tcl]] 3 | package ifneeded md5 1.4.4 [list source [file join $dir md5.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/md5crypt/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # package index for md5crypt 2 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 3 | package ifneeded md5crypt 1.1.0 [list source [file join $dir md5crypt.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/mime/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 2 | package ifneeded smtp 1.4.5 [list source [file join $dir smtp.tcl]] 3 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 4 | package ifneeded mime 1.6 [list source [file join $dir mime.tcl]] 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/multiplexer/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if { ![package vsatisfies [package provide Tcl] 8.2] } { return } 12 | package ifneeded multiplexer 0.2 [list source [file join $dir multiplexer.tcl]] 13 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/namespacex/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded namespacex 0.1 [list source [file join $dir namespacex.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/ncgi/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded ncgi 1.4.3 [list source [file join $dir ncgi.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/nettool/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | 2 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 3 | # Backward compatible alias 4 | package ifneeded nettool::available_ports 0.1 {package require nettool ; package provide nettool::available_ports 0.1} 5 | package ifneeded nettool 0.5.2 [list source [file join $dir nettool.tcl]] 6 | 7 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/nmea/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded nmea 1.0.0 [list source [file join $dir nmea.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/nns/common.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # ### ### ### ######### ######### ######### 3 | ## Name service - Common/shared information. 4 | 5 | # ### ### ### ######### ######### ######### 6 | ## Requirements 7 | 8 | namespace eval ::nameserv::common {} 9 | 10 | # ### ### ### ######### ######### ######### 11 | ## API 12 | 13 | proc ::nameserv::common::port {} { 14 | variable port 15 | return $port 16 | } 17 | 18 | namespace eval ::nameserv::common { 19 | # Derivation of the standard port number for this service. 20 | 21 | # nameserv::server 22 | # -> nameservserver / remove ':' 23 | # -> 62637378737837 / phonecode 24 | # -> 38573 / mod 65536 25 | 26 | variable port 38573 27 | 28 | # The modulo operation is required because IP port numbers are 29 | # restricted to unsigned short (16 bit), i.e. 1 ... 65535. 30 | } 31 | 32 | # ### ### ### ######### ######### ######### 33 | ## Ready 34 | 35 | package provide nameserv::common 0.1 36 | 37 | ## 38 | # ### ### ### ######### ######### ######### 39 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/nns/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8]} {return} 2 | package ifneeded nameserv::common 0.1 [list source [file join $dir common.tcl]] 3 | 4 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 5 | package ifneeded nameserv 0.4.2 [list source [file join $dir nns.tcl]] 6 | package ifneeded nameserv::server 0.3.2 [list source [file join $dir server.tcl]] 7 | package ifneeded nameserv::auto 0.3 [list source [file join $dir nns_auto.tcl]] 8 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/nntp/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 12 | package ifneeded nntp 0.2.1 [list source [file join $dir nntp.tcl]] 13 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/ntp/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded time 1.2.1 [list source [file join $dir time.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/oauth/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | package ifneeded oauth 1.0.1 [list source [file join $dir oauth.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/oodialect/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded oo::dialect 0.3.3 [list source [file join $dir oodialect.tcl]] 2 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/oometa/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | #checker -scope global exclude warnUndefinedVar 2 | # var in question is 'dir'. 3 | if {![package vsatisfies [package provide Tcl] 8.6]} { 4 | # PRAGMA: returnok 5 | return 6 | } 7 | package ifneeded oo::meta 0.7.1 [list source [file join $dir oometa.tcl]] 8 | package ifneeded oo::option 0.3.1 [list source [file join $dir oooption.tcl]] 9 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/ooutil/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | #checker -scope global exclude warnUndefinedVar 2 | # var in question is 'dir'. 3 | if {![package vsatisfies [package provide Tcl] 8.5]} { 4 | # PRAGMA: returnok 5 | return 6 | } 7 | package ifneeded oo::util 1.2.2 [list source [file join $dir ooutil.tcl]] -------------------------------------------------------------------------------- /vendor/tcllib1.19/otp/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -*- tcl -*- 2 | if {![package vsatisfies [package provide Tcl] 8.2]} { return } 3 | package ifneeded otp 1.0.0 [list source [file join $dir otp.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/page/analysis_peg_minimize.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # Transform - Minimize the grammar, through the removal of the 3 | # unreachable and not useful nonterminals (and expressions). 4 | 5 | # This package assumes to be used from within a PAGE plugin. It uses 6 | # the API commands listed below. These are identical across the major 7 | # types of PAGE plugins, allowing this package to be used in reader, 8 | # transform, and writer plugins. It cannot be used in a configuration 9 | # plugin, and this makes no sense either. 10 | # 11 | # To ensure that our assumption is ok we require the relevant pseudo 12 | # package setup by the PAGE plugin management code. 13 | # 14 | # -----------------+-- 15 | # page_info | Reporting to the user. 16 | # page_warning | 17 | # page_error | 18 | # -----------------+-- 19 | # page_log_error | Reporting of internals. 20 | # page_log_warning | 21 | # page_log_info | 22 | # -----------------+-- 23 | 24 | # ### ### ### ######### ######### ######### 25 | ## Requisites 26 | 27 | # @mdgen NODEP: page::plugin 28 | 29 | package require page::plugin ; # S.a. pseudo-package. 30 | package require page::analysis::peg::reachable 31 | package require page::analysis::peg::realizable 32 | 33 | namespace eval ::page::analysis::peg {} 34 | 35 | # ### ### ### ######### ######### ######### 36 | ## API 37 | 38 | proc ::page::analysis::peg::minimize {t} { 39 | page_info {[PEG Minimization]} 40 | page_log_info ..Reachability ; ::page::analysis::peg::reachable::remove! 41 | page_log_info ..Realizability ; ::page::analysis::peg::realizable::remove! 42 | 43 | page_log_info Ok 44 | return 45 | } 46 | 47 | # ### ### ### ######### ######### ######### 48 | ## Ready 49 | 50 | package provide page::analysis::peg::minimize 0.1 51 | 52 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/page/gen_peg_me.template: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | ## Parsing Expression Grammar '@NAME@'. 3 | ## Recursive Descent Packrat parser generated 4 | ## by the PAGE writer plugin 'me'. 5 | @COPY@ 6 | # ### ### ### ######### ######### ######### 7 | ## Package description 8 | 9 | # The commands provided here match an input provided through a buffer 10 | # command to the PE grammar '@NAME@'. The parser is based on the package 11 | # 'grammar::me::tcl' (recursive-descent, packrat, pulling chars, 12 | # pushing the generated AST). 13 | 14 | # ### ### ### ######### ######### ######### 15 | ## Requisites 16 | 17 | package require grammar::me::tcl 18 | 19 | # ### ### ### ######### ######### ######### 20 | ## Implementation 21 | 22 | namespace eval ::@PKG@ { 23 | # Import the virtual machine for matching. 24 | 25 | namespace import ::grammar::me::tcl::* 26 | upvar #0 ::grammar::me::tcl::ok ok 27 | } 28 | 29 | # ### ### ### ######### ######### ######### 30 | ## API Implementation. 31 | 32 | proc ::@PKG@::parse {nxcmd emvar astvar} { 33 | variable ok 34 | variable se 35 | 36 | upvar 1 $emvar emsg $astvar ast 37 | 38 | init $nxcmd 39 | 40 | @MATCH@ 41 | 42 | isv_nonterminal_reduce ALL -1 43 | set ast [sv] 44 | if {!$ok} { 45 | foreach {l m} [ier_get] break 46 | lappend l [lc $l] 47 | set emsg [list $l $m] 48 | } 49 | 50 | return $ok 51 | } 52 | 53 | # ### ### ### ######### ######### ######### 54 | ## Internal helper methods 55 | 56 | @RULES@ 57 | 58 | # ### ### ### ######### ######### ######### 59 | ## Package Management 60 | 61 | package provide @PKG@ 0.1 62 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/page/gen_peg_mecpu.template: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | ## Parsing Expression Grammar '@NAME@'. 3 | ## Recursive Descent Packrat parser generated 4 | ## by the PAGE writer plugin 'mecpu'. 5 | @COPY@ 6 | # ### ### ### ######### ######### ######### 7 | ## Package description 8 | 9 | # The commands provided here match an input provided through a buffer 10 | # command to the PE grammar '@NAME@'. The parser is based on the ME 11 | # virtual machine (recursive-descent, packrat, pulling chars, 12 | # pushing the generated AST, suspendable). 13 | 14 | # ### ### ### ######### ######### ######### 15 | ## Requisites 16 | 17 | # Import the virtual machine for matching. 18 | package require grammar::me::cpu 19 | 20 | # ### ### ### ######### ######### ######### 21 | ## Implementation 22 | 23 | snit::type ::@PKG@ { 24 | constructor {} { 25 | set cpu [grammar::me::cpu ${selfns}::cpu $mecode] 26 | return 27 | } 28 | variable cpu 29 | delegate method * to cpu 30 | 31 | typevariable mecode { 32 | { 33 | @FNSN@ } 34 | { 35 | @FPOL@ } 36 | {@TMAP@} 37 | } 38 | } 39 | 40 | # ### ### ### ######### ######### ######### 41 | ## Documentation. Readable form of 'mecode' above. 42 | 43 | @ASMP@ 44 | 45 | # ### ### ### ######### ######### ######### 46 | ## Package Management 47 | 48 | package provide @PKG@ 0.1 49 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/page/gen_peg_ser.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # 3 | # Copyright (c) 2005 by Andreas Kupries 4 | # Parser Generator / Backend - PEG as serialized PEG container. 5 | 6 | # ### ### ### ######### ######### ######### 7 | ## Requisites 8 | 9 | package require grammar::peg 10 | package require page::util::quote 11 | package require page::util::peg 12 | 13 | namespace eval ::page::gen::peg::ser { 14 | # Get the peg char de/encoder commands. 15 | # (unquote, quote'tcl), and other utilities. 16 | 17 | namespace import ::page::util::quote::* 18 | namespace import ::page::util::peg::* 19 | } 20 | 21 | # ### ### ### ######### ######### ######### 22 | ## API 23 | 24 | proc ::page::gen::peg::ser {t chan} { 25 | ser::printWarnings [ser::getWarnings $t] 26 | 27 | ::grammar::peg gr 28 | 29 | set gstart [$t get root start] 30 | if {$gstart ne ""} { 31 | gr start [ser::peOf $t $gstart] 32 | } else { 33 | page_info "No start expression." 34 | } 35 | 36 | foreach {sym def} [$t get root definitions] { 37 | set eroot [lindex [$t children $def] 0] 38 | 39 | gr nonterminal add $sym [ser::peOf $t $eroot] 40 | gr nonterminal mode $sym [$t get $def mode] 41 | } 42 | 43 | puts $chan [gr serialize] 44 | gr destroy 45 | return 46 | } 47 | 48 | # ### ### ### ######### ######### ######### 49 | ## Internal. Helpers 50 | 51 | proc ::page::gen::peg::ser::GetRules {t} { 52 | return $res 53 | } 54 | 55 | # ### ### ### ######### ######### ######### 56 | ## Internal. Strings. 57 | 58 | namespace eval ::page::gen::peg::ser {} 59 | 60 | # ### ### ### ######### ######### ######### 61 | ## Ready 62 | 63 | package provide page::gen::peg::ser 0.1 64 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/page/plugins/config_peg.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- $Id$ 2 | 3 | package provide page::config::peg 0.1 4 | 5 | proc page_cdefinition {} { 6 | return { 7 | --reset 8 | --append 9 | --reader peg 10 | --transform reachable 11 | --transform realizable 12 | --writer me 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/page/plugins/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | #puts @plugins 2 | # -- PAGE plugin packages 3 | # -- ---- Canned configurations 4 | 5 | package ifneeded page::config::peg 0.1 [list source [file join $dir config_peg.tcl]] 6 | 7 | # -- PAGE plugin packages 8 | # -- ---- Readers 9 | 10 | package ifneeded page::reader::peg 0.1 [list source [file join $dir reader_peg.tcl]] 11 | package ifneeded page::reader::lemon 0.1 [list source [file join $dir reader_lemon.tcl]] 12 | package ifneeded page::reader::hb 0.1 [list source [file join $dir reader_hb.tcl]] 13 | package ifneeded page::reader::ser 0.1 [list source [file join $dir reader_ser.tcl]] 14 | package ifneeded page::reader::treeser 0.1 [list source [file join $dir reader_treeser.tcl]] 15 | 16 | # -- PAGE plugin packages 17 | # -- ---- Writers 18 | 19 | package ifneeded page::writer::null 0.1 [list source [file join $dir writer_null.tcl]] 20 | package ifneeded page::writer::me 0.1 [list source [file join $dir writer_me.tcl]] 21 | package ifneeded page::writer::mecpu 0.1.1 [list source [file join $dir writer_mecpu.tcl]] 22 | package ifneeded page::writer::tree 0.1 [list source [file join $dir writer_tree.tcl]] 23 | package ifneeded page::writer::tpc 0.1 [list source [file join $dir writer_tpc.tcl]] 24 | package ifneeded page::writer::hb 0.1 [list source [file join $dir writer_hb.tcl]] 25 | package ifneeded page::writer::ser 0.1 [list source [file join $dir writer_ser.tcl]] 26 | package ifneeded page::writer::peg 0.1 [list source [file join $dir writer_peg.tcl]] 27 | package ifneeded page::writer::identity 0.1 [list source [file join $dir writer_identity.tcl]] 28 | 29 | # -- PAGE plugin packages 30 | # -- ---- Transformations 31 | 32 | package ifneeded page::transform::reachable 0.1 [list source [file join $dir transform_reachable.tcl]] 33 | package ifneeded page::transform::realizable 0.1 [list source [file join $dir transform_realizable.tcl]] 34 | package ifneeded page::transform::mecpu 0.1 [list source [file join $dir transform_mecpu.tcl]] 35 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pki/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded pki 0.10 [list source [file join $dir pki.tcl]] 2 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pluginmgr/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded pluginmgr 0.3 [list source [file join $dir pluginmgr.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/png/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded png 0.2 [list source [file join $dir png.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pop3/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded pop3 1.9 [list source [file join $dir pop3.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pop3d/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 12 | package ifneeded pop3d::udb 1.1 [list source [file join $dir pop3d_udb.tcl]] 13 | 14 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 15 | package ifneeded pop3d 1.1.0 [list source [file join $dir pop3d.tcl]] 16 | package ifneeded pop3d::dbox 1.0.2 [list source [file join $dir pop3d_dbox.tcl]] 17 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/practcl/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | ### 2 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 3 | package ifneeded practcl 0.11 [list source [file join $dir practcl.tcl]] 4 | 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/processman/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded odie::processman 0.5 [list source [file join $dir processman.tcl]] 12 | package ifneeded processman 0.5 [list source [file join $dir processman.tcl]] 13 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/profiler/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 2 | package ifneeded profiler 0.3 [list source [file join $dir profiler.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/paths.tcl: -------------------------------------------------------------------------------- 1 | # paths.tcl -- 2 | # 3 | # Generic path list management, for use by import management. 4 | # 5 | # Copyright (c) 2009 Andreas Kupries 6 | # 7 | # See the file "license.terms" for information on usage and redistribution 8 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 9 | # 10 | # RCS: @(#) $Id$ 11 | 12 | # Each object manages a list of paths. 13 | 14 | # ### ### ### ######### ######### ######### 15 | ## Requisites 16 | 17 | package require Tcl 8.5 18 | package require snit 19 | 20 | # ### ### ### ######### ######### ######### 21 | ## API 22 | 23 | snit::type ::paths { 24 | 25 | # ### ### ### ######### ######### ######### 26 | ## Options :: None 27 | 28 | # ### ### ### ######### ######### ######### 29 | ## Creation, destruction 30 | 31 | # Default constructor. 32 | # Default destructor. 33 | 34 | # ### ### ### ######### ######### ######### 35 | ## Methods :: Querying and manipulating the list of paths. 36 | 37 | method paths {} { 38 | return $mypaths 39 | } 40 | 41 | method add {path} { 42 | if {$path in $mypaths} return 43 | lappend mypaths $path 44 | return 45 | } 46 | 47 | method remove {path} { 48 | set pos [lsearch $mypaths $path] 49 | if {$pos < 0} return 50 | set mypaths [lreplace $mypaths $pos $pos] 51 | return 52 | } 53 | 54 | method clear {} { 55 | set mypaths {} 56 | return 57 | } 58 | 59 | # ### ### ### ######### ######### ######### 60 | ## Internal methods :: None 61 | 62 | # ### ### ### ######### ######### ######### 63 | ## State :: List of paths. 64 | 65 | variable mypaths {} 66 | 67 | ## 68 | # ### ### ### ######### ######### ######### 69 | } 70 | 71 | # ### ### ### ######### ######### ######### 72 | ## Ready 73 | 74 | package provide paths 1 75 | return 76 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/pt_peg_export_container.tcl: -------------------------------------------------------------------------------- 1 | # peg_export_container.tcl -- 2 | # 3 | # The PEG to CONTAINER export plugin. Generation of Tcl code, a 4 | # snit::type. 5 | # 6 | # Copyright (c) 2009 Andreas Kupries 7 | # 8 | # See the file "license.terms" for information on usage and redistribution 9 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 10 | # 11 | # RCS: @(#) $Id$ 12 | 13 | # This package is a plugin for the pt::peg export manager. It 14 | # takes the canonical serialization of a parsing expression grammar 15 | # and produces text in CONTAINER format. 16 | 17 | # ### ### ### ######### ######### ######### 18 | ## Requisites 19 | 20 | # @mdgen NODEP: pt::peg::export::plugin 21 | 22 | package require Tcl 8.5 23 | package require pt::peg::export::plugin ; # The presence of this 24 | # pseudo package 25 | # indicates execution 26 | # inside of a properly 27 | # initialized plugin 28 | # interpreter. 29 | package require pt::peg::to::container 30 | 31 | # ### ### ### ######### ######### ######### 32 | ## API. 33 | 34 | proc export {serial configuration} { 35 | 36 | pt::peg::to::container reset 37 | foreach {option value} $configuration { 38 | pt::peg::to::container configure $option $value 39 | } 40 | 41 | set text [pt::peg::to::container convert $serial] 42 | 43 | pt::peg::to::container reset 44 | return $text 45 | } 46 | 47 | # ### ### ### ######### ######### ######### 48 | ## Ready 49 | 50 | package provide pt::peg::export::container 1 51 | return 52 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/pt_peg_export_json.tcl: -------------------------------------------------------------------------------- 1 | # pt_peg_export_json.tcl -- 2 | # 3 | # The PEG to JSON export plugin. Generation of Tcl code, a 4 | # snit::type. 5 | # 6 | # Copyright (c) 2009 Andreas Kupries 7 | # 8 | # See the file "license.terms" for information on usage and redistribution 9 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 10 | # 11 | # RCS: @(#) $Id$ 12 | 13 | # This package is a plugin for the pt::peg export manager. It 14 | # takes the canonical serialization of a parsing expression grammar 15 | # and produces text in JSON format. 16 | 17 | # ### ### ### ######### ######### ######### 18 | ## Requisites 19 | 20 | # @mdgen NODEP: pt::peg::export::plugin 21 | 22 | package require Tcl 8.5 23 | package require pt::peg::export::plugin ; # The presence of this 24 | # pseudo package indicates 25 | # execution inside of a 26 | # properly initialized 27 | # plugin interpreter. 28 | package require pt::peg::to::json 29 | 30 | # ### ### ### ######### ######### ######### 31 | ## API. 32 | 33 | proc export {serial configuration} { 34 | 35 | pt::peg::to::json reset 36 | foreach {option value} $configuration { 37 | pt::peg::to::json configure $option $value 38 | } 39 | 40 | set text [pt::peg::to::json convert $serial] 41 | 42 | pt::peg::to::json reset 43 | return $text 44 | } 45 | 46 | # ### ### ### ######### ######### ######### 47 | ## Ready 48 | 49 | package provide pt::peg::export::json 1 50 | return 51 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/pt_peg_export_peg.tcl: -------------------------------------------------------------------------------- 1 | # peg_to_export.tcl -- 2 | # 3 | # The PEG to PEG (text representation) export plugin. Generation 4 | # of plain text. 5 | # 6 | # Copyright (c) 2009 Andreas Kupries 7 | # 8 | # See the file "license.terms" for information on usage and redistribution 9 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 10 | # 11 | # RCS: @(#) $Id$ 12 | 13 | # This package is a plugin for the pt::peg export manager. It 14 | # takes the canonical serialization of a parsing expression grammar 15 | # and produces the corresponding human readable text representation. 16 | 17 | # ### ### ### ######### ######### ######### 18 | ## Requisites 19 | 20 | # @mdgen NODEP: pt::peg::export::plugin 21 | 22 | package require Tcl 8.5 23 | package require pt::peg::export::plugin ; # The presence of this 24 | # pseudo package 25 | # indicates execution 26 | # inside of a properly 27 | # initialized plugin 28 | # interpreter. 29 | package require pt::peg::to::peg 30 | 31 | # ### ### ### ######### ######### ######### 32 | ## API. 33 | 34 | proc export {serial configuration} { 35 | 36 | pt::peg::to::peg reset 37 | foreach {option value} $configuration { 38 | pt::peg::to::peg configure $option $value 39 | } 40 | 41 | set text [pt::peg::to::peg convert $serial] 42 | 43 | pt::peg::to::peg reset 44 | return $text 45 | } 46 | 47 | # ### ### ### ######### ######### ######### 48 | ## Ready 49 | 50 | package provide pt::peg::export::peg 1 51 | return 52 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/pt_peg_from_json.tcl: -------------------------------------------------------------------------------- 1 | # peg_from_json.tcl -- 2 | # 3 | # Conversion to PEG from JSON (Java Script Object Notation). 4 | # 5 | # Copyright (c) 2009 Andreas Kupries 6 | # 7 | # See the file "license.terms" for information on usage and redistribution 8 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 9 | # 10 | # RCS: @(#) $Id$ 11 | 12 | # This package takes text in JSON format (Java Script data transfer 13 | # format) and produces the canonical serialization of a parsing 14 | # expression grammar. 15 | 16 | # ### ### ### ######### ######### ######### 17 | ## Requisites 18 | 19 | package require Tcl 8.5 20 | package require pt::peg ; # Verification that the input is proper. 21 | package require json 22 | 23 | # ### ### ### ######### ######### ######### 24 | ## 25 | 26 | namespace eval ::pt::peg::from::json { 27 | namespace export convert 28 | namespace ensemble create 29 | } 30 | 31 | # ### ### ### ######### ######### ######### 32 | ## API. 33 | 34 | proc ::pt::peg::from::json::convert {text} { 35 | # Note: We cannot fail here on duplicate keys in the input, as we 36 | # do for Tcl-based canonical PEG serializations, because our 37 | # underlying JSON parser automatically merges them, by taking only 38 | # the last found definition. I.e. of two or more definitions for 39 | # some key X the last overwrites all previous occurences. 40 | 41 | return [pt::peg canonicalize [json::json2dict $text]] 42 | } 43 | 44 | # ### ### ### ######### ######### ######### 45 | ## Ready 46 | 47 | package provide pt::peg::from::json 1 48 | return 49 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/pt_peg_import_json.tcl: -------------------------------------------------------------------------------- 1 | # pt_peg_import_json.tcl -- 2 | # 3 | # The PEG from JSON import plugin. 4 | # 5 | # Copyright (c) 2009 Andreas Kupries 6 | # 7 | # See the file "license.terms" for information on usage and redistribution 8 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 9 | # 10 | # RCS: @(#) $Id$ 11 | 12 | # This package is a plugin for the pt::peg import manager. It takes 13 | # text in JSON format for a parsing expression grammar and produces 14 | # the canonical serialization of that grammar. 15 | 16 | # ### ### ### ######### ######### ######### 17 | ## Requisites 18 | 19 | # @mdgen NODEP: pt::peg::import::plugin 20 | 21 | package require Tcl 8.5 22 | package require pt::peg::import::plugin ; # The presence of this 23 | # pseudo package indicates 24 | # execution inside of a 25 | # properly initialized 26 | # plugin interpreter. 27 | package require pt::peg::from::json 28 | 29 | # ### ### ### ######### ######### ######### 30 | ## API. 31 | 32 | proc import {text} { 33 | return [pt::peg::from::json convert $text] 34 | } 35 | 36 | # ### ### ### ######### ######### ######### 37 | ## Ready 38 | 39 | package provide pt::peg::import::json 1 40 | return 41 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/pt_peg_import_peg.tcl: -------------------------------------------------------------------------------- 1 | # pt_peg_import_peg.tcl -- 2 | # 3 | # The PEG to PEG (text representation) import plugin. Generation 4 | # of plain text. 5 | # 6 | # Copyright (c) 2009 Andreas Kupries 7 | # 8 | # See the file "license.terms" for information on usage and redistribution 9 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 10 | # 11 | # RCS: @(#) $Id$ 12 | 13 | # This package is a plugin for the pt::peg import manager. It takes 14 | # the human readable text representation of a parsing expression 15 | # grammar and produces the corresponding canonical serialization. 16 | 17 | # ### ### ### ######### ######### ######### 18 | ## Requisites 19 | 20 | # @mdgen NODEP: pt::peg::import::plugin 21 | 22 | package require Tcl 8.5 23 | package require pt::peg::import::plugin ; # The presence of this 24 | # pseudo package indicates 25 | # execution inside of a 26 | # properly initialized 27 | # plugin interpreter. 28 | package require pt::peg::from::peg 29 | 30 | # ### ### ### ######### ######### ######### 31 | ## API. 32 | 33 | proc import {text} { 34 | return [pt::peg::from::peg convert $text] 35 | } 36 | 37 | # ### ### ### ######### ######### ######### 38 | ## Ready 39 | 40 | package provide pt::peg::import::peg 1 41 | return 42 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/rde_critcl/ms.h: -------------------------------------------------------------------------------- 1 | /* pt::rde::critcl - critcl - layer 2 declarations 2 | * Support for param methods. 3 | */ 4 | 5 | #ifndef _MS_H 6 | #define _MS_H 1 7 | 8 | #include "tcl.h" 9 | 10 | int paramms_objcmd (ClientData cd, Tcl_Interp* interp, int objc, Tcl_Obj* CONST* objv); 11 | 12 | #endif /* _MS_H */ 13 | 14 | /* 15 | * Local Variables: 16 | * mode: c 17 | * c-basic-offset: 4 18 | * fill-column: 78 19 | * End: 20 | */ 21 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/rde_critcl/ot.h: -------------------------------------------------------------------------------- 1 | /* 2 | * = = == === ===== ======== ============= ===================== 3 | * == pt::rde (critcl) - Data Structures - ObjType for interned strings. 4 | */ 5 | 6 | #ifndef _RDE_DS_OT_H 7 | #define _RDE_DS_OT_H 1 8 | 9 | #include "tcl.h" 10 | #include /* State declarations */ 11 | 12 | long int rde_ot_intern0 (RDE_STATE p, 13 | Tcl_Obj* detail); 14 | 15 | long int rde_ot_intern1 (RDE_STATE p, 16 | const char* operator, 17 | Tcl_Obj* detail); 18 | 19 | long int rde_ot_intern2 (RDE_STATE p, 20 | const char* operator, 21 | Tcl_Obj* detail1, 22 | Tcl_Obj* detail2); 23 | 24 | #endif /* _RDE_DS_OT_H */ 25 | 26 | /* 27 | * Local Variables: 28 | * mode: c 29 | * c-basic-offset: 4 30 | * fill-column: 78 31 | * End: 32 | */ 33 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/rde_critcl/p.h: -------------------------------------------------------------------------------- 1 | /* pt::rde::critcl - critcl - layer 1 declarations 2 | * (c) PARAM functions 3 | */ 4 | 5 | #ifndef _P_H 6 | #define _P_H 1 7 | 8 | #include "tcl.h" 9 | 10 | typedef struct RDE_STATE_* RDE_STATE; 11 | 12 | RDE_STATE param_new (void); 13 | void param_delete (RDE_STATE p); 14 | void param_setcmd (RDE_STATE p, Tcl_Command c); 15 | 16 | #endif /* _P_H */ 17 | 18 | /* 19 | * Local Variables: 20 | * mode: c 21 | * c-basic-offset: 4 22 | * fill-column: 78 23 | * End: 24 | */ 25 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/rde_critcl/pInt.h: -------------------------------------------------------------------------------- 1 | /* pt::rde::critcl - critcl - layer 1 declarations 2 | * (c) PARAM functions 3 | */ 4 | 5 | #ifndef _P_INT_H 6 | #define _P_INT_H 1 7 | 8 | #include /* Public decls */ 9 | #include /* PARAM architectural state */ 10 | #include /* Tracing support */ 11 | 12 | typedef struct RDE_STRING { 13 | struct RDE_STRING* next; 14 | Tcl_Obj* self; 15 | int id; 16 | } RDE_STRING; 17 | 18 | typedef struct RDE_STATE_ { 19 | RDE_PARAM p; 20 | Tcl_Command c; 21 | 22 | struct RDE_STRING* sfirst; 23 | 24 | Tcl_HashTable str; /* Table to intern strings, i.e. convert them into 25 | * unique numerical indices for the PARAM instructions. 26 | */ 27 | 28 | /* And the counter mapping from ids to strings, this is handed to the 29 | * PARAM for use. 30 | */ 31 | long int maxnum; /* NOTE -- */ 32 | long int numstr; /* This is, essentially, an RDE_STACK (char* elements) */ 33 | char** string; /* Convert over to that instead of replicating the code */ 34 | 35 | #ifdef RDE_TRACE 36 | int icount; /* Instruction counter, when tracing */ 37 | #endif 38 | } RDE_STATE_; 39 | 40 | long int param_intern (RDE_STATE p, const char* literal); 41 | 42 | #endif /* _P_H */ 43 | 44 | /* 45 | * Local Variables: 46 | * mode: c 47 | * c-basic-offset: 4 48 | * fill-column: 78 49 | * End: 50 | */ 51 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/pt/rde_critcl/tc.h: -------------------------------------------------------------------------------- 1 | /* 2 | * = = == === ===== ======== ============= ===================== 3 | * == pt::rde (critcl) - Data Structures - Generic token cache 4 | */ 5 | 6 | #ifndef _RDE_DS_TC_H 7 | #define _RDE_DS_TC_H 1 8 | 9 | #include /* Scoping */ 10 | 11 | typedef struct RDE_TC_* RDE_TC; 12 | 13 | /* SKIP START */ 14 | SCOPE RDE_TC rde_tc_new (void); 15 | SCOPE void rde_tc_del (RDE_TC tc); 16 | 17 | SCOPE long int rde_tc_size (RDE_TC tc); 18 | SCOPE void rde_tc_clear (RDE_TC tc); 19 | SCOPE char* rde_tc_append (RDE_TC tc, char* ch, long int len); 20 | SCOPE void rde_tc_get (RDE_TC tc, int at, char** ch, long int *len); 21 | SCOPE void rde_tc_get_s (RDE_TC tc, int at, int last, char** ch, long int *len); 22 | /* SKIP END */ 23 | #endif /* _RDE_DS_TC_H */ 24 | 25 | /* 26 | * Local Variables: 27 | * mode: c 28 | * c-basic-offset: 4 29 | * fill-column: 78 30 | * End: 31 | */ 32 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/rc4/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl - 2 | # 3 | # RC4 package index file 4 | # 5 | # This package has been tested with tcl 8.2.3 and above. 6 | # 7 | # $Id$ 8 | 9 | if {![package vsatisfies [package provide Tcl] 8.2]} { 10 | # PRAGMA: returnok 11 | return 12 | } 13 | package ifneeded rc4 1.1.0 [list source [file join $dir rc4.tcl]] 14 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/rcs/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded rcs 0.1 [list source [file join $dir rcs.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/report/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded report 0.3.2 [list source [file join $dir report.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/rest/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | package ifneeded rest 1.3.1 [list source [file join $dir rest.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/ripemd/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl - 2 | # 3 | # RIPEMD package index file 4 | # 5 | # This package has been tested with tcl 8.2.3 and above. 6 | # 7 | # $Id$ 8 | 9 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 10 | package ifneeded ripemd128 1.0.5 [list source [file join $dir ripemd128.tcl]] 11 | package ifneeded ripemd160 1.0.5 [list source [file join $dir ripemd160.tcl]] 12 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/sasl/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # pkgIndex.tcl -*- tcl -*- 2 | # Copyright (C) 2005 Pat Thoyts 3 | # $Id$ 4 | if {![package vsatisfies [package provide Tcl] 8.2]} { 5 | # PRAGMA: returnok 6 | return 7 | } 8 | package ifneeded SASL 1.3.3 [list source [file join $dir sasl.tcl]] 9 | package ifneeded SASL::NTLM 1.1.2 [list source [file join $dir ntlm.tcl]] 10 | package ifneeded SASL::XGoogleToken 1.0.1 [list source [file join $dir gtoken.tcl]] 11 | package ifneeded SASL::SCRAM 0.1 [list source [file join $dir scram.tcl]] 12 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/sha1/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 12 | package ifneeded sha256 1.0.3 [list source [file join $dir sha256.tcl]] 13 | package ifneeded sha1 2.0.3 [list source [file join $dir sha1.tcl]] 14 | package ifneeded sha1 1.1.1 [list source [file join $dir sha1v1.tcl]] 15 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/simulation/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded simulation::random 0.3.1 [list source [file join $dir random.tcl]] 2 | package ifneeded simulation::montecarlo 0.1 [list source [file join $dir montecarlo.tcl]] 3 | package ifneeded simulation::annealing 0.2 [list source [file join $dir annealing.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/smtpd/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 12 | package ifneeded smtpd 1.5 [list source [file join $dir smtpd.tcl]] 13 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/snit/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {[package vsatisfies [package provide Tcl] 8.5]} { 2 | package ifneeded snit 2.3.2 \ 3 | [list source [file join $dir snit2.tcl]] 4 | } 5 | 6 | package ifneeded snit 1.4.2 [list source [file join $dir snit.tcl]] 7 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/snit/snit.tcl: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------------------- 2 | # TITLE: 3 | # snit.tcl 4 | # 5 | # AUTHOR: 6 | # Will Duquette 7 | # 8 | # DESCRIPTION: 9 | # Snit's Not Incr Tcl, a simple object system in Pure Tcl. 10 | # 11 | # Snit 1.x Loader 12 | # 13 | # Copyright (C) 2003-2006 by William H. Duquette 14 | # This code is licensed as described in license.txt. 15 | # 16 | #----------------------------------------------------------------------- 17 | 18 | package require Tcl 8.3 19 | 20 | # Define the snit namespace and save the library directory 21 | 22 | namespace eval ::snit:: { 23 | set library [file dirname [info script]] 24 | } 25 | 26 | # Select the implementation based on the version of the Tcl core 27 | # executing this code. For 8.3 we use a backport emulating various 28 | # 8.4 features 29 | 30 | if {[package vsatisfies [package provide Tcl] 8.4]} { 31 | source [file join $::snit::library main1.tcl] 32 | } else { 33 | source [file join $::snit::library main1_83.tcl] 34 | source [file join $::snit::library snit_tcl83_utils.tcl] 35 | } 36 | 37 | # Load the library of Snit validation types. 38 | 39 | source [file join $::snit::library validate.tcl] 40 | 41 | package provide snit 1.4.2 42 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/snit/snit2.tcl: -------------------------------------------------------------------------------- 1 | #----------------------------------------------------------------------- 2 | # TITLE: 3 | # snit2.tcl 4 | # 5 | # AUTHOR: 6 | # Will Duquette 7 | # 8 | # DESCRIPTION: 9 | # Snit's Not Incr Tcl, a simple object system in Pure Tcl. 10 | # 11 | # Snit 2.x Loader 12 | # 13 | # Copyright (C) 2003-2006 by William H. Duquette 14 | # This code is licensed as described in license.txt. 15 | # 16 | #----------------------------------------------------------------------- 17 | 18 | package require Tcl 8.5 19 | 20 | # Define the snit namespace and save the library directory 21 | 22 | namespace eval ::snit:: { 23 | set library [file dirname [info script]] 24 | } 25 | 26 | # Load the kernel. 27 | source [file join $::snit::library main2.tcl] 28 | 29 | # Load the library of Snit validation types. 30 | source [file join $::snit::library validate.tcl] 31 | 32 | package provide snit 2.3.2 33 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/soundex/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 12 | package ifneeded soundex 1.0 [list source [file join $dir soundex.tcl]] 13 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/stooop/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # @mdgen EXCLUDE: xifo.tcl 2 | # @mdgen EXCLUDE: mkpkgidx.tcl 3 | # 4 | # Copyright (c) 2001 by Jean-Luc Fontaine . 5 | # This code may be distributed under the same terms as Tcl. 6 | # 7 | # $Id$ 8 | 9 | # Since stooop redefines the proc command and the default package facility will 10 | # only load the stooop package at the first unknown command, proc being 11 | # obviously known by default, forcing the loading of stooop is mandatory prior 12 | # to the first proc declaration. 13 | 14 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 15 | package ifneeded stooop 4.4.1 [list source [file join $dir stooop.tcl]] 16 | 17 | # the following package index instruction was generated using: 18 | # "tclsh mkpkgidx.tcl switched switched.tcl" 19 | # (comment out the following line if you do not want to use the switched class 20 | # as a package) 21 | 22 | package ifneeded switched 2.2.1 [list source [file join $dir switched.tcl]] 23 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/string/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} { 2 | # FRINK: nocheck 3 | return 4 | } 5 | package ifneeded string::token 1 [list source [file join $dir token.tcl]] 6 | package ifneeded string::token::shell 1.2 [list source [file join $dir token_shell.tcl]] 7 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/stringprep/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded stringprep 1.0.1 [list source [file join $dir stringprep.tcl]] 2 | package ifneeded stringprep::data 1.0.1 [list source [file join $dir stringprep_data.tcl]] 3 | package ifneeded unicode 1.0.0 [list source [file join $dir unicode.tcl]] 4 | package ifneeded unicode::data 1.0.0 [list source [file join $dir unicode_data.tcl]] 5 | 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/struct/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded struct 2.1 [list source [file join $dir struct.tcl]] 3 | package ifneeded struct 1.4 [list source [file join $dir struct1.tcl]] 4 | 5 | package ifneeded struct::queue 1.4.5 [list source [file join $dir queue.tcl]] 6 | package ifneeded struct::stack 1.5.3 [list source [file join $dir stack.tcl]] 7 | package ifneeded struct::tree 2.1.2 [list source [file join $dir tree.tcl]] 8 | package ifneeded struct::matrix 2.0.3 [list source [file join $dir matrix.tcl]] 9 | package ifneeded struct::pool 1.2.3 [list source [file join $dir pool.tcl]] 10 | package ifneeded struct::record 1.2.1 [list source [file join $dir record.tcl]] 11 | package ifneeded struct::set 2.2.3 [list source [file join $dir sets.tcl]] 12 | package ifneeded struct::disjointset 1.0 [list source [file join $dir disjointset.tcl]] 13 | package ifneeded struct::prioqueue 1.4 [list source [file join $dir prioqueue.tcl]] 14 | package ifneeded struct::skiplist 1.3 [list source [file join $dir skiplist.tcl]] 15 | 16 | package ifneeded struct::graph 1.2.1 [list source [file join $dir graph1.tcl]] 17 | package ifneeded struct::tree 1.2.2 [list source [file join $dir tree1.tcl]] 18 | package ifneeded struct::matrix 1.2.1 [list source [file join $dir matrix1.tcl]] 19 | 20 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 21 | package ifneeded struct::list 1.8.3 [list source [file join $dir list.tcl]] 22 | package ifneeded struct::graph 2.4.1 [list source [file join $dir graph.tcl]] 23 | package ifneeded struct::graph::op 0.11.3 [list source [file join $dir graphops.tcl]] 24 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/struct/struct.tcl: -------------------------------------------------------------------------------- 1 | package require Tcl 8.2 2 | package require struct::graph 2.0 3 | package require struct::queue 1.2.1 4 | package require struct::stack 1.2.1 5 | package require struct::tree 2.0 6 | package require struct::matrix 2.0 7 | package require struct::pool 1.2.1 8 | package require struct::record 1.2.1 9 | package require struct::list 1.4 10 | package require struct::set 2.1 11 | package require struct::prioqueue 1.3 12 | package require struct::skiplist 1.3 13 | 14 | namespace eval ::struct { 15 | namespace export * 16 | } 17 | 18 | package provide struct 2.1 19 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/struct/struct1.tcl: -------------------------------------------------------------------------------- 1 | package require Tcl 8.2 2 | package require struct::graph 1.2.1 3 | package require struct::queue 1.2.1 4 | package require struct::stack 1.2.1 5 | package require struct::tree 1.2.1 6 | package require struct::matrix 1.2.1 7 | package require struct::pool 1.2.1 8 | package require struct::record 1.2.1 9 | package require struct::list 1.4 10 | package require struct::prioqueue 1.3 11 | package require struct::skiplist 1.3 12 | 13 | namespace eval ::struct { 14 | namespace export * 15 | } 16 | 17 | package provide struct 1.4 18 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/tar/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded tar 0.11 [list source [file join $dir tar.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/tepam/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.3]} {return} 2 | package ifneeded tepam 0.5.2 [list source [file join $dir tepam.tcl]] 3 | package ifneeded tepam::doc_gen 0.1.1 [list source [file join $dir tepam_doc_gen.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/term/ansi/code.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # ### ### ### ######### ######### ######### 3 | ## Terminal packages - ANSI 4 | ## Generic commands to define commands for code sequences. 5 | 6 | # ### ### ### ######### ######### ######### 7 | ## Requirements 8 | 9 | namespace eval ::term::ansi::code {} 10 | 11 | # ### ### ### ######### ######### ######### 12 | ## API. Escape clauses, plain and bracket 13 | ## Used by 'define'd commands. 14 | 15 | proc ::term::ansi::code::esc {str} {return \033$str} 16 | proc ::term::ansi::code::escb {str} {esc \[$str} 17 | 18 | # ### ### ### ######### ######### ######### 19 | ## API. Define command for named control code, or constant. 20 | ## (Simple definitions without arguments) 21 | 22 | proc ::term::ansi::code::define {name escape code} { 23 | proc [Qualified $name] {} [list ::term::ansi::code::$escape $code] 24 | } 25 | 26 | proc ::term::ansi::code::const {name code} { 27 | proc [Qualified $name] {} [list return $code] 28 | } 29 | 30 | # ### ### ### ######### ######### ######### 31 | ## Internal helper to construct fully-qualified names. 32 | 33 | proc ::term::ansi::code::Qualified {name} { 34 | if {![string match ::* $name]} { 35 | # Get the caller's namespace; append :: if it is not the 36 | # global namespace, for separation from the actual name. 37 | set ns [uplevel 2 [list namespace current]] 38 | if {$ns ne "::"} {append ns ::} 39 | set name $ns$name 40 | } 41 | return $name 42 | } 43 | 44 | # ### ### ### ######### ######### ######### 45 | 46 | namespace eval ::term::ansi::code { 47 | namespace export esc escb define const 48 | } 49 | 50 | # ### ### ### ######### ######### ######### 51 | ## Ready 52 | 53 | package provide term::ansi::code 0.2 54 | 55 | ## 56 | # ### ### ### ######### ######### ######### 57 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/term/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} return 2 | package ifneeded term 0.1 [list source [file join $dir term.tcl]] 3 | package ifneeded term::ansi::code 0.2 [list source [file join $dir ansi/code.tcl]] 4 | package ifneeded term::ansi::code::attr 0.1 [list source [file join $dir ansi/code/attr.tcl]] 5 | package ifneeded term::ansi::code::ctrl 0.2 [list source [file join $dir ansi/code/ctrl.tcl]] 6 | package ifneeded term::ansi::code::macros 0.1 [list source [file join $dir ansi/code/macros.tcl]] 7 | package ifneeded term::ansi::ctrl::unix 0.1.1 [list source [file join $dir ansi/ctrlunix.tcl]] 8 | package ifneeded term::ansi::send 0.2 [list source [file join $dir ansi/send.tcl]] 9 | package ifneeded term::interact::menu 0.1 [list source [file join $dir imenu.tcl]] 10 | package ifneeded term::interact::pager 0.1 [list source [file join $dir ipager.tcl]] 11 | package ifneeded term::receive 0.1 [list source [file join $dir receive.tcl]] 12 | package ifneeded term::receive::bind 0.1 [list source [file join $dir bind.tcl]] 13 | package ifneeded term::send 0.1 [list source [file join $dir send.tcl]] 14 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/term/receive.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # ### ### ### ######### ######### ######### 3 | ## Terminal packages - Generic receiver operations 4 | 5 | # ### ### ### ######### ######### ######### 6 | ## Requirements 7 | 8 | namespace eval ::term::receive {} 9 | 10 | # ### ### ### ######### ######### ######### 11 | ## API. Read character from specific channel, 12 | ## or default (stdin). Processing of 13 | ## character sequences. 14 | 15 | proc ::term::receive::getch {{chan stdin}} { 16 | return [read $chan 1] 17 | } 18 | 19 | proc ::term::receive::listen {cmd {chan stdin}} { 20 | fconfigure $chan -blocking 0 21 | fileevent $chan readable \ 22 | [list ::term::receive::Foreach $chan $cmd] 23 | return 24 | } 25 | 26 | proc ::term::receive::unlisten {{chan stdin}} { 27 | fileevent $chan readable {} 28 | return 29 | } 30 | 31 | # ### ### ### ######### ######### ######### 32 | ## Internals 33 | 34 | proc ::term::receive::Foreach {chan cmd} { 35 | set string [read $chan] 36 | if {[string length $string]} { 37 | #puts stderr "F($string)" 38 | uplevel #0 [linsert $cmd end process $string] 39 | } 40 | if {[eof $chan]} { 41 | close $chan 42 | uplevel #0 [linsert $cmd end eof] 43 | } 44 | return 45 | } 46 | 47 | # ### ### ### ######### ######### ######### 48 | ## Initialization 49 | 50 | namespace eval ::term::receive { 51 | namespace export getch listen 52 | } 53 | 54 | # ### ### ### ######### ######### ######### 55 | ## Ready 56 | 57 | package provide term::receive 0.1 58 | 59 | ## 60 | # ### ### ### ######### ######### ######### 61 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/term/send.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # ### ### ### ######### ######### ######### 3 | ## Terminal packages - Generic sender operations 4 | 5 | # ### ### ### ######### ######### ######### 6 | ## Requirements 7 | 8 | namespace eval ::term::send {} 9 | 10 | # ### ### ### ######### ######### ######### 11 | ## API. Write to channel, or default (stdout) 12 | 13 | proc ::term::send::wr {str} { 14 | wrch stdout $str 15 | return 16 | } 17 | 18 | proc ::term::send::wrch {ch str} { 19 | puts -nonewline $ch $str 20 | flush $ch 21 | return 22 | } 23 | 24 | namespace eval ::term::send { 25 | namespace export wr wrch 26 | } 27 | 28 | # ### ### ### ######### ######### ######### 29 | ## Ready 30 | 31 | package provide term::send 0.1 32 | 33 | ## 34 | # ### ### ### ######### ######### ######### 35 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/term/term.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # ### ### ### ######### ######### ######### 3 | ## Terminal packages - Main :: Generic operations 4 | 5 | # Currently we have no generica at all. We make the package, but it 6 | # provides nothing for now. 7 | 8 | # ### ### ### ######### ######### ######### 9 | ## Requirements 10 | 11 | namespace eval ::term {} 12 | 13 | # ### ### ### ######### ######### ######### 14 | ## Ready 15 | 16 | package provide term 0.1 17 | 18 | ## 19 | # ### ### ### ######### ######### ######### 20 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/textutil/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} { 2 | # FRINK: nocheck 3 | return 4 | } 5 | package ifneeded textutil 0.8 [list source [file join $dir textutil.tcl]] 6 | package ifneeded textutil::adjust 0.7.3 [list source [file join $dir adjust.tcl]] 7 | package ifneeded textutil::split 0.8 [list source [file join $dir split.tcl]] 8 | package ifneeded textutil::trim 0.7 [list source [file join $dir trim.tcl]] 9 | package ifneeded textutil::tabify 0.7 [list source [file join $dir tabify.tcl]] 10 | package ifneeded textutil::repeat 0.7 [list source [file join $dir repeat.tcl]] 11 | package ifneeded textutil::string 0.8 [list source [file join $dir string.tcl]] 12 | package ifneeded textutil::expander 1.3.1 [list source [file join $dir expander.tcl]] 13 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/tie/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded tie 1.1 [list source [file join $dir tie.tcl]] 3 | package ifneeded tie::std::file 1.0.4 [list source [file join $dir tie_file.tcl]] 4 | package ifneeded tie::std::growfile 1.0 [list source [file join $dir tie_growfile.tcl]] 5 | package ifneeded tie::std::log 1.0 [list source [file join $dir tie_log.tcl]] 6 | package ifneeded tie::std::array 1.0 [list source [file join $dir tie_array.tcl]] 7 | package ifneeded tie::std::rarray 1.0.1 [list source [file join $dir tie_rarray.tcl]] 8 | package ifneeded tie::std::dsource 1.0 [list source [file join $dir tie_dsource.tcl]] 9 | 10 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/tie/tie_dsource.tcl: -------------------------------------------------------------------------------- 1 | # tie_dsource.tcl -- 2 | # 3 | # Data source: Data source object. I.e. here we implement a proxy. 4 | # 5 | # Copyright (c) 2004 Andreas Kupries 6 | # 7 | # See the file "license.terms" for information on usage and redistribution 8 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. 9 | # 10 | # RCS: @(#) $Id$ 11 | 12 | # ### ### ### ######### ######### ######### 13 | ## Requisites 14 | 15 | package require snit 16 | package require tie 17 | 18 | # ### ### ### ######### ######### ######### 19 | ## Implementation 20 | 21 | snit::type ::tie::std::dsource { 22 | 23 | # ### ### ### ######### ######### ######### 24 | ## Specials 25 | 26 | pragma -hastypemethods no 27 | pragma -hasinfo no 28 | 29 | # ### ### ### ######### ######### ######### 30 | ## API : Construction & Destruction 31 | 32 | constructor {args} { 33 | set delegate $args 34 | return 35 | } 36 | 37 | # ### ### ### ######### ######### ######### 38 | ## API : Data source methods 39 | 40 | delegate method * to delegate 41 | 42 | # ### ### ### ######### ######### ######### 43 | ## Internal : Instance data 44 | 45 | variable delegate ; # The object to delegate to. 46 | 47 | # ### ### ### ######### ######### ######### 48 | } 49 | 50 | # ### ### ### ######### ######### ######### 51 | ## Ready to go 52 | 53 | ::tie::register ::tie::std::dsource as dsource 54 | package provide tie::std::dsource 1.0 55 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/tiff/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} {return} 2 | package ifneeded tiff 0.2.1 [list source [file join $dir tiff.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/tool-ui/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | ### 2 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 3 | package ifneeded tool-ui 0.2.1 [list source [file join $dir tool-ui.tcl]] 4 | 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/tool/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 12 | package ifneeded tool 0.7 [list source [file join $dir tool.tcl]] 13 | 14 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/tool_datatype/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | 2 | package ifneeded tool::datatype 0.1 [list source [file join $dir datatype.tcl]] -------------------------------------------------------------------------------- /vendor/tcllib1.19/transfer/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} return 2 | package ifneeded transfer::copy 0.3 [list source [file join $dir copyops.tcl]] 3 | package ifneeded transfer::copy::queue 0.1 [list source [file join $dir tqueue.tcl]] 4 | package ifneeded transfer::data::source 0.2 [list source [file join $dir dsource.tcl]] 5 | package ifneeded transfer::data::destination 0.2 [list source [file join $dir ddest.tcl]] 6 | package ifneeded transfer::connect 0.2 [list source [file join $dir connect.tcl]] 7 | package ifneeded transfer::transmitter 0.2 [list source [file join $dir transmitter.tcl]] 8 | package ifneeded transfer::receiver 0.2 [list source [file join $dir receiver.tcl]] 9 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/treeql/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} { 2 | # PRAGMA: returnok 3 | return 4 | } 5 | package ifneeded treeql 1.3.1 [list source [file join $dir treeql.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/treeql/treeql.tcl: -------------------------------------------------------------------------------- 1 | # treeql.tcl 2 | # A generic tree query language in snit 3 | # 4 | # Copyright 2004 Colin McCormack. 5 | # You are permitted to use this code under the same license as tcl. 6 | # 7 | # 20040930 Colin McCormack - initial release to tcllib 8 | # 9 | # RCS: @(#) $Id$ 10 | 11 | package require Tcl 8.4 12 | 13 | # Select the implementation based on the version of the Tcl core 14 | # executing this code. For 8.5 we are using features like 15 | # word-expansion to simplify the various evaluations. 16 | 17 | set dir [file dirname [info script]] 18 | if {[package vsatisfies [package provide Tcl] 8.5]} { 19 | source [file join $dir treeql85.tcl] 20 | } else { 21 | source [file join $dir treeql84.tcl] 22 | } 23 | 24 | package provide treeql 1.3.1 25 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/try/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | #checker -scope global exclude warnUndefinedVar 2 | # var in question is 'dir'. 3 | if {![package vsatisfies [package provide Tcl] 8.5]} { 4 | # PRAGMA: returnok 5 | return 6 | } 7 | # The package below is a backward compatible implementation of 8 | # try/catch/finally, for use by Tcl 8.5 only. On 8.6 it does nothing. 9 | package ifneeded try 1 [list source [file join $dir try.tcl]] 10 | 11 | # The package below is a backward compatible implementation of 12 | # "throw", for use by Tcl 8.5 only. On 8.6 it does nothing. 13 | package ifneeded throw 1 [list source [file join $dir throw.tcl]] 14 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/try/throw.tcl: -------------------------------------------------------------------------------- 1 | # # ## ### ##### ######## ############# #################### 2 | ## -*- tcl -*- 3 | ## (C) 2015 Miguel Martínez López, BSD licensed. 4 | 5 | # The code here is a forward-compatibility implementation of Tcl 8.6's 6 | # throw command (TIP 329), for Tcl 8.5. 7 | 8 | # # ## ### ##### ######## ############# #################### 9 | 10 | package provide throw 1 11 | package require Tcl 8.5 12 | 13 | # Do nothing if the "throw" command exists already (8.6 and higher). 14 | if {[llength [info commands throw]]} return 15 | 16 | proc throw {code msg} { 17 | return -code error -errorcode $code $msg 18 | } 19 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/udpcluster/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | # Backward compatible alias 3 | package ifneeded nameserv::cluster 0.2.5 {package require udpcluster ; package provide nameserv::cluster 0.2.5} 4 | package ifneeded udpcluster 0.3.3 [list source [file join $dir udpcluster.tcl]] 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/uev/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded uevent 0.3.1 [list source [file join $dir uevent.tcl]] 3 | package ifneeded uevent::onidle 0.1 [list source [file join $dir uevent_onidle.tcl]] 4 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/uev/uevent_onidle.tcl: -------------------------------------------------------------------------------- 1 | ## -*- tcl -*- 2 | # ### ### ### ######### ######### ######### 3 | 4 | # ### ### ### ######### ######### ######### 5 | ## Requisites 6 | 7 | package require Tcl 8.4 ; # 8 | package require snit ; # 9 | 10 | # ### ### ### ######### ######### ######### 11 | ## 12 | 13 | snit::type uevent::onidle { 14 | # ### ### ### ######### ######### ######### 15 | ## API 16 | 17 | constructor {cmd} { 18 | set mycmd $cmd 19 | return 20 | } 21 | 22 | method request {} { 23 | if {$myhasrequest} return 24 | after idle [mymethod RunAction] 25 | set myhasrequest 1 26 | return 27 | } 28 | 29 | # ### ### ### ######### ######### ######### 30 | ## Internal commands 31 | 32 | method RunAction {} { 33 | set myhasrequest 0 34 | uplevel \#0 $mycmd 35 | return 36 | } 37 | 38 | # ### ### ### ######### ######### ######### 39 | ## State 40 | 41 | variable mycmd {} ; # Command prefix of the action to perform 42 | variable myhasrequest 0 ; # Boolean flag, set when the action has 43 | # ; # been requested 44 | 45 | # ### ### ### ######### ######### ######### 46 | } 47 | 48 | # ### ### ### ######### ######### ######### 49 | ## Ready 50 | 51 | package provide uevent::onidle 0.1 52 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/units/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | 3 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 4 | package ifneeded units 2.2.1 [list source [file join $dir units.tcl]] 5 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/uri/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.2]} { 2 | # FRINK: nocheck 3 | return 4 | } 5 | package ifneeded uri 1.2.7 [list source [file join $dir uri.tcl]] 6 | package ifneeded uri::urn 1.0.3 [list source [file join $dir urn-scheme.tcl]] 7 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/uuid/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | package ifneeded uuid 1.0.6 [list source [file join $dir uuid.tcl]] 3 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/valtype/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | package ifneeded valtype::common 1 [list source [file join $dir valtype.tcl]] 2 | package ifneeded valtype::creditcard::amex 1 [list source [file join $dir cc_amex.tcl]] 3 | package ifneeded valtype::creditcard::discover 1 [list source [file join $dir cc_discover.tcl]] 4 | package ifneeded valtype::creditcard::mastercard 1 [list source [file join $dir cc_mastercard.tcl]] 5 | package ifneeded valtype::creditcard::visa 1 [list source [file join $dir cc_visa.tcl]] 6 | package ifneeded valtype::gs1::ean13 1 [list source [file join $dir ean13.tcl]] 7 | package ifneeded valtype::imei 1 [list source [file join $dir imei.tcl]] 8 | package ifneeded valtype::isbn 1 [list source [file join $dir isbn.tcl]] 9 | package ifneeded valtype::luhn 1 [list source [file join $dir luhn.tcl]] 10 | package ifneeded valtype::luhn5 1 [list source [file join $dir luhn5.tcl]] 11 | package ifneeded valtype::usnpi 1 [list source [file join $dir usnpi.tcl]] 12 | package ifneeded valtype::verhoeff 1 [list source [file join $dir verhoeff.tcl]] 13 | package ifneeded valtype::iban 1.7 [list source [file join $dir iban.tcl]] 14 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_base/null.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # # ## ### ##### ######## ############# 3 | # (C) 2009 Andreas Kupries 4 | 5 | # @@ Meta Begin 6 | # Package tcl::chan::null 1 7 | # Meta as::author {Andreas Kupries} 8 | # Meta as::copyright 2009 9 | # Meta as::license BSD 10 | # Meta description Re-implementation of Memchan's null 11 | # Meta description channel. Based on Tcl 8.5's channel 12 | # Meta description reflection support. Exports a single 13 | # Meta description command for the creation of new 14 | # Meta description channels. No arguments. Result is the 15 | # Meta description handle of the new channel. 16 | # Meta platform tcl 17 | # Meta require TclOO 18 | # Meta require tcl::chan::events 19 | # Meta require {Tcl 8.5} 20 | # @@ Meta End 21 | 22 | # # ## ### ##### ######## ############# 23 | 24 | package require Tcl 8.5 25 | package require TclOO 26 | package require tcl::chan::events 27 | 28 | # # ## ### ##### ######## ############# 29 | 30 | namespace eval ::tcl::chan {} 31 | 32 | proc ::tcl::chan::null {} { 33 | return [::chan create {write} [null::implementation new]] 34 | } 35 | 36 | oo::class create ::tcl::chan::null::implementation { 37 | superclass ::tcl::chan::events ; # -> initialize, finalize, watch 38 | 39 | method initialize {args} { 40 | my allow write 41 | next {*}$args 42 | } 43 | 44 | # Ignore the data in most particulars. We do count it so that we 45 | # can tell the caller that everything was written. Null device. 46 | 47 | method write {c data} { 48 | return [string length $data] 49 | } 50 | } 51 | 52 | # # ## ### ##### ######## ############# 53 | package provide tcl::chan::null 1 54 | return 55 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_base/nullzero.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # # ## ### ##### ######## ############# 3 | # (C) 2009 Andreas Kupries 4 | 5 | # @@ Meta Begin 6 | # Package tcl::chan::nullzero 1 7 | # Meta as::author {Andreas Kupries} 8 | # Meta as::copyright 2009 9 | # Meta as::license BSD 10 | # Meta description Implementation of a channel combining 11 | # Meta description Memchan's null and zero channels in a 12 | # Meta description single device. Based on Tcl 8.5's channel 13 | # Meta description reflection support. Exports a single 14 | # Meta description command for the creation of new 15 | # Meta description channels. No arguments. Result is the 16 | # Meta description handle of the new channel. 17 | # Meta platform tcl 18 | # Meta require TclOO 19 | # Meta require tcl::chan::events 20 | # Meta require {Tcl 8.5} 21 | # @@ Meta End 22 | 23 | # # ## ### ##### ######## ############# 24 | 25 | package require Tcl 8.5 26 | package require TclOO 27 | package require tcl::chan::events 28 | 29 | # # ## ### ##### ######## ############# 30 | 31 | namespace eval ::tcl::chan {} 32 | 33 | proc ::tcl::chan::nullzero {} { 34 | return [::chan create {read write} [nullzero::implementation new]] 35 | } 36 | 37 | oo::class create ::tcl::chan::nullzero::implementation { 38 | superclass ::tcl::chan::events ; # -> initialize, finalize, watch 39 | 40 | method initialize {args} { 41 | my allow read write 42 | next {*}$args 43 | } 44 | 45 | # Ignore the data in most particulars. We do count it so that we 46 | # can tell the caller that everything was written. Null device. 47 | 48 | method write {c data} { 49 | return [string length $data] 50 | } 51 | 52 | # Generate and return a block of N null bytes, as requested. Zero 53 | # device. 54 | 55 | method read {c n} { 56 | return [binary format @$n] 57 | } 58 | } 59 | 60 | # # ## ### ##### ######## ############# 61 | package provide tcl::chan::nullzero 1 62 | return 63 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_base/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | 3 | package ifneeded tcl::chan::cat 1.0.2 [list source [file join $dir cat.tcl]] 4 | package ifneeded tcl::chan::facade 1.0.1 [list source [file join $dir facade.tcl]] 5 | package ifneeded tcl::chan::fifo 1 [list source [file join $dir fifo.tcl]] 6 | package ifneeded tcl::chan::fifo2 1 [list source [file join $dir fifo2.tcl]] 7 | package ifneeded tcl::chan::halfpipe 1 [list source [file join $dir halfpipe.tcl]] 8 | package ifneeded tcl::chan::memchan 1.0.4 [list source [file join $dir memchan.tcl]] 9 | package ifneeded tcl::chan::null 1 [list source [file join $dir null.tcl]] 10 | package ifneeded tcl::chan::nullzero 1 [list source [file join $dir nullzero.tcl]] 11 | package ifneeded tcl::chan::random 1 [list source [file join $dir random.tcl]] 12 | package ifneeded tcl::chan::std 1.0.1 [list source [file join $dir std.tcl]] 13 | package ifneeded tcl::chan::string 1.0.3 [list source [file join $dir string.tcl]] 14 | package ifneeded tcl::chan::textwindow 1 [list source [file join $dir textwindow.tcl]] 15 | package ifneeded tcl::chan::variable 1.0.4 [list source [file join $dir variable.tcl]] 16 | package ifneeded tcl::chan::zero 1 [list source [file join $dir zero.tcl]] 17 | package ifneeded tcl::randomseed 1 [list source [file join $dir randseed.tcl]] 18 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_base/randseed.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # # ## ### ##### ######## ############# 3 | # (C) 2009 Andreas Kupries 4 | 5 | # @@ Meta Begin 6 | # Package tcl::randomseed 1 7 | # Meta as::author {Andreas Kupries} 8 | # Meta as::copyright 2009 9 | # Meta as::license BSD 10 | # Meta description Generate and combine seed lists for the 11 | # Meta description random number generator inside of the 12 | # Meta description tcl::chan::random channel. Sources of 13 | # Meta description randomness are process id, time in two 14 | # Meta description granularities, and Tcl's random number 15 | # Meta description generator. 16 | # Meta platform tcl 17 | # Meta require {Tcl 8.5} 18 | # @@ Meta End 19 | 20 | # # ## ### ##### ######## ############# 21 | 22 | package require Tcl 8.5 23 | 24 | # # ## ### ##### ######## ############# 25 | 26 | namespace eval ::tcl {} 27 | 28 | proc ::tcl::randomseed {} { 29 | set result {} 30 | foreach v [list \ 31 | [pid] \ 32 | [clock seconds] \ 33 | [expr {int(256*rand())}] \ 34 | [clock clicks -milliseconds]] \ 35 | { 36 | lappend result [expr {$v % 256}] 37 | } 38 | return $result 39 | } 40 | 41 | proc ::tcl::combine {a b} { 42 | while {[llength $a] < [llength $b]} { 43 | lappend a 0 44 | } 45 | while {[llength $b] < [llength $a]} { 46 | lappend b 0 47 | } 48 | 49 | set result {} 50 | foreach x $a y $b { 51 | lappend result [expr {($x ^ $y) % 256}] 52 | } 53 | return $result 54 | } 55 | 56 | # # ## ### ##### ######## ############# 57 | package provide tcl::randomseed 1 58 | return 59 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_base/zero.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # # ## ### ##### ######## ############# 3 | # (C) 2009 Andreas Kupries 4 | 5 | # @@ Meta Begin 6 | # Package tcl::chan::zero 1 7 | # Meta as::author {Andreas Kupries} 8 | # Meta as::copyright 2009 9 | # Meta as::license BSD 10 | # Meta description Re-implementation of Memchan's zero 11 | # Meta description channel. Based on Tcl 8.5's channel 12 | # Meta description reflection support. Exports a single 13 | # Meta description command for the creation of new 14 | # Meta description channels. No arguments. Result is the 15 | # Meta description handle of the new channel. 16 | # Meta platform tcl 17 | # Meta require TclOO 18 | # Meta require tcl::chan::events 19 | # Meta require {Tcl 8.5} 20 | # @@ Meta End 21 | 22 | # # ## ### ##### ######## ############# 23 | 24 | package require Tcl 8.5 25 | package require TclOO 26 | package require tcl::chan::events 27 | 28 | # # ## ### ##### ######## ############# 29 | 30 | namespace eval ::tcl::chan {} 31 | 32 | proc ::tcl::chan::zero {} { 33 | return [::chan create {read} [zero::implementation new]] 34 | } 35 | 36 | oo::class create ::tcl::chan::zero::implementation { 37 | superclass tcl::chan::events ; # -> initialize, finalize, watch 38 | 39 | method initialize {args} { 40 | my allow read 41 | next {*}$args 42 | } 43 | 44 | # Generate and return a block of N null bytes, as requested. 45 | # Zero device. 46 | 47 | method read {c n} { 48 | return [binary format @$n] 49 | } 50 | } 51 | 52 | # # ## ### ##### ######## ############# 53 | package provide tcl::chan::zero 1 54 | return 55 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_core/core.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # # ## ### ##### ######## ############# 3 | # (C) 2009 Andreas Kupries 4 | 5 | # @@ Meta Begin 6 | # Package tcl::chan::core 1 7 | # Meta as::author {Andreas Kupries} 8 | # Meta as::copyright 2009 9 | # Meta as::license BSD 10 | # Meta description Support package handling a core 11 | # Meta description aspect of reflected base channels 12 | # Meta description (initialization, finalization). 13 | # Meta description It is expected that this class 14 | # Meta description is used as either one superclass of the 15 | # Meta description class C for a specific channel, or is 16 | # Meta description mixed into C. 17 | # Meta platform tcl 18 | # Meta require TclOO 19 | # Meta require {Tcl 8.5} 20 | # @@ Meta End 21 | 22 | # # ## ### ##### ######## ############# 23 | 24 | package require Tcl 8.5 25 | package require TclOO 26 | 27 | # # ## ### ##### ######## ############# 28 | 29 | oo::class create ::tcl::chan::core { 30 | destructor { 31 | if {$channel eq {}} return 32 | close $channel 33 | return 34 | } 35 | 36 | # # ## ### ##### ######## ############# 37 | 38 | method initialize {thechannel mode} { 39 | set methods [info object methods [self] -all] 40 | 41 | # Note: Checking of the mode against the supported methods is 42 | # done by the caller. 43 | 44 | set channel $thechannel 45 | set supported {} 46 | foreach m { 47 | initialize finalize watch read write seek configure cget 48 | cgetall blocking 49 | } { 50 | if {$m in $methods} { 51 | lappend supported $m 52 | } 53 | } 54 | return $supported 55 | } 56 | 57 | method finalize {c} { 58 | set channel {} ; # Prevent destroctor from calling close. 59 | my destroy 60 | return 61 | } 62 | 63 | # # ## ### ##### ######## ############# 64 | 65 | variable channel 66 | 67 | # channel The channel the handler belongs to. 68 | # # ## ### ##### ######## ############# 69 | } 70 | 71 | # # ## ### ##### 72 | package provide tcl::chan::core 1 73 | return 74 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_core/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 2 | 3 | package ifneeded tcl::chan::core 1 [list source [file join $dir core.tcl]] 4 | package ifneeded tcl::chan::events 1 [list source [file join $dir events.tcl]] 5 | 6 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 7 | 8 | package ifneeded tcl::transform::core 1 [list source [file join $dir transformcore.tcl]] 9 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_core/transformcore.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # # ## ### ##### ######## ############# 3 | # (C) 2009 Andreas Kupries 4 | 5 | # @@ Meta Begin 6 | # Package tcl::transform::core 1 7 | # Meta as::author {Andreas Kupries} 8 | # Meta as::copyright 2009 9 | # Meta as::license BSD 10 | # Meta description Support package handling a core 11 | # Meta description aspect of reflected transform channels 12 | # Meta description (initialization, finalization). 13 | # Meta description It is expected that this class 14 | # Meta description is used as either one superclass of the 15 | # Meta description class C for a specific channel, or is 16 | # Meta description mixed into C. 17 | # Meta platform tcl 18 | # Meta require TclOO 19 | # Meta require {Tcl 8.6} 20 | # @@ Meta End 21 | 22 | # # ## ### ##### ######## ############# 23 | 24 | package require Tcl 8.6 25 | 26 | # # ## ### ##### ######## ############# 27 | 28 | oo::class create ::tcl::transform::core { 29 | destructor { 30 | if {$channel eq {}} return 31 | close $channel 32 | return 33 | } 34 | 35 | # # ## ### ##### ######## ############# 36 | 37 | method initialize {thechannel mode} { 38 | set methods [info object methods [self] -all] 39 | 40 | # Note: Checking of the mode against the supported methods is 41 | # done by the caller. 42 | 43 | set channel $thechannel 44 | set supported {} 45 | foreach m { 46 | initialize finalize read write drain flush limit? 47 | } { 48 | if {$m in $methods} { 49 | lappend supported $m 50 | } 51 | } 52 | return $supported 53 | } 54 | 55 | method finalize {c} { 56 | set channel {} ; # Prevent destroctor from calling close. 57 | my destroy 58 | return 59 | } 60 | 61 | # # ## ### ##### ######## ############# 62 | 63 | variable channel 64 | 65 | # channel The channel the handler belongs to. 66 | # # ## ### ##### ######## ############# 67 | } 68 | 69 | # # ## ### ##### 70 | package provide tcl::transform::core 1 71 | return 72 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_transform/hex.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # # ## ### ##### ######## ############# 3 | # (C) 2009 Andreas Kupries 4 | 5 | # @@ Meta Begin 6 | # Package tcl::transform::hex 1 7 | # Meta as::author {Andreas Kupries} 8 | # Meta as::copyright 2009 9 | # Meta as::license BSD 10 | # Meta description Implementation of a hex transformation, 11 | # Meta description using Tcl 8.6's transformation 12 | # Meta description reflection support. Uses the binary 13 | # Meta description command to implement the transformation. 14 | # Meta description Exports a single command adding a new 15 | # Meta description transform of this type to a channel. One 16 | # Meta description argument, the channel to extend. No 17 | # Meta description result. 18 | # Meta platform tcl 19 | # Meta require tcl::transform::core 20 | # Meta require {Tcl 8.6} 21 | # @@ Meta End 22 | 23 | # # ## ### ##### ######## ############# 24 | 25 | package require Tcl 8.6 26 | package require tcl::transform::core 27 | 28 | # # ## ### ##### ######## ############# 29 | 30 | namespace eval ::tcl::transform {} 31 | 32 | proc ::tcl::transform::hex {chan} { 33 | ::chan push $chan [hex::implementation new] 34 | return 35 | } 36 | 37 | oo::class create ::tcl::transform::hex::implementation { 38 | superclass tcl::transform::core ;# -> initialize, finalize, destructor 39 | 40 | method write {c data} { 41 | # bytes -> hex 42 | binary scan $data H* hex 43 | return $hex 44 | } 45 | 46 | method read {c data} { 47 | # hex -> bytes 48 | return [binary format H* $data] 49 | } 50 | 51 | # No partial data, nor state => no flush, drain, nor clear needed. 52 | 53 | # # ## ### ##### ######## ############# 54 | } 55 | 56 | # # ## ### ##### ######## ############# 57 | package provide tcl::transform::hex 1 58 | return 59 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_transform/identity.tcl: -------------------------------------------------------------------------------- 1 | # -*- tcl -*- 2 | # # ## ### ##### ######## ############# 3 | # (C) 2009 Andreas Kupries 4 | 5 | # @@ Meta Begin 6 | # Package tcl::transform::identity 1 7 | # Meta as::author {Andreas Kupries} 8 | # Meta as::copyright 2009 9 | # Meta as::license BSD 10 | # Meta as::notes The prototypical observer transformation. 11 | # Meta as::notes To observers what null is to reflected 12 | # Meta as::notes base channels. For other observers see 13 | # Meta as::notes adler32, crc32, counter, and observer 14 | # Meta as::notes (stream copy). 15 | # Meta description Implementation of an identity 16 | # Meta description transformation, i.e one which does not 17 | # Meta description change the data in any way, shape, or 18 | # Meta description form. Based on Tcl 8.6's transformation 19 | # Meta description reflection support. Exports a single 20 | # Meta description command adding a new transform of this 21 | # Meta description type to a channel. One argument, the 22 | # Meta description channel to extend. No result. 23 | # Meta platform tcl 24 | # Meta require tcl::transform::core 25 | # Meta require {Tcl 8.6} 26 | # @@ Meta End 27 | 28 | # # ## ### ##### ######## ############# 29 | 30 | package require Tcl 8.6 31 | package require tcl::transform::core 32 | 33 | # # ## ### ##### ######## ############# 34 | 35 | namespace eval ::tcl::transform {} 36 | 37 | proc ::tcl::transform::identity {chan} { 38 | ::chan push $chan [identity::implementation new] 39 | } 40 | 41 | oo::class create ::tcl::transform::identity::implementation { 42 | superclass tcl::transform::core ;# -> initialize, finalize, destructor 43 | 44 | method write {c data} { 45 | return $data 46 | } 47 | 48 | method read {c data} { 49 | return $data 50 | } 51 | 52 | # No partial data, nor state => no flush, drain, nor clear needed. 53 | 54 | # # ## ### ##### ######## ############# 55 | } 56 | 57 | # # ## ### ##### ######## ############# 58 | package provide tcl::transform::identity 1 59 | return 60 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/virtchannel_transform/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 2 | 3 | package ifneeded tcl::transform::adler32 1 [list source [file join $dir adler32.tcl]] 4 | package ifneeded tcl::transform::base64 1 [list source [file join $dir base64.tcl]] 5 | package ifneeded tcl::transform::counter 1 [list source [file join $dir counter.tcl]] 6 | package ifneeded tcl::transform::crc32 1 [list source [file join $dir crc32.tcl]] 7 | package ifneeded tcl::transform::hex 1 [list source [file join $dir hex.tcl]] 8 | package ifneeded tcl::transform::identity 1 [list source [file join $dir identity.tcl]] 9 | package ifneeded tcl::transform::limitsize 1 [list source [file join $dir limitsize.tcl]] 10 | package ifneeded tcl::transform::observe 1 [list source [file join $dir observe.tcl]] 11 | package ifneeded tcl::transform::otp 1 [list source [file join $dir otp.tcl]] 12 | package ifneeded tcl::transform::rot 1 [list source [file join $dir rot.tcl]] 13 | package ifneeded tcl::transform::spacer 1 [list source [file join $dir spacer.tcl]] 14 | package ifneeded tcl::transform::zlib 1.0.1 [list source [file join $dir zlib.tcl]] 15 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/websocket/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | # Tcl package index file, version 1.1 2 | # This file is generated by the "pkg_mkIndex" command 3 | # and sourced either when an application starts up or 4 | # by a "package unknown" script. It invokes the 5 | # "package ifneeded" command to set up package-related 6 | # information so that packages will be loaded automatically 7 | # in response to "package require" commands. When this 8 | # script is sourced, the variable $dir must contain the 9 | # full path name of this file's directory. 10 | 11 | package ifneeded websocket 1.4.1 [list source [file join $dir websocket.tcl]] 12 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/wip/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | package ifneeded wip 1.2 [list source [file join $dir wip.tcl]] 3 | 4 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 5 | package ifneeded wip 2.2 [list source [file join $dir wip2.tcl]] 6 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/yaml/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | 2 | if {![package vsatisfies [package provide Tcl] 8.5]} {return} 3 | 4 | package ifneeded yaml 0.4.1 [list source [file join $dir yaml.tcl]] 5 | package ifneeded huddle 0.3 [list source [file join $dir huddle.tcl]] 6 | package ifneeded huddle::json 0.1 [list source [file join $dir json2huddle.tcl]] 7 | -------------------------------------------------------------------------------- /vendor/tcllib1.19/yaml/yaml.tcl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/puremourning/TclProDebug/d322dc8850d1fd6a67465137fb47e42a849c879a/vendor/tcllib1.19/yaml/yaml.tcl -------------------------------------------------------------------------------- /vendor/tcllib1.19/zip/pkgIndex.tcl: -------------------------------------------------------------------------------- 1 | if {![package vsatisfies [package provide Tcl] 8.4]} {return} 2 | 3 | package ifneeded zipfile::decode 0.7.1 [list source [file join $dir decode.tcl]] 4 | package ifneeded zipfile::encode 0.4 [list source [file join $dir encode.tcl]] 5 | 6 | if {![package vsatisfies [package provide Tcl] 8.6]} {return} 7 | 8 | package ifneeded zipfile::mkzip 1.2 [list source [file join $dir mkzip.tcl]] 9 | -------------------------------------------------------------------------------- /vscode/.gitignore: -------------------------------------------------------------------------------- 1 | extension/ 2 | -------------------------------------------------------------------------------- /vscode/README.md: -------------------------------------------------------------------------------- 1 | # Visual Studio Code Exetension 2 | 3 | This directory contains the necessary stuff to build a Visual Studio Code TCL 4 | debugger extension on Linux/macOS. 5 | 6 | Doesn't support windows, but PRs are welcome. 7 | 8 | ## Installation - User 9 | 10 | 1. Build the `tclparser` as normal 11 | 12 | ``` 13 | cd /path/to/TclProDebug/lib/tclparser 14 | ./configure 15 | make` 16 | ``` 17 | 18 | 1. change to this directory `cd /path/to/TclProDebug/vscode` 19 | 2. `./make_extension 0.1.0`. This will build the extension in `extensions/` as 20 | both a full directory and a tarball. 21 | 3. extract into your extension directory (you can also symlink) 22 | 1. `cd $HOME/.vscode/extensions` 23 | 2. `ln -s /path/to/TclProDebug/vscode/extension/purmourning.tclpro-debug.`, or 24 | 3. `tar zxfv /path/to/TclProDebug/vscode/extension/purmourning.tclpro-debug..tar.gz` 25 | 4. Restart VSCode 26 | 27 | 28 | ## Installation for developing 29 | 30 | 1. Build `tclparser` as above 31 | 2. change to this directory `cd /path/to/TclProDebug/vscode` 32 | 3. `./make_extension --dev`. `--dev` will create version `999.999.999`, and use 33 | symlinks so you can develop the server in-place. 34 | 4. symlink `extensions/puremourning.tclpro-debug-999.999.999` in to 35 | `$HOME/.vscode/extensions` 36 | 37 | ``` 38 | cd $HOME/.vscode/extensions 39 | ln -s /path/to/TclProDebug/vscode/extension/purmourning.tclpro-debug.999.999.999 40 | ``` 41 | 42 | 5. Restart VSCode 43 | 44 | -------------------------------------------------------------------------------- /vscode/make_extension: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | set -v 5 | set -o pipefail 6 | 7 | # When --dev is the first argument, create symlinks rather than copies 8 | if [ "$1" == "--dev" ]; then 9 | # This shouold be the latest version 10 | VERSION=999.999.999 11 | CP_R="ln -s" 12 | CP="ln -s" 13 | else 14 | VERSION=$1 15 | CP_R="cp -r" 16 | CP="cp" 17 | fi 18 | shift 19 | 20 | 21 | VSCODE=$(pwd) 22 | ROOT=${VSCODE}/.. 23 | PACKAGE=puremourning.tclpro-debug-${VERSION} 24 | EXTENSION=${VSCODE}/extension/${PACKAGE} 25 | 26 | if [ -d ${EXTENSION} ]; then 27 | rm -rf ${EXTENSION} 28 | fi 29 | 30 | mkdir -p ${EXTENSION} 31 | pushd ${EXTENSION} 32 | for d in bin \ 33 | lib/cmdline \ 34 | lib/debugserver \ 35 | lib/projectInfo \ 36 | lib/remotedebug \ 37 | lib/tcldebugger \ 38 | vendor \ 39 | src; 40 | do 41 | mkdir -p $(dirname $d) 42 | ${CP_R} ${ROOT}/$d $d 43 | done 44 | 45 | mkdir -p lib/tclparser 46 | ${CP} ${ROOT}/lib/tclparser/libtclparser*.so lib/tclparser 47 | ${CP} ${ROOT}/lib/tclparser/pkgIndex.tcl lib/tclparser 48 | 49 | ${CP} ${ROOT}/debug_server_main.tcl . 50 | ${CP} ${VSCODE}/package.json . 51 | sed -i "s/%VERSION%/${VERSION}/" package.json 52 | popd 53 | 54 | pushd ${VSCODE}/extension 55 | tar zcvf ${PACKAGE}.tar.gz ${PACKAGE} 56 | popd 57 | 58 | --------------------------------------------------------------------------------